Time for 4.5?

Feb 11, 2014 at 3:41 AM
Edited Feb 11, 2014 at 3:44 AM
I would like to propose updating .NET Bio to use the latest version of the framework.

While committing the latest changeset I noticed that I build .NET Bio for the 4.5 profile, while the current version is for the .NET 4.0 Client profile.

My own experience was that 4.0 was a great idea while mono was slightly out of date and running 4.5 code on linux occasionally created problems. However, I now always run in windows or unix/mac in 4.5, have not run in to problems with any of the recent mono releases and I understand there are several performance improvements in 4.5 that could be useful.

Downsides I am aware of might be that old XP computers could not run the library, but as the next release is a bit in the future and 4.5 has already been out for awhile, think this might be a good transition to make.

I know there are more experienced .NET guys on this list (cheers to you Mark, etc.), who might know better than I though. Any thoughts?

Feb 11, 2014 at 2:16 PM
Hey Nigel,

I seriously thought about this with the last release. I had three reasons why I didn't make the jump.

1) I was concerned about XP support, or lack thereof, since some researchers / universities are still on Windows XP. Given that XP is about to become unsupported, I'm not sure if this is still an issue or not. Most corp sites have moved on I think, but acadamia is a bit slower on this most of the time. I'll have to defer to you guys who spend your time in that arena to point us in the right direction here.

2) .NET 4.5 requires VS2012 or 2013. Since a lot of people were still on 2010 I thought this might be an issue. It's a non issue now I think - VS2013 is out and we have express and trial versions available and all the biz and academic programs include it now.

3) .NET 4.5 is an in-place update to 4.0 and I didn't see anything we really needed from the 4.5 stack that wasn't in 4.0 already.

Let me expand a little on #3. Unless you intend to use some of the .NET 4.5 features then it really doesn't matter if the project targets 4.0 or 4.5 because when you install 4.5 on a machine, it actually replaces the 4.0 binaries. That means that even if you run a program that was built against 4.0, if you have 4.5 installed, it runs on 4.5.

But if you have an idea for using something specific in the 4.5 framework, then by all means I think we should convert. For example, some of the Task Data Flow stuff might be interesting to integrate into staged algorithms. Async/Await would be awesome in the web services frameworks (as I've said before), and I think HttpClient should be our client platform for those same web services because it's tons faster and feature rich.

I'd also like to see .NET Bio broken into 2 libraries - a core library which is a PCL that targets .NET, WP8, Win8, Silverlight and Xamarin. And a platform specific assembly for desktop and one or two for the other primary platforms. Since PCLs are now supported directly in other platforms, you would no longer need to cross-compile the code to use it in Mono which would be slick.

Feb 11, 2014 at 9:33 PM
Correct me if I'm wrong, but I believe 4.5 is an automatic update? If so, Windows 7 and 8 systems will get it freely - and should have it by now.

Also, I agree with Mark that we can reasonably expect people to be using a more up to date version of Visual Studio now; this was far less likely when we did the last release.

As a general principle, I like the idea that we update the dependencies from time to time, avoiding jumping on every new bandwagon immediately but ensuring that dependent technologies are tested and in broad use when we adopt them. New users may wish to leverage the new features of 4.5 and we should support that - if old users have issues, the previous release of .NET Bio will remain available.

So - I vote that the next release has a dependency on .NET 4.5.

Any other views?

Feb 11, 2014 at 10:13 PM
4.5 ships with Windows 8 - it has to because the 4.5 CLR is the first version to support WinRT. I'm not sure if Win7 users get it automatically or if it's an optional update.

I'd like to see us update too as I said, but I want to make sure it's clear that it restricts us to 4.5 - so 4.0 users won't be able to use the next version of the library.

Keeping it on 4.0 doesn't stop 4.5 users from using it - so it's a broader distribution if we keep it on 4.0. I personally don't think it's that much broader because 4.5 is a free update so it only affects people who want to run apps that haven't yet updated to 4.5; I think this will be fairly small and easily fixable (IMO). I actually already moved it to 4.5 on an internal version I use because I used in in a WinStore app which necessitated that. It was trivial to switch over. As I mentioned earlier, I'd be more interested in shifting it to a Portable Class Library with 4.5 so we can multi-target platforms really easily without recompiling..

I say let's do it Nigel!


Feb 14, 2014 at 3:55 PM
Mark, Simon, thanks for the thorough responses! I didn't realize 4.5 was a drop in replacement. Sounds like we are moving up to 4.5 then!

Mark, in regards to the PCL, do you know what would have to be removed from the main library to make this happen? I think it would be nice to have a version that worked great out of the box with Mono, but am not sure what we are using that would need to be swapped.

In regards to this, Mark have you ever used the nu get package manager for xamarin studio? If so, I might try to find the time to write up some documentation so people can get started with .NET Bio if they own a mac.

All the best,