Mono: SGen GC And Other Improvements; PlayScript, CppSharp In Works
SGen GC has been further improved in Mono 3.2, especially for following scenarios –
- Popular object workload where a few pinned nursery objects are very popular with old generation objects, causing a lot of remembered sets to be created. To avoid that, popular objects are made immortal until the next major collection
- Massive Thread stack workload where a lot of threads with big stacks need to be conservatively scanned. This used to put a lot of pressure on the pinning stage since it would produce very big pin queues. To avoid that, SGen now employs hash filtering on pin queues and that dramatically reduce their average size and it pins major blocks instead of individual objects
In addition, Major Collector can now be disabled in certain places where low-latency code is needed.
SGen is now the default GC for mono.
There are also some Dev-time improvements for mobile developers –
- Better iOS development with incremental builds and incremental uploads
- Size reduction by disabling certain features to reduce mobile footprint
The availability of frameworks on Mono has been improving. For some time now, Mono has been shipping various .NET frameworks open-sourced by Microsoft. It now supports –
along with some others –
- Cocos2D XNA (port of Cocos2D) (along with sample game to run on mono)
Miguel de Icaza also presented a few work-in-progress items in the MonkeySpace conference last month –
- PlayScript was created by Zynga to deliver games than run on both mobile and web simultaneously without having to do a full-port. The PlayScript compiler was built on mono. The mono team is now working on integrating these changes upstream
- C++ Interop story is being pushed by both
Gartner recognizes Xamarin as Visionary