先上展示

零、年末重磅发布!仓颉编程语言 Nightly Builds 版本已上线

2025年12月26日,仓颉编程语言官方公众号发布文章

《重磅发布!仓颉编程语言 Nightly Builds 版本已上线》

当我们好奇的点开阅读原文后,我们惊喜的发现在仓颉开源在AtomGit(GitCode)的nightly_build仓库release的制品中,出现了 cangjie-xxx-ohos-aarch64的下载链接。这让我们诞生了在鸿蒙PC上试一试的念头!
https://gitcode.com/Cangjie/nightly_build/releases

当然这里我们先回顾一下鸿蒙和仓颉相关的内容~

如果您想直接上手编程,可以选择跳过这一部分。

一、引言:开启鸿蒙 PC 开发新纪元

仓颉编程语言作为华为为鸿蒙生态系统打造的新一代编程语言,正通过其核心特性推动鸿蒙PC开发进入新阶段。该语言聚焦智能化、全场景、高性能和强安全,旨在为跨设备应用开发提供高效解决方案。

1.1 仓颉语言的诞生

仓颉[jié],是华为自研的一款面向全场景智能的新一代编程语言,是华为为鸿蒙量身打造的全场景智能应用编程语言,作为鸿蒙生态中的重要组成部分,旨在支持鸿蒙系统下的全场景应用开发,主打“原生智能化、天生全场景、高性能,强安全。

2019年,华为启动仓颉编程语言项目。2020年8月,华为已经注册仓颉语言商标。2021年2月,华为申请仓颉语言设计研究类商标。2022年3月21日,华为技术有限公司申请注册的网站服务类“仓颉语言”商标获批。2024年6月21日,在华为开发者大会2024前,仓颉编程语言正式亮相,仓颉官网现已上线;10月30日,官网公开上线,首个公测版本开放下载,上线了首页、在线体验、文档、学习、下载、动态以及三方库共六个模块。2025年7月30日,仓颉编程语言开源。

我们可以从仓颉官网中看到相关信息 https://cangjie-lang.cn/

仓颉是一门多范式编程语言,支持函数式、命令式和面向对象等多种范式,包括值类型、类和接口、泛型、代数数据类型、模式匹配、以及高阶函数等特性。支持类型推断,能够降低开发者类型标注的负担;通过一系列简明高效的语法,能够减少冗余书写、提升开发效率;语言内置的各种语法糖和宏(macro)的能力,支持开发者基于仓颉快速开发领域专用语言(DSL)构建领域抽象。

仓颉语言的核心优势体现在多个方面: 在智能化方面,它内嵌AgentDSL框架,支持自然语言与编程语言融合,简化多Agent协同开发;全场景能力上,其轻量化运行时和模块化设计确保在资源受限的PC环境中高效运行,并通过元编程技术实现声明式开发;性能方面,全并发垃圾回收和用户态线程模型显著提升并发处理效率,减少线程开销;安全特性则通过静态类型系统和自动内存管理降低安全漏洞风险。

2.2 仓颉语言的应用场景

在PC开发场景中,仓颉语言展现出显著潜力: 其跨平台特性允许一次编码部署于多种鸿蒙设备,降低开发成本;分布式能力支持跨设备调用与协同,适用于多屏互动或边缘计算场景;同时,开源策略(于2025年7月30日开源)和工具链完善将进一步增强生态兼容性。

附、与主流语言的对比

语言

执行模式

内存管理

性能优化技术

安全机制

跨平台能力

仓颉

AOT编译 + 可选JIT

全并发GC + 边界检查

轻量级线程(用户态协程)、向量化指令优化、内存屏障消除

编译时空安全 + 形式化验证

全场景(HarmonyOS/Windows/Linux/macOS)

Python

解释执行

引用计数 + 分代GCC

扩展加速(如NumPy)

依赖第三方工具

全平台

Java

JVM字节码解释/编译

分代GC(G1/ZGC等)

JIT热点代码优化

基础类型检查

JVM支持平台

C++

原生编译

手动管理 / 智能指针

零成本抽象、SIMD指令优化

手动控制

依赖编译器

Go

编译为机器码

分代GC(三色标记法)

Goroutine轻量级线程、栈动态扩容

逃逸分析

全平台交叉编译

在鸿蒙应用开发中,与ArkTS相比,仓颉语言在性能与安全上更具优势: ArkTS作为动态类型语言侧重开发效率,而仓颉的静态类型系统和编译优化更适合对资源敏感的PC应用;两者通过互操作库协同,形成互补生态。

仓颉语言的演进策略聚焦于提升开发者体验: 未来将强化智能化功能(如AI辅助编程)和跨平台支持,并通过社区资源与文档完善降低学习门槛,为鸿蒙PC生态注入持续动力。

那介绍了这么多好处,我们如何使用鸿蒙 PC(以 MateBook Pro 为例)去原生开发仓颉应用呢?

就让我们一起进入本篇文章的重点分享,详细拆解仓颉在鸿蒙 PC 上的原生安装与运行实现过程。

二、详细拆解仓颉在鸿蒙 PC 上的原生安装与运行实现过程

2.1 准备工作

  • 在鸿蒙PC上使用应用商店安装 CodeArts IDE

  • 在鸿蒙 PC 的隐私与安全中,开启“运行外部来源的扩展程序”

2.2 从 CodeArts IDE 提取签名工具

打开IDE创建一个项目并打开

在终端里依次执行如下指令

