Repository navigation
Releases
HitSimple v0.3.10 Beta
HitSimple 0.3.10
HitSimple 0.3.10 is a beta consolidation release covering PRs #18–#28 since
0.3.9. Compiler, VS Code extension and packages retain the numeric 0.3.10
version; GitHub marks the release as a prerelease with a Beta title. It is
not a stable release or a claim of complete Standard conformance.
Changes since 0.3.9
- Diagnose file handles observed closed through checked runtime wrappers,
including copied aliases, while retaining the nativeFILE*ABI (#18). - Add a reproducible, pinned-release performance comparison on one native
AArch64 runner. Results describe that runner and workload, not a universal
speed guarantee (#19). - Add six harness-verified practical recipes for C, C++, Rust, checked
diagnostics, ctype providers and VS Code debugging (#20). - Preserve low-byte ctype semantics across providers and materialize canonical
one-byte Boolean results (#21–#22). - Normalize Boolean value reads and return assignment, preserving the
distinction between raw View bytes and Boolean consumers (#23). - Preserve explicit numeric return-conversion boundaries (#24).
- Copy floating ternary Views without numeric conversion, and use validated
ternary lengths for direct expression-levelas(#25–#26). - Canonicalize explicit
nonecall results for ordinary/core-extern functions,
methods and untemplated user-operator results (#27). - Add a bounded Standard evidence crosswalk: 151 numbered headings, 75 manifest
APIs and 14 inspected witnesses. These counts are navigation and inspection
metadata, not percentages of conformance or execution results (#28). - Keep package README links to the practical guide and evidence report usable
by pointing to this version's source tree. Those guides depend on repository
fixtures and implementation sources that binary packages do not include.
Known beta limits
- Some Standard-valid direct floating arguments to raw-memory builtins are
rejected by argument metadata/lowering. Apply an explicitas bytesView
when observing or copying the representation; this preserves bytes and does
not perform numeric conversion. - Generic declaration-length inference is incomplete. An untyped declaration
such asnew flag = trueornew bits = (choose ? left : right) as u64may
be rejected even when its explicitly typed equivalent is supported. Use
new flag as bool = trueandnew bits as u64 = ..., or an explicit length
forbytesor untemplated declarations (for example,new raw[8]). The
direct ternaryascorrection does not
generalize inference to every consumer or chained reinterpretation. - Named return signatures are accepted, but their names do not yet establish
implicit local return-storage variables. Use explicit local variables and
areturnexpression. Canonicalizingnonecall results does not implement
named return-storage initialization. - The raw-memory, declaration-inference and named-return-storage failures above
were observed rejecting valid programs at
compile time; the focused probes did not demonstrate runtime corruption.
That observation is limited to the tested programs, not a general safety
guarantee. Separately,length()does not fully validate its operand:
length(1 as NotATemplate)is currently accepted even though the template
is invalid. Do not uselength()as a check that an expression is valid.
No compiler changes for these residual limits are included here. - Checked file handles are detected only when closure was observed through
the runtime wrappers. Raw FFI addresses, external closes, address-reused
stale aliases and concurrent runtime operations remain outside the detection
guarantees. Declared extern-global sizes remain declaration-supplied ABI
contracts; arbitrary FFI addresses do not gain bounds metadata. - C compatibility struct-by-value ABI remains limited to covered x86_64 SysV
ELF layouts; Windows and Darwin reject it explicitly.mutparameters and
mut selfremain reserved. Platform-specific f128 arithmetic and NaN payload
limits remain as documented in README and USAGE.
For the inspected scope and exact witness identities, see the
versioned Standard evidence map.
Committed witness rows record source inspection; execution is separate and
must be established from exact-candidate CI or local run reports.
Distribution and verification
The release contains 13 packages: Linux x86_64/aarch64 tarballs and DEBs,
macOS arm64/x86_64 tarballs, Fedora 44 and EL9 x86_64/aarch64 RPMs, Windows
x64 full/slim ZIPs and the VS Code VSIX, plus SHA256SUMS.
The Windows full package bundles llvm-mingw. Slim/macOS packages require
Clang 18 matching their embedded LLVM; Linux packages use the documented
system toolchain requirements. Packages remain unsigned; macOS archives
are not notarized. No new target or installer is introduced.
Publication remains create-only and exact-commit guarded. The complete native
platform/package matrix must pass; a draft's 13 packages are downloaded and
checked against SHA256SUMS before publication. A successful validation-only
workflow is not a published release. See the
release procedure.
HitSimple v0.3.9
HitSimple 0.3.9
HitSimple 0.3.9 is a beta patch release. It preserves the existing language
standard and supported platform scope.
Changes since 0.3.8
- Diagnose non-addressable index and slice bases during semantic analysis,
including the invalid input discovered by the weekly sema fuzz campaign. - Register declared extern globals with the checked runtime, so in-bounds
dereferences of C-defined globals use the declared object boundary. - Add executable regression coverage for successful checked file-handle I/O
and for deterministic rejection of unregistered raw FFI addresses. - Repair scheduled mutation-campaign argument handling, stabilize the
HS-Smith mutation baseline under parallel tests, and leave build headroom
for the complete daily and weekly sanitizer-backed fuzz campaigns.
Compatibility and limits
- A declared extern global's size remains an ABI contract supplied by the
declaration. Raw addresses returned by FFI functions do not carry boundary
metadata and are conservatively rejected by checked dereferences. - The checked handle-I/O regression covers a successful use path. File-handle
ownership and lifetime validation are not added by this patch. - C compatibility struct-by-value ABI remains limited to supported x86_64
SysV ELF layouts; Windows and Darwin reject that ABI explicitly.
Distribution
The release asset set comprises Linux tarballs and DEBs, macOS tarballs,
Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX,
and SHA256SUMS. The Windows full package bundles llvm-mingw. Slim and macOS
packages require a Clang 18 toolchain matching their embedded LLVM; RPM
packages require the matching system Clang major. Existing unsigned package
and macOS notarization limitations remain unchanged.
A pull-request or default manually dispatched Release workflow validates
packages without publishing them. Publication uses either an existing version
tag or an explicitly requested, exact-commit manual run on master. Both paths
require the complete package matrix and downloaded-checksum checks before
publication. See the repository's docs/releasing.md for the guarded manual
procedure and its recovery limits.
HitSimple v0.3.8
HitSimple 0.3.8 is a beta patch release.
Highlights:
- Hardened semantic diagnostics for invalid return byte lengths and address-of operands.
- Bounded lowering of large Views and oversized integer representations to keep LLVM IR generation tractable.
- Added fuzz regression seeds and a scheduled mutation campaign covering semantic, codegen, and checked-runtime behavior.
Release assets include Linux tarballs and DEBs, macOS tarballs, Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX, and SHA256SUMS.
HitSimple v0.3.7
HitSimple 0.3.7 is a beta release.
Highlights:
- The compiler now runs the LLVM optimization pipeline and emits native object files through a unified TargetMachine, without a temporary LLVM IR round trip.
- Direct object and static-library emission no longer require Clang; Clang remains the linker driver and is used for external C or C++ sources.
- GitHub-hosted Linux, macOS, and Windows validation now covers native object emission, sanitizer and PGO paths, debug metadata, and C ABI interoperability.
- Native AArch64 performance baselines and regression gates cover nine representative workloads with reproducible artifacts.
- Release assets include Linux tarballs and DEBs, macOS tarballs, Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX, and SHA256SUMS.
- The Windows full package bundles llvm-mingw. Slim and macOS packages require a Clang 18 toolchain matching their embedded LLVM; RPM packages require the matching system Clang major.
C compatibility struct-by-value ABI remains limited to supported x86_64 SysV ELF layouts. Windows and Darwin reject that ABI explicitly.
HitSimple v0.3.6
HitSimple 0.3.6 is a beta release.
Highlights:
- Differential testing now covers output files, checksums, safety modes, and all supported optimization levels.
- Native AArch64 semantic regression coverage verifies strict-alignment and platform-specific behavior on GitHub-hosted ARM runners.
- Reference differential tests and scheduled sanitizer-backed fuzz campaigns provide reproducible artifacts, replay instructions, and minimized failures.
- Release assets include Linux tarballs and DEBs, macOS tarballs, Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX, and SHA256SUMS.
- The Windows full package bundles llvm-mingw. Slim and macOS packages require a Clang 18 toolchain matching their embedded LLVM; RPM packages require the matching system Clang major.
C compatibility struct-by-value ABI remains limited to supported x86_64 SysV ELF layouts. Windows and Darwin reject that ABI explicitly.
HitSimple v0.3.5
HitSimple 0.3.5 is a beta release.
Highlights:
- Sema and HIR now preserve complete View semantics and explicit conversion plans across operations, assignments, calls, returns, and ternaries.
- Checked and static-checked analysis tracks lifetimes and address facts across scope exits, control-flow edges, indirect writes, and calls; static locals now initialize only once.
- LLVM lowering retains pointer provenance where possible and runs the embedded LLVM optimization pipeline with PGO and optimization remarks.
- Release assets include Linux tarballs and DEBs, macOS tarballs, Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX, and SHA256SUMS.
- The Windows full package bundles llvm-mingw. Slim and macOS packages require a Clang 18 toolchain matching their embedded LLVM; RPM packages require the matching system Clang major.
C compatibility struct-by-value ABI remains limited to supported x86_64 SysV ELF layouts. Windows and Darwin reject that ABI explicitly.
HitSimple v0.3.4
HitSimple 0.3.4 is a beta release.
Highlights:
- Checked runtime failures now carry source locations on Linux, macOS, and Windows. Windows functions that use software omit those writes to keep format/scan stable.
- Release assets include Linux tarballs and DEBs, macOS tarballs, Fedora 44 and EL9 RPMs, Windows full/slim ZIPs, the VS Code extension VSIX, and SHA256SUMS.
- The Windows full package bundles llvm-mingw; the slim package and macOS/RPM packages require a compatible external Clang 18 or later.
C compatibility struct-by-value ABI remains limited to supported x86_64 SysV ELF layouts. Windows and Darwin reject that ABI explicitly.
HitSimple v0.3.3
HitSimple 0.3.3 是正式 release。
发布附件包括 Linux x86_64/aarch64 tar.gz、Linux amd64/arm64 DEB、macOS arm64/x86_64 tar.gz、Fedora 44 与 EL9 的 x86_64/aarch64 RPM、Windows x64 full/slim ZIP、VS Code 扩展 VSIX 和 SHA256SUMS。
Chapter 14 标准库现在以 作为唯一合同真源:75 个 具备生成的公开头、具体 View overload、provider 和 safety obligations。 可选择 manifest 声明的参考实现;当前 reference module 覆盖 、 和 三种 safety mode。
Windows full 包内置 llvm-mingw-20240619-ucrt-x86_64,可直接编译当前 Windows x64 程序;slim 包需要通过 --clang、HITSIMPLE_CLANG 或 PATH 提供兼容的 llvm-mingw/Clang 18。Windows f128 使用 Boost 1.85.0 的 113-bit software backend,并按 IEEE binary128 位模式与 runtime 交互。
DEB 安装到 /usr/bin、/usr/libexec/hitsimple、/usr/lib/hitsimple 和 /usr/share/hitsimple。Ubuntu 22.04 与 Debian 12 需要从 apt.llvm.org 安装 Clang 18;软件包不会自动添加软件源。
macOS 使用 Boost software binary128 backend,要求外部 Clang 18 或更高版本。Fedora 44 和 EL9 RPM 也要求外部 clang >= 18,不内置 Clang。
VS Code 扩展的 Debug Current File 以一个 -g 构建当前 .hs 文件:Linux x86_64/aarch64 通过 Microsoft C/C++ 扩展的 cppdbg 与 GDB 启动,macOS arm64/x86_64 通过 cppdbg 与 LLDB 启动,Windows x64 通过 cppvsdbg 与 CodeView/PDB 启动。远程、交叉目标和自定义 DAP 仍不在此支持范围内。
当前仍是实验性 Beta。C compatibility 的 struct 传值 ABI 只支持 x86_64 SysV ELF;Windows 和 Darwin 会明确拒绝该范围。
HitSimple v0.3.1
HitSimple 0.3.1 是正式 release。
发布附件包括 Linux x86_64/aarch64 tar.gz、Linux amd64/arm64 DEB、macOS arm64/x86_64 tar.gz、Fedora 44 与 EL9 的 x86_64/aarch64 RPM、Windows x64 full/slim ZIP、VS Code 扩展 VSIX 和 SHA256SUMS。
Chapter 14 标准库现在以 作为唯一合同真源:75 个 具备生成的公开头、具体 View overload、provider 和 safety obligations。 可选择 manifest 声明的参考实现;当前 reference module 覆盖 、 和 三种 safety mode。
Windows full 包内置 llvm-mingw-20240619-ucrt-x86_64,可直接编译当前 Windows x64 程序;slim 包需要通过 --clang、HITSIMPLE_CLANG 或 PATH 提供兼容的 llvm-mingw/Clang 18。Windows f128 使用 Boost 1.85.0 的 113-bit software backend,并按 IEEE binary128 位模式与 runtime 交互。
DEB 安装到 /usr/bin、/usr/libexec/hitsimple、/usr/lib/hitsimple 和 /usr/share/hitsimple。Ubuntu 22.04 与 Debian 12 需要从 apt.llvm.org 安装 Clang 18;软件包不会自动添加软件源。
macOS 使用 Boost software binary128 backend,要求外部 Clang 18 或更高版本。Fedora 44 和 EL9 RPM 也要求外部 clang >= 18,不内置 Clang。
VS Code 扩展的 Debug Current File 以一个 -g 构建当前 .hs 文件:Linux x86_64/aarch64 通过 Microsoft C/C++ 扩展的 cppdbg 与 GDB 启动,macOS arm64/x86_64 通过 cppdbg 与 LLDB 启动,Windows x64 通过 cppvsdbg 与 CodeView/PDB 启动。远程、交叉目标和自定义 DAP 仍不在此支持范围内。
当前仍是实验性 Beta。C compatibility 的 struct 传值 ABI 只支持 x86_64 SysV ELF;Windows 和 Darwin 会明确拒绝该范围。
HitSimple v0.3.0
HitSimple 0.3.0 是正式 release。
发布附件包括 Linux x86_64/aarch64 tar.gz、Linux amd64/arm64 DEB、macOS arm64/x86_64 tar.gz、Fedora 44 与 EL9 的 x86_64/aarch64 RPM、Windows x64 full/slim ZIP、VS Code 扩展 VSIX 和 SHA256SUMS。
新增的 C ABI 互操作支持可将 HitSimple、C、C++ 与 Rust staticlib 组合到同一程序。稳定边界仅为显式 ;C++ 必须使用 C wrapper,Rust 必须使用无修饰的 导出。C++ exception、Rust panic 和 HitSimple / 不得跨越该边界。该能力正式支持 Linux x86_64/AArch64。
Windows full 包内置 llvm-mingw-20240619-ucrt-x86_64,可直接编译当前 Windows x64 程序;slim 包需要通过 --clang、HITSIMPLE_CLANG 或 PATH 提供兼容的 llvm-mingw/Clang 18。Windows f128 使用 Boost 1.85.0 的 113-bit software backend,并按 IEEE binary128 位模式与 runtime 交互。
DEB 安装到 /usr/bin、/usr/libexec/hitsimple、/usr/lib/hitsimple 和 /usr/share/hitsimple。Ubuntu 22.04 与 Debian 12 需要从 apt.llvm.org 安装 Clang 18;软件包不会自动添加软件源。
macOS 使用 Boost software binary128 backend,要求外部 Clang 18 或更高版本。Fedora 44 和 EL9 RPM 也要求外部 clang >= 18,不内置 Clang。
VS Code 扩展的 Debug Current File 以一个 -g 构建当前 .hs 文件:Linux x86_64/aarch64 通过 Microsoft C/C++ 扩展的 cppdbg 与 GDB 启动,macOS arm64/x86_64 通过 cppdbg 与 LLDB 启动,Windows x64 通过 cppvsdbg 与 CodeView/PDB 启动。远程、交叉目标和自定义 DAP 仍不在此支持范围内。
当前仍是实验性 Beta。C compatibility 的 struct 传值 ABI 只支持 x86_64 SysV ELF;Windows 和 Darwin 会明确拒绝该范围。