Cangjie (STS)

Cangjie (STS) 1.2.0

A new-generation programming language oriented to full-scenario intelligence

Download for Windows

About Cangjie (STS)

The Cangjie programming language is a new-generation programming language oriented to full-scenario intelligence. It features native intelligence, being naturally suitable for all scenarios, high performance and strong security. It is mainly applied in scenarios such as native applications and service applications of HarmonyOS NEXT, providing developers with a good programming experience.

What's new in 1.2.0

Cangjie 1.2.0 Release Notes
版本介绍
本版本为 STS 版本,版本号 1.2.0,维护周期 6 个月;STS 1.1.x 版本计划 2026.10.30 停止维护。
相比 1.1.3 版本,本版本主要增强跨平台,编译器和工具链能力。
- 跨平台新增 Android 23 (API 23) aarch64 支持、iOS LTO 支持、跨语言互操作(ObjC/Java)增强。
- 优化编译器稳定性与性能:修复 broken 声明重载排除、const 函数 ICE 修复、字符串插值位置信息、synchronized 块声明拒绝等一批语义 ICE 问题。
- 工具链 LSP 新增跨平台跳转定义、接口提取/重命名、数组索引提取、主线程 GetArkAST 移除、cjo 字节 intern 去重等能力。
详见后续各部分介绍。

语言
语法与语义
- common/platform 关键字支持修饰泛型 extend 语法。
- platform 声明函数返回类型支持为 common 的子类型。
- common/platform 有初始值的变量支持不显式指定类型。
- 当 common class/struct/enum 或 common extend 的所有成员函数都包含实现时,支持省略 platform 声明。
- 支持 common abstract class 匹配 platform sealed abstract class。
跨平台互操作
- 支持 ObjC 使用 Cangjie 接口、 Cangjie 枚举类型。
- 支持 Java 使用 Cangjie 泛型类型、Lambda 。
- 支持表达式类型、元组类型。
- 支持 ObjC 使用 Cangjie Open class 类型、泛型类型。
编译器
新增特性
跨平台
- Android 交叉编译及运行平台支持范围扩大至 API level 23 及以上,通过 --target=aarch64-linux-android 或者 --target=aarch64-linux-android23 编译选项使能。
- 支持 iOS x86_64 模拟器交叉编译能力,详见 cjc 编译选项 --target 说明。
- LTO 支持 iOS 设备,同时支持 dylib、exe 两种方式,dylib 支持包级可见性配置。
- 新增 OHOS 版本仓颉 SDK,支持在鸿蒙 PC 运行。
调试与开发辅助
- 新增 --dump-ast、--dump-chir、--dump-ir、--dump-all、--dump-to-screen 选项供编译器开发者调试分析,查看编译过程中的可读形式抽象表达。
变更特性
- 加强静态变量的初始化检查,存在破坏性变更。详见 issue 105。

| 变更前 | 变更后 | 适配举例 |
| ------------------------------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 函数或者 lambda 表达式中对静态成员变量赋值认为是合法的初始化,未编译报错 | 函数或者 lambda 表达式中对静态成员变量赋值会编译报错 | 将原先在函数或者 lambda 表达式中赋值当做初始化的代码修改为在静态变量定义时或者 static init() 函数内初始化;对需要函数中赋值的情况可使用 Option 包装为 var 变量(以 None 为初值),新增 prop 与原变量名相同,在 getter/setter 中适配赋值逻辑 |
- common/platform 声明新增注解一致性检查;不支持修饰主构造函数;abstract platform class 不支持添加额外抽象成员;common sealed class 的所有直接子类型必须在同一个 source set;函数默认参数可在 common 或 platform 声明任一侧定义。
修复问题
- 哈希常量命名防碰撞。
- 避免运行时 envsetup 中出现空 LD_LIBRARY_PATH 条目。
- 为字符串插值 desugar 节点添加源码位置。
- 重载决议排除 broken 声明、明确 broken 函数查找行为。
- 修复 const 函数中 pattern 变量的 ICE 问题。 …

Full release notes »

Technical details

