11# CodeNothing
22
3- CodeNothing是世界上最好的语言,现在配备了 ** JIT(Just-In-Time)编译器 ** !
3+ CodeNothing是世界上最好的语言。
44
5- ## 🚀 v0.6.4 重大更新 - JIT编译器
6-
7- ### ⚡ JIT算术表达式编译
8- - ** 热点检测** : 自动识别频繁执行的算术表达式(100次阈值)
9- - ** 即时编译** : 使用Cranelift将热点代码编译为本地机器码
10- - ** 智能缓存** : 编译结果缓存,避免重复编译
11- - ** 性能飞跃** : 算术密集型程序可获得数倍加速
12-
13- ### 🔧 JIT调试系统
14- ``` bash
15- ./CodeNothing program.cn # 正常运行
16- ./CodeNothing program.cn --cn-jit-debug # JIT调试模式
17- ./CodeNothing program.cn --cn-jit-stats # JIT性能统计
18- ./CodeNothing program.cn --cn-jit-debug --cn-jit-stats # 完整模式
19- ```
20-
21- ### 📊 JIT性能监控
22- - ** 实时统计** : 热点检测、编译成功率、执行效率
23- - ** 详细报告** : 格式化的性能分析报告
24- - ** 开发友好** : 不干扰正常用户体验的调试系统
25-
26- ## 🚀 核心功能
27-
28- ### 基础语言特性
29- - 变量声明和赋值
30- - 基本的算术运算
31- - 函数定义和调用
32- - 命名空间
33- - 自增、自减和复合赋值操作符
34- - if-else 条件语句和逻辑操作符
35- - for循环和while循环
36- - 单行和多行注释
37- - 动态库加载和调用
38-
39- ## 语法示例
40-
41- ### 变量声明和赋值
42-
43- ```
44- num : int = 10;
45- str : string = "hello";
46- ```
47-
48- ### 函数定义和调用
49-
50- ```
51- fn add(a : int, b : int) : int {
52- return a + b;
53- };
54-
55- result : int = add(1, 2);
56- ```
57-
58- ### 🚀 JIT编译示例(v0.6.4新功能)
59-
60- ``` codenothing
61- using lib <io>;
62- using ns std;
63-
64- fn main() : int {
65- // JIT编译器会自动优化这个循环中的算术表达式
66- i : int = 0;
67- sum : int = 0;
68-
69- while (i < 150) { // 超过JIT阈值(100次)
70- temp : int = i * 2 + 1; // 🚀 这个表达式会被JIT编译
71- sum = sum + temp; // 🚀 这个表达式也会被JIT编译
72- i = i + 1;
73- };
74-
75- std::println("计算结果: " + sum);
76- return 0;
77- }
78- ```
79-
80- ** 运行JIT优化程序** :
81- ``` bash
82- # 正常运行(自动JIT优化)
83- ./CodeNothing jit_example.cn
84-
85- # 查看JIT编译活动
86- ./CodeNothing jit_example.cn --cn-jit-debug
87-
88- # 显示性能统计报告
89- ./CodeNothing jit_example.cn --cn-jit-stats
90- ```
91-
92- ### 命名空间
93-
94- ```
95- ns math {
96- fn add(a : int, b : int) : int {
97- return a + b;
98- };
99- };
100-
101- result : int = math::add(1, 2);
102-
103- // 导入命名空间
104- using ns math;
105- result : int = add(1, 2);
106- ```
107-
108- ### 自增、自减和复合赋值操作符
109-
110- ```
111- num : int = 10;
112- num++; // 后置自增
113- num--; // 后置自减
114- ++num; // 前置自增
115- --num; // 前置自减
116- num += 5; // 复合赋值
117- num -= 3; // 复合赋值
118- num *= 2; // 复合赋值
119- num /= 4; // 复合赋值
120- num %= 3; // 复合赋值
121-
122- // 在表达式中使用自增/自减
123- a : int = 5;
124- b : int = 5;
125- x : int = ++a; // 前置自增:先增加a的值,再返回新值,x为6,a为6
126- y : int = b++; // 后置自增:先返回b的原值,再增加b的值,y为5,b为6
127- ```
128-
129- ### if-else 条件语句和逻辑操作符
130-
131- ```
132- if (condition) {
133- // 代码块
134- } else if (another_condition) {
135- // 代码块
136- } else {
137- // 代码块
138- };
139-
140- // 逻辑操作符
141- if (a > 5 && b < 10) {
142- // 逻辑与
143- };
144-
145- if (a > 5 || b < 10) {
146- // 逻辑或
147- };
148-
149- if (!condition) {
150- // 逻辑非
151- };
152- ```
153-
154- ### for循环
155-
156- ```
157- // 遍历范围从1到5的整数
158- for (i : 1..5) {
159- // 代码块,i的值依次为1, 2, 3, 4, 5
160-
161- if (i == 3) {
162- break; // 跳出循环
163- };
164-
165- if (i % 2 == 0) {
166- continue; // 跳过当前迭代,继续下一次迭代
167- };
168- };
169- ```
170-
171- ### while循环
172-
173- ```
174- // 当条件为真时,重复执行代码块
175- while (condition) {
176- // 代码块
177-
178- if (someCondition) {
179- break; // 跳出循环
180- };
181-
182- if (anotherCondition) {
183- continue; // 跳过当前迭代,继续下一次迭代
184- };
185- };
186- ```
187-
188- ### 注释
189-
190- ```
191- // 这是单行注释
192-
193- /!
194- 这是多行注释
195- 可以跨越多行
196- !/
197-
198- /! 这也是一个多行注释,虽然只有一行 !/
199-
200- // 嵌套多行注释
201- /!
202- 外层注释
203- /!
204- 内层注释 - 这部分会被完全忽略
205- !/
206- 继续外层注释
207- !/
208- ```
209-
210- ### 动态库加载和调用
211-
212- ```
213- // 导入动态库
214- using lib_once <io>;
215-
216- // 调用库函数
217- std::println("Hello, world!");
218-
219- // 读取用户输入
220- input : string = std::read_line();
221- ```
222-
223- ## 运行(从源代码编译后)
224-
225- ```
226- cargo run -- <文件路径>
227- ```
228-
229- 例如:
230-
231- ```
232- cargo run -- helloworld.cn
233- ```
2345
2356## 动态库开发
2367
@@ -240,67 +11,3 @@ CodeNothing 支持通过动态库扩展功能。动态库必须遵循以下规
240112 . 库函数必须接受 ` Vec<String> ` 类型的参数,并返回 ` String ` 类型的结果。
24112
24213详细信息请参阅 ` library_example ` 目录中的示例库和说明文档。
243-
244- ### 枚举类型 (Enum)
245-
246- CodeNothing 支持类似 Rust 的枚举类型,可以定义带有或不带有参数的枚举变体。
247-
248- #### 基础枚举
249-
250- ```
251- enum Color {
252- Red,
253- Green,
254- Blue
255- };
256-
257- // 使用枚举
258- red : Color = Color::Red;
259- green : Color = Color::Green;
260- ```
261-
262- #### 带参数的枚举
263-
264- ```
265- enum Shape {
266- Circle(float),
267- Rectangle(float, float),
268- Triangle(float, float, float)
269- };
270-
271- // 创建带参数的枚举变体
272- circle : Shape = Shape::Circle(5.0);
273- rectangle : Shape = Shape::Rectangle(10.0, 20.0);
274- triangle : Shape = Shape::Triangle(3.0, 4.0, 5.0);
275- ```
276-
277- #### 复杂枚举示例
278-
279- ```
280- enum Message {
281- Quit,
282- Move(int, int),
283- Write(string),
284- ChangeColor(int, int, int)
285- };
286-
287- // 创建不同类型的消息
288- quit_msg : Message = Message::Quit;
289- move_msg : Message = Message::Move(10, 20);
290- write_msg : Message = Message::Write("Hello, World!");
291- color_msg : Message = Message::ChangeColor(255, 128, 64);
292- ```
293-
294- 枚举类型可以作为函数参数和返回值使用,支持字符串连接操作,并且可以在控制台中正确显示。
295-
296- ### 运行基准测试
297-
298- ``` bash
299- # 运行完整基准测试套件
300- bash benchmarks/scripts/run_benchmarks.sh
301-
302- # 查看详细性能报告
303- cat benchmarks/results/performance_report_* .md
304- ```
305-
306- 详细的性能优化报告请参见:[ 性能优化文档] ( docs/performance-optimization-v0.5.10.md )
0 commit comments