diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8c33bef..0266158 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -87,6 +87,8 @@ jobs: - { goarch: loong64, qemu: qemu-loongarch64-static } - { goarch: ppc64le, qemu: qemu-ppc64le-static } - { goarch: s390x, qemu: qemu-s390x-static } + # 32-bit: int is 32 bits. + - { goarch: arm, qemu: qemu-arm-static } steps: - uses: actions/checkout@v7 - uses: actions/setup-go@v7 @@ -98,6 +100,25 @@ jobs: GOOS=linux GOARCH=${{ matrix.goarch }} go vet -tags rbgo_core ./... GOARCH=${{ matrix.goarch }} go test -tags rbgo_core -short -exec=${{ matrix.qemu }} ./... + # 386 runs natively on the amd64 runner (the kernel executes 32-bit x86 + # binaries), not under qemu-i386, whose emulation loses x87/SSE state across + # preemption. + arch-386: + name: arch 386 + runs-on: ubuntu-latest + env: + CGO_ENABLED: "0" + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-go@v7 + with: + go-version: '1.27.3' + - name: Vet + test (GOARCH=386), both builds + run: | + GOARCH=386 go vet ./... + GOARCH=386 go test ./... + GOARCH=386 go test -tags rbgo_core ./... + cross: name: compile on every target rbgo builds for runs-on: ubuntu-latest @@ -110,7 +131,7 @@ jobs: shell: bash run: | fail=0 - for t in linux/amd64 linux/arm64 linux/riscv64 linux/loong64 linux/ppc64le linux/s390x \ + for t in linux/amd64 linux/arm64 linux/riscv64 linux/loong64 linux/ppc64le linux/s390x linux/386 linux/arm \ darwin/amd64 darwin/arm64 windows/amd64 windows/arm64 wasip1/wasm js/wasm; do os=${t%/*}; arch=${t#*/} for tags in "" rbgo_core; do diff --git a/README.md b/README.md index 226c771..2a18c13 100644 --- a/README.md +++ b/README.md @@ -455,8 +455,9 @@ go-notebook. rbgo builds with or without its gem bindings; `-tags rbgo_core` leaves the gems out (the language and the numeric stack only), which is what a notebook worker or a browser page wants. These bindings work, and are tested, on both. -rbgo compiles for linux, darwin and windows on 64-bit targets and for wasm -(js and wasip1), and so does this module. +rbgo compiles for linux, darwin and windows on 64-bit targets, for 32-bit +linux (`386`, `arm`) and for wasm (js and wasip1), and so does this module. +CI runs the suite natively on `386` and under QEMU on 32-bit `arm`. ## License diff --git a/go.mod b/go.mod index 653d918..4c6e7f3 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.27.2 require ( github.com/go-dataframe/dataframe v0.1.0 - github.com/go-embedded-ruby/ruby v0.8.0 + github.com/go-embedded-ruby/ruby v0.8.2 github.com/go-ndarray/ndarray v0.12.0 github.com/go-numerics/integrate v0.2.0 github.com/go-numerics/optimize v0.2.0 @@ -147,7 +147,7 @@ require ( github.com/go-ruby-capistrano/capistrano v0.0.0-20260927173236-3b90af3c6888 // indirect github.com/go-ruby-capybara/capybara v0.0.0-20260910084630-0731c9ea8d6d // indirect github.com/go-ruby-cgi/cgi v0.0.0-20260916091525-3d328d3ff447 // indirect - github.com/go-ruby-chronic/chronic v0.0.0-20260916091614-bd47d560b6f4 // indirect + github.com/go-ruby-chronic/chronic v0.1.0 // indirect github.com/go-ruby-cmath/cmath v0.0.0-20260916091648-4963ab4145f7 // indirect github.com/go-ruby-concurrent-ruby/concurrent-ruby v0.0.0-20260916091840-b820f7a57284 // indirect github.com/go-ruby-confd/confd v0.0.0-20260825131031-1ac780d51c57 // indirect diff --git a/go.sum b/go.sum index 3ceae99..97f1e96 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ github.com/go-dataframe/dataframe v0.1.0 h1:l92liqTQ/StH5rurH2ipgvXunMbtCJAkDNWE github.com/go-dataframe/dataframe v0.1.0/go.mod h1:rAJdylzFafSOhTAV6z+gSs4i0D9M9XKMKqhWUjIEolk= github.com/go-datetime/dates v0.1.0 h1:Uj8TaTZ09DXdq75EGQ/teFdrXpfVAC3ZDHAPQvPTnaA= github.com/go-datetime/dates v0.1.0/go.mod h1:KeZ1wUeMScJD6HOvj3hINwbsB+GCSFjJLWcJhrBlwIo= -github.com/go-embedded-ruby/ruby v0.8.0 h1:09E9fzAQutBwsfBR7Sm3aAEmeYiG+I6JQBzVTdiSxE8= -github.com/go-embedded-ruby/ruby v0.8.0/go.mod h1:g7gQohmhj96s4qiaoTtFTa2Hbfbnh0QTQej1w81LxOE= +github.com/go-embedded-ruby/ruby v0.8.2 h1:vj4a+NJBb7Ou6MaBWARMEdacYtnEK7NHS2Wq1Guqr9U= +github.com/go-embedded-ruby/ruby v0.8.2/go.mod h1:6g5bwN6eYV00ctKi3XxhXggPxBV37PGaucMFf3LFLZc= github.com/go-encryptions/unixcrypt v0.1.0 h1:XWk4h9uCDd+T2hovOzgO0B2vOdJvAwi9nbOBVb3o62c= github.com/go-encryptions/unixcrypt v0.1.0/go.mod h1:B1dJSjz3kdxvP7cpi5xSzyxezgBijmtNCUeCKqqDd3o= github.com/go-facter/facter v0.0.0-20260830120958-454b72e642ab h1:bXPxQDhADpiF/S/8jlRFhVisFPRaxPtPgjibLnOzvsE= @@ -339,8 +339,8 @@ github.com/go-ruby-capybara/capybara v0.0.0-20260910084630-0731c9ea8d6d h1:eDH85 github.com/go-ruby-capybara/capybara v0.0.0-20260910084630-0731c9ea8d6d/go.mod h1:igWLNrYKtKkssHOzlXm1YFoPH0Yi6LGazOSA4Obo6T0= github.com/go-ruby-cgi/cgi v0.0.0-20260916091525-3d328d3ff447 h1:o6V4n2Td46cjbCwPN0pZnUVFfHbC648AnYtMQVU9O60= github.com/go-ruby-cgi/cgi v0.0.0-20260916091525-3d328d3ff447/go.mod h1:TAIxiFMAj68dWClzEmDY1vCSNFiPfupD3HRADRXrkZw= -github.com/go-ruby-chronic/chronic v0.0.0-20260916091614-bd47d560b6f4 h1:Z2aDUPl3f6fQIJ4Y+9KCE16p77dAxJBBJjR3j974A5o= -github.com/go-ruby-chronic/chronic v0.0.0-20260916091614-bd47d560b6f4/go.mod h1:6H3V0VdtD8NB/WEt+8+bIM0n78g45H8HDAnWNwJByCM= +github.com/go-ruby-chronic/chronic v0.1.0 h1:3rar6r+rLVFNmyGpTPZvMbjEnnRh9JI2vNI11048A70= +github.com/go-ruby-chronic/chronic v0.1.0/go.mod h1:hhudekjG06iXIHV99juSwG+aOJ+Jv7dNS7tLzEX8ywg= github.com/go-ruby-cmath/cmath v0.0.0-20260916091648-4963ab4145f7 h1:2tUvNHeR8mL8NcJyxTZxaaujvusucfBsnZAQg18D9Zg= github.com/go-ruby-cmath/cmath v0.0.0-20260916091648-4963ab4145f7/go.mod h1:djGUM2WR7AdnZqeRg/OQ4xVzmsl8PAWQKILX2n/foas= github.com/go-ruby-concurrent-ruby/concurrent-ruby v0.0.0-20260916091840-b820f7a57284 h1:hIdCXEwLLYl+NPKBCbI3aFul6ARXfgEczxlA0hIDOkY=