PublisherHuawei Technologies Co., Ltd.
Version1.2.0
Release date2026-09-22
LicenseApache-2.0
Installer typenullsoft
Architecturex64
Package IDHuawei.Cangjie.STS
Install scopeAll users

Install Cangjie (STS) from the command line

Install with Windows Package Manager
winget install --id=Huawei.Cangjie.STS -e
Update to the latest version
winget upgrade --id=Huawei.Cangjie.STS -e
Uninstall
winget uninstall --id=Huawei.Cangjie.STS -e
Silent install with the offline installer
"downLoad" /S

Cangjie (STS) adds these commands to the command line: cjc, cjc-frontend, cjcov, cjdb, cjfmt, cjlint, cjpm, cjtrace-recover.

harmonyoslanguageoniroopenharmonyprogrammingprogramming-language

Cangjie (STS) version history

1.1.3 May 29, 2026

版本介绍
Cangjie 1.1.3 为 STS 1.1 第二个发布版本,STS 1.1 维护周期 6 个月。
相比 1.1.0 版本,本版本无新增特性,有 1 个功能修复导致的变更,修复了若干问题;各模块修复问题详见本文档各章节介绍。
变更说明

| 场景描述 | 用例说明 | 变更前 | 变更后 | 适配方案 |
| ------------------------------------------------------------------------------------------------------------- | ----------- | --------------------------------------- | ---------------------------------------- | ---------------------------------------------- |
| 在父类和子类中,存在非 override 关系的 2 个函数,在调用点经过实例化之后函数签名一致,可能会出现运行结果错误的情况 | 见 issue#820 | 使用 O2 编译,运行时会打印"a",返回结果是 1 | 使用 O2 编译,运行时会打印"b", 返回结果是 0 | issue#820 场景的代码需要根据新的返回值进行适配 |

编译器
修复问题
- issue#3118 优化宏展开生成错误注解调用时的报错信息。
- issue#783 修复 struct 和 class 元数据缺少 reflectVersion1 标记导致运行时反射无法正确识别类型元数据的问题;reflectVersion1 属性现同步写入 struct/class/box_class 的 GenerateAttrsMetadata。
- issue#3116 修复管道运算符结合 trailing lambda 调用重载函数时,类型推断触发 ICE(SIGSEGV)的问题。受影响场景:f |> { x => overloaded(x) } 且无类型标注时必现崩溃,根因为 TryEnforceCandidate 中 PSet checkpoint 深度不一致。
- issue#2807 修复注解嵌套宏场景下宏展开失败的问题,覆盖两类场景:① 注解嵌套宏展开后生成子宏;② 宏展开结果本身包含注解嵌套宏。
- issue#794:修复 macOS 链接 libcangjie-std-ast.a 时动态/静态混用导致 AST 相关接口出错的问题。
- issue#470:修复 Windows 场景 Driver 调用 posix_spawn 失败时缺少错误消息的问题,修正 FORMAT_MESSAGE_ALLOCATE_BUFFER 内存分配及 LocalFree 释放逻辑。
- issue#465 修复读写 global struct 成员时写/读屏障缺失,在 aarch64 上导致随机崩溃或数据竞争的问题。 …

Frequently asked questions

Is Cangjie (STS) free?

Yes. Cangjie (STS) is free and open-source software released under the Apache-2.0 license.

What is the latest version of Cangjie (STS)?

The latest version is 1.2.0, released on Sep 22, 2026.

Is it safe to download Cangjie (STS)?

The download button links to the official installer published on cangjie-lang.cn, the same file Windows Package Manager installs. You can verify the downloaded file by comparing its SHA-256 checksum with 7d5abc700e43bbdbe8f49a104313b8e620389a588878c44bf74ea721ce60b9c2.

Which Windows versions does Cangjie (STS) support?

Cangjie (STS) runs on Windows and is available for 64-bit (x64) systems.

How do I install Cangjie (STS) silently?

Run the offline installer with "downLoad" /S, or install it with Windows Package Manager: winget install --id=Huawei.Cangjie.STS -e --silent.

How do I uninstall Cangjie (STS)?

Open Settings › Apps › Installed apps, find Cangjie (STS) and select Uninstall. From the command line, run winget uninstall --id=Huawei.Cangjie.STS -e.