Zig 0.5.0 发布,想要替换 C 的编程语言
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
默认设置为u0
,comptime_int
仍允许作为显式枚举标签类型。
完整更新内容查看发布公告:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Riot 1.4.0 发布,新型协作平台
Riot ,一个新型的协作平台,可以在 iOS、Android、Web 端运行。1.4.0已经发布,内容如下: 改进有关身份服务和集成管理器的隐私和用户控制 升级到 React SDK 1.6.0 和 JS SDK 2.4.0 发布说明
- 下一篇
SmartGit 19.2 Preview 1 发布,性能与易用性改进
SmartGit 19.2 Preview 1 发布了,此版本关注性能改进和合并现有功能,以使它们更易于使用。 更新内容包括: 分支视图:添加选项以首先显示sections(groups) Dark 主题:日志图也在 Dark 模式下显示 refs 文件过滤器:支持按单词搜索 过滤器输入字段:去除了最多 10 个排序过滤器的限制 比较/更改视图:多项性能改进,并减少了已加载存储库的内存消耗 详情查看更新说明: https://www.syntevo.com/blog/?p=4838
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7