[Fix][Impl] 为了消除类构造带来的语法歧义,同时保持实现简洁和括号省略的语法,自此版本,引入了 `new` 操作符 造成歧义的原方法: if a == A{} 条件是 a == A,还是 a == A{} ? 因此,现在使用 new a_struct{}来构造类 [Opti] 相较于 Fig v0.4.1-alpha版本,release O3同编译条件下 Fib普通递归法性能提升 ~50% 具体方式: 增加了小整数优化,-128~127的整数现在会直接从IntPool获取而不是新构造 ...忘了 [Fix] 类构造 shorthand模式忘写了,现在补上了 [Feat][Impl] 类型声明现在接受一个表达式,原为Identifier。实现 var start: time.Time = time.now() 的效果 这是符合语法和语言特性的支持,类型为一等公民。类似Python的 <class 'type'> [Impl] 修改了部分错误输出的细节
[Fix] 修复恶性Bug: Parser: parseExpression没有正确解析二元表达式,没有用到 right binding power的问题,表现在生成类似 a * b * c时,结果为 a * (b * c) 的Bug [Impl][Fix] 修复跨文件(如import)报错信息错误的问题,现在Ast跟踪保存文件信息,报错统一从Error父类获取 [...] 忘了,好困不管了
[Feat] is 操作符现在可以直接判断内置数据类型, 如 10 is Int [Fix] evalMemberExpr的lhs可以为右值,修复原来限制为左值的BUG,如调用一个函数返回结果为struct且访问member触发此bug [Impl] 可更换的std::dynamic_pointer_cast更换为static版本,更快! [Feat] 增加标准库 std.time,以及用到的builtin: __ftime_now_ns,但目前 Time类有点BUG [...] 剩下的忘了