路线图#

这是一个 Fortran-Lang 路线图的快照,该路线图是一个动态文档。它旨在提供对组织方向的总体了解,鼓励开发人员为我们的项目做出贡献并寻求资金机会。它并非旨在承诺交付特定功能或阻止 Fortran-Lang 执行其他操作。路线图是一个动态文档,它将根据需要进行更新。

Fortran 标准库#

操作系统集成:文件系统#

目前,诸如列出目录内容、遍历目录以及类似的文件系统操作仅限于特定于平台且不可移植的第三方库和编译器扩展。此项目将需要设计和实现文件系统操作的跨平台解决方案。

相关问题

正在进行的实现

预期结果:实现了一个提供跨平台文件系统实用程序的 stdlib 模块

操作系统集成:子进程#

用于创建子进程的跨平台解决方案,用于抽象 POSIX 和 Windows API。

相关问题

讨论区主题

稀疏矩阵#

实现用于处理 (COO 和 CSR) 稀疏矩阵的过程的标准化 API。应同时实现非面向对象低级 API 和面向对象 API。

相关问题:

正在进行的实现:

预期结果:stdlib_linalg 模块中实现了稀疏矩阵功能

Fortran 包管理器 (fpm)#

Fortran 注册表#

Fpm 目前支持分散的包依赖项,其中依赖项在没有中央注册表的情况下指定。Fortran-Lang 的长期目标是托管一个社区支持的 fpm 包注册表,并使 fpm 支持与该注册表和其他注册表交互,以简化依赖项管理。

此项目想法旨在通过实现 fpm 对本地托管的包注册表的支持来实现向中央包注册表迈出的重要一步。特别是,此项目将涉及

  • 定义用于从注册表使用依赖项的清单语法

  • 实现查找和加载(本地)注册表的支持

  • 允许 fpm 通过从远程注册表获取来管理本地注册表

相关问题

  • fpm#321: 实现对本地注册表的支持

  • fpm#35: 完整的包注册表

另请参阅

预期结果:实现了作为服务的 fpm 包存储库

版本约束解析#

fpm 中当前的分散式包系统允许通过 git 存储库 URL 获取依赖项。作为其中的一部分,可以给出 git 标签或提交以要求依赖项的特定版本。但是,无法指定版本兼容性要求(例如 >= 1.0.0, <2.0.0),也无法跨依赖项树解析此类要求。

此项目将涉及

  • 定义版本兼容性匹配的清单语法

  • 在 fpm 中实现解决一组版本兼容性约束的支持

一种可能的方法是与现有的可满足性求解器交互,例如

  • libsolv: 通过 iso_c_binding 作为单独的 fpm 包进行接口

另请参阅:版本匹配语法的现有选项

预期结果:在 fpm 中实现了有效的版本约束机制

将 Fortran 生态系统 fpm 化#

研究 Fortran 库和应用程序生态系统(在 GitHub 及其他地方),并与包维护人员合作,使他们的包与 fpm 兼容。

预期结果:将流行的 Fortran、C 和 C++ 包引入 fpm 生态系统。

扩展测试支持#

此项目的目的是创建一个清单规范,以便为 fpm 项目中的可执行目标提供默认值。信息可以作为环境变量、命令行参数或运行程序传递。所需的功能包括

  • 程序应该有一种方法来查找其在项目源目录中的相对位置已知的信息。

  • 当前的二进制目录以访问项目中的其他目标。

  • 默认运行程序,如 mpirun/cafrun 或来自测试框架的脚本,应该可用于启动程序。

  • 应该定义用于定义环境变量和命令行参数的通用语法。

某些功能应该直接在 fpm 中实现,而更复杂的功能可以在单独的 fpm 包中实现,作为官方的 Fortran-lang fpm 包。

相关问题

  • fpm#179: 使用 fpm test 进行测试

相关讨论

  • fpm#328: 需要外部数据的示例

预期结果:fpm 具有更广泛和更深入的测试功能

使用外部构建系统的源代码分发#

此项目的目的是使 fpm 能够创建其自身的源代码分发,这些分发可以在没有 fpm 的情况下引导。所需的功能包括

  • 允许 fpm 使用非 fpm 构建系统生成源代码分发。

  • 生成的源代码分发应允许在没有 fpm、git 或互联网访问的情况下构建 fpm 项目。

  • 潜在的第三方构建系统是 CMake 和 Meson。

  • 允许通过各种打包生态系统更轻松地分发和打包 fpm。

相关问题

  • fpm#69: 具有 CMake 和 Make 后端

  • fpm#70: 具有 Conda 后端

预期结果:fpm 可以生成可以使用 CMake 和/或 Meson 构建的包的源代码分发。

Visual Studio Code 的现代 Fortran#

与 Fortran 包管理器和 CMake 集成#

此项目的目的是将 Fortran 包管理器和 CMake 集成到 Visual Studio Code 的现代 Fortran 扩展中。集成应允许通过 VS Code 使用 fpm 或 CMake 构建项目,还可以准确配置代码检查器和语言服务器。

相关问题

相关讨论

预期结果

  • fpm 和 CMake 集成到 Visual Studio Code 的现代 Fortran 扩展中。

  • 用户能够构建、运行和调试 fpm 项目。

  • 现代 Fortran 扩展能够根据 fpm 和 CMake 配置自动配置代码检查器和语言服务器。

  • 通过 pip 轻松安装 fpm。

Sphinx 文档#

该项目的目的是使用 Sphinx 和 MyST Markdown 为现代 Fortran 编写文档网页。文档应包括

  • 安装说明

  • 可用设置以及如何设置它们

  • 常见问题解答及其答案

预期结果:Visual Studio Code 扩展的现代 Fortran 具有文档网页。

相关问题

扩展本地化#

该项目的目的是将 Visual Studio Code 的现代 Fortran 扩展本地化为其他语言。关于如何本地化 Visual Studio Code 扩展已经有大量文档,我们已经拥有可以帮助完成此过程的工具,例如,请参阅 fortran-lang.org

相关问题

预期结果:Visual Studio Code 扩展的现代 Fortran 已本地化为其他语言。