编程语言 Haxe 4.2 发布

Haxe 4.2 工具包现已发布,其中包括具有强类型功能的同名多范式高级编程语言、交叉编译器和标准函数库。该项目支持翻译为 C++、HashLink/C、JavaScript、C#、Java、PHP、Python 和 Lua,以及编译为 JVM、HashLink/JIT、Flash 和 Neko 字节码,并可访问每个目标平台的本机功能。编译器代码在 GPLv2 许可证下分发,标准库以及为 Haxe 开发的 HashLink 和 Neko 虚拟机在 MIT 许可证下获得许可。

该语言是面向表达的,具有强类型。支持面向对象、通用和函数式编程技术。 Haxe 的语法接近 ECMAScript,并通过静态类型、自动类型推断、模式匹配、泛型、基于迭代器的 for 循环、AST 宏、GADT(广义代数数据类型)、抽象类型、匿名结构、简化等功能对其进行了扩展定义数组、条件编译表达式、将元数据附加到字段、类和表达式、字符串插值('My name is $name')、类型参数('new Main("foo")')等等。 class Test { static function main() { Final people = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; for (name => people 中的工作) { trace('$name 以 $job 为生!'); } } }

4.2版本新功能:

  • 在模块级别声明静态变量和函数,无需将它们包装在类中。
  • 支持“经典​​”抽象类和函数。
  • 所有目标平台的可变参数函数的本机实现 (haxe.Rest) 以及添加参数扩展运算符“f(...array)”。
  • 单个线程的事件循环的实现(“sys.thread.Thread.events”)。
  • 用于继承类型/字段文档的“@:inheritDoc”元数据。
  • 所有目标平台上对外部方法的方法重载支持。
  • 使用“@:forward.new”元数据将其类型底层的构造函数转发到抽象。
  • 将“EIs”构造函数添加到“haxe.macro.Expr”。
  • 能够使用“@:forward.variance”创建抽象类型变体。
  • 统一变化时将“Any”类型表示为“Dynamic”。
  • 在“haxe.exceptions”包中添加了一些基本的异常类型。
  • 支持在声明变量时附加元数据。
  • 函数“StringTools.unsafeCharAt”用于字符串迭代。
  • eval(解释器):添加了对“eval.luv”包中“libuv”的绑定。
  • eval:通过“eval.integers”包绑定到“Int64”和“UInt64”的本机实现。
  • cs:UDP套接字实现。
  • cs:“cs.Syntax”模块,用于内联插入 C# 代码。
  • jvm:添加了“-D jvm.dynamic-level=x”标志来控制动态代码生成的优化数量。 0 = 无,1 = 字段读/写优化,2 = 编译时方法闭包。
  • java、jvm:支持“--java-lib ”标志。
  • python:线程 API 实现。

一般改进:

  • “expr is SomeType”不需要用括号括起来。
  • 提高了“@:using”类型扩展的优先级。
  • 允许通过“super”使用静态类型扩展。
  • 能够将元数据设置为“@:noDoc”字段。
  • 抽象类型“Map”是可传递的。
  • 支持枚举构造函数上的“@:native”。
  • 支持类型声明(“typedefs”)上的“@:using”。
  • 多行错误使用“...”作为后续行的前缀。
  • 类型推断已被重新设计,匿名结构可以更好地转换为显式类型,并在函数完成时“关闭”。
  • 将不带参数的函数类型推断为“()->...”而不是“Void->...”。
  • 允许使用“function”关键字作为包名称。
  • 改进了对象的内联。
  • cs:添加了对 .NET 5.0 的支持。
  • cpp:支持外部类的本机构造函数。
  • php:添加了“php.Syntax.customArrayDecl”来声明本机数组。
  • php:更新了各种函数和类的外部方法。
  • php:匿名结构的优化实现。
  • hl:如果模块没有更改,则跳过编译。
  • lua:使用“hx-lua-simdjson”解析json。
  • jvm:减少“sys.thread.Lock”实现中的 CPU 负载。
  • Node.js:改进了与 Google Closure 编译器的兼容性。
  • Null Safety:声明变量时考虑“@:nullSafety(Off)”:“var @:nullSafety(Off) v”。

此外,VSCode编辑器的新增功能也更新为新版编译器,其中出现了生成接口、简单抽象类以及属性方法缺失字段的提示。

来源: opennet.ru

添加评论