Wiki - https://fedoraproject.org/wiki/Changes/HareProgrammingLanguage Discussion thread - https://discussion.fedoraproject.org/t/f43-change-proposal-hare-programming-language-self-contained/160770
This is a proposed Change for Fedora Linux. This document represents a proposed Change. As part of the Changes process, proposals are publicly announced in order to receive community feedback. This proposal will only be implemented if approved by the Fedora Engineering Steering Committee. == Summary == Introduce packages for [https://harelang.org/ Hare], a systems programming language designed to be simple, stable, and robust. Hare is still under development, the language, its standard library and its reference tool chain are still subject to breaking changes. == Owner == * Name: [[User:dridi|Dridi Boukelmoune]], [[User:mroche|Mike Rochefort]], [[User:fnux|Timothee Floure]], [[User:fed500|Benson Muite]] * Email: dridi dot boukelmoune at gmail, mroche at omenos dot dev, timothee dot floure at posteo dot net, benson_muite at emailplus dot org <!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo) * FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address> --> == Detailed Description == Hare is a systems programming language designed to be simple, stable, and robust. Hare uses a static type system, manual memory management, and a minimal runtime. It is well-suited to writing operating systems, system tools, compilers, networking software, and other low-level, high performance tasks. The Hare tool chain on Fedora will include: * `hare` (build driver) * `harec` (compiler front-end, already available in Fedora) * `qbe` (compiler back-end, already available in Fedora) * `binutils` (for assembly and static linking) * `gcc` (for dynamic linking, it also works with other C compilers) Leaving `binutils` and GCC aside, bootstrapping a Hare tool chain only takes a few minutes. The Hare tool chain can target the `x86_64`, `aarch64` and `riscv64` architectures, and will be configured to rely by default on `gcc-<arch>-linux-gnu` and `binutils-<arch>-linux-gnu` for cross compilation. The `hare` source package will produce the following packages: * `hare` (build driver, `haredoc` utility and manuals) * `hare-stdlib` (standard library) * `hare-rpm-macros` (packaging utilities) In addition, a `hare-update` package will be provided to assist Hare developers deal with breaking changes when a new Hare release is available, until the language and its standard library become stable. == Feedback == None. == Benefit to Fedora == Developers can begin using the Hare language in their projects. Package maintainers can ship applications written in Hare. Unlike other language tool chains, Hare modules are meant to be the responsibility of system package managers like DNF. Packaging Hare modules and applications should result in little friction. == Scope == * Proposal owners: ** submit `hare` and `hare-update` packages for review ** create RPM macros for Hare packaging *** `%hare_arches` already submitted to `redhat-rpm-config` ** handle the `hare` package bootstrap ** add dependency generators for Hare modules ** draft packaging guidelines * Other developers: N/A (not needed for this Change) * Release engineering: N/A (not needed for this Change) * Policies and guidelines: ** There ideally should be Hare packaging guidelines submitted as part of this change, otherwise at a later point. ** See https://pagure.io/packaging-committee/pull-request/1472 * Trademark approval: N/A (not needed for this Change) * Alignment with the Fedora Strategy: none == Upgrade/compatibility impact == The Hare specification is still a draft, so the Hare language, tool chain and standard library are still subject to relatively frequent breaking changes. Package updates containing breaking changes should be limited to Fedora releases. == How To Test == Once the `hare` package is available, the upstream [introduction https://harelang.org/tutorials/introduction] to the language walks you through the hello world below before covering language concepts. Hello world: <pre>$ cat >main.ha <<EOF use fmt; export fn main() void = { fmt::println("Hello world!")!; }; EOF $ hare build -o example main.ha 4/4 tasks completed (100%) $ ./example Hello world!</pre> == User Experience == == Dependencies == None. == Contingency Plan == * Contingency mechanism: N/A (not a System Wide Change) * Contingency deadline: N/A (not a System Wide Change) * Blocks release? N/A (not a System Wide Change) == Documentation == * https://harelang.org/documentation/ * https://harelang.org/tutorial * https://harelang.org/specification * https://harelang.org/blog == Release Notes == -- Aoife Moloney Fedora Operations Architect Fedora Project Matrix: @amoloney:fedora.im IRC: amoloney -- _______________________________________________ devel-announce mailing list -- devel-annou...@lists.fedoraproject.org To unsubscribe send an email to devel-announce-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel-annou...@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ devel mailing list -- devel@lists.fedoraproject.org To unsubscribe send an email to devel-le...@lists.fedoraproject.org Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/ List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue