A couple of days ago I merged the remaining work to make NHibernate target .Net 4.0 to master. It now targets only .Net 4.0. I tried to set up the build scripts so that it would explicitly target .Net 4.0 even when 4.5 is installed on the build machine. Apart from the change in framework version, the big thing that this implies is that Iesi.Collections now have a much more limited role, with ISet<T> and HashSet<T> from the BCL being used instead.
I expected that when released, this will be NHibernate 4.0. For that, what I think is at least as important as new features is to take the
opportunity to remove old obsolete code to make the code base leaner and
ensure longterm maintainability.
PROPOSED BREAKING CHANGES
Please add to this list if you think of anything else that would be rarely used and no longer useful. Also, please speak up if you see an important reason to keep any of this.
Fix support for System.Transactions
There are a number of problems with the current implementation. Some are probably "simple" bugs that we can fix, but I fear there may also be design issues with the current approach.
https://nhibernate.jira.com/issues/?jql=labels%20%3D%20TransactionScope
Remove ManagedWebSessionContext.
I'm not aware of any reason to use this instead of WebSessionContext, which shares its API with the other context types.
Remove the classical HQL parser.
The ANTLR based parser has been in use since NH 2.1 (released summer 2009).
Remove support for persistent non-generic collections.
NHibernate have required generics support for a long time, and I'm not aware of any reason to prefer a non-generic collection over a generic one.
Remove obsolete ISession.SaveOrUpdateCopy()
Deprecated since NH 3.1. Merge() should be used instead. Various related removals, e.g. event listener.
Remove obsolete SybaseASA10Dialect, ASA10ClientDriver, ASAClientDriver and SQLiteDriver.
These all have direct replacements.
/Oskar