@@ -70,7 +70,7 @@ Pretty much everything: |
| 70 | 70 | ## Building |
| 71 | 71 | |
| 72 | 72 | Requires: |
| 73 | | -- A Fortran 2018 compiler (gfortran 8+, or flang-new for macOS ARM64) |
| 73 | +- A Fortran 2018 compiler (`armfortas`, `gfortran` 8+, or `flang-new`) |
| 74 | 74 | - GNU Make |
| 75 | 75 | - A C compiler (gcc or clang) |
| 76 | 76 | - POSIX system (Linux, macOS) |
@@ -90,7 +90,7 @@ make clean # remove build/ and bin/ |
| 90 | 90 | | Linux x86_64 | gfortran | Primary target | |
| 91 | 91 | | Linux aarch64 | gfortran | Auto-enables C stat helpers for struct layout differences | |
| 92 | 92 | | macOS Intel | gfortran | Works with `-frecursive` | |
| 93 | | -| macOS ARM64 | flang-new (LLVM) | Required -- gfortran has 7+ critical bugs. Auto-enables C string library. Install via `brew install flang`. | |
| 93 | +| macOS ARM64 | flang-new by default, `armfortas` when selected explicitly | The Makefile has an armfortas profile; flang-new remains the safe default and auto-enables the C string library. | |
| 94 | 94 | |
| 95 | 95 | The Makefile auto-detects your platform and selects the right compiler and flags. Just run `make`. |
| 96 | 96 | |
@@ -583,12 +583,12 @@ Every builtin has detailed help: `help cd`, `help export`, `help trap`, etc. |
| 583 | 583 | |
| 584 | 584 | ## macOS ARM64 Notes |
| 585 | 585 | |
| 586 | | -Both Fortran compilers have issues on Apple Silicon. fortsh uses flang-new (LLVM) with C interop workarounds. The Makefile handles everything automatically. |
| 586 | +Apple Silicon builds still default to flang-new (LLVM) with the existing C interop workarounds. The Makefile now also understands an explicit `FC=armfortas` path for pure-Fortran bring-up work. |
| 587 | 587 | |
| 588 | | -Install flang-new via `brew install flang`. See `COMPILER_NOTES.md` for the full story on compiler bugs and workarounds. |
| 588 | +Install flang-new via `brew install flang` for the default path. See `COMPILER_NOTES.md` for the full story on compiler bugs and workarounds. |
| 589 | 589 | |
| 590 | 590 | Key differences from Linux builds: |
| 591 | | -- C string library auto-enabled (works around flang-new string buffer limitations) |
| 591 | +- C string library auto-enabled only on the flang-new fallback path |
| 592 | 592 | - Platform-specific constants for signals, terminal I/O, file flags, and resource limits |
| 593 | 593 | - Builtin output uses C-level `write()` to respect fd redirections (flang-new's Fortran I/O caches file descriptors) |
| 594 | 594 | |
@@ -646,3 +646,4 @@ POSIX Shell Spec: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_ |
| 646 | 646 | --- |
| 647 | 647 | |
| 648 | 648 | *Yes, it's really written in Fortran. Yes, it really works. No, we don't know why either.* |
| 649 | +scratch |