elmma
|
ddee395f52
|
feat: 传递式upvalue — 3层嵌套闭包支持
- upvalues改为Rc<RefCell<Vec<Upvalue>>>支持跨编译器共享
- resolve_upvalue: 通过grandparent_upvalues级联创建upvalue链
- compile_nested_function: 传递完整enclosing_locals链 + grandparent_upvalues
- Upvalue添加name字段用于传递式查找
测试: 327/327 通过 | Benchmark: 18/18 全部通过
|
2026-06-25 23:41:36 +08:00 |
|
elmma
|
9c9a17b149
|
feat: 重构for-in为预计算+隐藏局部变量模式
ForInInit: 改为预计算所有迭代元素为数组
ForInNext: 接收items_slot+idx_slot操作数,从局部变量读取
编译器: for-in迭代器使用隐藏局部变量(items, idx),隔离于value stack
修复: for-in在函数调用嵌套场景下栈对齐问题
修复: break路径在for-in中正确弹出循环变量
修复: ForInNext退出时push Nil以保持栈平衡
修复: 跳转偏移计算(移除emit_loop_jump中错误的-3)
通过: 17/18 benchmark测试 (全部for-in相关测试通过)
已知限制: 3层嵌套闭包(10c)需传递式upvalue支持
|
2026-06-25 23:32:23 +08:00 |
|
elmma
|
299003a718
|
feat: VM函数调用、闭包、upvalue捕获支持
- 实现用户定义函数调用 (CallFrame创建、参数传递、返回)
- 实现闭包/upvalue捕获 (编译器解析、VM捕获、LoadUpvalue/StoreUpvalue)
- 修复栈管理: StoreLocal peek语义、局部变量槽位分配
- 修复跳转偏移计算 (移除错误的-3偏置)
- 修复对象字面量编译 (每字段后Pop)
- 修复函数声明栈泄漏 (DefineGlobal后Pop)
- 添加ForInNext值Pop (避免栈累积)
- 添加OpCode::from_u8对非连续值的支持
通过: 算术、循环、条件、数组、对象、字符串、递归、闭包、upvalue
部分通过: for-in迭代器 (基本工作,复杂嵌套场景待修复)
未实现: VM版require()、复合upvalue赋值
测试: 327/327 通过
|
2026-06-25 23:16:59 +08:00 |
|
elmma
|
d854b22006
|
feat: 字节码VM基础设施 — 编译器、VM执行循环、Runtime trait
Phase 1-3: 基础VM架构
- 新增 Runtime trait: 抽象树遍历解释器和VM的共同接口
- NativeFn 改为接受 &mut dyn Runtime
- 重构所有内置函数使用新签名
- vm/opcode.rs: 33个字节码指令 + 编码/解码辅助函数
- vm/compiler.rs: AST→字节码编译器,支持变量解析、跳转回填、作用域
- vm/vm.rs: 栈式VM执行循环,支持全局变量、原生函数调用
- lib.rs: 新增 run_file_vm() + --vm CLI标志
- 修复: 跳转偏移计算、对象字面量编译
工作特性: 算术、变量、while/for循环、条件、数组、对象、字符串
待完成: 用户定义函数调用、闭包/upvalue捕获、完整require支持
Release模式: 1M算术循环 VM 0.44s vs 树遍历 0.89s (2.0x加速)
|
2026-06-25 01:08:49 +08:00 |
|
elmma
|
89952139c5
|
feat: 添加性能基准测试脚本 — 12类18项覆盖算术/函数/闭包/数组/对象/字符串/算法
|
2026-06-25 00:46:17 +08:00 |
|
elmma
|
bdffe9e3c5
|
feat: IDE支持 — workspace拆分、LSP服务器、VS Code扩展
**Workspace 拆分**
- aster-core: 纯库,zero-dependency,包含 lexer/parser/ast/interpreter/error/analysis
- aster: REPL 二进制,薄封装 aster-core
- aster-lsp: LSP 语言服务器
**VS Code 扩展 (vscode-ext/)**
- TextMate 语法高亮 (.ast 文件)
- 语言配置 (注释切换、括号配对、自动缩进)
- LSP 客户端 (extension.js)
**LSP 服务端功能**
- Diagnostics: 实时显示 lex/parse 错误红色波浪线
- Completion: 关键字 + 内置函数 + 用户定义符号补全
- Hover: 悬停显示变量/函数信息
- Signature Help: 函数参数提示
- Goto Definition: Ctrl+Click 跳转到声明处
- Find References: 查找所有引用位置
- Rename: F2 重命名符号
**新增 analysis 模块**
- collect_symbols: AST 遍历收集符号
- find_declaration/find_all_references: Token 扫描定位声明和引用
|
2026-06-25 00:28:13 +08:00 |
|
0264408
|
99c9e9c9bd
|
feat: 新增块注释及测试
|
2026-06-17 17:26:37 +08:00 |
|
0264408
|
df9ecb4de1
|
fix: 优化字符串类型在不同场景的打印形式
|
2026-06-17 16:08:40 +08:00 |
|
0264408
|
e356c208a6
|
feat: 实现模块引入功能以及测试
|
2026-06-17 15:57:45 +08:00 |
|
0264408
|
9428e270af
|
refactor: 用 Value::get/set 简化属性访问,消除直接 borrow/borrow_mut 调用
- Value::set 签名改为接受 &str 并返回 RuntimeError,与 evaluator 对齐
- eval_get/eval_set/eval_index_get/eval_index_set 中统一使用 get/set
- 去掉 eval_index_get 和 eval_index_set 中不再使用的 map 绑定
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-17 15:05:59 +08:00 |
|
elmma
|
bc74b5ee91
|
fix: 修改 Value::String 的显示格式,添加引号以增强可读性
|
2026-06-17 00:33:29 +08:00 |
|
elmma
|
f0bba2f2aa
|
feat: 添加数组和字符串的属性与方法支持,包括 length、push、pop、upper、lower、trim、contains、starts_with、ends_with、substring、replace 和 split
|
2026-06-17 00:23:43 +08:00 |
|
0264408
|
8e49df8062
|
feat: 添加字符串工具函数(split, trim, substring, replace, contains, upper, lower, starts_with, ends_with)及相关测试用例
|
2026-06-16 19:44:54 +08:00 |
|
0264408
|
bf705069a5
|
feat: 添加对数组和对象字面量的尾随逗号支持,更新相关测试用例
|
2026-06-16 19:40:24 +08:00 |
|
0264408
|
a7bedf6fa1
|
refactor: 优化代码组织
|
2026-06-16 19:33:16 +08:00 |
|
0264408
|
e4272943aa
|
refactor: 抽离测试代码
|
2026-06-16 19:25:01 +08:00 |
|
0264408
|
fdd42fce19
|
feat: 添加对单引号字符串的支持,更新词法分析器和相关测试用例
|
2026-06-16 19:16:48 +08:00 |
|
0264408
|
5e431dbba4
|
feat: 添加对象索引访问和赋值支持,更新相关错误处理和测试用例
|
2026-06-16 19:14:00 +08:00 |
|
0264408
|
8b20580402
|
feat: 添加for-in循环支持,更新解析器、解释器和相关测试用例
|
2026-06-16 19:10:26 +08:00 |
|
0264408
|
75c1d230ad
|
feat: 添加内置函数支持(len, typeof, push, pop),更新相关错误处理和测试用例
|
2026-06-16 19:03:47 +08:00 |
|
0264408
|
18fa53cf4a
|
feat: 实现字符串与数字的连接操作,增强加法运算符的功能
|
2026-06-16 18:55:05 +08:00 |
|
0264408
|
db541c315b
|
feat: 添加三元运算符支持,更新解析器和解释器以处理条件表达式
|
2026-06-16 18:41:42 +08:00 |
|
0264408
|
c2d6c518fc
|
feat: 添加对const关键字的支持,允许定义不可变变量并增强相关错误处理
|
2026-06-16 17:24:17 +08:00 |
|
0264408
|
284a29a4be
|
fix: 修复字符串转义、对象相等比较、除零处理
- 词法分析器:字符串字面量中支持 \n \t \r " \ 转义序列,未知转义序列报告错误并跳过剩余字符串
- 解释器:对象相等比较新增深度比较(键值对逐一比对)
- 解释器:除法和取模运算在除数为零时返回 RuntimeError,避免产生 inf/NaN
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-06-16 17:02:30 +08:00 |
|
0264408
|
983a7d8b34
|
feat: 添加标准测试
|
2026-06-16 16:56:17 +08:00 |
|
0264408
|
a76cd79be2
|
feat: 添加CLAUDE.md文件
|
2026-06-16 16:55:43 +08:00 |
|
0264408
|
c7e4e0dce0
|
feat: 更新错误处理机制,增强词法分析器和解析器的错误报告功能
|
2026-06-16 14:24:49 +08:00 |
|
0264408
|
e052226cdb
|
feat: 重构main函数,添加run_file和run_repl函数以支持从文件和REPL读取输入
|
2026-06-16 10:11:11 +08:00 |
|
0264408
|
d951aa93ff
|
feat: 优化print函数,简化参数输出逻辑
|
2026-06-16 09:36:41 +08:00 |
|
0264408
|
bd052699f5
|
feat: 添加取模运算符支持,更新解析器、解释器、词法分析器和相关示例以处理相关语法
|
2026-06-16 09:36:32 +08:00 |
|
0264408
|
259dcf1af9
|
feat: 更新赋值运算符示例,添加数组和对象操作的打印输出
|
2026-06-16 08:58:04 +08:00 |
|
0264408
|
a40c8d1e9e
|
feat: 添加赋值运算符支持,更新解析器、解释器和词法分析器以处理相关语法
|
2026-06-16 08:55:21 +08:00 |
|
0264408
|
ae3060708d
|
feat: 添加break和continue语句的支持,更新解析器、解释器和词法分析器以处理相关语法
|
2026-06-10 17:37:12 +08:00 |
|
0264408
|
dd3f18da6f
|
feat: 添加数组字面量和索引访问功能,更新解析器和解释器以支持数组操作
|
2026-04-28 10:14:13 +08:00 |
|
0264408
|
5dc55c3476
|
feat: 实现for循环语句的解析和执行逻辑,更新词法分析器以支持for关键字
|
2026-02-11 09:39:06 +08:00 |
|
0264408
|
0e0077d96b
|
feat: 改进Value对象的显示格式,增加键值对输出
|
2026-02-11 09:02:52 +08:00 |
|
0264408
|
e9fbb92b15
|
feat: 更新README
|
2026-02-10 17:30:44 +08:00 |
|
0264408
|
521c7006d9
|
feat: 新增对象字面量和属性访问表达式
|
2026-02-10 17:13:40 +08:00 |
|
0264408
|
5c5ca8600a
|
feat: 新增内置函数input
|
2026-02-06 11:46:27 +08:00 |
|
0264408
|
f86300f3ce
|
Initialize Aster project with basic structure, including Cargo configuration, lexer, parser, interpreter, and AST definitions. Add a sample script and README documentation. Implement basic error handling and environment management for variable storage.
|
2026-02-04 16:42:51 +08:00 |
|