Releases: born-ml/born
v0.7.12 - FFI Hardening & Library Loading
Changes
Dependencies Updated
| Package | Old | New |
|---|---|---|
go-webgpu/webgpu |
v0.3.2 | v0.4.0 |
go-webgpu/goffi |
v0.4.0 | v0.4.0 (unchanged) |
Upstream Improvements
- Null handle guards on 27 public FFI methods — prevents SIGSEGV on nil/released objects
ptrFromUintptrhelper eliminates allgo vetunsafe.Pointer warningsWGPU_NATIVE_PATHenv var for custom wgpu-native library pathloadLibraryreturns(Library, error)with proper error propagation- Windows DLL eager loading — errors surface at init, not at first use
- Enhanced
Init()error messages with library path and remediation suggestions - 85 new null guard test cases upstream
Impact
Significantly improved safety and debuggability of GPU backend initialization.
Full Changelog: v0.7.11...v0.7.12
Upstream: https://github.com/go-webgpu/webgpu/releases/tag/v0.4.0
v0.7.11 - Crosscall2 Callback Integration
Changes
Dependencies Updated
| Package | Old | New |
|---|---|---|
go-webgpu/webgpu |
v0.3.1 | v0.3.2 |
go-webgpu/goffi |
v0.3.9 | v0.4.0 (indirect) |
Upstream Improvements
- crosscall2 integration — callbacks now work from C-library-created threads (Metal, wgpu-native)
- fakecgo trampoline register fixes synced with purego v0.10.0
Bug Fixes
- Xavier init test: added float32 rounding tolerance to prevent false failures
Impact
Improved callback reliability on macOS Metal and native WebGPU implementations.
Full Changelog: v0.7.10...v0.7.11
Upstream: https://github.com/go-webgpu/webgpu/releases/tag/v0.3.2
v0.7.10
🔧 Dependencies Update + Lint Cleanup
Update WebGPU backend to v0.3.1 with critical ARM64 callback fix. Clean up 101 stale //nolint:gosec directives.
Updated Dependencies:
go-webgpu/webgpuv0.3.0 → v0.3.1go-webgpu/goffiv0.3.8 → v0.3.9 (indirect)
Upstream Fixes:
- ARM64 callback trampoline rewrite — fixes LR corruption for callbacks at index > 0
- Symbol rename to prevent linker collision with purego
Code Quality:
- Removed 101 unused
//nolint:gosecdirectives (gosec linter updated, no longer flags these) - Standardized remaining nolint comments to short format
- 0 lint issues across all platforms
Impact: Critical fix for macOS Apple Silicon and Linux ARM64 users.
Links:
- Upstream release: go-webgpu v0.3.1
- PRs: #29, #30
v0.7.9
🔧 Dependencies Update
Update WebGPU backend to v0.3.0 with new capability-querying API and typed errors.
Updated Dependencies:
go-webgpu/webgpuv0.2.1 → v0.3.0
New Upstream Features Available:
Surface.GetCapabilities()— query supported formats, present modes, alpha modesDevice.GetFeatures()/Device.HasFeature()— feature enumerationDevice.GetLimits()— device limits (experimental)- Typed errors with
errors.Is()/errors.As()support (ErrValidation,ErrOutOfMemory,ErrInternal,ErrDeviceLost) - Resource leak detection via
SetDebugMode(true)/ReportLeaks()
Links:
- Upstream release: go-webgpu v0.3.0
- PR: #28
v0.7.8 - GoGPU Ecosystem Integration (Phase 1)
🔧 GoGPU Ecosystem Integration (Phase 1)
Migrate WebGPU backend to unified gputypes for future dual-backend support.
Updated Dependencies
| Package | Old | New |
|---|---|---|
go-webgpu/webgpu |
v0.1.4 | v0.2.1 |
go-webgpu/goffi |
v0.3.7 | v0.3.8 |
gogpu/gputypes |
- | v0.2.0 (new) |
dlclark/regexp2 |
v1.10.0 | v1.11.5 |
google/uuid |
v1.3.0 | v1.6.0 |
Changes
- Migrated all WebGPU types from
wgpu.*togputypes.*:BufferUsage,BufferUsageStorage,BufferUsageCopySrc,BufferUsageCopyDstPowerPreferenceHighPerformance
- Updated 10 files in
internal/backend/webgpu/ - Fixed 3 prealloc warnings in linter
Why This Matters
Prepares codebase for Pure Go WebGPU backend (gogpu/wgpu):
- Unified type system enables future dual-backend architecture
- Build tags will allow:
go build(Rust FFI) vsgo build -tags purego(Pure Go)
Links
- Upstream: go-webgpu v0.2.1
- GoGPU ecosystem: github.com/gogpu
- PR: #27
Installation
```bash
go get github.com/born-ml/born@v0.7.8
```
v0.7.7: Public API Improvements
🔧 Public API Improvements
Refactored public API packages to use proper Go interfaces instead of type aliases where possible.
Improvements
tensor/: AddedBackendinterface with 40+ methods (was type alias)nn/: AddedModuleinterface with full method definitionsonnx/: AddedModelinterface for ONNX model operationsoptim/: Now uses publicnn.Parameterin function signaturesautodiff/: Now uses publictensortypesbackend/cpu,backend/webgpu: Added compile-time interface checks
Technical Details
- Improves pkg.go.dev documentation by hiding internal paths
- External packages can now properly import and use the public API
- Some interfaces (
Optimizer,ModelReader) remain as type aliases due to Go's type system constraints
Fixed Issues
- #25 — ONNX package not accessible from external packages
Full Changelog: v0.7.6...v0.7.7
v0.7.6: ARM64 Darwin Enhancement
ARM64 Darwin Enhancement
Comprehensive ARM64 Darwin support with enhanced struct handling, tested on M3 Pro hardware.
Updated Dependencies
go-webgpu/webgpuv0.1.3 → v0.1.4go-webgpu/goffiv0.3.6 → v0.3.7
Improvements
- Struct Layout: Proper layout for nested and complex struct types
- Mixed Data Types: Automatic struct layout computation for integer/float combinations
- Register Optimization: Enhanced struct return handling (9-16 bytes) utilizing X0 and X1 registers
Fixed Issues
- Resolved segmentation fault in string output benchmarks on Darwin systems
Links
- PR: #24
- Upstream: go-webgpu v0.1.4
Contributors
- @ppoage — ARM64 Darwin implementation, Objective-C test suite, assembly verification
v0.7.5: ARM64 Hotfix
ARM64 Hotfix
Update GPU backend dependencies with critical ARM64 fixes for Apple Silicon.
Updated Dependencies
go-webgpu/webgpuv0.1.2 → v0.1.3go-webgpu/goffiv0.3.5 → v0.3.6
Fixed Issues
- ARM64 HFA returns: NSRect with 4×float64 now correctly returns all values on Apple Silicon
- Large struct returns: Structs exceeding 16 bytes now properly use X8 register for implicit pointer passing
- macOS ARM64 display: Resolved blank window issue where GPU dimensions were returning 0×0
Links
- PR: #23
- Upstream: go-webgpu v0.1.3
v0.7.4: Linear Layer Without Bias
✨ New Feature: Linear Layer Without Bias
Add WithBias option to nn.NewLinear for creating Linear layers without bias term.
New API
// With bias (default, backwards compatible)
layer := nn.NewLinear(784, 128, backend)
// Without bias (for LLaMA-style models, LM head, etc.)
lmHead := nn.NewLinear(hiddenSize, vocabSize, backend, nn.WithBias(false))Changes
- Add
LinearOptiontype andWithBias(bool)functional option - Add
HasBias()method for introspection - Update
SwiGLUFFNto use public API - Export
WithBiasin publicnnpackage
Use Cases
- LM Head in language models (GPT, LLaMA, HRM)
- Attention projections (some architectures)
- SwiGLU FFN layers
Full Changelog: v0.7.3...v0.7.4
v0.7.3 - Dependencies Update
Dependencies Update
Hotfix release updating GPU backend dependencies to latest versions.
Updated Dependencies
go-webgpu/webgpuv0.1.1 → v0.1.2go-webgpu/goffiv0.3.3 → v0.3.5
Links
- PR: #21
- Changelog: https://github.com/born-ml/born/blob/main/CHANGELOG.md