Skip to content

Releases: born-ml/born

v0.7.12 - FFI Hardening & Library Loading

27 Feb 14:06
24e87cf

Choose a tag to compare

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
  • ptrFromUintptr helper eliminates all go vet unsafe.Pointer warnings
  • WGPU_NATIVE_PATH env var for custom wgpu-native library path
  • loadLibrary returns (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

27 Feb 09:58
cdb8a69

Choose a tag to compare

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

18 Feb 12:30
f172d6c

Choose a tag to compare

🔧 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/webgpu v0.3.0 → v0.3.1
  • go-webgpu/goffi v0.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:gosec directives (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:

v0.7.9

09 Feb 11:10
02026b5

Choose a tag to compare

🔧 Dependencies Update

Update WebGPU backend to v0.3.0 with new capability-querying API and typed errors.

Updated Dependencies:

  • go-webgpu/webgpu v0.2.1 → v0.3.0

New Upstream Features Available:

  • Surface.GetCapabilities() — query supported formats, present modes, alpha modes
  • Device.GetFeatures() / Device.HasFeature() — feature enumeration
  • Device.GetLimits() — device limits (experimental)
  • Typed errors with errors.Is() / errors.As() support (ErrValidation, ErrOutOfMemory, ErrInternal, ErrDeviceLost)
  • Resource leak detection via SetDebugMode(true) / ReportLeaks()

Links:

v0.7.8 - GoGPU Ecosystem Integration (Phase 1)

29 Jan 15:31
f77fdf2

Choose a tag to compare

🔧 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.* to gputypes.*:
    • BufferUsage, BufferUsageStorage, BufferUsageCopySrc, BufferUsageCopyDst
    • PowerPreferenceHighPerformance
  • 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) vs go build -tags purego (Pure Go)

Links

Installation

```bash
go get github.com/born-ml/born@v0.7.8
```

v0.7.7: Public API Improvements

06 Jan 19:17
b2dccb6

Choose a tag to compare

🔧 Public API Improvements

Refactored public API packages to use proper Go interfaces instead of type aliases where possible.

Improvements

  • tensor/: Added Backend interface with 40+ methods (was type alias)
  • nn/: Added Module interface with full method definitions
  • onnx/: Added Model interface for ONNX model operations
  • optim/: Now uses public nn.Parameter in function signatures
  • autodiff/: Now uses public tensor types
  • backend/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

03 Jan 07:44
93945fb

Choose a tag to compare

ARM64 Darwin Enhancement

Comprehensive ARM64 Darwin support with enhanced struct handling, tested on M3 Pro hardware.

Updated Dependencies

  • go-webgpu/webgpu v0.1.3 → v0.1.4
  • go-webgpu/goffi v0.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

Contributors

  • @ppoage — ARM64 Darwin implementation, Objective-C test suite, assembly verification

v0.7.5: ARM64 Hotfix

29 Dec 10:08
2b2a2f1

Choose a tag to compare

ARM64 Hotfix

Update GPU backend dependencies with critical ARM64 fixes for Apple Silicon.

Updated Dependencies

  • go-webgpu/webgpu v0.1.2 → v0.1.3
  • go-webgpu/goffi v0.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

v0.7.4: Linear Layer Without Bias

27 Dec 18:19

Choose a tag to compare

✨ 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 LinearOption type and WithBias(bool) functional option
  • Add HasBias() method for introspection
  • Update SwiGLUFFN to use public API
  • Export WithBias in public nn package

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

27 Dec 13:39
d0d4ea3

Choose a tag to compare

Dependencies Update

Hotfix release updating GPU backend dependencies to latest versions.

Updated Dependencies

  • go-webgpu/webgpu v0.1.1 → v0.1.2
  • go-webgpu/goffi v0.3.3 → v0.3.5

Links