PackageTrack

Go modules

github.com/ebitengine/purego

v0.11.0ebitengine/purego

Release timeline

310 releases since 2022
20222026

One column per quarter.

Releases

  1. v0.11.01 Sept 2026
    Release notes
    • Require Go 1.25 or later (#469)
    • Support structs on Windows amd64/arm64, Android, iOS, loong64, and ppc64le (#237, #466, #473, #475)
    • Support structs as arguments and return values in callbacks (#225, #418)
    • Add NetBSD (amd64, arm64) as a Tier 2 platform (#349)
    • Support the ARM soft-float ABI (#490)
    • Support linux/s390x without Cgo (#422)
    • Support up to 32 arguments on 64-bit platforms (#425)
    • Add cstrings.NSStringToString (#438)
    • Fix some bugs
    Open source →
  2. v0.11.0-alpha.1130 Aug 2026pre-release
    Release notes

    Go 1.27's go fix rewrites constructs that newer standard library APIs
    express better. Running it over every GOOS/GOARCH this module builds
    for turns up three sites, all mechanical:

    compareStatus walks the lines of a /proc status file, so the slice
    from strings.Split only exists to be ranged over; SplitSeq yields the
    same lines without materializing it. The same function sorts a field
    list with sort.Slice and a less function that is plain string
    comparison, which is what slices.Sort does for an ordered element
    type.

    NewCallback asks whether an argument is assignable to CDecl, a type
    known at compile time, so reflect.TypeFor names it directly instead of
    building a value to take the type of.

    The cgo-enabled cross builds could not be analyzed on the machine this
    ran on, which has no cross C toolchain; darwin/amd64 and darwin/arm64
    with cgo were covered and reported nothing.

    Co-authored-by: Claude Opus 5 [email protected]

    Open source →
  3. v0.11.0-alpha.1026 Aug 2026pre-release
    Release notes

    Go 1.23 added structs.HostLayout, a zero-sized marker field that tells
    the compiler a struct must be laid out the way the host's C ABI expects
    rather than by Go's own rules. Until now purego relied on Go's current
    layout happening to match C.

    Declare the marker on every struct that stands in for a C one: objc_super,
    MethodDescription, PropertyAttribute, blockDescriptor and blockLayout in
    package objc; G, ThreadStart, the Darwin pthread types, the NetBSD stack_t
    and argset in internal/fakecgo; syscallArgs, which internal/cgo hands to C
    as a struct syscallArgs; the window example's NSPoint/NSSize/NSRect and
    WNDCLASSEX/RECT/POINT/MSG; and the C-representative structs in the tests.
    Structs that never cross into C, such as MethodDef, FieldDef and the
    callback argument block filled in by Go assembly, are left alone.

    The marker field is zero-sized, so it takes no part in the C ABI. Teach
    the argument classification to skip zero-sized fields, otherwise a struct
    that declares it is misclassified: isAllSameFloat would panic descending
    into the marker, isHFA/isHVA would stop recognizing homogeneous
    aggregates, and objc's @encode would emit the marker as a member.

    Closes #259

    Co-Authored-By: Claude Opus 5 [email protected]

    Open source →
  4. v0.11.0-alpha.9.0.20260824124142-a66c0b0d411924 Aug 2026pre-release

    Nothing published for this version

  5. v0.11.0-alpha.9.0.20260820171431-f2f42023699c20 Aug 2026pre-release

    Nothing published for this version

  6. v0.11.0-alpha.9.0.20260820124626-7d5f4c2e15e220 Aug 2026pre-release

    Nothing published for this version

  7. v0.11.0-alpha.912 Aug 2026pre-release
    Release notes
    • Pull runtime variable 'goarmsoftfp' to detect if soft-float ABI is used.
    • Assembly trampolines skips load/store to FP registers if soft-float is detected. This was implemented in exactly same way how it's done in Go runtime.
    • Apply integer passing rules for float arguments/return values.
    • Run tests for GOARM=5 (no FPU) in test workflow and add some arm-specific test cases.

    Closes #490

    Co-authored-by: Hirador [email protected]

    Open source →
  8. v0.11.0-alpha.8.0.20260812182835-f9d41fc60f1f12 Aug 2026pre-release

    Nothing published for this version

  9. v0.11.0-alpha.8.0.20260731131058-077e9d53635a31 Jul 2026pre-release

    Nothing published for this version

  10. v0.11.0-alpha.818 Jul 2026pre-release
    Release notes

    internal/fakecgo: use libthr.so.3 instead of libpthread.so on FreeBSD…

    Open source →
  11. v0.11.0-alpha.7.0.20260718133429-d476432ce7e318 Jul 2026pre-release

    Nothing published for this version

  12. v0.11.0-alpha.715 Jul 2026pre-release
    Release notes

    Pass and return structs by value when calling C functions under the
    ELFv2 ABI: a homogeneous floating-point aggregate is passed and returned
    in the floating-point registers whatever its size, any other aggregate
    occupies successive doublewords in the general-purpose registers and the
    parameter save area, and a non-homogeneous aggregate larger than two
    doublewords is returned through a caller-allocated buffer. Scalar float32
    arguments are passed in double-precision format, matching the FMOVD-based
    convention already used for float32 struct members and float returns;
    reading float32 callback arguments does the inverse conversion.

    Widen structReturnInMemory to take the return type rather than its size,
    so ppc64le can keep a homogeneous floating-point aggregate in registers
    regardless of size while every other architecture keeps its size-only
    rule.

    Struct arguments and returns in callbacks remain unsupported, as on the
    other non-amd64/arm64 architectures. Aggregates that need more than eight
    floating-point argument registers, and functions taking mixed scalar
    floating-point and integer arguments, are not yet handled; the latter
    needs the ELFv2 general-purpose register shadowing that purego does not
    model for scalar arguments.

    Updates #474

    Co-authored-by: Claude Opus 4.8 [email protected]

    Open source →
  13. v0.11.0-alpha.6.0.20260715033526-b1a632f0cddd15 Jul 2026pre-release

    Nothing published for this version

  14. v0.11.0-alpha.6.0.20260707033313-5f49e7c493227 Jul 2026pre-release

    Nothing published for this version

  15. v0.11.0-alpha.62 Jul 2026pre-release
    Release notes

    fakecgo: add s390x support for CGO_ENABLED=0 (#422)

    Open source →
  16. v0.11.0-alpha.5.0.20260628032533-5da538943ca728 Jun 2026pre-release

    Nothing published for this version

  17. v0.11.0-alpha.5.0.20260623093025-80e859bc940523 Jun 2026pre-release

    Nothing published for this version

  18. v0.11.0-alpha.5.0.20260623031325-3c869562eaac23 Jun 2026pre-release

    Nothing published for this version

  19. v0.11.0-alpha.5.0.20260620042951-7e974822390220 Jun 2026pre-release

    Nothing published for this version

  20. v0.11.0-alpha.516 Jun 2026pre-release

    Nothing published for this version

  21. v0.11.0-alpha.44 Jun 2026pre-release
    Release notes

    Revert the sync.Pool removal #452 and copy syscall.a1 into a local variable
    before taking its address, so the reflect.Value points to an independent location
    that is not affected by pool recycling.

    Updates #451

    Open source →
  22. v0.11.0-alpha.3.0.20260604015905-d339eb0fd4d34 Jun 2026pre-release

    Nothing published for this version

  23. v0.11.0-alpha.3.0.20260527130708-1512f327e99527 May 2026pre-release

    Nothing published for this version

  24. v0.11.0-alpha.324 May 2026pre-release

    Nothing published for this version

  25. v0.11.0-alpha.2.0.20260509185937-f8849c8c937f9 May 2026pre-release

    Nothing published for this version

  26. v0.11.0-alpha.230 Apr 2026pre-release

    Nothing published for this version

  27. v0.11.0-alpha.1.0.20260430031838-fa49e74b007530 Apr 2026pre-release

    Nothing published for this version

  28. v0.11.0-alpha.1.0.20260318130922-386f7c8fb54918 Mar 2026pre-release

    Nothing published for this version

  29. v0.11.0-alpha.115 Mar 2026pre-release

    Nothing published for this version

  30. v0.11.0-alpha.0.20260311152936-1a798da253eb11 Mar 2026pre-release

    Nothing published for this version

  31. v0.11.0-alpha.0.20260306142555-90bb24e75b1f6 Mar 2026pre-release

    Nothing published for this version

  32. v0.11.0-alpha.0.20260304101746-6e7b9347ed414 Mar 2026pre-release

    Nothing published for this version

  33. v0.11.0-alpha.0.20260302043122-012b8c419e2d2 Mar 2026pre-release

    Nothing published for this version

  34. v0.11.0-alpha23 Feb 2026pre-release

    Nothing published for this version

  35. v0.10.218 Jul 2026
    Release notes
    • Fixed an issue with FreeBSD 15 or later (#480)
    Open source →
  36. v0.10.124 May 2026

    Nothing published for this version

  37. v0.10.023 Feb 2026

    Nothing published for this version

  38. v0.10.0-alpha.516 Feb 2026pre-release

    Nothing published for this version

  39. v0.10.0-alpha.4.0.20260216092340-585a4c52746416 Feb 2026pre-release

    Nothing published for this version

  40. v0.10.0-alpha.4.0.20260214141004-d8dcb88add9014 Feb 2026pre-release

    Nothing published for this version

  41. v0.10.0-alpha.4.0.20260212124526-587d406ac10412 Feb 2026pre-release

    Nothing published for this version

  42. v0.10.0-alpha.4.0.20260207193126-2fe737a44c717 Feb 2026pre-release

    Nothing published for this version

  43. v0.10.0-alpha.430 Jan 2026pre-release

    Nothing published for this version

  44. v0.10.0-alpha.3.0.20260130031131-49bede11a66030 Jan 2026pre-release

    Nothing published for this version

  45. v0.10.0-alpha.3.0.20260115160133-57859678ab7215 Jan 2026pre-release

    Nothing published for this version

  46. v0.10.0-alpha.3.0.20260102153238-200df6041cff2 Jan 2026pre-release

    Nothing published for this version

  47. v0.10.0-alpha.3.0.20251231181614-6b665882fe5431 Dec 2025pre-release

    Nothing published for this version

  48. v0.10.0-alpha.3.0.20251218151152-f6151bf170c618 Dec 2025pre-release

    Nothing published for this version

  49. v0.10.0-alpha.3.0.20251202024657-a031f60607152 Dec 2025pre-release

    Nothing published for this version

  50. v0.10.0-alpha.331 Oct 2025pre-release

    Nothing published for this version

  51. v0.10.0-alpha.2.0.20251031180950-25e25ad2aab131 Oct 2025pre-release

    Nothing published for this version

  52. v0.10.0-alpha.2.0.20251029144411-1bb446066e9929 Oct 2025pre-release

    Nothing published for this version

  53. v0.10.0-alpha.2.0.20251027033332-4956991301fb27 Oct 2025pre-release

    Nothing published for this version

  54. v0.10.0-alpha.2.0.20251016195808-4ad96f670df516 Oct 2025pre-release

    Nothing published for this version

  55. v0.10.0-alpha.2.0.20251008125647-8e5400e7a1c38 Oct 2025pre-release

    Nothing published for this version

  56. v0.10.0-alpha.230 Sept 2025pre-release

    Nothing published for this version

  57. v0.10.0-alpha.1.0.20250930153339-73cecc9f412730 Sept 2025pre-release

    Nothing published for this version

  58. v0.10.0-alpha.123 Sept 2025pre-release

    Nothing published for this version

  59. v0.10.0-alpha20 Sept 2025pre-release

    Nothing published for this version

  60. v0.9.131 Oct 2025

    Nothing published for this version