zig v0.12.0 发布 — x-cmd 提供 zig 快捷安装方法和 x zig 模块

文章目录

    • 简介
    • 功能特点
    • v0.12.0 新特性
      • [重新设计 Autodoc 的工作原理](https://ziglang.org/download/0.12.0/release-notes.html#Redesign-How-Autodoc-Works)
      • 语法变更
      • 各类标准库变更
      • 构建系统变更
    • 常见用法
    • **使用案例**:
    • 竞品和相关项目
    • 进一步阅读

简介

Zig 是一种通用编程语言和工具链,旨在提供 C 语言更友好的替代方案。Zig 最初由 Andrew Kelley 启动,现在由 Zig 软件基金会 (ZSF) 维护。

x-cmd 同时也提供了 zig 模块,实现如下增强:

  • zig 代码可以快速部署并执行: x hi.zig
  • 采用 zig 模拟 cc 环境: x zig initcc
  • zig 命令可视化增强: x zig target

详情请参考 zig 模块

功能特点

  1. 语法设计简单清晰
    • Zig 提供了一种轻量级、类似 Rust 的语法,具有 C 提供的大部分功能
    • 虽然没有 Rust 和 C++ 所具有的复杂功能集和语法,但提供了像 Go 一样简单优先的开发环境。
  2. 完整的、功能齐全的工具链:
    • 用户可以使用 Zig 来创建、开发、测试和构建程序/库,而无需第三方构建工具
    • Zig 还支持交叉编译 C/C++ 项目。
  3. 性能、安全性
    • Zig 允许对内存分配和释放进行细粒度控制,有助于减少内存泄漏
    • 提供四种构建模式(Debug, ReleaseSafe, ReleaseFast, ReleaseSmall),开发人员可以根据自己的性能和安全要求使用。例如,使用 ReleaseSafe 模式生成带有运行时安全检查的优化二进制文件
    • Zig 官方文档声称,Zig 的性能比 C 更快。
  4. 活跃的社区:Zig 拥有一个活跃且热情的社区,提供了大量的文档、教程和开源项目,以及频繁的更新和改进。

v0.12.0 新特性

重新设计 Autodoc 的工作原理

  • zig 删除了之前的(实验性的)Autodoc 实现,并用新的 Autodoc 实现替代。
  • 新的 Autodoc 设计让 Autodoc 在实现和构建工件方面都更加简单,且生成的 Web 应用程序总文件大小也大幅度降低
  • Autodoc 新增 嵌入式源列表搜索文档评论错误集视图等新功能

语法变更

  1. 避免不必要的 var,当局部变量声明为 var 时会发出错误提示
  2. 对结果位置语义 (RLS) 增强
  3. 引入了新语法来允许解构可索引聚合:即元组、向量和数组。
  4. 命名空间类型等效
  5. 彻底修改了编译器的 comptime 内存的内部表示
  6. 删除第一个参数以支持使用结果类型
  7. 禁止函数类型对齐
  8. @errSetCast 函数替换为 @errorCast
  9. @fabs 函数替换为 @abs

各类标准库变更

构建系统变更

  • 该项变更包括 声明可选的系统库集成、系统帮助部分集成、使用系统集成选项 等支持。

详情请参考 官方关于 0.12

常见用法

运行 Zig 代码:

zig run hello.zig

编译当前目录下的项目:

zig build

使用案例:

在这里插入图片描述

竞品和相关项目

  1. Rust:Rust 是一种由 Mozilla Research 开发的系统级编程语言,专注于安全性、并发性和性能。Rust 具备现代编程语言的特性和优势,被广泛应用于网络服务、嵌入式系统和密集计算等领域。
  2. C/C++:作为传统的系统编程语言,C 和 C++ 仍然是 Zig 的竞争对手。尽管它们在安全性和易用性方面不如 Zig,但它们在广泛的工业应用和庞大的生态系统中具有优势。
  3. Nim:Nim 是一种静态类型编译系统编程语言。它结合了 Python、Ada 和 Modula 等成熟语言的成功概念。

进一步阅读

  • Zig 源代码 - Zig 项目的源代码托管在 GitHub,你可以在这里找到最新版本的 Zig 和参与社区贡献。
  • Zig 官方网站 - 学习和使用 Zig 的官方网站,提供了 Zig 的文档、教程和社区资源。
  • zig 模块 - x-cmd 的 zig 模块,帮助用户更方便使用 zig。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/562485.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

模电期末复习(五)集成运算放大电路

集成运算放大电路 5.1 集成放大电路的特点5.2 集成运放的主要技术指标5.3 集成运放的基本组成部分5.3.1 偏置电路5.3.2 差分放大输入级5.3.3 中间级5.3.4 输出级 5.4 集成运放的典型电路5.4.1 双极型集成运放LM741 5.5 各类集成运放的性能特点5.6 集成运放使用中的几个具体问题…

JAVAEE——IP协议

文章目录 IP协议IP协议报头格式IP协议报头的各个区段四位版本四位首部长度八位服务类型16位总长度16位标识,3位标志,13位片偏移八位生存时间八位协议 地址管理IP地址解决提议1:动态分配Ip地址解决提议2:NAT机制 IP协议 IP协议报头…

基于SpringBoot+Vue钢材销售管理系统的设计与实现

系统介绍 为了更好地发挥本系统的技术优势,根据钢材销售管理系统的需求,本文尝试以B/S经典设计模式中的Spring Boot框架,JAVA语言为基础,通过必要的编码处理、钢材销售管理系统整体框架、功能服务多样化和有效性的高级经验和技术…

分类神经网络3:DenseNet模型复现

目录 DenseNet网络架构 DenseNet部分实现代码 DenseNet网络架构 论文原址:https://arxiv.org/pdf/1608.06993.pdf 稠密连接神经网络(DenseNet)实质上是ResNet的进阶模型(了解ResNet模型请点击),二者均是…

葡萄书--关系图卷积神经网络

异质图和知识图谱 同质图与异质图 同质图指的是图中的节点类型和关系类型都仅有一种 异质图是指图中的节点类型或关系类型多于一种 知识图谱 知识图谱包含实体和实体之间的关系&#xff0c;并以三元组的形式存储&#xff08;<头实体, 关系, 尾实体>&#xff0c;即异…

vlan的学习笔记1

vlan&#xff1a; 1.一般情况下:以下概念意思等同: 一个vlan一个广播域 一个网段 一个子网 2.一般情况下: &#xff08;1&#xff09;相同vlan之间可以直接通信&#xff0c;不同vlan之间不能直接通信! &#xff08;2&#xff09;vlan技术属于二层技术&…

三、Flask模型基础

ORM 创建模型 # exts.py:插件管理 # 扩展的第三方插件 # 1.导入第三方插件 from flask_sqlalchemy import SQLAlchemy # ORM插件 from flask_migrate import Migrate # 2. 初始化 db = SQLAlchemy() # ORM migrate = Migrate() # 数据迁移 # 3. 和app对象绑定 def init_ex…

基于Bootstrap 4的企业项目体验服务网站模板

目录 一.前言 二.展示 三.下载链接 一.前言 网页包含以下内容&#xff1a; 页面基本信息&#xff1a;设置页面的字符集、兼容性、视口等元数据。 网站标题和描述&#xff1a;定义了网站的标题为"Benten"&#xff0c;同时也设置了关键词和描述。 CSS样式表链接&a…

基于SpringBoot+Vue七匹狼商城系统的设计与实现

系统介绍 近年来随着社会科技的不断发展&#xff0c;人们的生活方方面面进入了信息化时代。计算机的普及&#xff0c;使得我们的生活更加丰富多彩&#xff0c;越来越多的人使用通过网络来购买各类的商品。早期商品的销售和购买都是通过实体店&#xff0c;这种购买方式需要耗费…

《苍穹外卖》Day03部分知识点记录

一、公共字段自动填充 业务表中的公共字段&#xff1a; 序号字段名含义数据类型操作类型1create_time创建时间datetimeinsert2create_user创建人idbigint3update_time修改时间datetimeinsert、update4update_user修改人idbigint 问题&#xff1a;代码冗余&#xff0c;不便于…

const成员函数 以及 取地址及const取地址操作符重载

目录 const成员函数 结论&#xff1a; 取地址及const取地址操作符重载 const成员函数 将const 修饰的 “ 成员函数 ” 称之为 const成员函数 &#xff0c; const 修饰类成员函数&#xff0c;实际修饰该成员函数的&#xff08;*this&#xff09; &#xff0c;表明在该成员函数…

ROS2 王牌升级:Fast-DDS 性能直接碾压 zeroMQ 「下」

以下内容为本人的学习笔记&#xff0c;如需要转载&#xff0c;请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/aU1l3HV3a9YnwNtC1mTiOA 性能比较 下面就以官网的测试数据为准&#xff0c;让我们一起来看看它们的性能差别到底怎样。 本次比较仅针对 Fast RT…

AI安全之问:我们的智能助手真的安全吗?

在我们日益依赖人工智能来撰写文档、编写程序代码、甚至创作艺术作品的今天&#xff0c;我们是否曾经想过这些智能系统可能面临的被恶意操纵的风险&#xff1f; 分享几个网站 GPT-3.5研究测试&#xff1a; https://hujiaoai.cn GPT-4研究测试&#xff1a; https://higpt4.cn…

2024数学建模时间汇总与竞赛攻略

目录 2024数学建模汇总&#xff08;时间、报名费、获奖率、竞赛级别、是否可跨校&#xff09; 中国高校大数据挑战赛 “华数杯”国际大学生数学建模竞赛 美国大学生数学建模竞赛&#xff08;美赛&#xff09; 数学中国&#xff08;认证杯&#xff09;数学建模网络挑战赛 …

Python基础04-操作系统中的文件与目录操作

在与操作系统交互时&#xff0c;我们经常需要执行文件和目录的操作。Python提供了丰富的库来帮助我们完成这些任务。以下是一些常见的操作&#xff0c;以及如何使用Python代码来实现它们。 1. 导航文件路径 在不同的操作系统中&#xff0c;文件路径的格式可能不同。Python的o…

OpenUI在windows下部署使用

OpenUI OpenUI是一个基于Python的AI对话平台&#xff0c;支持接入多种AI模型。 通过聊天的方式来进行UI设计&#xff0c;你可以通过文字来描述你想要的UI界面&#xff0c;OpenUI可以帮你实时进行渲染出效果 安装OpenUI 这里预设你的电脑上已安装git、Python和pip&#xff0…

2023年美国西岸行 - Day 1

本来旅行回来就像记录的&#xff0c;结果一拖就是快1年。当然中间原先记录的博客平台关闭也有部分原因&#xff0c;但不是主要原因。趁着今天复活20年前的CSDN博客&#xff0c;赶紧记录一下。 疫情之后第一次全家长途旅行。这次美国之行&#xff0c;在3-4月份订机票的时候跟临…

Pages by User Role for WordPress:强化内容访问控制的必备插件

在数字化时代&#xff0c;WordPress已成为众多网站开发者和设计师的首选平台。然而&#xff0c;如何根据用户角色精确控制内容的访问权限&#xff0c;一直是困扰他们的难题。Pages by User Role for WordPress插件应运而生&#xff0c;为这一难题提供了完美的解决方案。 Pages …

Python高效的符号计算库之aesara使用详解

概要 Aesara是一个高效的符号计算库,用于深度学习和数值计算,它允许开发者以数学表达式的形式定义函数,并自动转换成高效的代码执行。Aesara不仅提高了计算效率,还简化了梯度计算过程,是深度学习研究和实验的强大工具。 安装 通过pip可以轻松安装Aesara: pip install…

【JavaWeb】Day51.Mybatis动态SQL

什么是动态SQL 在页面原型中&#xff0c;列表上方的条件是动态的&#xff0c;是可以不传递的&#xff0c;也可以只传递其中的1个或者2个或者全部。 而在我们刚才编写的SQL语句中&#xff0c;我们会看到&#xff0c;我们将三个条件直接写死了。 如果页面只传递了参数姓名name 字…