Releases: HelloAIXIAOJI/JiLang
0.4.2 Release
Full Changelog: 0.4.1...0.4.2
本文档介绍JiLang 0.4.2版本的更新内容,包括新增功能和修复的问题。
主要更新
1. 加入get_property
语句
新增了强大的动态属性访问功能,通过get_property
语句可以更灵活地访问对象和数组的属性与元素。此功能特别适合需要在运行时动态决定访问路径的场景。
基本语法:
{
"get_property": {
"object": "要访问的对象或数组",
"path": "属性路径或属性路径数组",
"output": "存储结果的变量名(可选)"
}
}
主要特性:
- 支持使用字符串路径(使用点号分隔)或数组路径访问嵌套属性
- 支持变量作为路径元素,实现真正的动态属性访问
- 支持数组索引和
length
属性访问 - 详细错误提示,帮助定位访问问题
完整文档请参阅动态属性访问文档。
2. 修复VariableReference自0.4.0后的问题
在0.4.0版本的重构中,变量引用系统遇到了一些问题,特别是在处理嵌套属性和数组索引时。0.4.2版本修复了这些问题:
- 修复了嵌套属性访问中的解析错误,如
@var.object.property
格式 - 修复了数组元素访问时的索引解析问题,如
@var.array[0]
- 修复了嵌套数组访问的处理,如
@var.array[0][1]
- 修复了数组
length
属性无法正确访问的问题
这些修复确保了变量引用在各种复杂场景下的稳定工作。
3. 加强VariableReference功能
除了修复问题外,我们还对变量引用系统进行了多项增强:
- 新增对动态索引引用的支持,如
@var.array[@var.index]
- 改进了错误处理,提供更清晰的错误消息
- 增强了变量解析的类型安全性,减少运行时错误
- 优化了嵌套变量引用的性能
- 添加了对中文和非ASCII变量名的更好支持
4. 支持.jil
文件后缀
从0.4.2版本开始,JiLang正式支持.jil
文件扩展名,以避免与其他编程语言(如Julia语言的.jl
)发生混淆:
- 解释器现在能自动识别并处理
.jil
和.jl
文件 - 推荐所有新建项目使用
.jil
作为标准文件扩展名 - 现有的
.jl
文件可以继续使用,但建议逐步迁移到.jil
这一变更有助于明确区分JiLang程序,提高项目的可识别性,并避免与其他工具的潜在冲突。
使用示例
动态属性访问示例
{
"program": {
"main": {
"body": [
{"var": {
"user": {
"name": "张三",
"details": {
"age": 30,
"skills": ["编程", "设计", "写作"]
}
}
}},
{"var": {"property": "age"}},
{"var": {"skill_index": 1}},
// 使用变量决定访问的属性
{"get_property": {
"object": "@var.user",
"path": ["details", "@var.property"],
"output": "user_age"
}},
{"echo": ["用户年龄: ", "@var.user_age", "\n"]},
// 使用变量作为数组索引
{"get_property": {
"object": "@var.user",
"path": ["details", "skills", "@var.skill_index"],
"output": "user_skill"
}},
{"echo": ["用户技能: ", "@var.user_skill", "\n"]}
]
}
}
}
增强的变量引用示例
{
"program": {
"main": {
"body": [
{"var": {"items": [10, 20, 30, 40, 50]}},
{"var": {"index": 2}},
// 使用动态索引访问数组
{"echo": ["动态索引访问: ", "@var.items[@var.index]", "\n"]},
// 访问数组长度
{"echo": ["数组长度: ", "@var.items.length", "\n"]}
]
}
}
}
向下兼容性
0.4.2版本完全向下兼容0.4.0和0.4.1版本的功能,所有现有程序应当可以正常运行。同时,建议开发者利用新的get_property
功能来实现更灵活的数据访问模式。
0.4.1 Release
移除了WindowWV标准库模块
Full Changelog: 0.4.0...0.4.1
0.4.0 Release
Full Changelog: 0.3.1...0.4.0
0.3.1 Release
JiLang 0.3.1 版本更新日志
目录
概述
JiLang 0.3.1 版本带来了多项重要更新:支持传统双斜杠注释语法、全面错误检查模式、变量引用前缀新语法、增强的错误处理机制、代码架构重构以及多项性能优化。本次更新提升了开发体验,同时保持了完全的向后兼容性。
新特性
1. 支持传统双斜杠注释风格
JiLang现在支持传统的//
注释风格!虽然这不是标准的JSON语法,但我们添加了预处理环节,在JSON解析前自动移除所有注释,让你可以更自然地编写代码。
示例:
// 这是一个文件级注释
{
// 这是内部注释
"program": {
"main": {
"body": [
{"echo": ["Hello"]}, // 这是行尾注释
// 这个语句被注释掉了
{"echo": ["World"]}
]
}
}
}
使用双斜杠注释的优势:
- 更符合大多数开发者的习惯
- 可用于临时禁用代码片段
- 语法更简洁,不需要创建JSON注释对象
- 在任何位置都可以添加注释
注意事项:
//
注释在JSON解析前被完全移除,不会显示在调试输出中{"comment": "..."}
风格的注释仍然保留,在调试模式下会显示- 字符串内部的
//
不会被视为注释
2. 全面检查模式 (--check-all)
新增--check-all
命令行选项,提供更全面的错误检查能力:
- 检查并统一报告脚本中的所有错误,而不是只报告第一个遇到的错误
- 检查包含:不存在的模块、未知的语句类型、语法错误、参数错误等
- 错误信息包含位置标识,便于定位问题
- 不执行脚本代码,仅进行检查
- 对于大型脚本的调试非常有用
使用方法:
jlang your_script.jl --check-all
输出示例:
全面检查模式已启用 - 检查所有类型错误并统一报告,不执行代码
检查完成,发现以下问题:
1. 未找到模块 'nonexistent_module'。您能凭空变出这个模块吗?
2. 第2个语句错误: 运行时错误: 未知的语句类型: nonexistent_function
3. 第3个语句错误: 模块错误: 未找到模块 'nonexistent_module'
3. 支持$和¥前缀变量引用语法糖
JiLang现在支持使用$和¥作为变量引用的简化语法:
$变量名
- 等同于@var.变量名
¥变量名
- 等同于@var.变量名
(中文环境友好)
这种简化语法使得变量引用更加简洁,减少了输入量,提高了代码的可读性。
示例:
{
"program": {
"main": {
"body": [
{"var": {"姓名": "张三"}},
{"var": {"年龄": 25}},
{"comment": "传统引用方式"},
{"echo": ["姓名: ", "@var.姓名", ", 年龄: ", "@var.年龄", "\n"]},
{"comment": "使用$前缀引用(适合英文键盘)"},
{"echo": ["姓名: ", "$姓名", ", 年龄: ", "$年龄", "\n"]},
{"comment": "使用¥前缀引用(适合中文环境)"},
{"echo": ["姓名: ", "¥姓名", ", 年龄: ", "¥年龄", "\n"]}
]
}
}
}
变量前缀语法糖的优势:
- 代码更简洁,减少了冗余输入
- 提供了适合不同输入习惯的多种引用方式
- ¥符号为中文用户提供了更自然的体验(真的有人用中文输入法写代码或JSON吗?)
- 与其他脚本语言的变量引用风格更加一致
- 完全兼容传统的
@var.
前缀方式
4. 优化字符串处理
- 改进了UTF-8字符处理
- 修复了可能导致崩溃的边缘情况
5. 支持环境变量引用
JiLang现在增加了对系统环境变量的直接访问支持:
- 新增
@env.
前缀用于引用环境变量 - 直接从操作系统获取环境变量值
- 如果环境变量不存在,则返回
null
示例:
{
"program": {
"main": {
"body": [
{"echo": ["当前用户: ", "@env.USER", "\n"]},
{"echo": ["系统路径: ", "@env.PATH", "\n"]},
{"echo": ["主目录: ", "@env.HOME", "\n"]},
{"var": {"path": "@env.PATH"}},
{"comment": ["PATH环境变量内容:", "@var.path"]}
]
}
}
}
环境变量引用的优势:
- 无需手动导入环境配置
- 脚本可以访问系统信息和配置
- 便于开发跨平台和配置感知的脚本
- 与现有的变量引用系统无缝集成
6. 增强try-catch错误处理机制
JiLang现在提供了全面增强的错误处理机制:
- 改进的
try-catch
语句,提供更精确的错误捕获和处理 - 支持在
catch
块中访问详细的错误信息 - 新增
finally
块,无论是否发生错误都会执行 - 支持嵌套的
try-catch
结构 - 各种操作(如除零、未定义变量引用等)现在会抛出恰当的错误消息
示例:
{
"program": {
"main": {
"body": [
{"comment": "基本try-catch示例"},
{"try": {
"try": [
{"echo": ["尝试执行可能出错的代码...\n"]},
{"var": {"result": {"op": "div", "left": 10, "right": 0}}},
{"echo": ["这行不会执行,因为上面会产生除零错误\n"]}
],
"catch": [
{"echo": ["捕获到错误!程序继续执行\n"]}
]
}},
{"comment": "带错误信息的try-catch"},
{"try": {
"try": [
{"echo": ["@var.undefined_variable"]}
],
"catch": [
{"echo": ["捕获到错误: ", "@var.error_message", "\n"]}
],
"error_var": "error_message"
}},
{"comment": "带finally块的try-catch"},
{"var": {"resource": "已分配资源"}},
{"try": {
"try": [
{"var": {"result": {"op": "div", "left": 10, "right": 0}}}
],
"catch": [
{"echo": ["处理错误\n"]}
],
"finally": [
{"echo": ["清理资源: ", "@var.resource", "\n"]},
{"var": {"resource": null}}
]
}}
]
}
}
}
try-catch错误处理的优势:
- 脚本可以优雅地处理各种运行时错误,无需中断整个程序执行
- 可以捕获精确的错误信息,便于调试和日志记录
- finally块确保资源能正确释放,避免资源泄漏
- 遵循现代编程语言的错误处理模式,使代码更健壮
- 完全兼容现有代码,无需修改旧脚本
代码改进
1. 代码结构重大重构
-
将原本巨大的
statement.rs
文件拆分成多个更小的模块文件,极大提升了代码的可维护性和可读性 -
创建了新的
statements
文件夹,包含以下专用模块:basic.rs
- 基本语句(var, echo, concat, comment等)control_flow.rs
- 控制流语句(if, while, for, switch)function.rs
- 函数相关语句(call, execute_function)array.rs
- 数组操作语句object.rs
- 对象操作语句regex.rs
- 正则表达式操作exec.rs
- 系统命令执行mod.rs
- 模块定义和主要语句执行函数
-
每个模块文件专注于特定的功能组,使代码更加清晰和易于维护
-
保持了完全的向后兼容性,现有脚本无需任何修改即可运行
2. 变量引用系统重构
- 创建了专门的
variable_reference.rs
文件,集中处理所有变量引用逻辑 - 实现了
VariableReference
结构体和ReferenceType
枚举,提供统一的变量引用处理机制 - 支持的引用类型包括:
@var.
- 变量引用@const.
- 常量引用@params.
- 函数参数引用@env.
- 环境变量引用(新增)
- 重构后的代码具有以下优势:
- 更好的模块化 - 所有引用处理逻辑集中在一处
- 更易维护 - 添加新的引用类型只需修改
variable_reference.rs
文件 - 更一致的代码风格 - 所有文件使用统一的API处理变量引用
- 更好的类型安全 - 使用枚举替代字符串硬编码
- 统一了所有文件(
array.rs
、object.rs
、control_flow.rs
等)中的变量引用处理 - 提供了
resolve_value
方法,用于处理包括环境变量在内的所有类型引用
3. 文档和项目优化
- 更新了帮助信息,包含了新的注释功能
- 更新了文档,添加了关于双斜杠注释的说明
- 添加了新的示例文件
double_slash_comment_test.jl
- 移除了未使用的toml依赖,减小了项目体积并加快了构建速度(实际上是之前用于读取版本的,但逻辑实在是太傻逼了就改了。理论上打包体积变小)
4. 错误处理系统优化
- 重构了错误处理机制,提供更详细的错误类型和消息
- 在
error.rs
文件中集中管理所有错误消息,便于国际化和定制 - 新增特定领域的错误类型和消息:
math
模块错误:如除零错误、无效数值转换- 变量引用错误:未定义变量、类型不匹配等
- 函数调用错误:参数不足、类型错误等
- 改进了错误消息的可读性和一致性,使用友好的表达方式
- 优化了try-catch语句的实现,提高了性能和可靠性
- 确保所有模块能够正确抛出和处理错误,而不是静默失败
错误修复
- 修复了预处理阶段可能导致的崩溃问题
- 优化了错误消息格式
- 修复了¥前缀变量引用的UTF-8多字节字符处理问题,现在可以正确解析¥符号
- 修复了数学运算中的除零错误处理问题,现在会抛出适当的错误而不是返回NaN
- 修复了变量引用解析的几个边缘情况问题
- 改进了嵌套try-catch结构的错误传播机制
- 修复了变量引用系统中的嵌套属性访问问题,现在可以正确解析和访问嵌套的对象属性(如
@var.user.profile.name
) - 扩展了变量引用系统,添加对嵌套属性、数组索引和环境变量的全面支持,使所有引用类型都能一致地处理嵌套结构
注释系统详解
JiLang现在支持两种注释风格,各有优缺点,可根据不同场景选择使用。
注释风格对比
双斜杠注释 (//
)
// 这是一个整行注释
{"var": {"count": 42}} // 这是行尾注释
优点:
- 语法简洁,编写快速
- 熟悉的语法,与大多数编程语言一致
- 可以注释掉整行代码(临时禁用)
- 可以添加行尾注释
- 可在JSON任何位置使用(包括对象外部)
缺点:
- 不是标准JSON语法
- 在调试模式下不可见,被预处理完全移除
- 不能包含变量引用等动态内容
注释对象 ({"comment": "..."}
)
{"comment": "这是一个注释"},
{"comment": ["这是", "多部分", "注释,变量值:", "@var.count"]}
优点:
- 是标准JSON语法的一部分
- 在调试模式下可见,便于调试
- 可以包含变量引用,显示实时值
- 支持多部分组合注释
缺点:
- 语法较冗长
- 只能作为JSON对象的一部分使用
- 不能用于行尾注释
推荐使用场景
我们建议根据不同场景选择合适的注释风格:
-
开发阶段:
- 使用
//
注释进行快速注释、临时禁用代码和添加简单说明 - 适合频繁修改和测试的代码
- 使用
-
调试阶段:
- 使用
{"comment": "..."}
对象注释显示中间变量值 - 特别是使用
{"comment": ["说明:", "@var.变量"]}
格式查看变量实时值
- 使用
-
文档和维护:
- 在重要算法或逻辑处使用
{"comment": "..."}
注释 - 对于简单的代码说明,使用
//
注释
- 在重要算法或逻辑处使用
-
混合使用:
// 这部分实现了快速排序算法 {"comment": "开始排序,数组大小: "}, {"array.length": ["@var.items"]}, {"comment": ["数组元素数量: ", "@var.result"]}
两种注释风格可以互补使用,根据具体需求选择最合适的方式。
使用示例
完整示例
// 这是一个使用//注释的文件示例
{
"include": ["math"], // 包含数学模块
"program": {
"main": {
"body": [
// 使用双斜杠注释
{"echo": ["测试 // 注释:\n\n"]},
{"var": {"number": 25}}, // 设置一个变量
// 使用数学模块计算平方根
{"math.sqrt": ["@var.number"]},
{"var": {"sqrt_result": "@var.result"}},
// 访问环境变量示例
{"echo": ["当前用户: ", "@env.USER", "\n"]},
// 以下使用传统的JSON对象注释方式
{"comment": "使用comment对象的注释"},
{"echo": ["平方根结果: ", "@var.sqrt_result", "\n"]}
]
}
}
}
0.3.0 Release
JiLang 0.3.0 更新日志
主要更新
- 内置数组操作:添加了一系列内置数组操作语句,无需依赖标准库即可进行数组的常见操作
- 对象操作:增加了对象操作功能,支持创建、访问和修改JSON对象
- 正则表达式支持:新增正则表达式功能,提供强大的字符串模式匹配和处理能力
- Switch语句增强:完善了switch语句实现,新增文档和示例
- 错误处理优化:重构了错误消息系统,提高了错误信息的一致性和可维护性
- 新增命令行选项:增加了错误检查和容错运行相关的命令行选项
- 系统稳定性改进:修复了多个边缘情况的处理问题
- 性能优化:提升了大型程序的执行效率
内置数组操作功能
0.3.0版本新增了强大的内置数组操作,无需依赖外部模块即可完成各种数组操作:
1. 创建数组 (array.create)
// 创建空数组
{"array.create": []},
// 创建带初始元素的数组
{"array.create": [1, 2, 3, "四", true, null]},
// 创建指定大小的数组(带初始值)
{"array.create": {"size": 5, "initial": 0}}
2. 获取数组长度 (array.length)
{"array.length": ["@var.myArray"]},
{"echo": ["数组长度: ", "@var.result"]}
3. 获取和设置元素 (array.get, array.set)
// 获取元素
{"array.get": ["@var.myArray", 2]},
{"echo": ["索引2的元素: ", "@var.result"]},
// 设置元素(支持自动扩展数组)
{"array.set": ["@var.myArray", 5, "新值"]}
4. 添加和移除元素 (array.push, array.pop)
// 添加一个或多个元素到数组末尾
{"array.push": ["@var.myArray", "元素1", "元素2"]},
// 从数组末尾移除元素并返回
{"array.pop": ["@var.myArray"]},
{"echo": ["移除的元素: ", "@var.result"]}
5. 获取数组切片 (array.slice)
// 获取从索引1到4的切片(不包含索引4)
{"array.slice": ["@var.myArray", 1, 4]},
{"var": {"slice": "@var.result"}}
所有数组操作都会在result
变量中返回操作结果,便于链式处理。数组操作还支持与循环语句和函数结合使用,可以构建更复杂的数据处理逻辑。
对象操作功能
0.3.0版本引入了强大的对象操作功能,让JSON对象操作更加简单:
1. 创建对象 (object.create)
// 创建空对象
{"object.create": []},
// 创建带初始属性的对象
{"object.create": {
"name": "张三",
"age": 25,
"email": "zhangsan@example.com"
}},
// 可以在创建时引用其他变量
{"object.create": {
"user": "@var.username",
"id": "@var.userId"
}}
2. 获取和设置属性 (object.get, object.set)
// 获取对象属性
{"object.get": ["@var.user", "name"]},
{"echo": ["用户名: ", "@var.result"]},
// 设置对象属性
{"object.set": ["@var.user", "age", 30]},
{"object.set": ["@var.user", "address", "@var.userAddress"]}
3. 检查属性是否存在 (object.has)
// 检查对象是否有某个属性
{"object.has": ["@var.user", "email"]},
{"if": {
"cond": "@var.result",
"then": [
{"echo": ["用户有邮箱\n"]}
],
"else": [
{"echo": ["用户没有邮箱\n"]}
]
}}
4. 获取对象的键和值 (object.keys, object.values)
// 获取对象所有键
{"object.keys": ["@var.user"]},
{"echo": ["用户对象的所有属性: ", "@var.result", "\n"]},
// 获取对象所有值
{"object.values": ["@var.user"]},
{"echo": ["用户对象的所有值: ", "@var.result", "\n"]}
5. 删除对象属性 (object.delete)
// 删除对象属性
{"object.delete": ["@var.user", "temporary"]},
{"echo": ["属性已" , "@var.result" ? "删除" : "不存在", "\n"]}
对象操作函数与数组操作类似,所有结果都会存储在result
变量中,便于后续操作。
正则表达式功能
0.3.0版本新增了强大的正则表达式支持,可以进行复杂的字符串匹配和处理:
1. 正则表达式匹配 (regex.match)
// 匹配字符串中的模式
{"regex.match": ["\\d+", "年龄是25岁"]},
{"echo": ["匹配结果: ", "@var.result", "\n"]},
// 带捕获组的匹配
{"regex.match": ["user_(\\d+)_(\\w+)", "用户ID: user_12345_admin"]},
{"var": {"id": "@var.result[1]", "role": "@var.result[2]"}}
2. 正则表达式测试 (regex.test)
// 测试字符串是否匹配正则表达式
{"regex.test": ["^[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]{2,}$", "@var.email"]},
{"if": {
"cond": "@var.result",
"then": [
{"echo": ["邮箱格式正确\n"]}
],
"else": [
{"echo": ["邮箱格式错误\n"]}
]
}}
3. 正则表达式替换 (regex.replace)
// 替换字符串中匹配的部分
{"regex.replace": ["\\d+", "他今年25岁了", "**"]},
{"echo": ["替换后: ", "@var.result", "\n"]},
// 使用捕获组的引用
{"regex.replace": ["(\\d+)岁", "他今年25岁了", "$1岁零1个月"]},
{"echo": ["替换后: ", "@var.result", "\n"]}
4. 正则表达式分割 (regex.split)
// 按正则表达式分割字符串
{"regex.split": ["\\s*,\\s*", "苹果, 香蕉, 橙子,葡萄"]},
{"echo": ["分割后的数组: ", "@var.result", "\n"]}
正则表达式功能使用Rust的regex库实现,支持大多数标准正则表达式语法。所有正则表达式操作的结果都存储在result
变量中。
Switch语句功能
0.3.0版本完善了switch语句功能:
- 支持任意类型值的匹配
- 支持fallthrough选项,允许继续执行下一个case
- 支持default默认分支
- 提供了完整的文档和示例程序
{"switch": {
"expr": "@var.value",
"cases": [
{
"value": "选项1",
"body": [
{"echo": ["匹配到选项1\n"]}
]
},
{
"value": "选项2",
"fallthrough": true, // 继续执行下一个case
"body": [
{"echo": ["匹配到选项2\n"]}
]
},
{
"default": true, // 默认分支
"body": [
{"echo": ["未匹配\n"]}
]
}
]
}}
错误处理优化
0.3.0版本对错误处理系统进行了全面优化:
1. 集中式错误消息管理
- 重构了错误消息系统,将所有错误消息集中在
error.rs
文件中统一管理 - 按功能模块分类错误消息(interpreter、context、statement等)
- 引入错误消息常量和格式化函数,消除硬编码的错误字符串
// 示例:使用集中定义的错误消息
return Err(InterpreterError::RuntimeError(
array::POP_MISSING_ARGS.to_string()
));
// 示例:使用格式化函数生成错误消息
return Err(InterpreterError::ModuleError(
context::module_not_found(module_name)
));
2. 更详细的错误分类
- 细化了错误类型,包括程序结构错误、变量错误、函数错误、模块错误、运行时错误等
- 为特定操作(如数组操作、switch语句、控制流语句)提供专门的错误消息集合
- 支持带参数的错误消息,提供更准确的错误上下文信息
3. 新增命令行错误处理选项
--ignore-non-critical-errors
:容错模式,只报告非关键错误而不终止程序执行--check
:仅检查程序中的错误,不执行程序代码
这些改进使错误消息更加一致、准确和可维护,大大提升了程序的可调试性和用户体验。
4. 错误消息更更更可爱!(也更暴躁)
- "笨蛋!"、"喂!"、"诶多~"
- "呜哇!变量酱好混乱~"
- "诶嘿~"、"噗~"
- "啊啦~程序员君不行呢~"
- "这什么破代码!"、"看不懂文档吗?!"、"你写了个寂寞?!"
命令行参数增强
0.3.0版本增加了新的命令行参数,提供更灵活的执行控制:
错误处理相关选项
--ignore-non-critical-errors
:启用容错模式- 程序会继续执行,即使遇到非关键性错误
- 错误会被记录但不会终止程序
- 只有影响程序结构的关键错误才会导致程序停止
# 容错模式运行
JiLang --ignore-non-critical-errors examples/my_program.jl
--check
:仅检查语法和语义错误- 解析整个程序并检查所有可能的错误
- 生成完整的错误报告但不执行任何代码
- 适合在部署前验证程序正确性
# 只检查错误,不执行
JiLang --check examples/my_program.jl
信息查询选项
--help
:显示帮助信息- 提供命令行选项列表和简要用法说明
- 帮助开发者快速了解JiLang的基本使用方法
# 显示帮助信息
JiLang --help
--about
:显示关于信息- 提供JiLang的基本介绍和项目地址
- 帮助用户了解JiLang的功能和特点
# 显示关于信息
JiLang --about
--creator
:显示创建者信息- 展示JiLang的创建者和项目相关信息
- 表达对开源贡献者的感谢
# 显示创建者信息
JiLang --creator
既有命令行选项
--debug
:启用调试模式,显示详细执行信息- 显示语句执行流程
- 输出中间变量值
- 显示注释内容
# 调试模式运行
JiLang --debug examples/my_program.jl
这些新增的命令行选项使得JiLang在开发、测试和生产环境中都能更灵活地运行。
兼容性说明
- 本次更新完全向后兼容,已有程序无需修改即可运行
- 新语法功能仅在使用时才需要了解
- 错误消息格式保持不变,但内容更加详细和一致
示例程序
为展示新功能,新增了以下示例程序:
array_demo.jl
: 演示所有数组操作的使用方法object_demo.jl
: 展示对象操作的各种用法regex_demo.jl
: 展示正则表达式功能的使用方法switch_demo.jl
: 展示switch语句的各种用法error_handling_demo.jl
: 展示错误处理和容错模式的使用方法
已知问题
- 数组和对象深拷贝在某些复杂嵌套情况下可能存在效率问题
- 正则表达式替换中,目前仅支持最多9个捕获组的引用($1-$9)
Full Changelog: 0.2.3...0.3.0
0.2.3 Release
0.2.3:增强弱类型系统,改进类型转换和比较
0.2.2:添加系统命令执行功能
0.2.1:添加递归函数支持和局部变量作用域
0.2.0:添加注释系统、增强模块系统和多层数据访问
0.1.0:具有基本功能的初始版本