Akka.net v1.4.21-beta1 Release Notes

Release Date: 2021-06-03 // 12 days ago
  • ๐Ÿš€ Maintenance Release for Akka.NET 1.4

    ๐Ÿš€ Akka.NET v1.4.21 is a significant release that includes major performance improvements, bug fixes, and a major update to the Akka.DependencyInjection NuGet package.

    ๐ŸŽ Performance Improvements ๐ŸŽ Akka.NET v1.4.21 includes some major performance fixes and improvements:

    ๐ŸŽ Our observed performance numbers for Akka.Remote show a significant increase in performance for v1.4.21 over v1.4.20:

    Before

    PS> dotnet run -c Release --framework netcoreapp3.1      
    OSVersion:                         Microsoft Windows NT 6.2.9200.0
    ProcessorCount:                    16
    ClockSpeed:                        0 MHZ
    Actor Count:                       32
    Messages sent/received per client: 200000  (2e5)
    Is Server GC:                      True
    Thread count:                      109
    
    Num clients, Total [msg], Msgs/sec, Total [ms]
             1,  200000,    113379,    1764.56
             5, 1000000,    186429,    5364.05
            10, 2000000,    185340,   10791.11
            15, 3000000,    183218,   16374.06
            20, 4000000,    179824,   22244.63
            25, 5000000,    182716,   27365.89
            30, 6000000,    182039,   32960.61
    

    After

    PS> dotnet run -c Release --framework netcoreapp3.1                
    OSVersion:                         Microsoft Windows NT 6.2.9200.0 
    ProcessorCount:                    16                              
    ClockSpeed:                        0 MHZ                           
    Actor Count:                       32                              
    Messages sent/received per client: 200000  (2e5)                   
    Is Server GC:                      True                            
    Thread count:                      111                             
    
    Num clients, Total [msg], Msgs/sec, Total [ms]                     
             1,  200000,    109770,    1822.14                         
             5, 1000000,    192902,    5184.79                         
            10, 2000000,    191663,   10435.53                         
            15, 3000000,    191339,   15679.11                         
            20, 4000000,    192725,   20755.78                         
            25, 5000000,    189754,   26350.14                         
            30, 6000000,    189772,   31617.20                         
    

    ๐ŸŽ > N.B. these after numbers don't benefit from the performance benefits we observed in v1.4.20 when we invoked ThreadPool.SetMinThreads(0,0), which makes them even more impressive.

    โšก๏ธ Akka.DependencyInjection Updates We had one major issue we implemented in v1.4.21 for Akka.DependencyInjection: Abstraction of ServiceProvider, Improving Akka.DependencyInjection

    What this change did was:

    • ๐Ÿ—„ Deprecate the Akka.DependencyInjection.ServiceProvider class in favor of the Akka.DependencyInjection.DependencyResolver class - to avoid namespace collision with Microsoft.Extensions.DependencyInjection.ServiceProvider;
    • ๐Ÿ—„ Deprecates the Akka.DependencyInjection.ServiceProviderSetup class in favor of the Akka.DependencyInjection.DependencyResolverSetup class for consistency reasons;
    • โœ… Akka.DependencyInjection.DependencyResolver now takes an input of type IDependencyResolver, which allows users to abstract away the IServiceProvider and mock / replace it during unit testing; and
    • โž• Added some non-generic Props methods for dynamically spawning actors via DI.

    โฌ†๏ธ All of these changes are backwards-compatible with v1.4.20 and earlier - and the deprecation warnings will appear in your code when you upgrade. If you run into any issues upgrading to Akka.DependencyInjection v1.4.21 please reply on this thread!

    ๐Ÿ›  Other Changes and Fixes

    ๐Ÿ‘€ To see the full set of fixes in Akka.NET v1.4.21, please see the milestone on Github.

    COMMITS LOC+ LOC- AUTHOR
    12 999 160 Aaron Stannard
    10 410 299 Gregorius Soedharmo
    4 853 520 Ismael Hamed
    4 5 5 dependabot[bot]
    1 6 2 Brah McDude
    1 428 67 Sam Ember
    1 1 1 Martin