# 复制签名工具
cp /data/app/toolchains.org/toolchains_1.0/lib//binary-sign-tool .

# 对签名工具签名
binary-sign-tool sign -inFile "./binary-sign-tool" -outFile "./binary-sign-tool-signed" -selfSign 1

# 添加可执行权限
chmod +x binary-sign-tool-signed

# 测试,如果没弹授权弹窗和帮忙输出,需要重新签名和添加可执行权限
./binary-sign-tool-signed

# 复制到用户安装目录
mkdir -p ~/.local/bin
cp ./binary-sign-tool-signed ~/.local/bin/binary-sign-tool

# 复制签名工具

# 对签名工具签名

# 添加可执行权限

# 测试,如果没弹授权弹窗和帮忙输出,需要重新签名和添加可执行权限

# 复制到用户安装目录

# 复制到用户安装目录

# 验证签名工具是否成功复制到用户安装目录

2.3 配置环境变量

在 ~/.zshrc 文件中添加 

vim ~/.zshrc 按下键盘 i 切换到输入模式,再复制粘贴如下代码

export PATH=$HOME/.local/bin:$PATH

三、安装仓颉编译器

3.1 放置已下载的仓颉SDK到个人目录

把下载的仓颉编译器复制到个人目录(文件管器和下载目录同级)

  • 打开终端解压 tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.2025xxxxxxxxxxxxx.tar.gz 换自己下载的版本
tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.20251227020001.tar.gz   

过程中会提示 tar: settime 1753890084 xxxx  Permission denied

这个错误的核心原因是,tar 命令在解压文件时,不仅会创建文件和目录,还会尝试将文件的原始时间戳(包括访问时间和修改时间)也一并恢复。当它尝试设置这些时间戳时,由于当前用户权限不足,导致操作失败。

可以在解压过程中 忽略时间戳 

这是最简单且最直接的解决方案。使用 tar 的 --touch 选项,它会告诉 tar 在解压后不尝试恢复原始时间戳,而是使用当前时间作为文件的修改时间。这样就完全绕过了 settime 操作,从而避免了权限错误。

请执行以下命令:

tar -xzf cangjie-sdk-ohos-aarch64-1.1.0-alpha.20251227020001.tar.gz --touch

命令解释:

  • -x: 解压 (extract)
  • -z: 处理 .gz 压缩文件
  • -f: 指定文件名 (file)
  • --touch: 在解压后,使用当前时间更新文件的修改时间,而不是尝试恢复归档中的原始时间戳。

对于绝大多数开发和使用场景来说,文件的原始时间戳并不重要,这个方案是最佳选择。

这时候就不报解压时间戳的问题了~

3.2 配置相关环境变量的脚本文件

  • 打开 /storage/Users/currentUser 目录中的 cangjie/envsetup.sh文件,把首行#!/bin/bash换成 #!/bin/sh
cd /storage/Users/currentUser/cangjie
vim envsetup.sh

首行的 #!/bin/bash 换成  #!/bin/sh

在 cangjie目录下和 envsetup.sh 同级,创建  sign-cangjie.sh 文件

touch sign-cangjie.sh
vim sign-cangjie.sh

把以下脚本保存为 sign-cangjie.sh 

#!/bin/sh

# 递归查询当前目录及其子目录下的所有文件
find . -type f | while read -r file; do
	# 使用 file 命令检查文件类型
	if file "$file" | grep "shared object"; then
		echo "Found executable or shared object: $file"

		# 确保文件具有可执行权限
		chmod +x "$file"

		# 签名文件
		echo "Signing file: $file"
		binary-sign-tool sign -inFile "$file" -outFile "$file" -selfSign 1
	fi
done

  • 在终端切换到 cangjie 目录下,执行 chmod +x sign-cangjie.sh 并执行 ./sign-cangjie.sh

chmod +x sign-cangjie.sh
./sign-cangjie.sh

提示是否运行,请选择运行

它会自动遍历签名cangjie目录里的文件

  • 切换到 third_party/llvm/bin  目录,并执行 rm ld.lld && cp lld ld.lld
cd third_party/llvm/bin
rm ld.lld && cp lld ld.lld

恭喜! 到这里这样我们的仓颉编译器就安装好了!

四、使用仓颉编译器

现在就可以按仓颉教程的方法使用仓颉了

  • 打开终端 切换到安装仓颉SDK的文件夹,并执行 source envsetup.sh 

    • cd ~/cangjie
      source envsetup.sh
    • 然后就可以在当前终端窗口执行cjc -v

点击运行

五、编译并执行项目

  • 写一个hello_world.cj

在 CodeArts IDE 中创建一个文件,叫 hello_world.cj

填写如下代码,并保存该文件

import std.time.*

main(){
	println("你好,仓颉\n你好~鸿蒙 \n你好!坚果派 👍" + DateTime.now().format("yyyy/MM/dd HH:mm:ssSSS OO"))
}

  • 切换到该文件的物理目录,并编译

cd /storage/Users/currentUser/cangjieproject/demo/
cjc hello_world.cj

期间会弹出一系列的是否运行,均点击运行

即可编译成功,当前目录会生成 default.cjo  和  main 文件

  • 签名 
binary-sign-tool sign -inFile "./main" -outFile "./main-signed" -selfSign 1

  • 授权
chmod +x ./main-signed

  • 运行签名后的文件
./main-signed 

恭喜!您已经在您的鸿蒙 PC 上成功的原生的开发了一个仓颉语言的应用!

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