Hasty Briefsbeta

双语

A proposal to add GC-less, unmanaged memory spaces to C#

8 months ago
  • #Performance
  • #C#
  • #Concurrency
  • 引入'Spaces'作为C#的新架构原语,旨在统一高级托管语言与低级系统语言
  • 通过允许系统以单体架构设计但以微服务形式部署,试图解决'单体架构vs微服务'的争论
  • Spaces是拥有独立内存堆和线程的计算隔离单元,可消除竞态条件等并发问题
  • Space间通过异步消息传递通信,使用'swait'和'srun'等新关键字进行抽象
  • 支持通过.csproj文件细粒度配置Space,包括执行环境(托管/非托管)、编译方式(AOT/JIT)、运行时(线程组/隔离)、传输机制(共享内存/gRPC/命名管道)
  • 引入'overspace'实现上下文多态,允许类型在不同Space中具有不同实现
  • 提出严格的'Airlock'安全模型管理Space间通信,确保数据被复制但行为在目标Space中重构
  • 通过将现有C#应用视为运行在隐式'默认Space'中来保证向后兼容
  • 需要增强CLR和Roslyn编译器以支持Space生命周期管理、跨Space通信和非托管执行
  • 设计为可选功能,并与IDE深度集成以提供上下文感知工具、调试和智能提示