BigMarc 3ea090ae4b Embed the real Harper grammar core via Rust C-FFI
Replace the NSSpellChecker + regex-stub engine with harper-core 2.5.0:
real subject-verb agreement, verb forms, punctuation, repetition and
spelling. New harper-ffi crate (staticlib) exposes harper_check over a C
ABI; the CHarper module bridges it to Swift; HarperEngine maps Harper's
char spans onto UTF-16 ranges and de-dups overlapping lints. NSSpellChecker
stays only as a case-preserving spelling supplement, which fixes the
problemm->Problem mis-casing. Bulk apply now skips no-op suggestions.

build.sh / scripts/build.sh build the universal static lib; target/ and
lib/ are gitignored (regenerate via harper-ffi/build.sh).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 06:43:11 +02:00

27 lines
879 B
Bash
Executable File

#!/usr/bin/env bash
# Build the UNIVERSAL (Apple Silicon + Intel) Harper static library that the
# Swift app links against: harper-ffi/lib/libharper_ffi.a
#
# Requires the Rust toolchain (rustup) with both macOS targets:
# rustup target add aarch64-apple-darwin x86_64-apple-darwin
set -euo pipefail
ROOT="$(cd "$(dirname "$0")" && pwd)"
cd "$ROOT"
# Make cargo available even in non-login shells.
[ -f "$HOME/.cargo/env" ] && source "$HOME/.cargo/env"
echo "==> cargo build --release (aarch64 + x86_64)"
cargo build --release --target aarch64-apple-darwin
cargo build --release --target x86_64-apple-darwin
echo "==> lipo -> lib/libharper_ffi.a (universal)"
mkdir -p lib
lipo -create -output lib/libharper_ffi.a \
target/aarch64-apple-darwin/release/libharper_ffi.a \
target/x86_64-apple-darwin/release/libharper_ffi.a
lipo -info lib/libharper_ffi.a
echo "==> done"