发布于 2014-08-13 00:01:52 | 215 次阅读 | 评论: 0 | 来源: 网友投递
Mono 跨平台的 .NET 运行环境
Mono是一个由Novell公司(由Ximian发起,并由Miguel de lcaza领导的,一个致力于开创.NET在Linux上使用的开源工程。它包含了一个C#语言的编译器,一个CLR的运行时,和一组类库,并实现了 ADO NET和ASP NET。能够使得开发人员在Linux用C#开发程序。)主持的项目.该项目的目标是创建一系列符合标准ECMA (Ecma-334和Ecma-335)的.Net 工具, 包括C #编译器和共同语言(CL 即 Common Language)执行平台(Platform).与微软的.Net不同, Mono项目不仅可以运行于Windows系统内,还可以运行于Linux, FreeBSD, Unix, Mac OS X和Solaris。
Mono 3.6 发布,此版本从上一个版本开始,包括了 878 个 commits,从 2014 年 3 月 10 日开始,就有 66 位贡献者参与开发,修复了 112 个 bug。
Runtime performance counters have been integrated into the profiler.
The profiler now produces backtrace for statistical mode. tracing mode now works on arm.
Big refactoring on the class library build. We're now much closer to having it build on windows without cygwin.
We now distribute nuget
on mac.
It now support line and column ranges. pdb2mdb
supports it.
It now supports for changing the current line in the top frame.
Lots of bugfixes and performance improvements.
The debugger now support reading simple properties without calling their getter.
Added buffered response mode to improve network efficiency on high latency links such as USB.
The GC bridge got a lot of performance work. There are now two new modes that can significantly improve some workloads.
Multiple http stack improvements.
System.IO.Compression is now implemented
System.Security.Claims
Reworked locking to drop a hot lock in method lookup.
Use fine grained locking instead of a big hot lock.
Better hashing of some runtime internal items to avoid some corner-case slowdowns with generics.
It now produces backtraces in statistical mode.
Added periodical flushing that should help interactive users.
It now collects and reports performance counter information. See mprof-report
.
Fixed the handling of the volatile. CIL prefix.
We now distribute ikdasm
Optimized EqualityComparer for more types.
Mono.Unix.Native.Syscall.getxattr() can now return Errno.ENOATTR on OS X.
Our msbuild
implementation can now build Project K and Roslyn
Add System.ServiceModel.Security assembly. Fixes #20108
[sdb] Avoid clearning event requests if they reference an assembly which is unloaded. Instead, remove the assembly reference from the event request so it stays active. Fixes #19924.
[mcs] Fix betterness logic for default vs params parameters. Fixes #19754
[mcs] Flow analysis of binary expressions not using logical operators. Fixes #20086
[mcs] Emit unmanaged version info from AssemblyFileVersion. Fixes #20057
[mcs] Fix expression tree conversion type for lifted enum equality comparisons. Fixes #19938
[mcs] Report error when named argument for param parameter is given but not all formal parameters are provided. Fixes #19878
[mcs] Unify reachable label lookup. Fixes #19887
[mcs] Don't release field address copy before it's used. Fixes #20040
[mcs] Fix error reporting propagation for loop statements. Fixes #20034
Rename configure.in -> configure.ac. Based on PR #976.
[System] Fix parsing of IPv6 addresses (bug #18574)
[mcs] Emit better code for null coalescing operator with nullable return type. Fixes #19702
[mcs] Add explicit array conversion involving type parameters. Fixes #18474
[Http]: Cleanup chained async operations; bug #19161.
[runtime] Clean up an #ifdef block.
[corlib] Add Guid hex format parsing with whitespaces. Fixes #19915
[System.Net.Http] Parsing productinfo like headers with missing version. Fixes #19881
[System] Throw IOE in more cases when dealing with an invalid Process object. Fixes #19864
[MWF] Fix opacity of form (#19856)
[MWF] Fix ComboBox list to not display offscreen (#15462)
[MWF] Fix Screen.FromRectangle (#8271)
[MWF] Implement multi-display support on Linux (Fixes #325669)
[runtime] Fix decoding of jagged arrays in custom attributes. Fixes #19825.
[MWF] Don't try to remove non-child control (#19818)
[MWF] Add unit test for #19818
[runtime] Avoid calling mono_thread_current () in sgen_thread_detach (), since it can construct objects. Fixes #19755.
[runtime] Avoid passing commands to lldb using the python api, it doesn't seem to work well in script files. Fixes #19732.
[runtime] Fix Process.TotalProcessorTime becoming negative. Fixes #19739.
[bcl] Fix Process.PrivateMemorySize64 on osx, we now return task_baic_info.resident_size. Fixes #19738.
Clean up the usage of FILETIME structures, avoid accessing them as gint64 since that would lead to alignment problems. Hopefully fixes #19739.
[sdb] Avoid stack overflows when a boxed vtype recursively references itself using fields. Fixes #18914.
[profiler] Filter more event types in mprof-report based on time (more xambug #11904).
[profiler] In mprof-report fix handling of the time filter when starting from 0 (xambug #11904).
[http] Convert string output data using BOM header when available. Fixes #19667
[system.net.http] Fix encoding of Content-MD5. Based on patch by nberardi. Fixes #19644
[sdb] Avoid placing implicit sequence points at offsets where the IL stack is empty when using symbol file based sequence points. Fixes #13640.
[eglib] Remove test-glib code, we don't have to maintain compatibility with glib any more. Fixes #19638.
[mcs] Don't report interface implementation errors for optional implementations. Fixes #18030
[corlib] Rethrow user not initialization exception when lazy initialization throws. Fixes #19564
[mcs] Include more unicode categories in parsing identifier part character. Fixes #18229
[MWF] Clear currentCell before disposing (fixes #19567)
[MWF] Unit test for DataGridView bug (#19567)
[mcs] Emit null constant value for default parameters of generic types to indicate not missing value. Fixes #19033
[mcs] Do type parameter conversion involving type parameters using dependency rules. Fixes #18473
[dlr] Emit correct code for convert of nullable types. Fixes #19500
[mcs] Emit all method like members in same order as they appear in source code. Fixes #19509
[mcs] Convert extended underlying enum constants to their underlying type. Fixes #18866
[mcs] Don't apply reference type is optimization for dynamic expressions. Fixes #19423
[mcs] Inflate anonymymous method with correct type arguments when async this requires hoisting in parent type. Fixes #19176
[mcs] Fix using type relationship check for type parameters. Fixes #18639
[mcs] Caching of type argument types should not happen under error conditions. Fixes #18282
[linq] Use hashtable lookup instead of linear scan for groupby keys. Fixes #18673
[mcs] Private member can still have base members when in nested types. Fixes #19378
[mcs] Make unused event warning reporting consistent to csc. Fixes #19095
[mcs] Add parent storey reference only when this is not captured directly. Fixes #19077
[MWF] Fix AutoSize behavior of FlowLayoutPanel (#2912)
[corlib] Fix extra await context switch when custom SynchronizationContext does not change. Fixes #17878
[XML] Fix bug #9541 by Bart Verthé - do not reset document schema when reading an element.
[system] Don't terminate response reading on bad cookie value. Fixes #18868
Fixed xamarin #18898 # / novell #595899 DataRowView indexer should not break on "completed" added rows (any rows other than the IsNew one)
[corlib] Defer TypeInfo instantiation logic in DefinedTypes. Fixes #19082
[jit] Fix an unreachable code part in mini_emit_memset (). Fixes #19083.
[jit] Fix the lookup of the AOT version of Interlocked.Exchange<T> in full-aot mode. Fixes #19070.
[llvm] Fix a few problems with longs on 32 bit platforms. Fixes #18925.
[runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Hopefully fixes #18880.
[Mono.Security] Send all the certificates (except the root) from an SSL/TLS 'Server certificate' message (7.4.2 in RFC2246). Fixes #16974
Revert "[runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Hopefully fixes #18880."
[System.Core] Don't auto increment when trimming hashset. Fixes #18687
[system.net.http] Close service-point slot on explicit dispose. Fixes #18848
[interpreter] Disable fast call invocation using methodinfo delegates due to aot limitation. Fixes #18688
[runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Hopefully fixes #18880.
[corlib] Add SortVersion. Fixes #18770
[jit] Make generic ctor calls made out of gsharedvt methods indirect, since they cannot be patched. Fixes #18634.
[corlib] Make invariant NumberFormatter thread static too as it has internal static state. Fixes #18599
[corlib] Filter out any right-to-left sign characters. Fixes #18522
[Fix] Bugzilla #18213 - System.Runtime.Caching.MemoryCache doesn't honor SlidingExpiration
[System.Xml.Linq] Fix XNamespace.GetName locking to not be racy. Fixes #18564.
[jit] Fix rethrowing of exceptions in thumb mode. Fixes #18448.
[mcs] Fix recursive resolving of crefs (#18511)
[mcs] Adding unit test for #18511
[System.Net.Http] Incomplete byte ranges parsing. Fixes #18494
[corlib] Optimize EqualityComparer for common value types. Fixes #18400
[mcs] Flow analysis of nested binary expressions inside anonymous methods was missing on left/right reset. Fixes #18417
[mcs] Emit field initializer with expression tree in all user constructors. Fixes #18308
[System.ServiceModel.Web] Fix JsonQueryStringConverter.ConvertValueToString to work when running on any culture [#18437]
[System.XML] Fix handling of space in XSL value-of elements (#18113)
[System.XML] Fix XSL node-set bug (#18114)
[System.XML] Fix handling of global variables in XSLs (#18118)
[Fix] Bugzilla #18235 - System.Runtime.Caching.MemoryCache doesn't order expirable items correctly.
[Fix] Bugzilla #18182 - ConcurrentQueue<T>.TryPeek() is not thread safe
[sgen] Restore hazard pointers in suspend signal handler. Fixes #15695.
[corlib] Fix localized resource loading bug (#14987)
[MWF] Fix crash from null control in ContainerControl (#10537)
[MWF] Fix TableLayoutPanel layout bug (#8907)
System/PCL: Implement HttpWebRequest.SupportsCookieContainer, WebRequest.CreateHttp; Fixes #18378
[bxc#18361] mdbrebase: use File.Move instead of FileInfo.MoveTo
[MWF] Fix clipping of last line of dropdown (#2462)
[MWF] Release capture when clicking LinkLabel (Fixes #2787)
[MWF] Fix text position on buttons (#463149)
[MWF] Fix crash when setting Row.Height (Fixes #2394)
[MWF] Unit test for Row.Height/MinimumHeight bug (#2394)
[interpreter] Implement simple quote expression. Fixes #18248
[MWF] Fix size of text area on message box (Fixes #2090)
Fix setter of TableLayoutPanel.LayoutSettings throws unwanted exception (Novell bug #497562)
Add unit test for Novell bug #497562
[Fix] Bugzilla #18245 - System.Runtime.MemoryCache.GetValues() throws LockRecursionException with expired items - GetValues() calls MemoryCacheContainer.GetEntry() which now gets an EnterUpgradeableReadLock needed by ExpireIfNeeded() - Added a test case
[MWF] Fix hang if clipboard source application closes down (fixes #674098)
[Printing] Improve reported printer settings (Fixes #602934)
[Printing] Add unit test for Novell bug #602934
[Sys.Data] Fix Novell Bug #519648
[Sys.Data] Add unit tests for Novell bug #519648
Mono 是一个由Novell 公司主持的项目。该项目的目标是创建一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET 工具,包括C# 编译器和共通语言执行平台。与微软的.NET Framework 不同,Mono 项目不仅可以运行于Windows 系统上,还可以运行于Linux,FreeBSD,Unix,Mac OS X 和Solaris。
Mono 的开发工具 MonoDevelop
微软开发了一个称为共享源码公共语言基础(Shared Source Common Language Infrastructure,Shared Source CLI)的可用于 FreeBSD,Windows 和 Mac OS X 的 .NET 实现版本。微软的共享源码协议并不是开源软件协议,且可能对于社区来说也是不足够的(它明文禁止了对软件的商业用途)。我们还可以见到另外一个 .NET 实现版本,Portable.NET 项目,该项目与 Mono 项目有着很多相同的目标。
Mono 虚拟机包含一个实时编译引擎,该引擎可用于如下处理器:x86,SPARC,PowerPC,ARM,S390(32位模式和64位模式),x86-64,IA64 和64位模式的 SPARC。该虚拟机可以将代码实时编译或者预先编译到原生代码。对于那些没有列出来的系统,则使用的是代码解释器。
下图是MONO的体系结构图