Two questions about stdlib

In C++, many new algorithms are first implemented in libraries like Boost and then ported to the std. I feel like the Fortran stdlib is more like Boost than C++ std, and I would like to ask if some stdlib functions/subroutines will be ported to Fortran core or intrinsic modules in the future?

In addition, I find it weird that Fortran stdlib depends on Python. Are there any plans of replacing the fypp preprocessor with one written in pure Fortran?

3 Likes

This was discussed in the thread Implementing fypp like pre-processing functionality in fpm

4 Likes

These are excellent questions.

The best answer I can give is:

  • We try to be very conservative what we put in and we focus on the API. The implementation can always be improved
  • Even the API can be tough to get right, so we always put new functionality into “experimental” section, which allows us to change API if we discover that our initial design of API was not optimal
  • So far we have not graduated anything from experimental to “main”. So we can still adjust the exact requirements, but so far our preliminary plan is that once something graduates to “main”, the API will be stable and we will ensure backwards compatibility. So the “main” section would then be more like the C++ or Python standard library.
  • We are hoping that compilers will eventually include stdlib
  • In addition, fpm can even enable it by default in the future (or include by default in fpm.toml for all new projects)
  • Regarding the relationship to the Fortran committee that can include new features into the Fortran standard itself: the committee is also generally conservative what to put into the language itself; I would suggest to only propose things from “main” (currently none) and only after several years of usage.

As stdlib matures, we can provide better and more detailed answers. But the above should give you an idea how stdlib relates to the Fortran ecosystem.

4 Likes

Starting today, there’s a rolling pre-processed Fortran-only source release in the stdlib-fpm branch. This means that you can use stdlib as an fpm dependency. See the Build with fpm section of the README. Thanks to @zoziha, @lkedward, @awvwgk, and @jeremie.vandenplas for implementing this. I think this may be a major milestone for both fpm and stdlib.

7 Likes