Repository navigation
π Blaise v0.15.0 is out β hello, Apple Silicon! #238
graemeg
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Hi everyone,
I'm delighted to announce Blaise v0.15.0. This one is a milestone: Blaise now runs natively on macOS arm64, and Apple Silicon has become the project's primary development host. The compiler builds itself on a Mac with every fixpoint byte-identical, and the Linux and FreeBSD release binaries are now cross-compiled from there.
Here's what the last 579 commits brought.
π macOS arm64, all the way
./blaise --source hello.pas --output hello.external 'z'orexternal 'ssl'links and runs with no external toolchain. It also checks every libSystem import against the SDK's real export list: a misspelt function name is a clear link error, not a crash at launch.π§Ή Goodbye, QBE
Blaise started on QBE, which got it running while the native backend was built. As planned, QBE is now gone: the native backend, with its own assembler and linker, is the whole toolchain. The Linux release binary is now freestanding and statically linked, with no glibc dependency.
β¨ Language
Width-stating type names. You can now say exactly how wide a number is:
Int8is new too. Porting FPC or Delphi code?uses ClassicPascalTypeskeeps the names you know, and BlaiseGuard's new BL-2006 rule suggests the replacement for each.Properties in records:
Field widths in
WriteLn, plus initialised threadvars and globals:The nearest routine wins. A program's routine can share a name with one from a used unit, and the qualified name still reaches the unit's version:
Interfaces, checked twice over.
IGreeter(P)is checked when it compiles;O as IGreeterqueries at run time and raises a catchableEInvalidCastwhen it fails.And more: method pointers convert to
reference towherever one is expected;for-in works over record and interface enumerators; inline procedural types work anywhere; nestedtypesections;MoveandFillByte; andRoundnow rounds half to even, like Delphi and FPC.When you reach for something Blaise deliberately leaves out (
with,goto,TInterfacedObject), the compiler now says so and shows you the Blaise way, instead of reporting a confusing parse error.π‘οΈ Hardening
forloop ending at its counter type's limit now terminates on every integer type.π§ Tools
π By the numbers
π¦ Get it
The macOS arm64, Linux x86-64 and FreeBSD x86-64 tarballs are on the GitHub Releases page. Each includes everything needed to compile
hello.passtraight away.On macOS the binary is ad-hoc signed, not notarised. If the browser download is blocked, run
xattr -dr com.apple.quarantine .once in the extracted folder.The full list of changes is in the changelog. Thank you to everyone who tried the pre-release builds, reported bugs and sent fixes. It makes a real difference.
A special thank you, too, to my Patreon sponsors. Your support gives me the time to keep Blaise moving forward, and I'm truly grateful for it.
Onwards to v0.16! π
Built with β€οΈ for the Pascal community.
All reactions