当前位置: 首页 > 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.dtcms.com/a/319056.html

相关文章:

  • 面向对象之类方法,成员变量和局部变量
  • 【前端八股文面试题】JavaScript中的数据类型?存储上的差别?
  • react_05create-react-app脚手架详细解析(export)
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的微商产品经营策略研究
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的用户留存策略研究
  • iOS 文件管理实战指南,用户文件、安全访问与开发调试方案
  • Socket 编程预备
  • 拥抱云原生:从传统架构到云原生架构的演进与实践
  • 算法题(182):滑动窗口
  • mysql基础-分组查询
  • 全面解析 URL 重定向原理:从协议、实现到安全实践
  • 【物联网】基于树莓派的物联网开发【24】——树莓派安装influxDB时序数据库
  • 套接字编程UDP
  • Android-Kotlin基础(Jetpack③-LiveData)
  • 数据结构初阶(4)栈
  • Python生成统计学公式
  • 数据结构:双向链表(Doubly Linked List)
  • 快速搭建开源网页编辑器(vue+TinyMCE)
  • 大屏数据展示页面,数据可视化可以用到的框架和插件
  • 剧本杀小程序系统开发:推动社交娱乐产业创新发展
  • requests模块
  • Web3.0引领互联网未来,助力安全防护升级
  • 基于django的非物质文化遗产可视化网站设计与实现
  • 重学React(三):状态管理
  • Java如何快速实现短信登录?
  • 【指南版】网络与信息安全岗位系列(三):安全运维工程师
  • 农作物优选,耕耘希望的田野
  • Vue3获取当前页面相对路径
  • 008 前端vue
  • Android-Kotlin基础(Jetpack①-ViewModel)