NewLife有几十个开源项目,从2002年开始至今已有22年。一直以来,我们为了兼容尽可能多的用户环境,始终保持着低版本.Net框架的支持。例如NewLife.Core在2016年4月才停止支持.Net2.0,2018年12月才停止支持.Net4.0。实际上,因为EDA产品线(企业桌面应用)需要,直到今年(2024年)还能从nuget下载到net20/net40的包,例如10.10.2024.701-net2010.10.2024.801-net40

在最近6年时间里,最纠结的莫过于是否支持.Net4.5,社区也发起过多次投票和讨论,甚至一度移除了.Net4.5版本。几个月后不得不再次把它拉回主线,继续迭代维护。根本原因在于能够升级到NetCore的项目,早已升级到net6/net7/net8,而遗留在.Net Framework的项目,一定是net45/net46/net47/net48这些传统桌面应用

近几年时间,为了稳定支持众多下游项目,NewLife.Core核心库并没有太多改变,一直都是修修补补,加强多环境适应能力,以及一点点提升性能。

今天,我们需要卸下一些包袱,继续前行!

旧版v10独立分支做修补维护:https://github.com/NewLifeX/X/tree/v10

从2024年8月开始,核心库NewLife.Core主版本号由v10升级到v11,新一代目标是:提升吞吐降低内存!

v10开始于2022年8月9日,刚好两年多时间。

v11主要工作是全面引入Span<T>和Memory<T>,逐步替代原来的Packet,部分场合引入MMF内存映射文件。减少内存分配,降低GC压力。该改进主要受益功能是网络库、通信库,以及Http请求封装。其它基于网络库的项目将会在内存占用和吞吐上得到很大提升,如:NewLife.Remoting、AntJob、NewLife.Redis、NewLife.MQTT、NewLife.RocketMQ。

典型数据库应用中,XCode查询数据也会带来大量的内存分配。

v11存在一些破坏性升级,在下游没有引入v11的NewLife.Core时,最终产品项目不应该独立升级NewLife.Core到v11。

v10源码已开启独立分支v10,以持续修正各种BUG,但不会添加新功能。

v11的量化目标,普通应用持续运行,内存占用小于100M!