Use struct pointers instead of marshaling IntPtrs
There's a bug in Mono 2.10 that causes crashes with this, but most of the world should have moved off it by now.
The benefit of implementing this is that memory usage for SharpFont drops to 1/2 of what it is now and a lot of complexities with marshaling data disappears.
Before I implement this I need to survey versions of Mono that are being distributed/supported with other software/operating systems.
- Ubuntu 12.04 LTS (supported until April 2017)
- ~~Unity3D (5.5.0 started updating Mono backend)~~
- ~~Fedora <= 22 (supported until July 19, 2016)~~
- Debian Wheezy (supported until May 31, 2018)
I'll keep looking and seeing if there's anything major.
Fedora is also still using Mono 2.10 for no good reason.
Looks like Fedora 22, released around June, will update to Mono 3.0. Fedora supports old versions for approximately 13 months, added it to the list.
Am using fedora 24 which ships mono 4.2 .
Fedora 22 (last release on 2.10.8) will EOL in about 2 weeks (http://forums.fedoraforum.org/showthread.php?t=310383), F23 updates to Mono 4.0+
Updated post with more accurate dates, I probably won't care about Unity since it seems like font rendering is handled pretty well in-engine.
According to http://koji.fedoraproject.org/koji/packageinfo?packageID=30 (fedora/redhat's build farm) - Redhat Enterprise Linux 7 possibly still uses mono 2.10.8 . Enterprise Linux is Redhat's linux for paying customers (vs Federa, the "community linux edition").
Looks like RHEL 7 will be in a production phase until 2024 and probably won't be EOL'd until 2027 (currently unannounced).
At some point the only remaining distros (perhaps just Debian + RHEL/CentOS) will be more server-oriented and their users will be fine with installing a newer version over 2.10. Waiting for 11 years doesn't make sense.
I guess this is also a bit of a function of when downstreams want to stop supporting 2.10, this is something I'd likely revisit once Ubuntu 12.04 has EOL'd to see if the landscape has changed at all.
Unity 5.5.0 updates Mono 2.6 to 4.4, but only the compiler. They joined the .NET Foundation and have said they'll continue to update the C#/Mono integration. There's really no EOL for Unity, but devs tend to update pretty frequently as there are a lot of cool new features with each release so I generally wouldn't consider Unity a problem at this point.
Still waiting for Ubuntu 12.04, may set up a feature branch a little earlier than that to get some feedback/testing done.