Activate the GCC version in this shell session by running:
source ~/gcc-15.sh
If there is still trouble, try modifying
SDKROOT
to find a compatible SDK for the selected Homebrew GCC version.
Using an older version of Homebrew-distributed library or program could be useful to workaround bugs, or if one wants to still use their Intel CPU Mac hardware with Homebrew as GCC 16
isn’t supported by Homebrew
on Intel CPUs on macOS for example.
The Homebrew bottle binaries or source compile scripts must be available for the CPU architecture and OS version of the computer.
List the aliases defined in the current shell (Linux, macOS, BSD) with:
alias
Our practice is to avoid aliases in non-interactive scripts and use explicit paths or functions instead.
For example, to pin a user-specified GCC for CMake, pass the compiler paths directly:
Although the preceding discussion is for Unix-like systems, Windows PowerShell can also use aliases and has similar considerations for non-interactive scripts.
Adobe Reader can export and view a list of comments through the Comment tab on the right side.
To do this from a command line program (for example to feed AI analysis / training) consider a Python script using the high performance PyMuPDF (fitz) library:
importfitzimportsysfile = sys.argv[1]
doc = fitz.open(file)
for i, page inenumerate(doc, start=1):
for a in page.annots() or []:
info: dict = a.info
print(
f"page {i}{a.type[1]} "f"author={info.get('title')!r} "f"text={info.get('content')!r}" )
# for highlights, get the actual selected words:if a.type[1] in ("Highlight", "Underline", "StrikeOut", "Squiggly"):
print(" quoted:", page.get_textbox(a.rect))
The Fortran standard does not define a specific Fortran module file format.
Each compiler vendor has a unique incompatible Fortran module file format.
Fortran module files are not portable between different compilers or even different versions of the same compiler.
Intel oneAPI .mod files are
a proprietary binary format.
It is possible to determine the version of the .mod file by using
od
to look at the first 2 bytes of the .mod file.
od -An -N4 -d <moduleName>.mod
The first number is like “13” and is the module format version.
This version may change over time as oneAPI internals change.
The second number is the update version, which is fixed at “1”.
There is an undocumented “ifx” compiler option -switch:fe_module_dump that outputs the module and submodule data in text format.
NVIDIA HPC SDK (NVHPC) and AOCC compilers generate .mod files that are text files.
The format for legacy Flang module files is distinct from LLVMFlang Fortran module files.
The .mod file is a text file, beginning with the version number.
By default, Cray Fortran stores uppercase DUMMY.mod filenames.
This can be made lowercase with the ftn -ef flag.
The
Cray Fortran .mod format
is proprietary, but the version number might be seen like:
At WWDC25 on June 9 2025, Apple announced that macOS 27 would no longer support Intel CPUs.
In August 2025, Homebrew announced under
Future macOS Support
that by the end of summer 2026, Intel CPU Macs would no longer receive binary “bottles” and would be deprioritized to Tier 3 in general.
Homebrew Tier 3 status implications includes:
Homebrew may work, but with a poor and unstable experience
Migration to a Tier 1 or 2 configuration or to a non-Homebrew tool is strongly recommended
Homebrew is
not distributing binary “bottles” for Intel CPU
Mac hardware.
This means that commands “brew upgrade” or “brew install” may take a long time (hours) as packages are compiled from source - or may even fail.
To temporarily keep an Intel CPU Mac functional with Homebrew, one can try to use older versions of Homebrew formulae that still support Intel CPUs, or compile packages from source manually.
For example,
GCC 15
can be used to maintain compatibility with Intel CPU Macs.
The
Fortran 202x standard
raises the individual Fortran source code line limit to 10000 characters.
The new limits also include unlimited continuation lines and a maximum statement length of one million characters.
These are stated as “hard limits”.
As has historically been the case, many compilers continue to allow going beyond the line limit in a line or beyond even ten million characters in a statement.
LLVMFlang is explicitly designed without a particular character limit per line.
Fortran standard
source code line length limit
202x
10000
90
132
77
72
Compiler differences in default maximum source code line length can lead to portability issues.
For example, Linux workstations or Linux HPC may default to a GCC Gfortran older than version 14 that has a default Fortran source code line length maximum of 132 characters, which is too short for say generated source code containing a data path on a networked HPC drive.
It’s important to be cognizant of the maximum Fortran line length across compilers as developer laptops often default to a recent Flang or Gfortran that both have effectively unlimited line length.
Use Poppler Utils to extract the original high-resolution images from the PDF.
Poppler Utils are command line
tools
and part of the
Poppler library.
This method generally yields much better quality images than screenshots of the PDF pages.
The “pdfimages” command exports raster images, and “pdftocairo” exports vector graphics.
In these examples, “in.pdf” is the original PDF file.
The free Poppler library includes command line
tools
that can easily extract pages from a PDF file, or combine pages from multiple PDF files into one PDF file.
To do so with Adobe Acrobat or FoxIt generally requires a paid license, but Poppler is a free open-source library.
Extracting page(s) from a PDF into a series of separate PDF files is done with
pdfseparate.
For example, extract pages 2 to 4 from “in.pdf” to files “out-2.pdf”, “out-3.pdf” and “out-4.pdf” using Poppler:
pdfseparate -f 2 -l 4 in.pdf out-%d.pdf
Combining multiple PDF files into one PDF file is done with
pdfunite.
For example, combine “in1.pdf”, “in2.pdf” and “in3.pdf” into “out.pdf” using Poppler: