This release contains major upgrades to the profiler infrastructure to support tools like the Xamarin Profiler whose UI required more information than we were previously providing, or to make it simpler and faster for the profiler to consume and process the data. We reworked suspend code to be based on a state machine and eliminate known races in the process. This improved performance is mostly visible with runtime intrinsics that are invoked by the generated managed code, and shows up in particular in micro benchmarks. The Mono runtime no longer raises exceptions directly, but instead uses the mono_set_pending_exception which allows us to remove the overhead of calling an internal call. The Mono runtime can now perform direct calls to internal calls from managed code, without requiring icall wrappers. The Mono runtime is no longer able to use an externally compiled Boehm libgc library. Read more details and charts Dropped support for external Boehm libgc The changes include the introduction of a very simple thread pool abstraction (currently supporting only a single thread) that unifies concurrent marking, jobs when scanning roots, and concurrent sweeping. This phase happened while the world was stopped. The first phase of sweeping is iterating through the block list, freeing blocks without live objects, and designating the others for lazy sweeping. The purpose of this is to reduce pause times of major collections by making sweep completely concurrent. We have extended the use of SafeFileHandle in the stack, in addition to file handles, we now use it for socket handles. The runtime now supports the HFA calling convention on ARM architectures. The new code is also simpler to maintain. It has many interesting properties in terms of how threads are started up and terminated, which was too aggressive previously. We have replaced Mono’s implementation of the ThreadPool with Microsoft’s implementation. ProcessInfo.Module returns the list of loaded modules, we now are able to return the address of any of the assemblies loaded with mmap(), previously this functionality was not available. This fix makes Mono more closely behave like. In Mono, we were giving it the location that the exception was first thrown from. NET, the StackTrace on the exception object refers to the location where the exception was last thrown from. When this type of exception is caught in. It is possible to catch exceptions, save them to variables, and throw them again at a later time. Most commonly, an exception is thrown immediately after it is constructed and processed without being saved. We have changed the stack trace behavior on rethrows. So for example a KVP will share the implementation code with KVP Stacktraces on re-throws We now collapse enum to primitives and ref types to object and share based on that. This will be faster and allow us to enable the fast vcall thunk for delegate invoke. Delegate Internals UpdatedĬhange how delegates work internally from using a reverse linked-list to an array. This is a breaking change to those already native interop and relying on the wrong layout calculations done by the runtime. We now align them following ABI rules, which should fix a lot of issues. This caused all sort of issues when doing interop. Nested structs used to be aligned to sizeof (void *) so they looked blitable, but didn’t match their native layout. The PPDB format is under active development, while Mono currently implements support for the latest edition of the format, it is possible that the format might still change. And most importantly, it is fully documented.Īt the same time, newer versions of Microsoft’s Roslyn compilers are now able to produce PPDB files so it is now possible to use Roslyn compilers and have the Mono runtime use their debug information. The Portable PDB (Program Database, or PPDB) format describes an encoding of debugging information produced by compilers of Common Language Infrastructure (CLI) languages and consumed by debuggers and other tools. Mono’s runtime can now consume debug information encoded in the new Portable PDB file format.
0 Comments
Leave a Reply. |