Mono es una implementación de código abierto del controvertido lenguaje de programación .NET y el marco de software desarrollado por Microsoft para desarrolladores que desean crear aplicaciones para el sistema operativo Microsoft Windows. La principal diferencia entre .NET y Mono es que este último le permite crear aplicaciones que también se ejecutan en sistemas GNU / Linux.
Patrocinado por Novell
Patrocinado por Novell, el proyecto Mono permite a los desarrolladores de Linux crear aplicaciones enriquecidas que son multiplataforma, compatibles con los sistemas operativos GNU / Linux, Microsoft Windows y Mac OS X, con una productividad sin precedentes. Se basa en los estándares ECMA para el Common Language Runtime y el compilador C #.
Proporciona interoperabilidad de lenguaje
El software se compone de una gran biblioteca de clases que se conoce popularmente como FCL (Framework Class Library), que proporciona interoperabilidad de lenguaje a través de varios lenguajes de programación. También proporciona comunicaciones de red, desarrollo de aplicaciones web, algoritmos numéricos, interfaz de usuario, conectividad de bases de datos, acceso a datos y criptografía.
Compatible con las principales plataformas GNU / Linux
Siendo un lenguaje de programación bastante popular, y debido a que hay varias aplicaciones Linux importantes escritas en Mono, como el reproductor de música Banshee y el organizador, el proyecto es compatible con las principales plataformas GNU / Linux, incluyendo Arch Linux, Debian, CentOS. Ubuntu, openSUSE y Gentoo.
Marco .NET multiplataforma y de fuente abierta
A pesar del hecho de que es una implementación de Linux del lenguaje de programación .NET, Mono es multiplataforma y de código abierto, compatible con sistemas operativos convencionales como Microsoft Windows y Mac OS X, no solo en GNU / Linux.
Disponibilidad, desarrollo y arquitecturas compatibles
En GNU / Linux, el proyecto Mono se distribuye principalmente como un archivo fuente, lo que requerirá que los usuarios configuren y compilen el software manualmente antes de la instalación. Afortunadamente, podrá instalar la última versión de Mono de los repositorios de software predeterminados de numerosas distribuciones (enumerados anteriormente). Ambas arquitecturas de 64 bits y 32 bits son compatibles en este momento.
Qué hay de nuevo en esta versión:
- Adopción del código fuente abierto de Microsoft
- C # 6.0
- Optimizaciones de punto flotante
- Retiramos el soporte para los ensamblados 2.0, 3.5 y 4.0
- IKVM actualizado
- Sobrecarga del depurador ligero
- Soporte básico de PowerPC64 LE
Qué hay de nuevo en la versión:
- Adopción del código fuente abierto de Microsoft
- C # 6.0
- Optimizaciones de punto flotante
- Retiramos el soporte para los ensamblados 2.0, 3.5 y 4.0
- IKVM actualizado
- Sobrecarga del depurador ligero
- Soporte básico de PowerPC64 LE
¿Qué hay de nuevo en la versión 4.2.2.30:
- Adopción del código fuente abierto de Microsoft
- C # 6.0
- Optimizaciones de punto flotante
- Retiramos el soporte para los ensamblados 2.0, 3.5 y 4.0
- IKVM actualizado
- Sobrecarga del depurador ligero
- Soporte básico de PowerPC64 LE
Qué hay de nuevo en la versión 4.0.4.1:
- Adopción del código fuente abierto de Microsoft
- C # 6.0
- Optimizaciones de punto flotante
- Retiramos el soporte para los ensamblados 2.0, 3.5 y 4.0
- IKVM actualizado
- Sobrecarga del depurador ligero
- Soporte básico de PowerPC64 LE
Qué hay de nuevo en la versión 4.0.2.5:
- Adopción del código fuente abierto de Microsoft
- C # 6.0
- Optimizaciones de punto flotante
- Retiramos el soporte para los ensamblados 2.0, 3.5 y 4.0
- IKVM actualizado
- Sobrecarga del depurador ligero
- Soporte básico de PowerPC64 LE
Qué hay de nuevo en la versión 3.12.1:
- De parche a dirección SKIP TLS vulnerabilidad
- vulnerabilidad de parche a la dirección FREAK
- Eliminación de SSLv2
Qué hay de nuevo en la versión 3.12.0:
- Lo más destacado:
- Mejoras importantes en el rendimiento y el consumo de memoria en SGen.
- Mejore la heurística de ThreadPool para maximizar la eficiencia y minimizar el número de subprocesos
- Vista previa experimental en el nuevo instalador de Windows
- Recolector de basura:
- Reorganizó cómo se manipulan los bloques de bloques principales para aumentar la eficacia de la colección principal.
- Reducción del consumo de memoria mediante un mejor tamaño de los depósitos de asignación.
- Cambió a una heurística más simple para un tamaño de pila mayor que es más estable y evita picos inesperados.
- Se eliminó el colector paralelo, era una característica experimental que no proporcionaba una aceleración efectiva. Volverá en el futuro con un diseño funcional.
- Se eliminó la configuración del montón fijo, era una función experimental que no proporcionaba una mejora de rendimiento suficiente. Se eliminó por la complejidad adicional.
- Canarias ahora son compatibles para la guardería. Canarias es una herramienta ligera de depuración para detectar daños en la memoria. Habilítelo con el nuevo & quot; vivero-canario & quot; opción en la variable de entorno MONO_GC_DEBUG.
- Threadpool:
- Cambió a una escalada de colina adaptativa para dimensionar la piscina. Esto soluciona los casos en que el antiguo algoritmo causaría agallas haciendo girar demasiados hilos.
- El hilo del supervisor ahora entra en un sueño profundo cuando no se envían nuevos trabajos por un tiempo. Esto debería ahorrar energía en los objetivos que se ejecutan con baterías.
- Tiempo de ejecución:
- Implemente la nueva maquinaria suspendida en Windows, amd64 y arm. Se sabe que la nueva maquinaria es más confiable y da como resultado menos cuelgues cuando se utilizan funciones avanzadas de enhebrado de la plataforma.
- El soporte de versión mínima de Windows ahora es WinXP SP2, antes era Windows 2000. (¿Espera qué?)
- Herramientas:
- Compatibilidad con el depurador para 64 bits de Windows.
- Varias correcciones en el generador de perfiles para que el muestreo estadístico sea confiable y funcional en objetivos de Unix sin muestreo asistido por núcleo.
- Rendimiento:
- El código X86 ahora genera código sin impulso. Esto es más rápido en la CPU moderna y produce información de desenrollado más pequeña.
- El bloqueo del tiempo de ejecución interno reelaborado para hacer menos trabajo bajo bloqueos activos y hacer una carga de metadatos más optimista.
- Bibliotecas de clase:
- OS X ahora usa un FileSystemWatcher experimental que se basa en kqueue. Funciona y no requiere sondeos.
- Embalaje:
- Nuevo instalador experimental de Windows disponible. Es una vista previa técnica, por lo que cualquier comentario es bienvenido.
- Problemas conocidos:
- El nuevo OS X kqueue FileSystemWatcher consumirá todos los descriptores de archivos cuando vea directorios muy grandes.
- Canarias podría no funcionar en 64 bits y producir informes falsos en algunos casos de esquina de fijación.
- Corrección de errores:
- Corrección de errores en tiempo de ejecución:
- Evita las afirmaciones al apagar cuando se invocan las devoluciones de llamadas de descarga de dominio en el hilo del depurador durante el cierre. Reparaciones # 24342.
- Corrige el cálculo del tamaño del epilog para información EH. Reparaciones # 24577.
- Corrige una carrera de inicialización de clase que ocurre si un inicializador de clase inicializa un slot obtenido antes de que termine de ejecutarse. Reparaciones # 23242.
- Arregle OP_LOCALLOC en el brazo para que ajuste correctamente sp con el tamaño del área de param incluso si el tamaño es grande. Reparaciones # 24221.
- Desactiva la extensión de los argumentos de i8 / i16 a i32 en arm64, ya que la convención de llamadas ios les pasa de forma diferente a i32. Correcciones # 22800.
- Use NULLIFY_INS () para anular instrucciones y use MONO_INST_NEW para crear instrucciones de nodo phi para evitar las afirmaciones en el pase de derrame. Reparaciones # 24006.
- Reescribe la forma en que se realizan las llamadas directas entre los métodos de llvm. Anteriormente, todas las llamadas se realizaban para las entradas plt y los símbolos de entrada plt se alias para apuntar al método correspondiente si el método era directamente invocable utilizando la directiva .set assembler. Esto no parece funcionar con las versiones más nuevas de LLVM / CLANG, así que haz esto completamente en el lado de LLVM usando Value :: replaceAllUsesWith (). Soluciones # 23976.
- Hacer que los manejos de proceso no sean compartidos. Soluciones # 23423.
- Corrige el retorno de los vtypes que contienen un único miembro fp de los métodos de Pinvoke en OS X / x86. Soluciones # 23813.
- Corrige una afirmación de SRE. Correcciones # 19039.
- Implemente 5dbf97e66057f8626c53fcea30f1988d6627e5a2 para las llamadas realizadas desde NEWOBJ también. Reparaciones # 23557.
- Haga que cada parche CASTCLASS_CACHE sea único generando un identificador único del índice del método y un contador por método. Reparaciones # 23478.
- No permitir clases genéricas con diseño explícito. Soluciones # 23438.
- Agregue una opción para hacer que el depurador invoque virtual. Parte de la solución para # 23385.
- Permitir el cambio de nombre de los hilos del subproceso. Soluciones # 23206.
- Corrige la anulación de registro de nuestro manejador de excepciones en Windows. Soluciones # 23221.
- Hacer llamadas de gshared a gsharedvt métodos compartibles indirectos ya que de lo contrario, en tiempo de ejecución podríamos encontrar una instanciación y no podemos parchar la llamada, lo que lleva a problemas de rendimiento. Reparaciones # 23021.
- Permita el código de operación SIZEOF en el código gsharedvt si no hace referencia a un tipo gsharedvt. Correcciones # 22711.
- Arregle mono_marshal_free_ccw (). Soluciones # 22414.
- Correcciones de errores de las bibliotecas de clases:
- Repara la propiedad actual de DbEnumerator para clonar los datos leídos. Soluciones # 24452
- Permitir el envío de datos de texto de más de 4000 caracteres utilizando un tipo de columna diferente. Reparaciones # 21172.
- Implemente MonoGenericClass: GetCustomAttributes () para los tipos creados. Soluciones # 23769.
- BlockingCollection.AddAny mejorado. Correcciones # 22775.
- Implemente KnownTypes para DataContractJsonSerializer. Soluciones # 23058
- HttpQSCollection.ToString now url codifica valores. Se corrigió 22557.
- Llame a SetupRequestAsync solo después de que ContentType cambie. Se corrigió 19529.
- Notificar tarea primaria cuando la tarea secundaria usa NotOnFaulted. Soluciones # 23594
- Usa transiciones TZ cuando se ignoran las Reglas de ajuste. Se corrigió 23170.
- Timespan ticks formato de reescritura. Soluciones # 23376
- Deserialización Json mejorada de los números de coma flotante. Cuando DataContractJsonSerializer se creó a partir de un objeto de tipo, la deserialización de los números de punto flotante no fue posible. Repara 21583.
- Pruebe la deserialización de Json de un número de coma flotante como objeto. Cubiertas 21583.
- Rss20ItemFormatter.ReadFrom ahora establece Id cuando guid es PermaLink. Se corrigió 23262.
- corregir error # 23318 - XComment.ToString () acepta & quot; no válido & quot; valores.
- Uri creado a partir de la ruta UNIX y RelativeOrAbsolute ahora es relativo. Se corrigió 22954.
- UriParseComponents ya no decodifica '@' en UserInfo. Se corrigió 23246.
- Actualizar designadores en-NZ. Soluciones # 22212
- Actualiza a mi última solución para el error # 22129.
- Parámetros de copia / ref en la llamada asincrónica; error # 22129.
- Si no se especifica, supongamos que los elementos de la matriz son anulables. Reparaciones # 19012.
- Se agregó una serialización opcional basada en ShouldSerialize {V}. SerializationCodeGenerator y XmlSerializationWriterInterpreter ya no serializarán un atributo llamado {V} si su objeto tiene un método llamado ShouldSerialize {V} () que devuelve false. {V} Especificado ahora también se verifica que es verdadero antes de serializar el atributo, incluso si es una propiedad que no se puede establecer. Soluciones # 1852.
- GMT DateTimeOffset ahora se analiza correctamente. Correcciones # 22851. Los formatos de fecha GMT establecen useutc en true, por lo que useutc se marca para iniciar DateTimeOffset con un desplazamiento cero.
- Mejora de CalendricalCalculations fixed_from_dmy métodos. Reparaciones # 21930. En algunos casos, fixed_from_dmy se usa con el parámetro de mes mayor que el número de meses de ese año. El año ahora se incrementa hasta que el parámetro de mes sea válido.
- Enumerar todos los subdirectorios, incluido el primero. Soluciones # 22857
- Encode ContentDisposition name. Soluciones # 18422
- Cuando los objetos serializados necesarios ahora se convierten implícitamente. Reparaciones # 20403.
- Corrige ClientWebSocket.ReceiveAsync () con un pequeño buffer; error # 22704.
- Tokenize dash solo en valores de rango. Soluciones # 22764
- Formato de tiempo agregado con solo desplazamiento. Correcciones # 22558.
- reparar el error # 6512 (por Mikkel Kruse Johnsen) - no deserializar los parámetros GET.
- Se agregó soporte para UriComponents.SerializationInfoString. Correcciones # 21571.
- Unificar el manejo del ctor predeterminado y cero. Soluciones # 22591
- Hace que el estado SendAsync sea gratuito para manejar llamadas recursivas. Correcciones # 22724
- En realidad, corrige # 22179 para permitir solicitudes simultáneas.
- DateTime.Parse ahora maneja un número ilimitado de dígitos fraccionarios. Este cambio se realizó porque .NET puede analizar el formato ISO8601 con un número ilimitado de dígitos fraccionarios. Correcciones # 22417.
- Se agregó la prueba ISO8601FractionalDigits. Cubiertas # 22417.
- Retraso en la reflexión golpeada en el punto de ejecución real. Soluciones # 22522
- Actualizar RequestMessage.RequestUri.AbsoluteUri después de la redirección. Soluciones # 22383
- Captura excepciones lanzadas por SerialPortStream.Dispose () cuando se llama desde el finalizador. Soluciones # 15514
- KeyPairPersistence ahora intenta corregir los permisos de la carpeta. Ya no se lanza una excepción si los permisos de la carpeta se pueden arreglar. Corrige el error 19274.
- Correcciones de errores del compilador C #:
- Se puede usar un tipo de puntero como tipo de campo volátil. Soluciones # 23770
- Identifica correctamente la sección de conmutación constante cuando la coincidencia de valores no es inicio de sección. Soluciones # 23475
- Compruebe si hay operadores de usuario verdadero / falso en el tipo anulable sin empalmar. Soluciones # 23199
- Más ajustes al tokenizer condicional. Soluciones # 23319
- Completa caché miembro de restricciones heredadas de tipos no solo de tipos base. Soluciones # 23017
- Soluciona la eliminación de tipos genéricos incompletos de eval cache. Soluciones # 22393
- Análisis de expresiones ternarias cuya condición entonces es una lambda. Soluciones # 22523
- Correcciones de errores de MSBuild:
- Use ToolPath al compilar la ruta de ejecución de ToolTask. Soluciones # 22981
Qué hay de nuevo en la versión 3.8.0:
- Lo más destacado:
- Mejoras importantes de rendimiento y escalabilidad en todo el tiempo de ejecución.
- Terminó el puerto de Windows 64.
- Protocolo de cable del depurador optimizado para conexiones usb.
- Depurador:
- El protocolo de conexión actualizado maneja mejor las conexiones de alta latencia, como las que se encuentran cuando se realiza la depuración del USB.
- La biblioteca del cliente ahora almacena en caché agresivamente las solicitudes de información y lotes. En un escenario de prueba, los paquetes de pasos únicos transmitidos cayeron de 2233 a solo 16, con una latencia que va de segundos a 20 milisegundos.
- Rendimiento:
- El JIT ahora maneja mejor los residuos largos por potencias de dos, generando un código significativamente mejor.
- Se genera un código de 10x más rápido para los delegados que solo se invocan una vez. Las características C # como async y LINQ producen muchos de esos delegados, por lo que esta mejora afectará a todos.
- El análisis de alias mejorado ahora puede manejar alias de segundo orden y eliminar las comprobaciones nulas.
- El tiempo de ejecución ahora tiene una tabla hash simultánea y legible que puede hacer que la reflexión pesadas cargas de trabajo significativamente más rápido y más escalable.
- Recolección de basura:
- Optimizó una de las estructuras de datos principales del recolector de basura; debería dar como resultado una reducción del 5-10% en los tiempos de recolección.
- Corrección de errores:
- Tiempo de ejecución:
- Repara la fuga de puertos mach introducida por 98bbf8512aec0fa01b4426583280f6d231d22187. Soluciones # 22068
- Repara Process.PrivateMemorySize64 etc. en ios. Soluciones # 21882
- Corregir enumeraciones enum- & gt; int en el código gsharedvt. Soluciones # 21893
- Evite realizar llamadas genéricas desde los métodos gsharedvt normalmente, pase por la infraestructura rgctx. Soluciones # 21677
- Soluciona otro problema de tipos nativos. Con suerte corrige # 21670 y # 21636
- Usa información de alias para eliminar las comprobaciones nulas explícitas. Correcciones # 21645
- Inicialice los campos en MonoField: GetFieldOffset () si es necesario. Repara parte de # 21604
- Maneja correctamente el tiro de nuevo fuera de los bloques de captura. Soluciones # 20412
- Deshabilita las pruebas de la unidad de tiempo de ejecución en Linux, porque no se puede vincular debido a las dependencias circulares entre las bibliotecas. Soluciones # 21520
- Al analizar un encabezado de método, asegúrese de pasar cualquier contexto genérico disponible. Soluciones # 21388
- Se agregó la nueva función mono_domain_set_config; utilizado para reparar ConfigurationErrorsException en # 10468
- Solo aplica el truco de tamaño de pila inconformista al hilo principal. Soluciones # 10096
- No codifique el directorio temporal en / tmp, use g_get_tmp_dir en su lugar. Soluciones # 20894
- Datos de GC de subproceso explícitos en lugar de confiar en el almacenamiento de TLS. Soluciones # 20360
- Haga que WaitForPendingFinalizers () realmente espere los finalizadores agregados por un GC anterior. Soluciones # 20503
- Corrige la prueba marshal7.cs, los largos se pueden alinear a 4 bytes en 32 bits de Linux, y el tiempo de ejecución ya no alinea los tamaños de la estructura a 8 bytes. Correcciones # 20788
- Corrige la aparición de fotogramas LMF durante el desenrollado. Soluciones # 20616
- Corrige la clasificación de tipos ByValTStr que tienen un tamaño especificado. Soluciones # 20674
- Repara la decodificación de MonoJitInfo. Soluciones # 16439
- Hace posible crear vistas a archivos mágicos de tamaño cero como / dev / zero. Soluciones # 19460
- Envoltorios de delegados enlazados estáticos libres de métodos dinámicos. Soluciones # 19058
- No realice doble contabilidad de compensación para segmentos de memoria con nombre. Correcciones # 20591
- Evite unir hilos adjuntos. Soluciones # 19343
- Compatibilidad con arreglos para dispositivos marshallers personalizados definidos en otros ensambles. Soluciones # 20020
- Corrige una aserción jit en una clase que contiene una estructura vacía como un campo estático. Soluciones # 20349
- Parche aplicado de Kyle Edwards kyleedwardsny@gmail.com. Reparar isinf () comprobar con clang. Correcciones # 20244
- Repara el desenvuelto de tipos restringidos para tipos enum. Soluciones # 18371
- Bibliotecas de clase:
- Manejar el valor del nombre de archivo entre comillas. Soluciones # 21960
- Maneja correctamente los tamaños de fragmentos parciales. Correcciones # 20583
- Ajustar la capacidad inicial del diccionario para ser más conservador. Soluciones # 21375
- Maneja delegados cerrados sobre nulos creados con IL cuando usa InvokeDynamic. Correcciones # 21196
- Corregir una carrera en una prueba de Tarea. Correcciones # 20921
- Contrate la matriz de valores al decodificar una matriz con un número negativo y un avance que evalúa a cero. Soluciones # 20456
- Soluciona el problema con columnas de expresión e IsNull. Correcciones # 20925
- Array qsort sin asignación de encabezado. Correcciones # 20922
- Enum :: TryParse ignora los principales espacios en blanco. Soluciones # 20870
- Se arregló la eliminación de DelegatingHandler. Soluciones # 20818
- Autenticación de corrección de correcciones (error # 18799)
- Recicle solo ServicePoints desde el temporizador inactivo (corrige # 19823)
- Cambió ConcurrentDictionary.Contains (KeyValuePair) para comparar también el valor. Correcciones # 16990
- Agregue el ensamblado System.ServiceModel.Security. Correcciones # 20108
- Se eliminaron NET_2_1 bloques condicionales de FileInfo. Correcciones # 19862
- Compilador de C #:
- Actualizar codegen para cargas booleanas. Soluciones # 21685
- La clase base efectiva puede incluir tipos heredados. Soluciones # 21390
- Manejar el registro duplicado del punto de reanudación. Soluciones # 21387
- Los argumentos pueden estar vacíos al informar el argumento de parametros faltante. Soluciones # 21215
- Análisis de flujo de argumentos movidos. Correcciones # 20983
- Ejecutar nuevo inicializador aguarda cheques solo en contexto asíncrono. Reparaciones # 20614 [system.data] Analiza expresiones numéricas usando cultura invariante. Soluciones # 20582
- El análisis de accesibilidad debe ignorar las declaraciones de variables locales. Soluciones # 20603
- Verifique si faltan dependencias de tipos de contenedores. Soluciones # 20382
- Resuelva la expresión del evento cuando prueba la expresión del lado izquierdo. Correcciones # 20493
- Análisis de flujo de expresiones binarias que no usan operadores lógicos. Soluciones # 20515
- MSBuild:
- Añadir estructura 4.5.1. Soluciones # 20827
- Condiciones de análisis con referencias de propiedades. Correcciones # 20634
- Implementa funciones de propiedad usando la sintaxis del constructor. Correcciones # 12999
- Mono Debugger:
- Evite borrar solicitudes de eventos si hacen referencia a un ensamblaje que está descargado. En su lugar, elimine la referencia de ensamblaje de la solicitud de evento para que permanezca activa. Reparaciones # 9924.
Qué hay de nuevo en la versión 3.6.0:
- Lo más destacado:
- Los contadores de rendimiento en tiempo de ejecución se han integrado en el perfilador, lo que permite que la información del contador de rendimiento aparezca en las herramientas de creación de perfiles y, en particular, en el próximo generador de perfiles de Xamarin.
- El generador de perfiles ahora produce trazas inversas para el modo estadístico. El modo de rastreo del generador de perfiles ahora funciona en ARM.
- Ahora distribuimos nuget en mac.
- Depurador:
- El depurador ahora admite rangos de línea y columna. pdb2mdb lo admite. Nota: el resto de nuestra cadena de herramientas aún necesita ser actualizada.
- El depurador ahora admite cambiar la línea actual en el marco superior.
- Muchas correcciones de errores y mejoras de rendimiento.
- El depurador ahora admite la lectura de propiedades simples sin llamar a su getter, esto se hace teniendo un intérprete liviano de IL para pequeños fragmentos de código. Esto permite inspeccionar más propiedades mientras el proceso está completamente detenido y sin tener que reanudar temporalmente la ejecución del objetivo para ejecutar el código de propiedad.
- Se agregó un modo de respuesta de búfer para mejorar la eficacia de la red en enlaces de alta latencia, como USB.
- Recolección de basura:
- El puente GC obtuvo mucho rendimiento. Ahora hay dos modos nuevos que pueden mejorar significativamente algunas cargas de trabajo.
- Bibliotecas de clase:
- Múltiples mejoras de la pila http: se han solucionado algunas filtraciones en la pila, así como la solución de algunos errores de larga data que implican operaciones asincrónicas y proxies. Hemos introducido un arnés de prueba más completo para garantizar que esos errores no vuelvan a aparecer.
- System.IO.Compression ahora está implementado
- System.Security.Claims ahora está implementado. Reside en el ensamblado del sistema (existía antes en la pila Identity, pero ahora rastreamos el nuevo hogar desde la API .NET 4.5).
- Rendimiento:
- Bloqueo reelaborado para colocar un bloqueo activo en la búsqueda de métodos.
- Usa un bloqueo de grano fino en lugar de un gran candado caliente.
- Mejor clasificación de algunos elementos internos del tiempo de ejecución para evitar algunas ralentizaciones en los casos de esquina con genéricos.
- Analizador:
- El generador de perfiles ahora puede generar backtraces en modo estadístico.
- Agregó descarga periódica que debería ayudar a los usuarios interactivos. Esto significa que el perfilado enviará datos a través del perfil, incluso si la aplicación no está enviando datos (esto está ahí para respaldar la nueva interfaz de usuario del perfilador).
- Ahora recopila e informa la información del contador de rendimiento. Consulte la página man de mprof-report.
- Varios:
- Se corrigió el manejo del volátil. Prefijo CIL.
- Ahora distribuimos la herramienta ikdasm de IKVM. Este es un desensamblador confiable que no tiene la limitación de monodis de requerir un conjunto completo de ensambles que sean compatibles para desmontar. Esto desarmará incluso los archivos que no tienen sus dependencias disponibles.
- Optimal EqualityComparer para más tipos.
- Mono.Unix.Native.Syscall.getxattr () ahora puede devolver Errno.ENOATTR en OS X.
- Nuestra implementación de msbuild ahora puede construir Project K y Roslyn
- Optimal EqualityComparer para más tipos.
- Corrección de errores:
- Compilador de C #:
- [mcs] Falta el análisis de flujo de expresiones binarias anidadas dentro de métodos anónimos en el restablecimiento de la izquierda / derecha. Soluciones # 18417
- [mcs] Corrige la lógica de la mejoría para los parámetros predeterminados vs params. Soluciones # 19754
- [mcs] Análisis de flujo de expresiones binarias que no usan operadores lógicos. Soluciones # 20086
- [mcs] Emite información de versión no administrada de AssemblyFileVersion. Correcciones # 20057
- [mcs] Corrige el tipo de conversión del árbol de expresiones para las comparaciones de igualdad de enum levantadas. Soluciones # 19938
- [mcs] Se informa el error cuando se da el nombre del argumento para el parámetro param pero no se proporcionan todos los parámetros formales. Correcciones # 19878
- [mcs] Unifica la búsqueda de etiquetas accesible. Correcciones # 19887
- [mcs] No libere la copia de la dirección de campo antes de usarla. Correcciones # 20040
- [mcs] Soluciona la propagación de informes de error para declaraciones de bucle. Correcciones # 20034
- [mcs] Emite un código mejor para el operador coalescente nulo con un tipo de retorno anulable. Correcciones # 19702
- [mcs] Agregue una conversión de matriz explícita que incluya parámetros de tipo. Soluciones # 18474
- Otras correcciones de errores:
- Agregue el ensamblado System.ServiceModel.Security. Correcciones # 20108
- [sdb] Evita borrar solicitudes de eventos si hacen referencia a un ensamblaje que está descargado. En su lugar, elimine la referencia de ensamblaje de la solicitud de evento para que permanezca activa. Soluciones # 19924
- Cambie el nombre de configure.in - & gt; configure.ac. Basado en PR # 976
- [Sistema] Arreglo de análisis de direcciones IPv6. Soluciones # 18574
- [Http] Limpiar las operaciones de sincronización sincronizada. Soluciones # 19161
- [corlib] Agrega el análisis de formato hexadecimal Guid con espacios en blanco. Soluciones # 19915
- [System.Net.Http] Analizando información de producto como encabezados con la versión faltante. Correcciones # 19881
- [Sistema] Lanza IOE en más casos cuando se trata de un objeto de proceso no válido. Soluciones # 19864
- [bcl] Soluciona Process.PrivateMemorySize64 en osx, ahora devolvemos task_baic_info.resident_size. Soluciones # 19738
- Limpie el uso de las estructuras FILETIME, evite acceder a ellas como gint64, ya que eso provocaría problemas de alineación. Soluciones # 19739
- [sdb] Evita los desbordamientos de pila cuando un vtype encuadrado hace referencia recursivamente a sí mismo mediante campos. Soluciones # 18914
- [profiler] Filtra más tipos de eventos en mprof-report en función del tiempo. Soluciones # 11904
- [profiler] En el mprof-informe soluciona el manejo del filtro de tiempo al comenzar desde 0. Soluciones # 11904
- [http] Convierta datos de salida de cadena usando el encabezado BOM cuando esté disponible. Soluciones # 19667
- [system.net.http] Corregir la codificación de Content-MD5. Basado en el parche de nberardi. Soluciones # 19644
- [sdb] Evita colocar puntos de secuencia implícitos en desplazamientos donde la pila de IL está vacía cuando se usan puntos de secuencias basados en archivos de símbolos. Soluciones # 13640
- [eglib] Elimina el código test-glib, ya no tenemos que mantener la compatibilidad con glib. Soluciones # 19638
- [corlib] Retiro del usuario, no de la excepción de inicialización cuando se lanza la inicialización diferida. Soluciones # 19564
- [mcs] No informa errores de implementación de interfaz para implementaciones opcionales. Soluciones # 18030
- [mcs] Incluye más categorías Unicode en el análisis del carácter de la parte del identificador. Soluciones # 18229
- [mcs] Emite un valor constante nulo para los parámetros predeterminados de los tipos genéricos para indicar que no falta el valor. Soluciones # 19033
- [mcs] Escriba la conversión de parámetros que implican parámetros de tipo utilizando reglas de dependencia. Soluciones # 18473
- [mcs] Emite todos los métodos, como miembros, en el mismo orden en que aparecen en el código fuente. Soluciones # 19509
- [mcs] Convierte las constantes de enumeración subyacentes extendidas a su tipo subyacente. Soluciones # 18866
- [mcs] No aplicar tipo de referencia es optimización para expresiones dinámicas. Soluciones # 19423
- [mcs] Infla el método anónimo con los argumentos de tipo correctos cuando es asíncrono. Esto requiere el levantamiento en el tipo principal. Soluciones # 19176
- [mcs] Se soluciona usando la verificación de relación de tipo para los parámetros de tipo. Soluciones # 18639
- [mcs] El almacenamiento en caché de tipos de argumentos de tipo no debería ocurrir en condiciones de error. Soluciones # 18282
- [linq] Use la búsqueda de tablas hash en lugar de la exploración lineal para las teclas groupby. Soluciones # 18673
- [mcs] Miembro privado aún puede tener miembros base cuando está en tipos anidados. Soluciones # 19378
- [mcs] Haga que los informes de advertencia de eventos no utilizados sean consistentes con el csc. Soluciones # 19095
- [mcs] Agrega referencia de nivel superior solo cuando esto no se captura directamente. Soluciones # 19077
- [mcs] Soluciona la resolución recursiva de crefs. Soluciones # 18511
- [mcs] Prueba de unidad añadida para # 18511
- [mcs] Emite el inicializador de campo con el árbol de expresiones en todos los constructores de usuario. Soluciones # 18308
- [dlr] Emite el código correcto para la conversión de tipos anulables. Soluciones # 19500
- Tiempo de ejecución:
- [runtime] Repara la decodificación de matrices dentadas en atributos personalizados. Correcciones # 19825
- [runtime] Evita llamar a mono_thread_current () en sgen_thread_detach (), ya que puede construir objetos. Soluciones # 19755
- [runtime] Evita pasar comandos a lldb usando la API python, parece que no funciona bien en los archivos de script. Soluciones # 19732
- [runtime] Reparar Process.TotalProcessorTime volviéndose negativo. Soluciones # 19739
- [runtime] Limpiar un bloque #ifdef
- [jit] Hacer llamadas genéricas de ctor hechas de métodos gsharedvt indirectos, ya que no se pueden aplicar parches. Soluciones # 18634
- [jit] Arregla el reinicio de excepciones en modo pulgar. Soluciones # 18448
- [jit] Corrige la búsqueda de la versión de AOT de Interlocked.Exchange en el modo de full-aot. Correcciones [# 19070] (https://bugzilla.xamarin.com/show_bug.cgi?id=19070)
- [jit] Repara una parte del código inalcanzable en mini_emit_memset (). Soluciones # 19083
- [llvm] Soluciona algunos problemas con longs en plataformas de 32 bits. Correcciones # 18925
- [runtime] Mejora el hash de MONO_TYPE_VAR / MONO_TYPE_MVAR. Soluciones # 18880
- [intérprete] Deshabilita la invocación rápida de llamadas utilizando delegados de methodinfo debido a una limitación limitada. Soluciones # 18688
- [runtime] Mejora el hash de MONO_TYPE_VAR / MONO_TYPE_MVAR. Soluciones # 18880
- [sgen] Restaurar punteros de peligro en el controlador de señal de suspensión. Soluciones # 15695
- Bibliotecas principales:
- [corlib] Se corrigió el cambio de contexto de espera adicional cuando el SincronizaciónContext personalizado no cambia. Soluciones # 17878
- [corlib] Agregar SortVersion. Soluciones # 18770
- [corlib] Haga que el hilo invariante NumberFormatter también sea estático, ya que tiene un estado estático interno. Soluciones # 18599
- [corlib] Filtra cualquier carácter de signo de derecha a izquierda. Soluciones # 18522
- [corlib] Soluciona el error de carga de recursos localizados. Soluciones # 14987
- [corlib] Optimiza EqualityComparer para tipos de valores comunes. Soluciones # 18400
- [sistema] No finalice la lectura de respuesta en el valor de cookie incorrecto. Soluciones # 18868
- El indexador de DataRowView no debe romperse & quot; completado & quot; filas agregadas (cualquier fila que no sea la de IsNew). Reparaciones # 18898 (Novell # 595899)
- [corlib] Defer la lógica de creación de instancias de TypeInfo en DefinedTypes. Soluciones # 19082
- [Mono.Security] Envía todos los certificados (excepto la raíz) de un mensaje SSL / TLS 'Certificado de servidor' (7.4.2 en RFC2246). Soluciones # 16974
- [System.Core] No aumentar automáticamente al recortar hashset. Soluciones # 18687
- [system.net.http] Cerrar el espacio del punto de servicio en disposición explícita. Soluciones # 18848
- [Fix] System.Runtime.Caching.MemoryCache no respeta SlidingExpiration. Soluciones # 18213
- [System.Xml.Linq] Soluciona el bloqueo de XNamespace.GetName para que no sea agresivo. Soluciones # 18564
- [System.Net.Http] Análisis de intervalos de bytes incompletos. Soluciones # 18494
- [System.ServiceModel.Web] Corrige JsonQueryStringConverter.ConvertValueToString para que funcione cuando se ejecuta en cualquier cultura. Soluciones # 18437
- System.Runtime.Caching.MemoryCache no ordena elementos expirables correctamente. Soluciones # 18235
- ConcurrentQueue.TryPeek () no es seguro para subprocesos. Se corrigió [# 18182] (https://bugzilla.xamarin.com/show_bug.cgi?id=18182)
- Sistema / PCL: Implemente HttpWebRequest.SupportsCookieContainer, WebRequest.CreateHttp. Soluciones # 18378
- [interpreter] Implementa una expresión de cita simple. Soluciones # 18248
- mdbrebase: use File.Move en lugar de FileInfo.MoveTo. Soluciones # 18361
- Agregue prueba unitaria para el error Novell # 497562
- System.Runtime.MemoryCache.GetValues () arroja LockRecursionException con elementos caducados - GetValues () llama a MemoryCacheContainer.GetEntry () que ahora obtiene un EnterUpgradeableReadLock necesario por ExpireIfNeeded () - Se agregó un caso de prueba. Soluciones # 18245
- [Sys.Data] Soluciona el error de Novell # 519648
- [Sys.Data] Agregue pruebas unitarias para el error Novell # 519648
- [System.XML] Corrige el manejo del espacio en el valor XSL de los elementos. Soluciones # 18113
- [System.XML] Soluciona el error del conjunto de nodos XSL. Correcciones # 18114
- [System.XML] Corrige el manejo de variables globales en XSL. Soluciones # 18118
- [System.XML] No restablecer el esquema del documento al leer un elemento. Soluciones # 9541
- Windows.Forms:
- Reparador de TableLayoutPanel.LayoutSettings lanza una excepción no deseada. Repara Novell # 497562
- [MWF] Corrige la opacidad de la forma. Correcciones # 19856
- [MWF] Arregla la lista ComboBox para que no se muestre fuera de la pantalla. Soluciones # 15462
- [MWF] Fix Screen.FromRectangle. Correcciones # 8271
- [MWF] Implementar soporte de múltiples pantallas en Linux. Soluciones # 325669
- [MWF] Borrar currentCell antes de desechar. Soluciones # 19567
- [MWF] Prueba unitaria para el error DataGridView. Soluciones # 19567
- [MWF] No intente eliminar el control que no es secundario. Correcciones # 19818
- [MWF] Agregar prueba de unidad para # 19818
- [MWF] Corrige el comportamiento de AutoSize de FlowLayoutPanel. Soluciones # 2912
- [MWF] Corrige el bloqueo del control nulo en ContainerControl. Soluciones # 10537
- [MWF] Soluciona el error de diseño de TableLayoutPanel. Correcciones # 8907
- [MWF] Repara el recorte de la última línea del menú desplegable. Soluciones # 2462
- [MWF] Liberar captura al hacer clic en LinkLabel. Soluciones # 2787
- [MWF] Corrige la posición del texto en los botones. Soluciones # 463149
- [MWF] Se solucionó el bloqueo al configurar Row.Height. Soluciones # 2394
- [MWF] Prueba unitaria para el error Row.Height / MinimumHeight. Soluciones # 2394
- [MWF] Soluciona el tamaño del área de texto en el cuadro de mensaje. Soluciones # 2090
- [MWF] Se solucionó el problema si la aplicación de origen del portapapeles se cierra. Correcciones # 674098
- [Impresión] Mejore la configuración de impresora informada. Soluciones # 602934
- [Impresión] Agregue prueba unitaria para el error Novell # 602934
Qué hay de nuevo en la versión 3.2.6:
- Corrección de errores:
- Agregue las API de System.Runtime.InteropServices.WindowsRuntime y PCL Facade
- Soluciona el problema en el manejo de MSBuild de & quot; Devoluciones & quot; en. Esto afecta a varios paquetes Microsoft.Bcl.Build NuGet
- Implementar lotes de tareas en MSBuild. Correcciones BXC # 16403
- Agregue / Bibliotecas a la ruta de búsqueda de llvm en OSX, esto hace que --llvm funcione en más casos
Qué hay de nuevo en la versión 3.0.1 Beta:
- C # Compilador asincrónico
- Compilador de C # unificado para todos los perfiles
- 4.5 Perfil de API asíncrona
- Nuevos stacks Open Sourced integrados de Microsoft:
- ASP.NET MVC 4
- Páginas web de ASP.NET
- Entity Framework
- Razor
- System.Json (reemplaza al nuestro)
- Nuevo colector de basura de alto rendimiento (SGen, con muchas mejoras de rendimiento y escalabilidad)
- Tonelada métrica de mejoras de tiempo de ejecución y biblioteca de clases.
Qué hay de nuevo en la versión 2.10.8 / 3.0 Beta:
- Mono ahora tiene un compilador completo de C # 5.0 con soporte de programación asíncrona
- La evaluación ahora puede compilar tipos
- API de instancia
- C # Interactive Shell
- 4.5 Perfil
- Nuevas pilas de código abierto de Microsoft
- Recolector de basura
- Optimizaciones de tiempo de ejecución
- ASP.NET
- CodeContracts
- Mono.Data.Sqlite
- Biblioteca C5
Qué hay de nuevo en la versión 2.10.8:
- Esta versión actualiza la Biblioteca de tareas paralelas.
- SQLiteConnection ahora puede establecer el modo de subprocesamiento.
- Hay un protocolo de depurador mejorado.
- Se ha agregado soporte básico para MSBuild 4.0.
- NuGet ahora se ejecuta en Mono.
- Phalanger 3.0 ahora se ejecuta con Mono.
- Compatibilidad con algunas bibliotecas de Azure.
- Soporte para agrupar perfiles en un binario estático.
- El generador de perfiles ahora puede registrar sus datos en cualquier descriptor de archivo.
- SGen ahora tiene soporte nativo para sistemas de objetos que implementan ToggleRefs.
- Perfil móvil ahora contiene System.IO.MemoryMappedFiles.
- PerformanceCounters para estadísticas de JIT.
- Recuento de CPU de Android. HashSet ahora se puede serializar.
Comentarios que no se encuentran