当前位置: 首页 > news >正文

.NET9 AOT完全自举了吗?

.NET9 AOT完全自举了吗?

自举概念解读

在编程语言领域,自举是一个有些抽象的概念,简单来说就是用自身去实现自身相关的功能。就像Python解释器是用Python语言编写的,通过这个解释器去解释Python应用层级的框架、语法糖以及其他功能,这就是自举的体现。

回到.NET的情况,.NET的前端编译器Roslyn是用C#编写的,然而CLR/JIT后端编译却是基于C++实现的,所以.NET整体并不满足自举的条件。那.NET AOT又如何呢?

.NET AOT的发展与现状

之前版本情况

AOT编译器ILC是由C#编写的,它构建了内存模型,能够加载MSIL并调用JIT。但在.NET9之前,目标文件Obj是由llvm后端构建的,这就导致在之前的版本中,.NET AOT也不能算作自举。

.NET9的变化

在.NET9里,Obj目标文件生成引入了C#代码,这一举措取代了LLVM部分。不过,为了兼容之前的情况,LLVM - ObjWriter.dll依然被保留,并没有删除。只是默认情况下,C#代码取代了之前LLVM的生成,二者处于并存状态。

是否自举的争议

从AOT编译器ILC的角度看,它完全是C#代码,而且LLVM也被取代了。但当涉及到引导程序,也就是引导目标文件生成可执行的二进制文件时,使用的是C++的BootStrap。所以从严格意义上来说,.NET9 AOT仍然算不上完全自举。

托管语言与非托管语言的关联

其实,对于托管类型的语言而言,通常都需要非托管的语言来进行加载引导运行。这就如同操作系统的引导程序,开机后需要一个引导程序把指令引导到Windows系统上。在.NET中也是如此,比如进行MSVC后,一般会生成一个非托管的Exe,它就是加载引导文件。再如CLR Host,它是一个非托管引导,没有它,托管DLL是无法直接运行的。

个人观点

从理论上严格定义的自举标准来看,.NET9 AOT因为引导程序使用C++的BootStrap,确实不能说是完全自举。但从另一个角度看,.NET9在AOT方面已经有了重大的改进,C#代码在目标文件生成中占据了主导地位,这是朝着自举方向迈出的重要一步。而且考虑到托管语言对非托管语言引导的客观需求,我们也可以说.NET9 AOT在一定程度上已经非常接近完全自举了。也许在未来的版本中,随着技术的不断发展,引导程序部分也能够用C#实现,那时.NET9 AOT就真正实现完全自举了。总之,.NET9 AOT虽然目前不能算完全自举,但它的发展趋势值得我们持续关注。 ======================================================================
前些天发现了一个比较好玩的人工智能学习网站,通俗易懂,风趣幽默,可以了解了解AI基础知识,人工智能教程,不是一堆数学公式和算法的那种,用各种举例子来学习,读起来比较轻松,有兴趣可以看一下。
人工智能教程

http://www.lryc.cn/news/612613.html

相关文章:

  • .NET 10 新增功能系列文章5——C# 14 中的新增功能
  • Unity URP渲染管线动态修改材质球状态
  • 38.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--增加日志记录器
  • 十八、k8s细粒度流量管理:服务网格
  • 虚幻GAS底层原理解剖八 (自定义子类)
  • 深入剖析Java线程:从基础到实战(上)
  • Clock斗篷技术:助力跨境电商营销推广的智慧策略
  • 技术优势铸就行业标杆:物联网边缘计算网关凭何引领智能变革?
  • 以 Eland 玩转 Elasticsearch 8.12 Learning-to-Rank
  • 嵌入式C语言编程:策略模式、状态模式和状态机的应用
  • 蓝凌EKP产品:列表查询性能优化全角度
  • Git 文件删除操作指南:管理与恢复已删除文件
  • 合约收款方式,转账与问题安全
  • 「耘•学社」耘少年第五期学能突破导师制领袖特训营,圆满落幕
  • 计算机视觉前言-----OpenCV库介绍与计算机视觉入门准备
  • 解决Git提交人信息默认全局化问题:让提交人自动关联当前用户
  • Element Plus实现分页查询
  • 【PHP 中的 `use` 关键字完全指南】
  • 数码论坛|基于SprinBoot+vue的数码论坛系统(源码+数据库+文档)
  • Redis为什么要引入多线程?
  • Beelzebub靶机
  • 防火墙环境下的全网服务器数据自动化备份平台搭建:基于 rsync 的完整实施指南
  • Java基础学习1(Java语言概述)
  • spring cache(二)核心接口
  • 浏览器渲染与GPU进程通信图解
  • ubuntu 2024 安装拼音输入法
  • 纪念《信号与系统》拉普拉斯变换、Z变换之前内容学完
  • 迭代器与生成器:Python 中的高效数据遍历机制
  • 现代制冷系统核心技术解析:从四大件到智能控制的关键突破
  • QDataStream入门