Qore是一种解释型编程语言,没有GIL

2020-08-29 16:17:13

跳转到导航跳转到搜索Qore是一种解释性的、高级的、通用的、垃圾回收的动态编程语言,其特点是支持代码嵌入和沙箱,可选的强类型,并侧重于对多线程和SMP可伸缩性的基本支持。

Qore是独一无二的,因为它是一种解释型脚本语言,具有对多线程的基本支持(意味着同一代码的多个部分可以同时运行),另外还因为它具有自动内存管理功能(意味着程序员不必显式分配和释放内存),同时还支持带有析构函数的RAII用法,用于基于作用域的资源管理和异常安全编程。[1]这是由于Qore';独特的垃圾收集提示收集实现。

类Unix操作系统上的可执行Qore脚本通常以hashbang开头,以指定解释器的文件名,如下所示:

Perl:没有%new-style,Qore的语法与Perl高度相似;foreach语句、拼接、推、弹出、chomp操作符、与Perl5兼容的正则表达式等等。

Java:使用%new-style,Qore代码看起来更类似于Java;[3]Synchronized关键字、instanceof运算符、对象和类实现。

D:ON_EXIT、ON_SUCCESS和ON_ERROR语句提供与D';的Scope(Exit)、Scope(Failure)类似的异常感知功能,允许将异常感知清理代码放在需要清理的代码旁边。

Haskell:map、foldl、foldr和select运算符,对函数运算符和列表运算符和语句进行延迟求值。

基本类型包括:Boolean、String、Integer、Float、Date、Binary、[4]List、Hash(关联数组)和Object,[5]以及用作数据类型的代码代码。[6]

还支持复杂类型,如hash<;string、bool>;、list<;string>;、reference<;list<;string>;以及类型安全散列。

尽管Qore是一种解释型语言,但它被设计为支持多线程作为基本设计原则。Qore的所有元素都是线程安全的,并且该语言的总体设计考虑到了SMP可伸缩性。因为该语言的所有元素都设计为支持多线程,所以Qore程序和脚本不必将自己限制为Qore功能的子集,这也是为什么在Qore中没有全局解释器锁的原因。[7]。

Qore提供了一种称为提示收集的独特垃圾收集方法,它允许析构函数在对象超出作用域时立即运行,即使它们具有对自身的递归引用。这允许Qore支持RAII习惯用法,并执行垃圾收集的自动内存管理。

Qore旨在支持应用程序中的嵌入和沙箱逻辑;这也适用于用Qore编写的应用程序以及使用Qore库的公共C++API的应用程序。通过使用表示带有沙箱控件的逻辑容器的Program类,可以在运行时创建和销毁包含嵌入代码的离散对象,以便以用户定义的方式扩展或修改应用程序的行为。[8]。

Qore的标准运行时库支持数据映射、用于与数据库通信的API(包括用于SQL操作、模式管理和DBA操作的高级API)、许多协议的客户端API和服务器基础设施实现,包括HTTP、REST(具有REST模式验证/代码生成,包括Swagger支持)、客户端/服务器SOAP支持(包括代码和消息生成)、WebSocket、RPC协议、通用连接器API、通用数据映射API,以及许多文件格式和文件和数据交换协议等等。[9]。

Qore支持通过QUnit模块进行测试,这有助于对用Qore编写的代码进行自动化测试和持续集成。

Qore';的Git(软件)存储库托管在GitHub上。二进制软件包在MacPorts和FreeBSD端口以及其他操作系统(包括Microsoft Windows)中以RPM形式提供;有关更多信息,请参阅Qore维基上的常规源代码和下载信息。