Skip to content

Proposal/Discussion: Enhancing Library Naming Conventions for the Modularized Build #1101

Description

@zoziha

Hello,

First, thank you for the great work on the library of v0.8.0. I am packaging fortran-stdlib for the MSYS2 distribution, and I'd like to start a discussion regarding the library naming scheme after the modularization (from a single libfortran_stdlib.dll to multiple libraries like libio.dll, libsystem.dll etc.).

ucrt64/bin/libbitsets.dll
ucrt64/bin/libconstants.dll
ucrt64/bin/libcore.dll
ucrt64/bin/libhash.dll
ucrt64/bin/libhashmaps.dll
ucrt64/bin/libintrinsics.dll
ucrt64/bin/libio.dll
ucrt64/bin/liblinalg.dll
ucrt64/bin/liblinalg_iterative.dll
ucrt64/bin/liblogger.dll
ucrt64/bin/libmath.dll
ucrt64/bin/libsorting.dll
ucrt64/bin/libsparse.dll
ucrt64/bin/libspecialmatrices.dll
ucrt64/bin/libstats.dll
ucrt64/bin/libstringlist.dll
ucrt64/bin/libstrings.dll
ucrt64/bin/libsystem.dll

While the modularization brings benefits for maintenance and granular linking, it introduces a challenge for system-wide package distributions like MSYS2. The current names of the dynamic libraries (e.g., libio.dll, libsystem.dll) are quite generic. This poses a significant risk of name collisions​ with other libraries either within the MSYS2 ecosystem or in user projects. For instance, another packaged library could also provide a libio.dll, leading to conflicts and unpredictable behavior.

To ensure a smooth experience for users who install fortran-stdlib via package managers, I would like to propose considering a namespacing strategy for the generated library files. This is a common practice in software ecosystems to avoid such conflicts.

Could we explore the possibility of adopting a naming convention that prefixes or namespaces the libraries?​ For example:

Prefix with fortran_stdlib_: libfortran_stdlib_io.dll, libfortran_stdlib_system.dll.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions