PikaScript v1.9.0 已经发布,轻量级跨平台嵌入式 Python 引擎
此版本更新内容包括:
概述
- 可靠性大幅提高,在实际工程中受到检验并得到了大量的反馈。
- 包含大量实用的功能改进和错误修复。
功能更新
内核
- 支持 [] 字节的索引
- 支持 print() 和 str() 的 __str__ 魔法方法
- 支持 len() 和 __len()__ 魔法方法
- 支持 0o100 的八进制字面值
- 在 python 脚本中支持 Tab
- 为 pikaVM 检查栈溢出
- 支持 preCompiler 的 *.py 中 fuction 定义中的空行
- 支持 C 模块中的定义函数
- 支持 C 模块的 __del__() 魔法方法
- 支持类属性
- 支持使用 \ 合并多行代码
- 支持在其他 Python 文件中回调
- 支持 <None>
- 支持虚拟中断和回调
- 支持获取 Kernal 版本
- 支持 d = {'a':x, 'b':y, 'c': z}.
- 支持 obj_runChar() 将char推送到 REPL
- 支持字符串和字节的切片
库
- 支持 StdDevice 的读/写 Bytes API
- 添加 TemplateDevice 来测试 StdDevice 并提供参考演示
- 支持 chr()、hex()、ord()、id() 内置函数
- 支持 byte() 内置函数
- 支持 int() 转换 bytes,如 int(b'test'[0])
- 支持 int_to_bytes() 转换
- 支持 PikaStdDevice.Time() 的 unix 时间和 utc 时间
- 支持 printf() 的格式化输出和可变参数
- 支持 PikaStdDevice 的回调
错误修正
- ac5上的__user_free 错误
- 预编译器在最后需要两个空行
- 修复 cotex-M0 核心上的字节码对齐错误
- 修正遇到某些注释时的解析失败
- 修正遇到xx_import时的解析问题
- 1.'~-1'不等于'0'
- a[1] = 1 在内部函数不工作
- 模块中的 for_loop runError
- 当字符串内部出现 '[' 时出现解析错误
- 当 str(PikaStdData.String('test')) 时出现内存泄漏
- 不能运行从其他模块导入的函数
- 用 arm-gcc 构建的 Bluepill 模板不适合 128K Flash
- 如果行尾是 <空格>,则Lexer有概率错误
- 创建 PikaStdDevice.Time() 时的异常输出
不兼容的更新
在 C 模块中使用 float 类型标注后,在 C 中的类型改为 double (之前是 float)
迁移指南
在 C 模块的 C 实现中使用 double