Zig 0.5.0 发布,想要替换 C 的编程语言

h4cd
?h4cd
发布于 2019年10月01日
收藏 15

Zig 0.5.0 发布了。

Zig 是一门通用编程语言,专为稳定性、可维护性和性能而设计,追求替代?C 语言在系统编程上的最佳地位。Zig 具有以下值得关注的特性:

  • 手动管理内存
  • 与 C 语言竞争而非依赖它,Zig 标准库不依赖于 libc
  • 轻量而简单,专注于调试应用而不是调试编程语言的知识
  • 新的错误处理方法,与编写良好的 C 语言错误处理类似,但减少了很多冗余
  • 调试模式下优化了快速编译时间,并在不确定行为发生时使用堆栈跟踪崩溃
  • ReleaseFast 模式和 ReleaseSafe 模式
  • 泛型数据结构和函数
  • 通过协程实现并发
  • 导入 .h 头文件并直接使用 C 语言的类型、变量和函数
  • 导出要依赖 C 语言代码的函数,变量和类型,自动生成 .h 头文件
  • 可选类型而非空指针
  • 交叉编译是主要用例

0.5.0 版本经过 6 个月打磨,包括了?1541 次 commit,带来了许多新的内容。

Zig 跟随?LLVM 的步伐,前几天 LLVM 9 发布了,所以 Zig 目前升级到了 LLVM 9,不再兼容 LLVM 8。值得注意的是,这意味着 Zig 现在支持?RISC-V。同时 Zig 还可以以 Emscripten?为编译目标操作系统。Emscripten 是一个独特的 LLVM 后端,它可以将 LLVM 字节码编译成 JavaScript(asm.js),往上追溯其实也就是通过 Clang 将 C 和 C++ 代码编译成 JavaScript(asm.js),可以大大简化现有代码在 Web 时代的重用。除了 asm.js,Emscripten 还支持 WebAssembly 这一更加先进的 Web 技术,通过与 asm.js 类似的机制,Emscripten 可以生成 WASM 二进制字节码。

目前 Emscripten 还不能自托管,之后可行的情况下,可以使用 WebAssembly 将其作为浏览器中的 Zig 沙箱选项。

语言特性层面的主要更新包括:

  • 切片类型不再具有字段访问,而是使用@typeInfo(Slice).Pointer.child
  • 枚举文字隐式 cast 为带标记的 union。
  • 允许将可选指针隐式?cast 为可选c_void指针。
  • 添加了*[N]T隐式 cast 到[*c]T
  • anyerror不再作为关键字。
  • @cmpxchgStrong?和?@cmpxchgWeak?现在在 x86_64 上支持 128 位整数。
  • comptime_int现在隐式 cast 为comptime_float
  • @typeOf?现在保证没有运行时副作用。
  • noinline函数声明中添加了关键字。
  • 现在可以比较并集标记和枚举文字。
  • 单元素enum默认设置为u0comptime_int仍允许作为显式枚举标签类型。

完整更新内容查看发布公告:

https://ziglang.org/download/0.5.0/release-notes.html

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创365bet手机版中文社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Zig 0.5.0 发布,想要替换 C 的编程语言
加载中

精彩评论

玖伍贰柒
玖伍贰柒
有了LLVM,什么阿猫阿狗都要搞编程语言了
d
dwcz
看评论就知中国为啥落后了。
写给三月
写给三月
学面向过程就是C语言,学面向对象就是java,学面向函数式就学js,其他的都是花里胡哨没有用的语言
365bet手机版中文中国首席聊天玩家
365bet手机版中文中国首席聊天玩家
知道为什么编程语言都是国外的吗
棱语曲
棱语曲
rust都已经露头了,还来一波代替c语言?

最新评论(23

365bet手机版中文中国首席屌丝
365bet手机版中文中国首席屌丝
得先搞出一个底层不是 C 开发的系统,再吹这个牛。
致自己
听敢想的
y
yozoco
轮子太多了
格格巫2012
格格巫2012
很多语言开始都是牛皮哄哄要取代C,到现在也没见一个真正能行的。
小_庄
真的学不动了,准备回老家种地了!!??
d
dwcz
看评论就知中国为啥落后了。
菠萝皮
菠萝皮
什么玩意都想替代C,最后都默默的死去吧
一码千里
整天瞎鸡巴乱搞什么编程语言,有病
365bet手机版中文中国首席聊天玩家
365bet手机版中文中国首席聊天玩家
知道为什么编程语言都是国外的吗
棱语曲
棱语曲
rust都已经露头了,还来一波代替c语言?
写给三月
写给三月
学面向过程就是C语言,学面向对象就是java,学面向函数式就学js,其他的都是花里胡哨没有用的语言
返回顶部
顶部