[
  {
    "Id": "656124",
    "ThreadId": "268593",
    "Html": "\r\n<p>I was wondering if there are plans to release a .Net 4.0 version of the libraries? One that is optimized for .Net 4.0 to take&nbsp;advantage&nbsp;of the new language features and functionality. &nbsp;Examples would be things like option arguments and using\r\n TPL where it can optimize performance. &nbsp;Plus just having a CLR4 compiled library is optimized better than a CLR2 compiled library so just release official DLL's that are compiled CLR2 and CLR4 would be a great step towards this.</p>\r\n",
    "PostedDate": "2011-08-10T14:05:20.843-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656271",
    "ThreadId": "268593",
    "Html": "<p>Yes - I thought about going to some of the .NET 4.0 features, but ... there are a bunch of people still using .NET 2.0, and I'm hesitant to fork the source code in order to support both. So I've been a laggard on that point.</p>\r\n<p>Beyond the optional arguments stuff, which is nifty, there are some cool things possible with parallel tasks, too, which I would like to exploit.&nbsp; But for now I've decided to defer that work.</p>\r\n<p>&nbsp;</p>",
    "PostedDate": "2011-08-10T22:14:32.3-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656621",
    "ThreadId": "268593",
    "Html": "<p>You could use Preprocessor Directives so that you are not actually forking the code base, it just compiles sections of code depending on which .Net is being targeted. &nbsp;Also like I said a good start would be to just release official and strong named version of the current ones as .Net 4 and .Net 2.0 side by side. &nbsp;This requires nothing special but changing the targeted .Net. &nbsp;From there as time&nbsp;permits&nbsp;you could migrate areas of the code to the new .Net features using Preprocessor Directives.</p>",
    "PostedDate": "2011-08-11T08:30:38.467-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656633",
    "ThreadId": "268593",
    "Html": "<p>Sure I could use preprocess directives, but it's still two output products.&nbsp; There's parallel development, parallel testing, ...&nbsp; Right now DotNetZip entails 3 libraries - bzip, zlib and zip, and 3 platforms - CF, SL and .NET.&nbsp; There's just one of me. I'm very hesitant to expand scope for that reason.</p>",
    "PostedDate": "2011-08-11T08:44:45.6-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656649",
    "ThreadId": "268593",
    "Html": "<p>Understood, but just doing only .Net compile and strong name with no code changes at all would be a great step forward. &nbsp;Just being able to use CLR 4 natively instead of CLR 2 compatibility mode in CLR 4 is a huge improvement on performance. &nbsp;Also using the CLR 4 should give you better profiling abilities to make it easier to improve perfomance and memory usage in the future if needed. This is just&nbsp;modifying&nbsp;the build scripts and you could automate a process that outputs all 3 libs for all 3 platforms for both CLR's.</p>",
    "PostedDate": "2011-08-11T08:58:57.267-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656654",
    "ThreadId": "268593",
    "Html": "<p>Is that true?&nbsp; I did not know that CLR2 assemblies performed more slowly in CLR4 apps. Can you refer me to some documentation on that?</p>\r\n<p>If it is merely a matter of recompiling, I can handle that no problem.&nbsp; You're right there's not much cost there.</p>",
    "PostedDate": "2011-08-11T09:00:47.113-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656669",
    "ThreadId": "268593",
    "Html": "<p>There are compatibility issues sometimes, I am not finding any with yours, also since CLR 2 is \"compatibility\" based and not native CLR 2 it can never be as fast as CLR 2 outside of the CLR 4 runtime its like expecting a Guest VM to be faster than its host. &nbsp;People have \"claimed\" there \"should\" be no difference and there may not be any on small applications.&nbsp;</p>\r\n<p>However, we have noticed this with our .Net 2 stuff as we are migrating to .Net 4 and because of the performance and compatibility issues we had running CLR2 stuff under CLR4. &nbsp;We however are not a small little app, we have a enterprise class application. We decided to force a migration of everything we have in our next major release to be .Net 4 period instead of just a few parts. &nbsp;This increased or work load and will most likely effect our release date, but it had to be done to deal with the issue. &nbsp;I looked and I couldn't find anything about others talking about this issue public but I have seen it with my own eyes. So there may not be many private company going out and talking about it for .Net Enterprise applications.</p>\r\n<p>Also I do know that CLR4 apps in my testing seem to have better memory usage and a smaller memory footprint simply by switching from CLR2 or CLR4 with no code changes.</p>\r\n<p>Also .Net 2.0 is going to be 6 years old this November so its just getting old, and people really need to move on. :) It taking us a long time to release this and finally make the jump.</p>",
    "PostedDate": "2011-08-11T09:16:28.383-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  },
  {
    "Id": "656688",
    "ThreadId": "268593",
    "Html": "This discussion has been copied to a work item. Click <a href=\"http://dotnetzip.codeplex.com/workitem/14068\">here</a> to go to the work item and continue the discussion.",
    "PostedDate": "2011-08-11T09:49:37.507-07:00",
    "UserRole": null,
    "MarkedAsAnswerDate": null
  }
]