Notas de Liberação Mono 3.6

Release date: 12 Aug 2014

Mono 3.6.0 tem 878 comites desde a última liberação. É o trabalho de 66 contribuidores desde 10 de Março de 2014, dos quais, 22 fizeram sua primeira contribuição. 112 bugs foram corrigidos.

Pontos Altos

  • Contadores de performance em tempo de execução (Runtime performance counters) foram integrados ao profiler permitindo que informação dos contadores seja apresentada nas ferramentas de profiling em particular no novo profiler que a Xamarin está preparando.
  • O profiler agora produz backtraces no modo estatístico. O modo de rastreamento (tracing mode) do profiler agora funciona em ARM.
  • Agora distribuimos o nuget em mac.

Depurador

  • O depurador agora suporta faixas de linhas e de colunas. pdb2mdb suport isso também. Nota: O resto da cadeia de ferramentas ainda precisa ser atualizada.
  • O depurador agora suporta mudar a linha corrente no contexto mais alto (top frame).
  • Montes de correções e melhorias na performance.
  • O depurador agora suporta ler o valor de propriedades simples sem chamar o método de acesso (getter), isto é feito usando um interpretador ‘leve’ de IL para pequenos pedaços de código. Isto permite que mais propriedades sejam inspecionadas enquanto o processo está completamente parado sem ter que temporariamente recomeçar a execução do alvo para executar o código do método de acesso.
  • Modo de resposta buferizada adicionado para melhorar a eficiência de rede em conexões de alta latência como USB.

Coleta de Lixo (Garbage Collection)

  • A ponte do coletor recebeu um boa dose de trabalho na melhoria de performance. Existem agora dois novos modos que melhoram significativamente para certos tipos de carga.

Bibliotecas de Classe

  • Muitas melhorias na pilha http: alguns vazamentos foram corrigidos, bem como soluções foram encontradas para bugs antigos envolvendo operações assíncronas e proxies. Nós introduzimos uma infraestrutura de testes mais ampla para garantir que esses bugs não retornem.
  • System.IO.Compression foi implementada.
  • System.Security.Claims foi implementada. Ela reside na montagem (assembly) System (antes ela existia parcialmente na pilha Identity, mas agora reside no novo ‘lar’ que a API .NET 4.5 lhe destinou).

Performance

  • Refeita a lógica de bloqueio (locking) para eliminar um bloqueio ‘quente’ na busca de um método.
  • Uso de bloqueio mais fino (em pedaços menores) ao invés de um bloqueio ‘quente’ gigantesco.
  • Melhoria no hashing de alguns itens internos do runtime para evitar lentidão alguns casos raros (corner-cases) com generics.

Profiler

  • O profiler agora produz backtraces no modo estatístico.
  • Adicionada a descarga periódica (flushing) que deve melhorar a experiência dos usuários interativos. Isso significa que o profiler irá enviar dados mesmo que a aplicação não esteja correntemente enviando dados (em preparação para a nova UI).
  • Agora ele coleta e reporta informação dos contadores de performance. Veja a man page do mprof-report.

Diversos

  • Corrigida a lógica de tratamento do prefixo CIL volatile.
  • Agora distribuimos a ferramenta ikdasm do IKVM. Este é um disassembler confiável que não tem a limitação do monodis de exigir o conjunto completo de montagens interdependentes para fazer o seu trabalho. Isto permite disassemblar arquivos que não tenham suas dependências disponíveis.
  • Otimizamos a implementação de EqualityComparer para alguns tipos.
  • Mono.Unix.Native.Syscall.getxattr() agora retorna Errno.ENOATTR no OS X.
  • Nossa implementação do msbuild consegue compilar os novos Projeto K (novo ASP.NET) e Roslyn (novos compiladores).

Correções

