LFortran:基于现代交互式LLVM的Fortran编译器

2020-07-03 02:24:45

LFortran是建立在LLVM之上的现代开源(BSD许可)交互式Fortran编译器。它可以交互地执行用户代码,以便进行探索性工作(很像Python、MATLAB或Julia),还可以编译二进制代码,目标是在多核CPU和GPU等现代架构上运行用户代码。

GitLab的主存储库:https://gitlab.com/lfortran/lfortran GitHub镜像:https://github.com/lfortran/lfortran之星使用活页夹在线试用:有什么问题吗?请在Zulip或我们的邮件列表上咨询我们。

Fortran是从头开始构建的,目的是将数学转换成简单、可读和快速的代码。

比像C或C++这样的语言有更多的限制(和更高的级别),所以结果代码更容易维护和编写,也更容易编译器进行优化。做事情有一种规范的方法。

LFortran允许交互地使用Fortran,就像Python、Julia或MATLAB一样。它可以在Jupyter笔记本上运行。

Fortran是一种成熟的语言,建立在62年的专业知识基础上,广泛用于高性能计算(HPC)。

Fortran有许多优秀的开源编译器:用于生产的GFortran和Flang;正在开发的新编译器,如F18和LFortran。

LFortran还在开发中,现在有一些功能可以工作,还有一些功能正在实现中。

交互式的Jupyter支持LFortran可以用作Jupyter内核,允许Python/Julia风格的快速原型和探索性工作流(参见静态或交互示例笔记本)。它还可以在带有交互式提示符(REPL)的命令行中使用。

干净、模块化的设计,可作为库使用,LFortran围绕两个独立的模块AST和ASR构建,这两个模块都是独立的(完全独立于LFortran的其余部分),并鼓励用户将其独立用于其他应用程序并在其上构建工具。有关更多详细信息,请参阅设计和开发人员TutorialDocuments。

与GFortran的初始互操作LFortran有一个用于GFortran模块文件的原型解析器,并生成了一个Fortran包装器,允许在任何Fortran编译器中使用该模块。此功能仍在开发中。

这些功能正在开发中,有一个指向相应问题的链接,这样您就可以通过跟踪它来跟踪进度。

与其他语言(和其他Fortran编译器)的本机互操作使用USE语句导入用其他语言(如C或Python)编写的库,请参见#44。添加对用其他Fortran编译器生成的模块文件的支持,请参见#56。这将允许LFortran运行大量的生产代码。

对不同硬件LLVM的支持使得在不同硬件上运行LFortran成为可能,并在多核CPU和GPU上利用原生Fortran语言构造(如并发操作),请参见#57。

完整的Fortran 2018支持目前只实现了Fortran的一个子集(我们计划确切记录所支持的内容#92,同时仅比笔记本中提供的内容多一点),但目标是全面实施最新的Fortran 2018标准,请参阅#58。

请在我们的问题跟踪器中对您希望我们优先处理的问题进行投票(如果我们遗漏了什么,请随时创建新的问题)。

这里列出的任务为早期用户提供了贡献错误报告、功能请求和代码的机会。这样,LFortran将逐渐对更多的人有用,社区也会发展壮大。

获取使用模块的GFortran模块文件,包括假定大小数组和假定形状数组(#52)。这将使LFortran对早期用户可用。我们预计在2019年夏末完成这项任务。

逐渐用C++重写编译器以提高健壮性和速度(#70)。Python API不会改变(或者只会有最小的改变)。