Although everything we do is public in some form or
another, folks that are not keeping track of things might be
wondering what the Mono team at Novell has been up to.
Here are some of the projects that we have been working on,
and that we expect to release in the next three months, some
sooner, some later. You are welcome to join us in testing,
all you need is to get comfortable building Mono from git.
Bundling F#, IronPython, IronRuby
and UnityScript:
Now that all of these languages are open source, we want more
people to use them, and we want to remove any friction that
there might be in getting started. So we are doing a push to
provide packages on Linux and bundle with our OSX installer
all of them.
The first three languages are from Microsoft, the third one
is from Unity, and it is a strongly-typed and class-based
incarnation of JavaScript. The lightweight syntax of
Javascript, with the components necessary to produce optimal
native code.
Getting F# to build and run on Mono was a challenge on its
own. This is not a language that many of us were familiar
with, but we are now at a point where things are baked.
We should be uploading our modified version of F#
to the fsharp
organization on GitHub.
MonoDevelop's Git support: MonoDevelop 2.6 will come
with Git support. Originally Lluis prototyped this by
calling out to the system Git, but this is not very elegant
and also hard to make reliable and work smoothly across
Windows, Linux and MacOS. So Lluis used db4object's tool to
convert Java source code into C# source code to bring
Eclipse's jGit into Mono as NGit. Now MonoDevelop has a
full managed Git implementation that works the same on
Windows, Linux and MacOS.
MonoDevelop's Online Template System: To help
developers get up and running with any kind of interesting
.NET project, we are going to make MonoDevelop use an online
gallery system and we are going to open it up for
contributions.
New Profiler:
our new profiler is a complete new implementation that
obsoletes the old logging profiler, the old heap-shot profiler
and the old heap-buddy profiler and our old statistical
profiler into a single profiler that does it all, does it
better, and does it well.
This new profiler was already used to pinpoint bugs and
performance problems in our own web server, our Parallel
Frameworks and inspired Alan to write
a leak
detector for Moonlight.
MonoDevelop's Profiler GUI: The companion to our new
profiler. Currently it only has a CPU profiling mode, but in
the future we will add a GUI for memory profiling as well.
Mono on Android:
we are very close to shipping Mono on Android. The
experience right now is very close to what we want.
This has taken longer than we anticipated, but mostly
because we are providing a full binding to the Android APIs.
Not just a subset. This is made possible by Google publishing
the Android API contract in XML form.
WCF: Our WCF implementation so far has been the
Silverlight client profiler and its mirror on the server.
This is clearly not sufficient for many of our users, so we
have redoubled our efforts to fill in all the gaps in WCF.
Mono 2.10 will have better coverage for WCF, but it wont be
complete. That is still some ways off.
MonoDevelop support for MonoDroid: Currently our
entire toolchain is Visual Studio based, just because we
figured this is where the majority of developers would be.
We are hard at work to bring the same experience to
MonoDevelop users on MacOS and Linux.
Upgrade MonoTouch to
Mono 2.8: Currently our MonoTouch product is based on our
older Mono 2.6 release, and there
are too
many features in Mono 2.8 that users want.
One feature in particular that we are working on is the use
of LLVM's optimizing compiler for Mono on the iPhone. As
MonoTouch is entirely batch-compiled and has no JIT, we can
use the LLVM backend of Mono instead of our codegen backend to
generate smaller and faster code.
And this is only weeks after we pushed
our jumbo
3.2.2 release.
Deploy Cecil/Light: Cecil is JB's library that we
use every time we need to process ECMA CIL images. Debuggers,
compilers, assembly browsers, linkers, mergers, spliters,
injectors, decompilers and many other tools in Mono are built
with Cecil.
JB has revamped Cecil to be a lot lighter memory-wise, and
has improved its API. This new version has been already
deployed on most of our master trees
in GitHub and will be
available to everyone on the next iteration.
C# Compiler to use IKVM Engine: Our C# compiler has
historically used System.Reflection.Emit as its code
generation engine. We are adding a second backend to the
compiler, this time Jeroen Frijters's IKVM.Reflection engine.
This will eliminate the need to have our compilers "bound"
to an mscorlib profile. This means that we will no longer
need various hacks that we have in place to build special
compilers to target special profiles of Mono. Just one
compiler for all API profiles.
VB Compiler using Cecil Engine: Rolf updated the
Visual Basic compiler to use Cecil as its backend engine.
Upgrade our Online API documentation: a very much
needed upgrade to our documentation system is ongoing, based
on
Jonathan's Kipunji
ASP.NET MVC documentation engine and Jackson's hard work to
productize it. We are going to move our documentation to this
new system. You can preview our new documentation system
here:
MonoMac's
Documentation Test Site.
Hopefully, this time, we will make our documentation
editable on the web.
Moonlight GPU Acceleration and Perspective 3D
transforms: this project has been underway for a little
more than a year and I blogged about the
GPU
Acceleration recently.
GPU acceleration is based on the fine work from Gallium,
and also has made Moonlight's engine more reusable as a
general purpose accelerated framework.
Moonlight's RichText control: this is basically a
word-processor on a widget. And who better to work on this
than Chris Toshok who originally wrote XWord for Unix almost
13 years ago and which lead to the creation of LessTif.
Moonlight Test Suite: We are up to 47.77% of the
Silverlight 4 test suite passing. This is a really big number
considering that we only started work on Silverlight 4
features very recently. We have been making progress at
about 3% every week.
Moonlight Beta: as the stars of codecs, tests and
MS-PL code align, we are getting ready to do the first public
beta of Moonlight 4 early next year.
Moonlight Platform Abstraction Layer: We did a proof
of concept port of Moonlight to Android and OSX to improve
Moonlight's Platform Abstraction Layer. It should now be
possible to reuse the Moonlight engine in other platforms and
operating systems. Think of this as a "porting kit". You get
the source, get it running elsewhere and if it breaks, you get
to keep both pieces.
MonoMac: we just
released MonoMac
0.4 and we are now adding support for creating
self-contained application bundles that developers can
redistribute themselves or even submit to the Apple AppStore
for MacOS.
MonoMac has been a lot of work, mostly, due to popular
contributions. There is a nice emerging community of new
contributors to Mono that has sparked in the last few
weeks.
Garbage Collector Performance Tuning: with Mono 2.8
we shipped our new copying and precise collector and we made
it easy for users to try it out (mono --with-gc=sgen). With
the information we have collected, we are now improving the
reliability and performance of the collector.
Sgen already helped us get up to 30% performance boosts on
ASP.NET workloads, and the new results are nothing short of
amazing. We can not wait to share this with the world (or
you can try it out today by building Mono from master).
System.Xaml: The venerable desktop version of the
XAML parser is coming to Mono in our next release.
Precise Stack Scanning for SGen: we have also added
support for precise stack scanning that will be useful in a
few workloads.
One surprising thing that we found out, and this will come
as a shocker to many --it certainly was for me--, precise
stack scanning over conservative scanning requires a lot of
extra memory to keep stack maps. Unless you have some
particular need to use precise stack scanning, you will be
better off memory-wise and CPU-wise using conservative stack
scanning.
Concurrent GC with SGen: as you can guess, SGen has
been great for Mono, and more concurrent configurations of GC
scanning will be supported in our next release. Some were
disabled in 2.8, some are new.
Moonlight and DeepZoom: we had a decent DeepZoom
implementation, but now we have a fabulous one. And by
fabulous I mean, we pass Microsoft's tests :-)
Intellisense for Android's markup: Atsushi created a
DTD for us to bundle with MonoDroid to let users at least edit
their Android UI XML with auto-complete in Visual Studio.
ParallelFX: our parallel FX in Mono 2.8 was the
first time that we distributed it. We have been working on
improving its performance, distribution and balancing
algorithms.
Update: both the ParallelExtra samples gallery and
Microsoft Biology Foundation are now runnable.
Monodevelop Addins: Lluis launched the Beta for
MonoDevelop's Addins
system. You can use this to publish your MonoDevelop
add-ins to your users, maintain multiple versions of them and
get cute statistics on your add-in.
This is the app-store of MonoDevelop addins, except they
are all free. For example, this shows that in the last 7
days, 144 users installed the MonoMac addin:
And that is what has kept us busy since the releases of
Mono
2.8, Moonlight
2, MonoDevelop
2.4
and MonoTouch
3.2.
January and February will be busy months for us as we
release betas for Moonlight 3/4, MonoDevelop 2.6, Mono 2.10
and the official launch of MonoDroid 1.0.