Notas de Liberação Mono 3.8.0

Release date: 04 Sep 2014

Mono 3.8.0 tem 711 comites desde a última liberação. É o trabalho de 61 contribuidores desde 28 de Maio de 2014. 58 bugs foram corrigidos.

Pontos Altos

  • Melhorias de performance e escalabilidade através de todo o runtime.
  • Completado o port para Windows em 64 bits.
  • Protocolo ‘no metal’ (wire protocol) do depurador otimizado para conexões usb.

Depurador

  • Protocolo de baixo nível (wire protocol) atualizado para lidar melhor com conexões de alta latência, como as encontradas na depuração via USB.
  • Biblioteca cliente agora com cache com pedidos de informação e em lotes. Em um cenário de testes o número de pacotes transmitidos para fazer a execução passo-a-passo caiu de 2.233 para apenas 16, e a latência foi de segundos para 20 milissegundos.

Performance

  • O JIT lida melhor com ‘restos’ de precisão long na divisão por potências de dois, gerando código signifcativamente melhor.
  • Código 10x mais rápido é gerado para delegates que são chamados apenas uma vez. Funcionalidades do C# como async e LINQ produzem um monte desses delegates, então esta melhoria impacta todo mundo.
  • Melhoria na análise de aliases permite lidar com aliases de segunda ordem e eliminar checagem de nulos.
  • O runtime tem uma hashtable que pode ser lida concorrentemente que torna cargas pesadas em instrospecção significantemente mais rápidas e escaláveis.

Coleta de Lixo (Garbage Collection)

  • Uma da estruturas de dados centrais do coletor de lixo foi otimizada o que deve reduzir em 5 a 10% os tempos de coleta.

Correções

Runtime

  • Fix the leaking of mach ports introduced by 98bbf8512aec0fa01b4426583280f6d231d22187. Fixes #22068
  • Fix Process.PrivateMemorySize64 etc. on ios. Fixes #21882
  • Fix enum->int casts in gsharedvt code. Fixes #21893
  • Avoid making generic calls from gsharedvt methods normally, go through the rgctx infrastructure instead. Fixes #21677
  • Fix another native-types problem. Hopefully fixes #21670 and #21636
  • Use alias information to eliminate explicit null checks. Fixes #21645
  • Initialize fields in MonoField:GetFieldOffset () if needed. Fixes part of #21604
  • Properly handle rethrow outside of catch blocks. Fixes #20412
  • Disable runtime unit tests on linux, because it cannot be linked due to circular dependencies between libraries. Fixes #21520
  • When parsing a method header, ensure we pass any available generic context. Fixes #21388
  • Added new mono_domain_set_config function; used to fix ConfigurationErrorsException in #10468
  • Only apply the maverick stack size hack to the main thread. Fixes #10096
  • Don’t hardcode the temp dir to /tmp, use g_get_tmp_dir instead. Fixes #20894
  • Explicit thread GC data around instead of relying on TLS storage. Fixes #20360
  • Make WaitForPendingFinalizers () really wait for the finalizers added by a previous GC. Fixes #20503
  • Fix the marshal7.cs test, longs can be aligned to 4 bytes on 32 bit linux, and the runtime no longer aligns structure sizes to 8 bytes. Fixes #20788
  • Fix the popping of LMF frames during unwinding. Fixes #20616
  • Fix the marshalling of ByValTStr types which have a size specified. Fixes #20674
  • Fix the decoding of MonoJitInfo. Fixes #16439
  • Make it possible to create views to magic zero size files such as /dev/zero. Fixes #19460
  • Free static bound delegate wrappers of dynamic methods. Fixes #19058
  • Don’t perform double accounting of offset for named memory segments. Fixes #20591
  • Avoid joining attached threads. Fixes #19343
  • Fix support for custom marshallers defined in other assemblies. Fixes #20020
  • Fix a jit assertion on a class which contains an empty struct as a static field. Fixes #20349
  • Applied patch from Kyle Edwards kyleedwardsny@gmail.com. Fix isinf () check with clang. Fixes #20244
  • Fix constrained type unwrap for enum types. Fixes #18371

Bibliotecas Fundamentais

  • Handle quoted filename value. Fixes #21960
  • Correctly handle partial chunk sizes. Fixes #20583
  • Tweak Dictionary initial capacity to be more conservative. Fixes #21375
  • Handle closed-over-null delegates created with IL when using InvokeDynamic. Fixes #21196
  • Fix a race in a Task test. Fixes #20921
  • Contract the values array when decoding an array with a negative number and a trailer that evals to zero. Fixes #20456
  • Fixes issue with expression columns and IsNull. Fixes #20925
  • Array qsort without head allocation. Fixes #20922
  • Enum::TryParse ignores leading whitespaces. Fixes #20870
  • Fix disposing of DelegatingHandler. Fixes #20818
  • Fix digest authentication (bug #18799)
  • Only recycle ServicePoints from the idle timer (fixes #19823)
  • Changed ConcurrentDictionary.Contains(KeyValuePair<TKey, TValue>) to also compare value. Fixes #16990
  • Add System.ServiceModel.Security assembly. Fixes #20108
  • Removed NET_2_1 conditional blocks from FileInfo. Fixes #19862

Compilador C#

  • Update codegen for boolean loads. Fixes #21685
  • Effective base class can include inherited types. Fixes #21390
  • Handle duplicate resume point registration. Fixes #21387
  • Arguments can be empty when reporting missing params argument. Fixes #21215
  • Flow analysis of moved arguments. Fixes #20983
  • Run new initializer await checks only in async context. Fixes #20614[system.data] Parse numeric expressions using invariant culture. Fixes #20582
  • Reachability analysis should ignore local variables declarations. Fixes #20603
  • Check for missing dependencies of container types. Fixes #20382
  • Resolve event expression when testing left side expression. Fixes #20493
  • Flow analysis of binary expressions not using logical operators. Fixes #20515

MSBuild

  • Add 4.5.1 framework. Fixes #20827
  • Parsing conditions with property references. Fixes #20634
  • Implements property functions using constructor syntax. Fixes #12999

Depurador

  • Avoid clearing event requests if they reference an assembly which is unloaded. Instead, remove the assembly reference from the event request so it stays active. Fixes #9924.

Contribuidores

Aaron Bockover, Alex Rønne Petersen, Alexander Köplinger, Alexandre Mutel,
Alexis Christoforides, Andrea Canciani, Andrius Bentkus, Atsushi Eno,
Bertrand Lorentz, Brezae Vlad, Brian Durham, Chris Hamons, Christian Hüning,
Cody Russell, Damien Diederen, Daniel Reiter Horn, David Karlaš, Doug Rathbone,
Ed Boren, Filip Lundgren, Iain Lane, Ivo Smits, Jaroslav Imrich, Jeffrey Stedfast,
Jo Shields, João Matos, Jonas ‘Sortie’ Termansen, Jonathan Pryor, Joseph Portaro,
Jérémie Laval, Lance Hepler, Larry O’Brien, Lucas, Ludovic Henry, Marek Habersack,
Marek Safar, Mark Probst, Martin Baulig, Matthew Leibowitz, Meai1, Micah Zoltu,
Michael Hutchinson, Miguel de Icaza, Nathanael Jones, Neale Ferguson, Oleg Stepanischev,
Rodrigo Kumpera, Rolf Bjarne Kvinge, RyanMelenaNoesis, Sebastien Pouliot, Serguzest,
Seth Jackson, Steffen Kieß, Stephen McConnel, Timotheus Pokorra, Tom Rathbone, Zoltan Varga,
i59, marcos henrich, rhapsodyn, yjoly