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

行走的ET 2020-12-01 09:40:13 ⋅ 757 阅读

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

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

eaa95b1fffa94c4319d5ae6be7bb8deafda.jpg

此版本的开发周期历时 7 个月,共计 188 名不同的 contributor 提交了 2527 个 commit。

发布说明罗列了对不同系统(如 Windows、macOS、FreeBSD 和 NetBSD 等)以及 WebAssembly 的支持程度,总共分为四级,一级支持是最好的支持,四级支持代表的则是完全处于试验状态的支持。

部分更新内容:

  • 升级至 LLVM 11:此版本的 Zig 已升级至 LLVM 11,而新版的 LLVM 将 AVR 提升为非实验性后端,因此 Zig 的 AVR 后端现已在该版本中广泛使用。
  • 新增自托管编译器 (Self-Hosted Compiler),不过关于它的功能目前还处于讨论阶段,例如显示自托管现在可以通过的测试案例。
  • 支持 macOS:macOS 在过去6个月的发展可谓是跌宕起伏,Big Sur 的重大变化,以及 arch64 架构设备的公布。开发者购买了苹果的开发套件,并一直致力于为这个系统提供 Zig 支持。Zig 程序现在可以在这个系统中运行,但他们需要一个变通的方法来利用系统链接器而不是 LLD。下一步是针对这个系统的 LLD 改进,以及开发者一直在研究的 Zig 自托管链接器代码。
  • macOS libc header:Zig 现已提供 macOS 的 libc header,因此可以针对 macOS 交叉编译 C 代码。此外,对于本地 macOS 构建,编译 C 代码时对 xcode 的依赖性较小。
  • ……

此版本包含 159 个Bugfix,详情点此查看

最后,团队指出 0.7.0 的主要目标是进一步提升语言稳定性、创建语言规范的初稿以及自托管编译器。尤其是自托管编译器,因为 0.8.0 版本要实现的一项重要功能是内置软件包管理器,而包管理器依赖于自托管编译器。

详细内容查看发布公告
https://ziglang.org/download/0.7.0/release-notes.html


全部评论: 0

    我有话说:

    Julia 1.6.0 发布,高性能动态高级编程语言

    Julia 1.6.0 现已发布。Julia 是一个高性能动态高级编程语言。其拥有丰富函数库,提供了数字精度、精致增幅器和分布式并行运行方式。核心函数库等大多数库由 Julia 编写,但也用成熟

    【开源资讯】cppweb 1.0.2 发布,基于 C++ 开发 Web 服务器

    cppweb是一个基于C++开发 WEB 服务器,支持C/C++、Python、Java等多语言混合开发WEB应用。 cppweb同时也是一个跨平台微服务开发框架,通过两个核心组件

    「尝鲜」SpringBoot 快速整合Swagger 3.0

    第一步:Maven引入Swagger3.0 starter依赖 Maven项目中引入springfox-boot-starter依赖: <dependency> <

    2017编程语言“名人榜”揭晓,C语言夺冠

    2017年度编程语言榜单公布啦!C语言登顶,Python紧随其后!

    phpPgAdmin 7.13.0 发布

    phpPgAdmin 7.13.0版本于今天发布。该版本涉及以下更新: 增加对Postgres 13支持; 增加对Postgres 14暂时适配; 升级Jquery库为jquery 3.4.1

    Firebird 4.0 RC1 发布C++ 开发关系数据库

    Firebird 4.0 首个 RC 版本已发布。4.0 属于大版本更新,RC 版本已提供所有新功能和改进。由于 RC 版本通常被认为已足够稳定,因此 Firebird 团队表示可在“接近生产环境

    GraalVM 社区版 21.0.0 发布,高性能跨语言虚拟机

    GraalVM 社区版 21.0.0发布。GraalVM 是 Oracle 打造高性能跨语言虚拟机,支持运行 JavaScript、Python 3

    Gradle 7.0 发布,自动化构建工

    Gradle 7.0 现已发布。Gradle 是一个基于 Apache Ant 和 Apache Maven 概念项目自动化构建工具

    Tokio 1.0 发布,Rust 异步编程框架

    Tokio 1.0 稳定版本已发布,Tokio 是 Rust 异步 runtime,可用于编写快速、可靠网络应用。Tokio 还提供用于 TCP、UDP、计时器、多线程、工作窃取算法(work

    Apache Shiro 1.7.0 发布,支持 HTTP 严格传输安全 HSTS

    Shiro 1.7.0 发布,此版本包括自 1.6.0 版本以来解决 7 个问题,现在可以从 maven 中央仓库下载使用。 <dependency>   <

    Apache Beam 2.25.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.25.0 发布了。Beam 是一个用于定义和执行数据处理管道统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理编程范式和接口定义,并不涉及具体

    Apache Beam 2.28.0 发布,大数据流处理与批处理编程范式

    Apache Beam 2.28.0发布,Beam 是一个用于定义和执行数据处理管道统一编程模型,包括 ETL、批处理与流处理。Beam 项目重点在于数据处理编程范式和接口定义,并不涉及具体

    Guns 7.0 发布,更简洁后台管理系统

    新版Guns基于SpringBoot全面升级,完美整合springmvc + shiro + mybatis-plus + beetl! 在不用写xml配置(V1.0)基础上进一步简化项目配置,让

    【开源资讯】phpMyAdmin 4.9.7 和 5.0.4 发布,可视化 MySQL 管理后台

    phpMyAdmin 4.9.7 和 5.0.4 发布了。phpMyAdmin 是一个非常受欢迎 web MySQL 数据库管理工具。它能够创建和删除数据库,创建/删除/修改表格,删除/编辑/新增

    Pulsar Flinkconnector 2.7.0 正式发布,支持最新版 Pulsar 与 Flink

    Pulsar Flink 连接器 2.7.0 支持 Apache Pulsar 2.7.0 和 Apache Flink 1.12 中功能,并且与 Flink连接器 和Flink 消息格式完全兼容

    Pulsar Go Client 0.4.0 发布

    Pulsar Client Go 是 Apache Pulsar Go 语言客户端。近期,社区发布 Pulsar Client Go 0.4.0 版本。 新特性 支持在

    curl 7.75.0 发布,占用内存更低

    curl 7.75.0发布。此版本没有包含安全修复,主要是添加了部分新特性,其中包括: 为命令行工具添加--create-file-mode参数,在协议中,curl 需要告诉远程

    Scala.js 1.4.0 发布,将 Scala 编译成 JavaScript

    Scala.js 1.4.0发布。Scala.js 是一个将 Scala 语言编译成 JavaScript 工具,以便可以直接在浏览器上使用 Scala 编写程序。 Scala.js

    Scala 3 来了,Dotty 发布 3.0.0-M1 版本

    Dotty 发布了 3.0 首个里程碑版本 3.0.0-M1,Dotty 作为 Scala 尝试新语言概念以及编译器技术研究平台,它最终将成为 Scala 3.0。 Dotty 对