您现在的位置是:首页 > 文章详情

nature v0.4.0-beta 发布,静态编译强类型语言

日期:2023-09-26点击:74

nature v0.4.0-beta 已发布。

新增

  1. 编译时错误优化,显示文件名和行号,类型错误显示类型原始标识
  2. 运行时 error 提供堆栈追踪
  3. 多行注释/****/支持
  4. import 支持不带前缀的导入方式import utils as *
  5. 小型测试用例parker
  6. 参数解构功能支持,示例call(...vec)
  7. 泛型类型支持递归type numbert = gen intergert|flotert
  8. 二元运算符||``&&支持
  9. 包管理 import dir 支持, 此时会自动查找 dir 下的 main.n
  10. 包管理 import xxx_temp 支持,能够定义 temp 文件与静态库进行交互
  11. nature struct 调整为与 C 语言同构,能够直接将 nature struct 传递给 c 语言
  12. 数据类型arr<T,len>支持,其在 stack 中进行分配,和 C 语言中T ident[len]同构
  13. new 语法支持,nature struct 默认为 stack 分配,可以通过ptr<person> p = new person得到一个 heap 分配的 p
  14. as 后的类型支持约束,如var s = {} as {u8}声明了一个 set 类型将会被约束为{u8}类型,等同于{u8} s = {}
  15. 包管理支持声明 links 静态库链接 和 temps 模板声明
  16. 新增标准库字符串库import strings
  17. 为了更好的和 C 语言进行交互,新增类型cptrcptr<T>
  18. 增加内置语法关键字 sizeof 用来计算类型的 size,使用示例int s = sizeof(person)
  19. 新增标准库 fmt/os/path/strings/time
  20. 新增模板文件(用于和 C 语言交互) builtin_temp(默认 import),dirent_temp, libc_temp, strings_temp, syscall_temp

调整

  1. type param 只能在全局进行定义
  2. 全局变量支持类型推导
  3. 删除 set 函数,通过 as 约束声明一个空的 set
  4. list 类型定义调整为 vec, 支持使用 vec 原始结构体声明并指定长度,示例var terms = vec<u8>{len=12,cap=24}
  5. string 类型调整为与 vec 同构,支持通过str[0]的方式访问以及赋值,并支持 for in 遍历
  6. vec 类型方法 list.len() 调整为类型属性,list.len, 并支持类型方法 slice/concat 等类型函数
  7. for 迭代表达式错误与 break 和 continue 无法重复声明错误
  8. 泛型 type i = gen int|int64 基本类型一致时重复生成
  9. 寄存器分配时 interval_add_range 添加 range 错误
  10. set.contains() 计算 hash slot 错误
  11. struct 中定义 fn 异常
  12. 链接器 elf rela addend 计算异常,addend = next_inst_offset - current_inst_rel offset
  13. ssa rename 异常,部分线性 var def 未进行 rename
  14. if 多行表达式 parser 解析异常
  15. 自动 GC 触发时间异常,调整 GC 触发时间点为 user mode
  16. malloc 分配重复的内存区域时,由于没有清空该区域导致 GC 异常,malloc 分配区域主动进行清空处理
  17. import 优先级异常,local ident 可以覆盖 import ident
  18. 修复 gcc11 下全局变量重复定义错误 #16

详细更新内容见发行说明


nature 是一款静态编译强类型语言,具有以下特征:

  • null 安全、泛型和联合类型的类型系统
  • 静态交叉编译,允许为目标机器生成可执行文件,无需依赖任何第三方组件
  • 带有增量垃圾回收的支持,支持自动垃圾回收(手动垃圾回收仍在设计中)
  • 内置数据结构,如列表、映射、集合和元组
  • 包和模块管理
  • 函数标签(正在设计中)、闭包、错误处理和协程
  • SSA、线性扫描寄存器分配、反射机制、汇编器和链接器

代码示例

  • 错误处理

  • 泛型

原文链接:https://www.oschina.net/news/259538/nature-0-4-0-beta
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章