Compilador C#

  • [mcs] Flow analysis of nested binary expressions inside anonymous methods was missing on left/right reset. Fixes #18417
  • [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
  • [mcs] Emit better code for null coalescing operator with nullable return type. Fixes #19702
  • [mcs] Add explicit array conversion involving type parameters. Fixes #18474

Outras correções

  • Add System.ServiceModel.Security assembly. Fixes #20108
  • [sdb] 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 #19924
  • Rename configure.in -> configure.ac. Based on PR #976
  • [System] Fix parsing of IPv6 addresses. Fixes #18574
  • [Http] Cleanup chained async operations. Fixes #19161
  • [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
  • [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. 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. Fixes #11904
  • [profiler] In mprof-report fix handling of the time filter when starting from 0. Fixes #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
  • [corlib] Rethrow user not initialization exception when lazy initialization throws. Fixes #19564
  • [mcs] Don’t report interface implementation errors for optional implementations. Fixes #18030
  • [mcs] Include more unicode categories in parsing identifier part character. Fixes #18229
  • [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
  • [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
  • [mcs] Fix recursive resolving of crefs. Fixes #18511
  • [mcs] Adding unit test for #18511
  • [mcs] Emit field initializer with expression tree in all user constructors. Fixes #18308
  • [dlr] Emit correct code for convert of nullable types. Fixes #19500

Runtime

  • [runtime] Fix decoding of jagged arrays in custom attributes. Fixes #19825
  • [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
  • [runtime] Clean up an #ifdef block
  • [jit] Make generic ctor calls made out of gsharedvt methods indirect, since they cannot be patched. Fixes #18634
  • [jit] Fix rethrowing of exceptions in thumb mode. Fixes #18448
  • [jit] Fix the lookup of the AOT version of Interlocked.Exchange<T> in full-aot mode. Fixes #19070
  • [jit] Fix an unreachable code part in mini_emit_memset (). Fixes #19083
  • [llvm] Fix a few problems with longs on 32 bit platforms. Fixes #18925
  • [runtime] Improve the hashing of MONO_TYPE_VAR/MONO_TYPE_MVAR. Fixes #18880
  • [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. Fixes #18880
  • [sgen] Restore hazard pointers in suspend signal handler. Fixes #15695

Bibliotecas Fundamentais

  • [corlib] Fix extra await context switch when custom SynchronizationContext does not change. Fixes #17878
  • [corlib] Add SortVersion. Fixes #18770
  • [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
  • [corlib] Fix localized resource loading bug. Fixes #14987
  • [corlib] Optimize EqualityComparer for common value types. Fixes #18400
  • [system] Don’t terminate response reading on bad cookie value. Fixes #18868
  • DataRowView indexer should not break on “completed” added rows (any rows other than the IsNew one). Fixes #18898 (Novell #595899)
  • [corlib] Defer TypeInfo instantiation logic in DefinedTypes. Fixes #19082
  • [Mono.Security] Send all the certificates (except the root) from an SSL/TLS ‘Server certificate’ message (7.4.2 in RFC2246). Fixes #16974
  • [System.Core] Don’t auto increment when trimming hashset. Fixes #18687
  • [system.net.http] Close service-point slot on explicit dispose. Fixes #18848
  • [Fix] System.Runtime.Caching.MemoryCache doesn’t honor SlidingExpiration. Fixes #18213
  • [System.Xml.Linq] Fix XNamespace.GetName locking to not be racy. Fixes #18564
  • [System.Net.Http] Incomplete byte ranges parsing. Fixes #18494
  • [System.ServiceModel.Web] Fix JsonQueryStringConverter.ConvertValueToString to work when running on any culture. Fixes #18437
  • System.Runtime.Caching.MemoryCache doesn’t order expirable items correctly. Fixes #18235
  • ConcurrentQueue<T>.TryPeek() is not thread safe. Fixes #18182
  • System/PCL: Implement HttpWebRequest.SupportsCookieContainer, WebRequest.CreateHttp. Fixes #18378
  • [interpreter] Implement simple quote expression. Fixes #18248
  • mdbrebase: use File.Move instead of FileInfo.MoveTo. Fixes #18361
  • Add unit test for Novell bug #497562
  • 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. Fixes #18245
  • [Sys.Data] Fix Novell Bug #519648
  • [Sys.Data] Add unit tests for Novell bug #519648
  • [System.XML] Fix handling of space in XSL value-of elements. Fixes #18113
  • [System.XML] Fix XSL node-set bug. Fixes #18114
  • [System.XML] Fix handling of global variables in XSLs. Fixes #18118
  • [System.XML] Do not reset document schema when reading an element. Fixes #9541

Windows.Forms

  • Fix setter of TableLayoutPanel.LayoutSettings throws unwanted exception. Fixes Novell #497562
  • [MWF] Fix opacity of form. Fixes #19856
  • [MWF] Fix ComboBox list to not display offscreen. Fixes #15462
  • [MWF] Fix Screen.FromRectangle. Fixes #8271
  • [MWF] Implement multi-display support on Linux. Fixes #325669
  • [MWF] Clear currentCell before disposing. Fixes #19567
  • [MWF] Unit test for DataGridView bug. Fixes #19567
  • [MWF] Don’t try to remove non-child control. Fixes #19818
  • [MWF] Add unit test for #19818
  • [MWF] Fix AutoSize behavior of FlowLayoutPanel. Fixes #2912
  • [MWF] Fix crash from null control in ContainerControl. Fixes #10537
  • [MWF] Fix TableLayoutPanel layout bug. Fixes #8907
  • [MWF] Fix clipping of last line of dropdown. Fixes #2462
  • [MWF] Release capture when clicking LinkLabel. Fixes #2787
  • [MWF] Fix text position on buttons. Fixes #463149
  • [MWF] Fix crash when setting Row.Height. Fixes #2394
  • [MWF] Unit test for Row.Height/MinimumHeight bug. Fixes #2394
  • [MWF] Fix size of text area on message box. Fixes #2090
  • [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

Contribuidores

Aaron Bockover, Alan McGovern, Alex Rønne Petersen, Alexander
Köplinger, Alexis Christoforides, Alice, Andrea Canciani, Antoine
Cailliau, Atsushi Eno, BrandonLWhite, Craig Minihan, Damien Daspit,
David Karlaš, David Moore, David Schmitt, Eberhard Beilharz, Eduardo
Burgos, Enrico Sada, Etienne CHAMPETIER, Fabian König, INADA Naoki,
Jeffrey Stedfast, Joao Matos, Joel Martinez, Jonathan Chambers,
Jonathan Pryor, Jose Donizetti, Jérémie Laval, Kimura Youichi, Lex Li,
Ludovic Henry, Marcus von Appen, Marek Habersack, Marek Safar, Marius
Ungureanu, Mark Probst, Martin Baulig, Michael Hutchinson, Miguel
Ferreira, Miguel de Icaza, Mika Aalto, NN, Neale Ferguson, Paolo
Molaro, Piotr Zierhoffer, Richard Cook, Richard Meyer, Robert
Pickering, Rodrigo Kumpera, Rolf Bjarne Kvinge, Sebastien Pouliot,
Seth Jackson, Stephen McConnel, Tammo ‘kb’ Hinrichs, Timotheus
Pokorra, Tom Hindle, Tom Philpot, Vincent Povirk, Virgile Bello,
Zoltan Varga, drummerhu, godFather89, ninjarobot, xplicit.