From adc3520d794657f624f49f3c5b1cb558333ce739 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 00:05:56 +0000 Subject: [PATCH] Bump github.com/ncruces/go-sqlite3 from 0.7.2 to 0.11.2 Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.7.2 to 0.11.2. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.7.2...v0.11.2) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 8 +- go.sum | 18 +- .../github.com/ncruces/go-sqlite3/README.md | 128 ++-- .../github.com/ncruces/go-sqlite3/backup.go | 32 +- vendor/github.com/ncruces/go-sqlite3/blob.go | 57 +- vendor/github.com/ncruces/go-sqlite3/conn.go | 177 ++--- vendor/github.com/ncruces/go-sqlite3/const.go | 55 +- .../github.com/ncruces/go-sqlite3/context.go | 220 +++++++ .../ncruces/go-sqlite3/driver/driver.go | 353 +++++++--- .../ncruces/go-sqlite3/driver/savepoint.go | 27 + .../ncruces/go-sqlite3/driver/time.go | 14 +- .../ncruces/go-sqlite3/embed/README.md | 13 +- .../ncruces/go-sqlite3/embed/build.sh | 13 +- .../ncruces/go-sqlite3/embed/exports.txt | 124 ++-- .../ncruces/go-sqlite3/embed/sqlite3.wasm | Bin 1444429 -> 1470071 bytes vendor/github.com/ncruces/go-sqlite3/error.go | 57 +- vendor/github.com/ncruces/go-sqlite3/func.go | 175 +++++ vendor/github.com/ncruces/go-sqlite3/go.work | 6 + .../github.com/ncruces/go-sqlite3/go.work.sum | 4 + .../ncruces/go-sqlite3/internal/util/const.go | 1 + .../ncruces/go-sqlite3/internal/util/error.go | 15 +- .../ncruces/go-sqlite3/internal/util/func.go | 26 + .../go-sqlite3/internal/util/handle.go | 75 +++ .../ncruces/go-sqlite3/internal/util/mem.go | 24 + vendor/github.com/ncruces/go-sqlite3/json.go | 46 ++ .../github.com/ncruces/go-sqlite3/module.go | 352 ---------- .../github.com/ncruces/go-sqlite3/pointer.go | 14 + vendor/github.com/ncruces/go-sqlite3/quote.go | 112 ++++ .../github.com/ncruces/go-sqlite3/sqlite.go | 316 +++++++++ vendor/github.com/ncruces/go-sqlite3/stmt.go | 317 ++++++--- vendor/github.com/ncruces/go-sqlite3/time.go | 66 +- vendor/github.com/ncruces/go-sqlite3/tx.go | 61 +- vendor/github.com/ncruces/go-sqlite3/value.go | 188 ++++++ .../ncruces/go-sqlite3/vfs/README.md | 6 +- .../github.com/ncruces/go-sqlite3/vfs/api.go | 29 +- .../ncruces/go-sqlite3/vfs/clear.go | 9 + .../ncruces/go-sqlite3/vfs/const.go | 16 +- .../github.com/ncruces/go-sqlite3/vfs/file.go | 10 +- .../github.com/ncruces/go-sqlite3/vfs/lock.go | 28 +- .../ncruces/go-sqlite3/vfs/os_bsd.go | 6 +- .../ncruces/go-sqlite3/vfs/os_darwin.go | 7 +- .../ncruces/go-sqlite3/vfs/os_linux.go | 2 + .../ncruces/go-sqlite3/vfs/os_nolock.go | 33 + .../ncruces/go-sqlite3/vfs/os_ofd.go | 6 +- .../ncruces/go-sqlite3/vfs/os_std_access.go | 36 ++ .../vfs/{os_other.go => os_std_alloc.go} | 6 +- .../ncruces/go-sqlite3/vfs/os_std_mode.go | 14 + .../ncruces/go-sqlite3/vfs/os_std_open.go | 12 + .../ncruces/go-sqlite3/vfs/os_std_sync.go | 9 + .../ncruces/go-sqlite3/vfs/os_unix.go | 69 +- .../ncruces/go-sqlite3/vfs/os_unix2.go | 82 +++ .../ncruces/go-sqlite3/vfs/os_windows.go | 68 +- .../ncruces/go-sqlite3/vfs/registry.go | 6 +- .../github.com/ncruces/go-sqlite3/vfs/vfs.go | 98 +-- vendor/github.com/ncruces/go-sqlite3/vtab.go | 605 ++++++++++++++++++ .../github.com/ncruces/julianday/julianday.go | 4 +- .../readline/inputrc/testdata/spaces.inputrc | 12 + vendor/github.com/tetratelabs/wazero/Makefile | 6 + .../tetratelabs/wazero/RATIONALE.md | 179 +++++- .../github.com/tetratelabs/wazero/config.go | 4 +- .../fsapi => experimental/sys}/dir.go | 47 +- .../wazero/experimental/sys/errno.go | 3 + .../wazero/experimental/sys/file.go | 317 +++++++++ .../fsapi => experimental/sys}/fs.go | 131 ++-- .../fsapi => experimental/sys}/oflag.go | 2 +- .../wazero/experimental/sys/syscall_errno.go | 52 +- .../sys/syscall_errno_notwindows.go | 15 +- .../experimental/sys/syscall_errno_plan9.go | 5 + .../experimental/sys/syscall_errno_windows.go | 3 +- .../wazero/experimental/sys/time.go | 10 + .../wazero/experimental/sys/unimplemented.go | 160 +++++ .../github.com/tetratelabs/wazero/fsconfig.go | 27 +- .../imports/wasi_snapshot_preview1/fs.go | 104 +-- .../imports/wasi_snapshot_preview1/poll.go | 99 ++- .../imports/wasi_snapshot_preview1/sock.go | 7 +- .../testdata/tinygo/wasi.go | 2 + .../wazero/internal/engine/compiler/engine.go | 104 +-- .../internal/engine/compiler/engine_cache.go | 9 +- .../internal/engine/compiler/impl_amd64.go | 6 +- .../engine/interpreter/interpreter.go | 22 +- .../tetratelabs/wazero/internal/fsapi/file.go | 348 +--------- .../tetratelabs/wazero/internal/fsapi/poll.go | 20 + .../wazero/internal/fsapi/unimplemented.go | 188 +----- .../wazero/internal/platform/fdset.go | 25 - .../wazero/internal/platform/fdset_darwin.go | 8 - .../wazero/internal/platform/fdset_linux.go | 8 - .../internal/platform/fdset_unsupported.go | 10 - .../wazero/internal/platform/fdset_windows.go | 239 ------- .../tetratelabs/wazero/internal/sock/sock.go | 9 +- .../wazero/internal/sock/sock_supported.go | 11 + .../wazero/internal/sock/sock_unsupported.go | 10 + .../tetratelabs/wazero/internal/sys/fs.go | 64 +- .../tetratelabs/wazero/internal/sys/lazy.go | 103 +-- .../tetratelabs/wazero/internal/sys/stdio.go | 39 +- .../tetratelabs/wazero/internal/sys/sys.go | 10 +- .../wazero/internal/sysfs/adapter.go | 104 +-- .../tetratelabs/wazero/internal/sysfs/dir.go | 5 +- .../wazero/internal/sysfs/dirfs.go | 44 +- .../tetratelabs/wazero/internal/sysfs/file.go | 133 ++-- .../wazero/internal/sysfs/file_test.go | 199 +++--- .../wazero/internal/sysfs/file_unix.go | 7 +- .../wazero/internal/sysfs/file_unsupported.go | 12 +- .../wazero/internal/sysfs/file_windows.go | 5 + .../wazero/internal/sysfs/futimens.go | 116 +--- .../wazero/internal/sysfs/futimens_darwin.go | 24 +- .../wazero/internal/sysfs/futimens_linux.go | 28 +- .../internal/sysfs/futimens_unsupported.go | 14 +- .../wazero/internal/sysfs/futimens_windows.go | 46 +- .../tetratelabs/wazero/internal/sysfs/ino.go | 22 + .../wazero/internal/sysfs/ino_plan9.go | 15 + .../wazero/internal/sysfs/ino_windows.go | 28 + .../wazero/internal/sysfs/nonblock_plan9.go | 11 + .../wazero/internal/sysfs/nonblock_unix.go | 10 +- .../wazero/internal/sysfs/nonblock_windows.go | 10 +- .../wazero/internal/sysfs/oflag.go | 22 +- .../wazero/internal/sysfs/open_file_darwin.go | 14 +- .../internal/sysfs/open_file_freebsd.go | 12 +- .../wazero/internal/sysfs/open_file_linux.go | 16 +- .../internal/sysfs/open_file_notwindows.go | 7 +- .../wazero/internal/sysfs/open_file_sun.go | 16 +- .../internal/sysfs/open_file_unsupported.go | 8 +- .../internal/sysfs/open_file_windows.go | 11 +- .../wazero/internal/sysfs/osfile.go | 80 +-- .../tetratelabs/wazero/internal/sysfs/poll.go | 18 + .../wazero/internal/sysfs/poll_darwin.go | 55 ++ .../wazero/internal/sysfs/poll_darwin.s | 8 + .../wazero/internal/sysfs/poll_linux.go | 57 ++ .../wazero/internal/sysfs/poll_unsupported.go | 13 + .../wazero/internal/sysfs/poll_windows.go | 224 +++++++ .../wazero/internal/sysfs/readfs.go | 106 ++- .../wazero/internal/sysfs/rename.go | 2 +- .../wazero/internal/sysfs/rename_plan9.go | 14 + .../wazero/internal/sysfs/select.go | 36 -- .../wazero/internal/sysfs/select_darwin.go | 45 -- .../wazero/internal/sysfs/select_darwin.s | 8 - .../wazero/internal/sysfs/select_linux.go | 18 - .../internal/sysfs/select_unsupported.go | 14 - .../wazero/internal/sysfs/select_windows.go | 173 ----- .../tetratelabs/wazero/internal/sysfs/sock.go | 5 +- .../wazero/internal/sysfs/sock_unix.go | 61 +- .../wazero/internal/sysfs/sock_windows.go | 108 ++-- .../wazero/internal/sysfs/stat_bsd.go | 12 - .../wazero/internal/sysfs/stat_linux.go | 12 - .../wazero/internal/sysfs/stat_unsupported.go | 8 - .../wazero/internal/sysfs/stat_windows.go | 17 - .../wazero/internal/sysfs/sync_windows.go | 2 +- .../wazero/internal/sysfs/unlink.go | 2 +- .../wazero/internal/sysfs/unlink_plan9.go | 12 + .../wazero/internal/sysfs/unlink_windows.go | 2 - .../wazero/internal/wasip1/errno.go | 2 + .../wazero/internal/wasm/engine.go | 10 +- .../wazero/internal/wasm/instruction.go | 1 - .../wazero/internal/wasm/module_instance.go | 10 +- .../internal/wasm/module_instance_lookup.go | 73 +++ .../tetratelabs/wazero/internal/wasm/store.go | 34 +- .../github.com/tetratelabs/wazero/runtime.go | 8 +- vendor/golang.org/x/sync/errgroup/go120.go | 1 - .../golang.org/x/sync/errgroup/pre_go120.go | 1 - vendor/modules.txt | 14 +- 159 files changed, 5514 insertions(+), 3364 deletions(-) create mode 100644 vendor/github.com/ncruces/go-sqlite3/context.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/func.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/go.work create mode 100644 vendor/github.com/ncruces/go-sqlite3/go.work.sum create mode 100644 vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/json.go delete mode 100644 vendor/github.com/ncruces/go-sqlite3/module.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/pointer.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/quote.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/sqlite.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/value.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/clear.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go rename vendor/github.com/ncruces/go-sqlite3/vfs/{os_other.go => os_std_alloc.go} (63%) create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go create mode 100644 vendor/github.com/ncruces/go-sqlite3/vtab.go create mode 100644 vendor/github.com/reeflective/readline/inputrc/testdata/spaces.inputrc rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/dir.go (62%) create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/file.go rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/fs.go (67%) rename vendor/github.com/tetratelabs/wazero/{internal/fsapi => experimental/sys}/oflag.go (99%) create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/time.go create mode 100644 vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go delete mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go create mode 100644 vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go diff --git a/go.mod b/go.mod index 039e7c2d48..0d8c0ab1d2 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/miekg/dns v1.1.57 github.com/moloch--/asciicast v0.1.0 github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 - github.com/ncruces/go-sqlite3 v0.7.2 + github.com/ncruces/go-sqlite3 v0.11.2 github.com/reeflective/console v0.1.6 github.com/reeflective/readline v1.0.13 github.com/rsteube/carapace v0.36.3 @@ -41,7 +41,7 @@ require ( github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - github.com/tetratelabs/wazero v1.3.1 + github.com/tetratelabs/wazero v1.5.0 github.com/things-go/go-socks5 v0.0.3 github.com/xlab/treeprint v1.2.0 github.com/yiya1989/sshkrb5 v0.0.1 @@ -143,7 +143,7 @@ require ( github.com/mdlayher/socket v0.5.0 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect github.com/mitchellh/go-ps v1.0.0 // indirect - github.com/ncruces/julianday v0.1.5 // indirect + github.com/ncruces/julianday v1.0.0 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -167,7 +167,7 @@ require ( go4.org/mem v0.0.0-20220726221520-4f986261bf13 // indirect go4.org/netipx v0.0.0-20230824141953-6213f710f925 // indirect golang.org/x/mod v0.13.0 // indirect - golang.org/x/sync v0.4.0 // indirect + golang.org/x/sync v0.5.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.14.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect diff --git a/go.sum b/go.sum index 77cccae63e..3ea3acee00 100644 --- a/go.sum +++ b/go.sum @@ -329,10 +329,10 @@ github.com/moloch--/asciicast v0.1.0 h1:eBOJwuFKSk447s/kPs9MWsc4kAl5HmuKIDLDYD6/ github.com/moloch--/asciicast v0.1.0/go.mod h1:OckO16UDLgxVLclrCnbocL1ix15Br/8Xv/caBoYq98o= github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 h1:m3yCfV8Vqp4MF1B+gPPjbjINdufl0UXqyYplE0aGhx8= github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945/go.mod h1:1grVt4HaTofvhFUZYtofeRbGXfczNwCie9MYoM4lP/o= -github.com/ncruces/go-sqlite3 v0.7.2 h1:K7jU4rnUxFdUsbEL+B0Xc+VexLTEwGSO6Qh91Qh4hYc= -github.com/ncruces/go-sqlite3 v0.7.2/go.mod h1:t3dP4AP9rJddU+ffFv0h6fWyeOCEhjxrYc1nsYG7aQI= -github.com/ncruces/julianday v0.1.5 h1:hDJ9ejiMp3DHsoZ5KW4c1lwfMjbARS7u/gbYcd0FBZk= -github.com/ncruces/julianday v0.1.5/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= +github.com/ncruces/go-sqlite3 v0.11.2 h1:2QYfjUXHbhL3nSE6BJixiseC2RtsbiNGk5o+h9MVHlA= +github.com/ncruces/go-sqlite3 v0.11.2/go.mod h1:zaYJ6xP+EQiWJCa3nd3h28cD8DuSIcIqh+LrJMrBN9k= +github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M= +github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde h1:x0TT0RDC7UhAVbbWWBzr41ElhJx5tXPWkIHA2HWPRuw= github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= @@ -352,8 +352,6 @@ github.com/reeflective/carapace v0.25.2-0.20230602202234-e8d757e458ca h1:tD797h1 github.com/reeflective/carapace v0.25.2-0.20230602202234-e8d757e458ca/go.mod h1:jkLt41Ne2TD2xPuMdX/2O05Smhy8vMgG7O2TYvC0yOc= github.com/reeflective/console v0.1.6 h1:BhhvQU/m8QOpaIRzrXfwcbtkGQJX9jVR5qIqAy/Mcuw= github.com/reeflective/console v0.1.6/go.mod h1:7owTBE9k2lg2QpVw7g4DrK1HxEgr/5DQCmA3O2Znoek= -github.com/reeflective/readline v1.0.11 h1:4+aiebj7a89hTRJOMM98H+md1Kxu+v1XkfdCs0n6odQ= -github.com/reeflective/readline v1.0.11/go.mod h1:mcD0HxNVJVteVwDm9caXKg52nQACVyfh8EyuBmgVlzY= github.com/reeflective/readline v1.0.13 h1:TeJmYw9B7VRPZWfNExr9QHxL1m0iSicyqBSQIRn39Ss= github.com/reeflective/readline v1.0.13/go.mod h1:3iOe/qyb2jEy0KqLrNlb/CojBVqxga9ACqz/VU22H6A= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -406,8 +404,8 @@ github.com/tailscale/wireguard-go v0.0.0-20231101022006-db7604d1aa90 h1:lMGYrokO github.com/tailscale/wireguard-go v0.0.0-20231101022006-db7604d1aa90/go.mod h1:BOm5fXUBFM+m9woLNBoxI9TaBXXhGNP50LX/TGIvGb4= github.com/tcnksm/go-httpstat v0.2.0 h1:rP7T5e5U2HfmOBmZzGgGZjBQ5/GluWUylujl0tJ04I0= github.com/tcnksm/go-httpstat v0.2.0/go.mod h1:s3JVJFtQxtBEBC9dwcdTTXS9xFnM3SXAZwPG41aurT8= -github.com/tetratelabs/wazero v1.3.1 h1:rnb9FgOEQRLLR8tgoD1mfjNjMhFeWRUk+a4b4j/GpUM= -github.com/tetratelabs/wazero v1.3.1/go.mod h1:wYx2gNRg8/WihJfSDxA1TIL8H+GkfLYm+bIfbblu9VQ= +github.com/tetratelabs/wazero v1.5.0 h1:Yz3fZHivfDiZFUXnWMPUoiW7s8tC1sjdBtlJn08qYa0= +github.com/tetratelabs/wazero v1.5.0/go.mod h1:0U0G41+ochRKoPKCJlh0jMg1CHkyfK8kDqiirMmKY8A= github.com/thedevsaddam/gojsonq/v2 v2.5.2 h1:CoMVaYyKFsVj6TjU6APqAhAvC07hTI6IQen8PHzHYY0= github.com/thedevsaddam/gojsonq/v2 v2.5.2/go.mod h1:bv6Xa7kWy82uT0LnXPE2SzGqTj33TAEeR560MdJkiXs= github.com/things-go/go-socks5 v0.0.3 h1:QtlIhkwDuLNCwW3wnt2uTjn1mQzpyjnwct2xdPuqroI= @@ -492,8 +490,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/ncruces/go-sqlite3/README.md b/vendor/github.com/ncruces/go-sqlite3/README.md index 8a06a28516..a934b45ec4 100644 --- a/vendor/github.com/ncruces/go-sqlite3/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/README.md @@ -4,84 +4,118 @@ [![Go Report](https://goreportcard.com/badge/github.com/ncruces/go-sqlite3)](https://goreportcard.com/report/github.com/ncruces/go-sqlite3) [![Go Coverage](https://github.com/ncruces/go-sqlite3/wiki/coverage.svg)](https://github.com/ncruces/go-sqlite3/wiki/Test-coverage-report) -Go module `github.com/ncruces/go-sqlite3` wraps a [WASM](https://webassembly.org/) build of [SQLite](https://sqlite.org/), -and uses [wazero](https://wazero.io/) to provide `cgo`-free SQLite bindings. - -- Package [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3) -wraps the [C SQLite API](https://www.sqlite.org/cintro.html) -([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3#example-package)). -- Package [`github.com/ncruces/go-sqlite3/driver`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver) -provides a [`database/sql`](https://pkg.go.dev/database/sql) driver -([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver#example-package)). -- Package [`github.com/ncruces/go-sqlite3/embed`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/embed) -embeds a build of SQLite into your application. -- Package [`github.com/ncruces/go-sqlite3/vfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs) -wraps the [C SQLite VFS API](https://www.sqlite.org/vfs.html) and provides a pure Go implementation. -- Package [`github.com/ncruces/go-sqlite3/gormlite`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/gormlite) -provides a [GORM](https://gorm.io) driver. +Go module `github.com/ncruces/go-sqlite3` is `cgo`-free [SQLite](https://sqlite.org/) wrapper.\ +It provides a [`database/sql`](https://pkg.go.dev/database/sql) compatible driver, +as well as direct access to most of the [C SQLite API](https://sqlite.org/cintro.html). + +It wraps a [WASM](https://webassembly.org/) build of SQLite, and uses [wazero](https://wazero.io/) as the runtime.\ +Go, wazero and [`x/sys`](https://pkg.go.dev/golang.org/x/sys) are the _only_ runtime dependencies. + +### Packages + +- [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3) + wraps the [C SQLite API](https://sqlite.org/cintro.html) + ([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3#example-package)). +- [`github.com/ncruces/go-sqlite3/driver`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver) + provides a [`database/sql`](https://pkg.go.dev/database/sql) driver + ([example usage](https://pkg.go.dev/github.com/ncruces/go-sqlite3/driver#example-package)). +- [`github.com/ncruces/go-sqlite3/embed`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/embed) + embeds a build of SQLite into your application. +- [`github.com/ncruces/go-sqlite3/vfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs) + wraps the [C SQLite VFS API](https://sqlite.org/vfs.html) and provides a pure Go implementation. +- [`github.com/ncruces/go-sqlite3/gormlite`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/gormlite) + provides a [GORM](https://gorm.io) driver. + +### Extensions + +- [`github.com/ncruces/go-sqlite3/ext/array`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/array) + provides the [`array`](https://sqlite.org/carray.html) table-valued function. +- [`github.com/ncruces/go-sqlite3/ext/blobio`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/blobio) + simplifies [incremental BLOB I/O](https://sqlite.org/c3ref/blob_open.html). +- [`github.com/ncruces/go-sqlite3/ext/csv`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/csv) + reads [comma-separated values](https://sqlite.org/csv.html). +- [`github.com/ncruces/go-sqlite3/ext/fileio`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/fileio) + reads, writes and lists files. +- [`github.com/ncruces/go-sqlite3/ext/lines`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/lines) + reads data [line-by-line](https://github.com/asg017/sqlite-lines). +- [`github.com/ncruces/go-sqlite3/ext/pivot`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/pivot) + creates [pivot tables](https://github.com/jakethaw/pivot_vtab). +- [`github.com/ncruces/go-sqlite3/ext/statement`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/statement) + creates [parameterized views](https://github.com/0x09/sqlite-statement-vtab). +- [`github.com/ncruces/go-sqlite3/ext/stats`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/stats) + provides [statistics](https://www.oreilly.com/library/view/sql-in-a/9780596155322/ch04s02.html) functions. +- [`github.com/ncruces/go-sqlite3/ext/unicode`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/ext/unicode) + provides [Unicode aware](https://sqlite.org/src/dir/ext/icu) functions. +- [`github.com/ncruces/go-sqlite3/vfs/memdb`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs/memdb) + implements an in-memory VFS. +- [`github.com/ncruces/go-sqlite3/vfs/readervfs`](https://pkg.go.dev/github.com/ncruces/go-sqlite3/vfs/readervfs) + implements a VFS for immutable databases. + +### Advanced features + +- [x] [incremental BLOB I/O](https://sqlite.org/c3ref/blob_open.html) +- [x] [nested transactions](https://sqlite.org/lang_savepoint.html) +- [x] [custom functions](https://sqlite.org/c3ref/create_function.html) +- [x] [virtual tables](https://sqlite.org/vtab.html) +- [x] [custom VFSes](https://sqlite.org/vfs.html) +- [x] [online backup](https://sqlite.org/backup.html) +- [x] [JSON support](https://sqlite.org/json1.html) +- [x] [Unicode support](https://sqlite.org/src/dir/ext/icu) ### Caveats -This module replaces the SQLite [OS Interface](https://www.sqlite.org/vfs.html) +This module replaces the SQLite [OS Interface](https://sqlite.org/vfs.html) (aka VFS) with a [pure Go](vfs/) implementation. This has benefits, but also comes with some drawbacks. #### Write-Ahead Logging Because WASM does not support shared memory, -[WAL](https://www.sqlite.org/wal.html) support is [limited](https://www.sqlite.org/wal.html#noshm). +[WAL](https://sqlite.org/wal.html) support is [limited](https://sqlite.org/wal.html#noshm). -To work around this limitation, SQLite is compiled with -[`SQLITE_DEFAULT_LOCKING_MODE=1`](https://www.sqlite.org/compile.html#default_locking_mode), -making `EXCLUSIVE` the default locking mode. -For non-WAL databases, `NORMAL` locking mode can be activated with -[`PRAGMA locking_mode=NORMAL`](https://www.sqlite.org/pragma.html#pragma_locking_mode). +To work around this limitation, SQLite is [patched](sqlite3/locking_mode.patch) +to always use `EXCLUSIVE` locking mode for WAL databases. Because connection pooling is incompatible with `EXCLUSIVE` locking mode, -the `database/sql` driver defaults to `NORMAL` locking mode. -To open WAL databases, or use `EXCLUSIVE` locking mode, -disable connection pooling by calling +to use the [`database/sql`](https://pkg.go.dev/database/sql) driver +with WAL mode databases you should disable connection pooling by calling [`db.SetMaxOpenConns(1)`](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns). -#### POSIX Advisory Locks +#### File Locking -POSIX advisory locks, which SQLite uses, are -[broken by design](https://www.sqlite.org/src/artifact/90c4fa?ln=1073-1161). +POSIX advisory locks, which SQLite uses on Unix, are +[broken by design](https://sqlite.org/src/artifact/2e8b12?ln=1073-1161). On Linux, macOS and illumos, this module uses [OFD locks](https://www.gnu.org/software/libc/manual/html_node/Open-File-Description-Locks.html) to synchronize access to database files. -OFD locks are fully compatible with process-associated POSIX advisory locks. +OFD locks are fully compatible with POSIX advisory locks. On BSD Unixes, this module uses [BSD locks](https://man.freebsd.org/cgi/man.cgi?query=flock&sektion=2). -BSD locks may _not_ be compatible with process-associated POSIX advisory locks. +On BSD Unixes, BSD locks are fully compatible with POSIX advisory locks. + +On Windows, this module uses `LockFile`, `LockFileEx`, and `UnlockFile`, +like SQLite. + +On all other platforms, file locking is not supported, and you must use +[`nolock=1`](https://sqlite.org/uri.html#urinolock) +to open database files. +To use the [`database/sql`](https://pkg.go.dev/database/sql) driver +with `nolock=1` you must disable connection pooling by calling +[`db.SetMaxOpenConns(1)`](https://pkg.go.dev/database/sql#DB.SetMaxOpenConns). #### Testing -The pure Go VFS is tested by running an unmodified build of SQLite's +The pure Go VFS is tested by running SQLite's [mptest](https://github.com/sqlite/sqlite/blob/master/mptest/mptest.c) -on Linux, macOS and Windows. +on Linux, macOS, Windows and FreeBSD. Performance is tested by running [speedtest1](https://github.com/sqlite/sqlite/blob/master/test/speedtest1.c). -### Roadmap - -- [ ] advanced SQLite features - - [x] nested transactions - - [x] incremental BLOB I/O - - [x] online backup - - [ ] session extension -- [ ] custom VFSes - - [x] custom VFS API - - [x] in-memory VFS - - [x] read-only VFS, wrapping an [`io.ReaderAt`](https://pkg.go.dev/io#ReaderAt) - - [ ] cloud-based VFS, based on [Cloud Backed SQLite](https://sqlite.org/cloudsqlite/doc/trunk/www/index.wiki) -- [ ] custom SQL functions - ### Alternatives - [`modernc.org/sqlite`](https://pkg.go.dev/modernc.org/sqlite) - [`crawshaw.io/sqlite`](https://pkg.go.dev/crawshaw.io/sqlite) - [`github.com/mattn/go-sqlite3`](https://pkg.go.dev/github.com/mattn/go-sqlite3) -- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) \ No newline at end of file +- [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) diff --git a/vendor/github.com/ncruces/go-sqlite3/backup.go b/vendor/github.com/ncruces/go-sqlite3/backup.go index 27a71a9707..5fc5cf1aea 100644 --- a/vendor/github.com/ncruces/go-sqlite3/backup.go +++ b/vendor/github.com/ncruces/go-sqlite3/backup.go @@ -2,7 +2,7 @@ package sqlite3 // Backup is an handle to an ongoing online backup operation. // -// https://www.sqlite.org/c3ref/backup.html +// https://sqlite.org/c3ref/backup.html type Backup struct { c *Conn handle uint32 @@ -15,7 +15,7 @@ type Backup struct { // and blocks until the entire backup is complete. // Use [Conn.BackupInit] for incremental backup. // -// https://www.sqlite.org/backup.html +// https://sqlite.org/backup.html func (src *Conn) Backup(srcDB, dstURI string) error { b, err := src.BackupInit(srcDB, dstURI) if err != nil { @@ -31,7 +31,7 @@ func (src *Conn) Backup(srcDB, dstURI string) error { // Restore opens the SQLite database file srcURI, // and blocks until the entire restore is complete. // -// https://www.sqlite.org/backup.html +// https://sqlite.org/backup.html func (dst *Conn) Restore(dstDB, srcURI string) error { src, err := dst.openDB(srcURI, OPEN_READONLY|OPEN_URI) if err != nil { @@ -52,7 +52,7 @@ func (dst *Conn) Restore(dstDB, srcURI string) error { // then initializes a backup that copies the contents of srcDB on the src connection // to the "main" database in dstURI. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupinit +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupinit func (src *Conn) BackupInit(srcDB, dstURI string) (*Backup, error) { dst, err := src.openDB(dstURI, OPEN_READWRITE|OPEN_CREATE|OPEN_URI) if err != nil { @@ -62,7 +62,7 @@ func (src *Conn) BackupInit(srcDB, dstURI string) (*Backup, error) { } func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string) (*Backup, error) { - defer c.arena.reset() + defer c.arena.mark()() dstPtr := c.arena.string(dstName) srcPtr := c.arena.string(srcName) @@ -71,13 +71,13 @@ func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string other = src } - r := c.call(c.api.backupInit, + r := c.call("sqlite3_backup_init", uint64(dst), uint64(dstPtr), uint64(src), uint64(srcPtr)) if r == 0 { defer c.closeDB(other) - r = c.call(c.api.errcode, uint64(dst)) - return nil, c.module.error(r, dst) + r = c.call("sqlite3_errcode", uint64(dst)) + return nil, c.sqlite.error(r, dst) } return &Backup{ @@ -91,13 +91,13 @@ func (c *Conn) backupInit(dst uint32, dstName string, src uint32, srcName string // // It is safe to close a nil, zero or closed Backup. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish func (b *Backup) Close() error { if b == nil || b.handle == 0 { return nil } - r := b.c.call(b.c.api.backupFinish, uint64(b.handle)) + r := b.c.call("sqlite3_backup_finish", uint64(b.handle)) b.c.closeDB(b.otherc) b.handle = 0 return b.c.error(r) @@ -106,9 +106,9 @@ func (b *Backup) Close() error { // Step copies up to nPage pages between the source and destination databases. // If nPage is negative, all remaining source pages are copied. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupstep +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupstep func (b *Backup) Step(nPage int) (done bool, err error) { - r := b.c.call(b.c.api.backupStep, uint64(b.handle), uint64(nPage)) + r := b.c.call("sqlite3_backup_step", uint64(b.handle), uint64(nPage)) if r == _DONE { return true, nil } @@ -118,17 +118,17 @@ func (b *Backup) Step(nPage int) (done bool, err error) { // Remaining returns the number of pages still to be backed up // at the conclusion of the most recent [Backup.Step]. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backupremaining func (b *Backup) Remaining() int { - r := b.c.call(b.c.api.backupRemaining, uint64(b.handle)) + r := b.c.call("sqlite3_backup_remaining", uint64(b.handle)) return int(r) } // PageCount returns the total number of pages in the source database // at the conclusion of the most recent [Backup.Step]. // -// https://www.sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount +// https://sqlite.org/c3ref/backup_finish.html#sqlite3backuppagecount func (b *Backup) PageCount() int { - r := b.c.call(b.c.api.backupPageCount, uint64(b.handle)) + r := b.c.call("sqlite3_backup_pagecount", uint64(b.handle)) return int(r) } diff --git a/vendor/github.com/ncruces/go-sqlite3/blob.go b/vendor/github.com/ncruces/go-sqlite3/blob.go index a30abf6507..bb10c5fa2e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/blob.go +++ b/vendor/github.com/ncruces/go-sqlite3/blob.go @@ -15,7 +15,7 @@ type ZeroBlob int64 // // It implements [io.ReadWriteSeeker] for incremental BLOB I/O. // -// https://www.sqlite.org/c3ref/blob.html +// https://sqlite.org/c3ref/blob.html type Blob struct { c *Conn bytes int64 @@ -27,10 +27,10 @@ var _ io.ReadWriteSeeker = &Blob{} // OpenBlob opens a BLOB for incremental I/O. // -// https://www.sqlite.org/c3ref/blob_open.html +// https://sqlite.org/c3ref/blob_open.html func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, error) { c.checkInterrupt() - defer c.arena.reset() + defer c.arena.mark()() blobPtr := c.arena.new(ptrlen) dbPtr := c.arena.string(db) tablePtr := c.arena.string(table) @@ -41,7 +41,7 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, flags = 1 } - r := c.call(c.api.blobOpen, uint64(c.handle), + r := c.call("sqlite3_blob_open", uint64(c.handle), uint64(dbPtr), uint64(tablePtr), uint64(columnPtr), uint64(row), flags, uint64(blobPtr)) @@ -51,7 +51,7 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, blob := Blob{c: c} blob.handle = util.ReadUint32(c.mod, blobPtr) - blob.bytes = int64(c.call(c.api.blobBytes, uint64(blob.handle))) + blob.bytes = int64(c.call("sqlite3_blob_bytes", uint64(blob.handle))) return &blob, nil } @@ -59,13 +59,13 @@ func (c *Conn) OpenBlob(db, table, column string, row int64, write bool) (*Blob, // // It is safe to close a nil, zero or closed Blob. // -// https://www.sqlite.org/c3ref/blob_close.html +// https://sqlite.org/c3ref/blob_close.html func (b *Blob) Close() error { if b == nil || b.handle == 0 { return nil } - r := b.c.call(b.c.api.blobClose, uint64(b.handle)) + r := b.c.call("sqlite3_blob_close", uint64(b.handle)) b.handle = 0 return b.c.error(r) @@ -73,14 +73,14 @@ func (b *Blob) Close() error { // Size returns the size of the BLOB in bytes. // -// https://www.sqlite.org/c3ref/blob_bytes.html +// https://sqlite.org/c3ref/blob_bytes.html func (b *Blob) Size() int64 { return b.bytes } // Read implements the [io.Reader] interface. // -// https://www.sqlite.org/c3ref/blob_read.html +// https://sqlite.org/c3ref/blob_read.html func (b *Blob) Read(p []byte) (n int, err error) { if b.offset >= b.bytes { return 0, io.EOF @@ -92,10 +92,10 @@ func (b *Blob) Read(p []byte) (n int, err error) { want = avail } - defer b.c.arena.reset() + defer b.c.arena.mark()() ptr := b.c.arena.new(uint64(want)) - r := b.c.call(b.c.api.blobRead, uint64(b.handle), + r := b.c.call("sqlite3_blob_read", uint64(b.handle), uint64(ptr), uint64(want), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -112,23 +112,23 @@ func (b *Blob) Read(p []byte) (n int, err error) { // WriteTo implements the [io.WriterTo] interface. // -// https://www.sqlite.org/c3ref/blob_read.html +// https://sqlite.org/c3ref/blob_read.html func (b *Blob) WriteTo(w io.Writer) (n int64, err error) { if b.offset >= b.bytes { return 0, nil } + want := int64(1024 * 1024) avail := b.bytes - b.offset - want := int64(65536) if want > avail { want = avail } - ptr := b.c.new(uint64(want)) - defer b.c.free(ptr) + defer b.c.arena.mark()() + ptr := b.c.arena.new(uint64(want)) for want > 0 { - r := b.c.call(b.c.api.blobRead, uint64(b.handle), + r := b.c.call("sqlite3_blob_read", uint64(b.handle), uint64(ptr), uint64(want), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -156,12 +156,12 @@ func (b *Blob) WriteTo(w io.Writer) (n int64, err error) { // Write implements the [io.Writer] interface. // -// https://www.sqlite.org/c3ref/blob_write.html +// https://sqlite.org/c3ref/blob_write.html func (b *Blob) Write(p []byte) (n int, err error) { - defer b.c.arena.reset() + defer b.c.arena.mark()() ptr := b.c.arena.bytes(p) - r := b.c.call(b.c.api.blobWrite, uint64(b.handle), + r := b.c.call("sqlite3_blob_write", uint64(b.handle), uint64(ptr), uint64(len(p)), uint64(b.offset)) err = b.c.error(r) if err != nil { @@ -173,10 +173,13 @@ func (b *Blob) Write(p []byte) (n int, err error) { // ReadFrom implements the [io.ReaderFrom] interface. // -// https://www.sqlite.org/c3ref/blob_write.html +// https://sqlite.org/c3ref/blob_write.html func (b *Blob) ReadFrom(r io.Reader) (n int64, err error) { + want := int64(1024 * 1024) avail := b.bytes - b.offset - want := int64(65536) + if l, ok := r.(*io.LimitedReader); ok && want > l.N { + want = l.N + } if want > avail { want = avail } @@ -184,14 +187,14 @@ func (b *Blob) ReadFrom(r io.Reader) (n int64, err error) { want = 1 } - ptr := b.c.new(uint64(want)) - defer b.c.free(ptr) + defer b.c.arena.mark()() + ptr := b.c.arena.new(uint64(want)) for { mem := util.View(b.c.mod, ptr, uint64(want)) m, err := r.Read(mem[:want]) if m > 0 { - r := b.c.call(b.c.api.blobWrite, uint64(b.handle), + r := b.c.call("sqlite3_blob_write", uint64(b.handle), uint64(ptr), uint64(m), uint64(b.offset)) err := b.c.error(r) if err != nil { @@ -238,10 +241,10 @@ func (b *Blob) Seek(offset int64, whence int) (int64, error) { // Reopen moves a BLOB handle to a new row of the same database table. // -// https://www.sqlite.org/c3ref/blob_reopen.html +// https://sqlite.org/c3ref/blob_reopen.html func (b *Blob) Reopen(row int64) error { - err := b.c.error(b.c.call(b.c.api.blobReopen, uint64(b.handle), uint64(row))) - b.bytes = int64(b.c.call(b.c.api.blobBytes, uint64(b.handle))) + err := b.c.error(b.c.call("sqlite3_blob_reopen", uint64(b.handle), uint64(row))) + b.bytes = int64(b.c.call("sqlite3_blob_bytes", uint64(b.handle))) b.offset = 0 return err } diff --git a/vendor/github.com/ncruces/go-sqlite3/conn.go b/vendor/github.com/ncruces/go-sqlite3/conn.go index be10c719fa..b5eb52d995 100644 --- a/vendor/github.com/ncruces/go-sqlite3/conn.go +++ b/vendor/github.com/ncruces/go-sqlite3/conn.go @@ -2,27 +2,23 @@ package sqlite3 import ( "context" - "database/sql/driver" "errors" "fmt" "net/url" - "runtime" "strings" - "sync/atomic" - "unsafe" "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" ) // Conn is a database connection handle. // A Conn is not safe for concurrent use by multiple goroutines. // -// https://www.sqlite.org/c3ref/sqlite3.html +// https://sqlite.org/c3ref/sqlite3.html type Conn struct { - *module + *sqlite interrupt context.Context - waiter chan struct{} pending *Stmt arena arena @@ -39,9 +35,9 @@ func Open(filename string) (*Conn, error) { // If none of the required flags is used, a combination of [OPEN_READWRITE] and [OPEN_CREATE] is used. // If a URI filename is used, PRAGMA statements to execute can be specified using "_pragma": // -// sqlite3.Open("file:demo.db?_pragma=busy_timeout(10000)&_pragma=locking_mode(normal)") +// sqlite3.Open("file:demo.db?_pragma=busy_timeout(10000)") // -// https://www.sqlite.org/c3ref/open.html +// https://sqlite.org/c3ref/open.html func OpenFlags(filename string, flags OpenFlag) (*Conn, error) { if flags&(OPEN_READONLY|OPEN_READWRITE|OPEN_CREATE) == 0 { flags |= OPEN_READWRITE | OPEN_CREATE @@ -49,21 +45,22 @@ func OpenFlags(filename string, flags OpenFlag) (*Conn, error) { return newConn(filename, flags) } +type connKey struct{} + func newConn(filename string, flags OpenFlag) (conn *Conn, err error) { - mod, err := instantiateModule() + sqlite, err := instantiateSQLite() if err != nil { return nil, err } defer func() { if conn == nil { - mod.close() - } else { - runtime.SetFinalizer(conn, util.Finalizer[Conn](3)) + sqlite.close() } }() - c := &Conn{module: mod} + c := &Conn{sqlite: sqlite} c.arena = c.newArena(1024) + c.ctx = context.WithValue(c.ctx, connKey{}, c) c.handle, err = c.openDB(filename, flags) if err != nil { return nil, err @@ -72,15 +69,15 @@ func newConn(filename string, flags OpenFlag) (conn *Conn, err error) { } func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { - defer c.arena.reset() + defer c.arena.mark()() connPtr := c.arena.new(ptrlen) namePtr := c.arena.string(filename) flags |= OPEN_EXRESCODE - r := c.call(c.api.open, uint64(namePtr), uint64(connPtr), uint64(flags), 0) + r := c.call("sqlite3_open_v2", uint64(namePtr), uint64(connPtr), uint64(flags), 0) handle := util.ReadUint32(c.mod, connPtr) - if err := c.module.error(r, handle); err != nil { + if err := c.sqlite.error(r, handle); err != nil { c.closeDB(handle) return 0, err } @@ -92,14 +89,13 @@ func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { for _, p := range query["_pragma"] { pragmas.WriteString(`PRAGMA `) pragmas.WriteString(p) - pragmas.WriteByte(';') + pragmas.WriteString(`;`) } } - c.arena.reset() pragmaPtr := c.arena.string(pragmas.String()) - r := c.call(c.api.exec, uint64(handle), uint64(pragmaPtr), 0, 0, 0) - if err := c.module.error(r, handle, pragmas.String()); err != nil { + r := c.call("sqlite3_exec", uint64(handle), uint64(pragmaPtr), 0, 0, 0) + if err := c.sqlite.error(r, handle, pragmas.String()); err != nil { if errors.Is(err, ERROR) { err = fmt.Errorf("sqlite3: invalid _pragma: %w", err) } @@ -107,13 +103,13 @@ func (c *Conn) openDB(filename string, flags OpenFlag) (uint32, error) { return 0, err } } - + c.call("sqlite3_progress_handler_go", uint64(handle), 100) return handle, nil } func (c *Conn) closeDB(handle uint32) { - r := c.call(c.api.closeZombie, uint64(handle)) - if err := c.module.error(r, handle); err != nil { + r := c.call("sqlite3_close_v2", uint64(handle)) + if err := c.sqlite.error(r, handle); err != nil { panic(err) } } @@ -126,37 +122,35 @@ func (c *Conn) closeDB(handle uint32) { // // It is safe to close a nil, zero or closed Conn. // -// https://www.sqlite.org/c3ref/close.html +// https://sqlite.org/c3ref/close.html func (c *Conn) Close() error { if c == nil || c.handle == 0 { return nil } - c.SetInterrupt(context.Background()) c.pending.Close() c.pending = nil - r := c.call(c.api.close, uint64(c.handle)) + r := c.call("sqlite3_close", uint64(c.handle)) if err := c.error(r); err != nil { return err } c.handle = 0 - runtime.SetFinalizer(c, nil) - return c.module.close() + return c.close() } // Exec is a convenience function that allows an application to run // multiple statements of SQL without having to use a lot of code. // -// https://www.sqlite.org/c3ref/exec.html +// https://sqlite.org/c3ref/exec.html func (c *Conn) Exec(sql string) error { c.checkInterrupt() - defer c.arena.reset() + defer c.arena.mark()() sqlPtr := c.arena.string(sql) - r := c.call(c.api.exec, uint64(c.handle), uint64(sqlPtr), 0, 0, 0) - return c.error(r) + r := c.call("sqlite3_exec", uint64(c.handle), uint64(sqlPtr), 0, 0, 0) + return c.error(r, sql) } // Prepare calls [Conn.PrepareFlags] with no flags. @@ -169,25 +163,26 @@ func (c *Conn) Prepare(sql string) (stmt *Stmt, tail string, err error) { // If the input text contains no SQL (if the input is an empty string or a comment), // both stmt and err will be nil. // -// https://www.sqlite.org/c3ref/prepare.html +// https://sqlite.org/c3ref/prepare.html func (c *Conn) PrepareFlags(sql string, flags PrepareFlag) (stmt *Stmt, tail string, err error) { - if emptyStatement(sql) { - return nil, "", nil + if len(sql) > _MAX_LENGTH { + return nil, "", TOOBIG } - defer c.arena.reset() + defer c.arena.mark()() stmtPtr := c.arena.new(ptrlen) tailPtr := c.arena.new(ptrlen) sqlPtr := c.arena.string(sql) - r := c.call(c.api.prepare, uint64(c.handle), + r := c.call("sqlite3_prepare_v3", uint64(c.handle), uint64(sqlPtr), uint64(len(sql)+1), uint64(flags), uint64(stmtPtr), uint64(tailPtr)) stmt = &Stmt{c: c} stmt.handle = util.ReadUint32(c.mod, stmtPtr) - i := util.ReadUint32(c.mod, tailPtr) - tail = sql[i-sqlPtr:] + if sql := sql[util.ReadUint32(c.mod, tailPtr)-sqlPtr:]; sql != "" { + tail = sql + } if err := c.error(r, sql); err != nil { return nil, "", err @@ -195,23 +190,23 @@ func (c *Conn) PrepareFlags(sql string, flags PrepareFlag) (stmt *Stmt, tail str if stmt.handle == 0 { return nil, "", nil } - return + return stmt, tail, nil } // GetAutocommit tests the connection for auto-commit mode. // -// https://www.sqlite.org/c3ref/get_autocommit.html +// https://sqlite.org/c3ref/get_autocommit.html func (c *Conn) GetAutocommit() bool { - r := c.call(c.api.autocommit, uint64(c.handle)) + r := c.call("sqlite3_get_autocommit", uint64(c.handle)) return r != 0 } // LastInsertRowID returns the rowid of the most recent successful INSERT // on the database connection. // -// https://www.sqlite.org/c3ref/last_insert_rowid.html +// https://sqlite.org/c3ref/last_insert_rowid.html func (c *Conn) LastInsertRowID() int64 { - r := c.call(c.api.lastRowid, uint64(c.handle)) + r := c.call("sqlite3_last_insert_rowid", uint64(c.handle)) return int64(r) } @@ -219,9 +214,9 @@ func (c *Conn) LastInsertRowID() int64 { // by the most recently completed INSERT, UPDATE or DELETE statement // on the database connection. // -// https://www.sqlite.org/c3ref/changes.html +// https://sqlite.org/c3ref/changes.html func (c *Conn) Changes() int64 { - r := c.call(c.api.changes, uint64(c.handle)) + r := c.call("sqlite3_changes64", uint64(c.handle)) return int64(r) } @@ -238,16 +233,18 @@ func (c *Conn) Changes() int64 { // // SetInterrupt returns the old context assigned to the connection. // -// https://www.sqlite.org/c3ref/interrupt.html +// https://sqlite.org/c3ref/interrupt.html func (c *Conn) SetInterrupt(ctx context.Context) (old context.Context) { - // Is a waiter running? - if c.waiter != nil { - c.waiter <- struct{}{} // Cancel the waiter. - <-c.waiter // Wait for it to finish. - c.waiter = nil + // Is it the same context? + if ctx == c.interrupt { + return ctx } - // Reset the pending statement. - if c.pending != nil { + + // A busy SQL statement prevents SQLite from ignoring an interrupt + // that comes before any other statements are started. + if c.pending == nil { + c.pending, _, _ = c.Prepare(`SELECT 1 UNION ALL SELECT 2`) + } else { c.pending.Reset() } @@ -257,53 +254,28 @@ func (c *Conn) SetInterrupt(ctx context.Context) (old context.Context) { return old } - // Creating an uncompleted SQL statement prevents SQLite from ignoring - // an interrupt that comes before any other statements are started. - if c.pending == nil { - c.pending, _, _ = c.Prepare(`SELECT 1 UNION ALL SELECT 2`) - } c.pending.Step() + return old +} - // Don't create the goroutine if we're already interrupted. - // This happens frequently while restoring to a previously interrupted state. - if c.checkInterrupt() { - return old - } - - waiter := make(chan struct{}) - c.waiter = waiter - go func() { - select { - case <-waiter: // Waiter was cancelled. - break - - case <-ctx.Done(): // Done was closed. - const isInterruptedOffset = 280 - buf := util.View(c.mod, c.handle+isInterruptedOffset, 4) - (*atomic.Uint32)(unsafe.Pointer(&buf[0])).Store(1) - // Wait for the next call to SetInterrupt. - <-waiter +func progressCallback(ctx context.Context, mod api.Module, _ uint32) uint32 { + if c, ok := ctx.Value(connKey{}).(*Conn); ok { + if c.interrupt != nil && c.interrupt.Err() != nil { + return 1 } - - // Signal that the waiter has finished. - waiter <- struct{}{} - }() - return old + } + return 0 } -func (c *Conn) checkInterrupt() bool { - if c.interrupt == nil || c.interrupt.Err() == nil { - return false +func (c *Conn) checkInterrupt() { + if c.interrupt != nil && c.interrupt.Err() != nil { + c.call("sqlite3_interrupt", uint64(c.handle)) } - const isInterruptedOffset = 280 - buf := util.View(c.mod, c.handle+isInterruptedOffset, 4) - (*atomic.Uint32)(unsafe.Pointer(&buf[0])).Store(1) - return true } // Pragma executes a PRAGMA statement and returns any results. // -// https://www.sqlite.org/pragma.html +// https://sqlite.org/pragma.html func (c *Conn) Pragma(str string) ([]string, error) { stmt, _, err := c.Prepare(`PRAGMA ` + str) if err != nil { @@ -319,27 +291,14 @@ func (c *Conn) Pragma(str string) ([]string, error) { } func (c *Conn) error(rc uint64, sql ...string) error { - return c.module.error(rc, c.handle, sql...) + return c.sqlite.error(rc, c.handle, sql...) } // DriverConn is implemented by the SQLite [database/sql] driver connection. // -// It can be used to access advanced SQLite features like -// [savepoints], [online backup] and [incremental BLOB I/O]. +// It can be used to access SQLite features like [online backup]. // -// [savepoints]: https://www.sqlite.org/lang_savepoint.html -// [online backup]: https://www.sqlite.org/backup.html -// [incremental BLOB I/O]: https://www.sqlite.org/c3ref/blob_open.html +// [online backup]: https://sqlite.org/backup.html type DriverConn interface { - driver.Conn - driver.ConnBeginTx - driver.ExecerContext - driver.ConnPrepareContext - - SetInterrupt(ctx context.Context) (old context.Context) - - Savepoint() Savepoint - Backup(srcDB, dstURI string) error - Restore(dstDB, srcURI string) error - OpenBlob(db, table, column string, row int64, write bool) (*Blob, error) + Raw() *Conn } diff --git a/vendor/github.com/ncruces/go-sqlite3/const.go b/vendor/github.com/ncruces/go-sqlite3/const.go index a1d6145c3e..01c3451f0e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/const.go @@ -9,8 +9,9 @@ const ( _UTF8 = 1 - _MAX_STRING = 512 // Used for short strings: names, error messages… - + _MAX_NAME = 512 // Used for short strings: names, error messages… + _MAX_LENGTH = 1e9 + _MAX_SQL_LENGTH = 1e9 _MAX_ALLOCATION_SIZE = 0x7ffffeff ptrlen = 4 @@ -18,7 +19,7 @@ const ( // ErrorCode is a result code that [Error.Code] might return. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type ErrorCode uint8 const ( @@ -54,7 +55,7 @@ const ( // ExtendedErrorCode is a result code that [Error.ExtendedCode] might return. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type ( ExtendedErrorCode uint16 xErrorCode = ExtendedErrorCode @@ -97,6 +98,7 @@ const ( IOERR_ROLLBACK_ATOMIC ExtendedErrorCode = xErrorCode(IOERR) | (31 << 8) IOERR_DATA ExtendedErrorCode = xErrorCode(IOERR) | (32 << 8) IOERR_CORRUPTFS ExtendedErrorCode = xErrorCode(IOERR) | (33 << 8) + IOERR_IN_PAGE ExtendedErrorCode = xErrorCode(IOERR) | (34 << 8) LOCKED_SHAREDCACHE ExtendedErrorCode = xErrorCode(LOCKED) | (1 << 8) LOCKED_VTAB ExtendedErrorCode = xErrorCode(LOCKED) | (2 << 8) BUSY_RECOVERY ExtendedErrorCode = xErrorCode(BUSY) | (1 << 8) @@ -139,7 +141,7 @@ const ( // OpenFlag is a flag for the [OpenFlags] function. // -// https://www.sqlite.org/c3ref/c_open_autoproxy.html +// https://sqlite.org/c3ref/c_open_autoproxy.html type OpenFlag uint32 const ( @@ -158,7 +160,7 @@ const ( // PrepareFlag is a flag that can be passed to [Conn.PrepareFlags]. // -// https://www.sqlite.org/c3ref/c_prepare_normalize.html +// https://sqlite.org/c3ref/c_prepare_normalize.html type PrepareFlag uint32 const ( @@ -167,9 +169,40 @@ const ( PREPARE_NO_VTAB PrepareFlag = 0x04 ) +// FunctionFlag is a flag that can be passed to +// [Conn.CreateFunction] and [Conn.CreateWindowFunction]. +// +// https://sqlite.org/c3ref/c_deterministic.html +type FunctionFlag uint32 + +const ( + DETERMINISTIC FunctionFlag = 0x000000800 + DIRECTONLY FunctionFlag = 0x000080000 + SUBTYPE FunctionFlag = 0x000100000 + INNOCUOUS FunctionFlag = 0x000200000 + RESULT_SUBTYPE FunctionFlag = 0x001000000 +) + +// StmtStatus name counter values associated with the [Stmt.Status] method. +// +// https://sqlite.org/c3ref/c_stmtstatus_counter.html +type StmtStatus uint32 + +const ( + STMTSTATUS_FULLSCAN_STEP StmtStatus = 1 + STMTSTATUS_SORT StmtStatus = 2 + STMTSTATUS_AUTOINDEX StmtStatus = 3 + STMTSTATUS_VM_STEP StmtStatus = 4 + STMTSTATUS_REPREPARE StmtStatus = 5 + STMTSTATUS_RUN StmtStatus = 6 + STMTSTATUS_FILTER_MISS StmtStatus = 7 + STMTSTATUS_FILTER_HIT StmtStatus = 8 + STMTSTATUS_MEMUSED StmtStatus = 99 +) + // Datatype is a fundamental datatype of SQLite. // -// https://www.sqlite.org/c3ref/c_blob.html +// https://sqlite.org/c3ref/c_blob.html type Datatype uint32 const ( @@ -182,18 +215,18 @@ const ( // String implements the [fmt.Stringer] interface. func (t Datatype) String() string { - const name = "INTEGERFLOATTEXTBLOBNULL" + const name = "INTEGERFLOATEXTBLOBNULL" switch t { case INTEGER: return name[0:7] case FLOAT: return name[7:12] case TEXT: - return name[12:16] + return name[11:15] case BLOB: - return name[16:20] + return name[15:19] case NULL: - return name[20:24] + return name[19:23] } return strconv.FormatUint(uint64(t), 10) } diff --git a/vendor/github.com/ncruces/go-sqlite3/context.go b/vendor/github.com/ncruces/go-sqlite3/context.go new file mode 100644 index 0000000000..6ea97addcd --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/context.go @@ -0,0 +1,220 @@ +package sqlite3 + +import ( + "encoding/json" + "errors" + "math" + "time" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Context is the context in which an SQL function executes. +// An SQLite [Context] is in no way related to a Go [context.Context]. +// +// https://sqlite.org/c3ref/context.html +type Context struct { + c *Conn + handle uint32 +} + +// Conn returns the database connection of the +// [Conn.CreateFunction] or [Conn.CreateWindowFunction] +// routines that originally registered the application defined function. +// +// https://sqlite.org/c3ref/context_db_handle.html +func (ctx Context) Conn() *Conn { + return ctx.c +} + +// SetAuxData saves metadata for argument n of the function. +// +// https://sqlite.org/c3ref/get_auxdata.html +func (ctx Context) SetAuxData(n int, data any) { + ptr := util.AddHandle(ctx.c.ctx, data) + ctx.c.call("sqlite3_set_auxdata_go", uint64(ctx.handle), uint64(n), uint64(ptr)) +} + +// GetAuxData returns metadata for argument n of the function. +// +// https://sqlite.org/c3ref/get_auxdata.html +func (ctx Context) GetAuxData(n int) any { + ptr := uint32(ctx.c.call("sqlite3_get_auxdata", uint64(ctx.handle), uint64(n))) + return util.GetHandle(ctx.c.ctx, ptr) +} + +// ResultBool sets the result of the function to a bool. +// SQLite does not have a separate boolean storage class. +// Instead, boolean values are stored as integers 0 (false) and 1 (true). +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultBool(value bool) { + var i int64 + if value { + i = 1 + } + ctx.ResultInt64(i) +} + +// ResultInt sets the result of the function to an int. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultInt(value int) { + ctx.ResultInt64(int64(value)) +} + +// ResultInt64 sets the result of the function to an int64. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultInt64(value int64) { + ctx.c.call("sqlite3_result_int64", + uint64(ctx.handle), uint64(value)) +} + +// ResultFloat sets the result of the function to a float64. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultFloat(value float64) { + ctx.c.call("sqlite3_result_double", + uint64(ctx.handle), math.Float64bits(value)) +} + +// ResultText sets the result of the function to a string. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultText(value string) { + ptr := ctx.c.newString(value) + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultRawText sets the text result of the function to a []byte. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultRawText(value []byte) { + ptr := ctx.c.newBytes(value) + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultBlob sets the result of the function to a []byte. +// Returning a nil slice is the same as calling [Context.ResultNull]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultBlob(value []byte) { + ptr := ctx.c.newBytes(value) + ctx.c.call("sqlite3_result_blob64", + uint64(ctx.handle), uint64(ptr), uint64(len(value)), + uint64(ctx.c.freer)) +} + +// ResultZeroBlob sets the result of the function to a zero-filled, length n BLOB. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultZeroBlob(n int64) { + ctx.c.call("sqlite3_result_zeroblob64", + uint64(ctx.handle), uint64(n)) +} + +// ResultNull sets the result of the function to NULL. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultNull() { + ctx.c.call("sqlite3_result_null", + uint64(ctx.handle)) +} + +// ResultTime sets the result of the function to a [time.Time]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultTime(value time.Time, format TimeFormat) { + if format == TimeFormatDefault { + ctx.resultRFC3339Nano(value) + return + } + switch v := format.Encode(value).(type) { + case string: + ctx.ResultText(v) + case int64: + ctx.ResultInt64(v) + case float64: + ctx.ResultFloat(v) + default: + panic(util.AssertErr()) + } +} + +func (ctx Context) resultRFC3339Nano(value time.Time) { + const maxlen = uint64(len(time.RFC3339Nano)) + 5 + + ptr := ctx.c.new(maxlen) + buf := util.View(ctx.c.mod, ptr, maxlen) + buf = value.AppendFormat(buf[:0], time.RFC3339Nano) + + ctx.c.call("sqlite3_result_text64", + uint64(ctx.handle), uint64(ptr), uint64(len(buf)), + uint64(ctx.c.freer), _UTF8) +} + +// ResultPointer sets the result of the function to NULL, just like [Context.ResultNull], +// except that it also associates ptr with that NULL value such that it can be retrieved +// within an application-defined SQL function using [Value.Pointer]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultPointer(ptr any) { + valPtr := util.AddHandle(ctx.c.ctx, ptr) + ctx.c.call("sqlite3_result_pointer_go", uint64(valPtr)) +} + +// ResultJSON sets the result of the function to the JSON encoding of value. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultJSON(value any) { + data, err := json.Marshal(value) + if err != nil { + ctx.ResultError(err) + return + } + ctx.ResultRawText(data) +} + +// ResultValue sets the result of the function to a copy of [Value]. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultValue(value Value) { + if value.sqlite != ctx.c.sqlite { + ctx.ResultError(MISUSE) + return + } + ctx.c.call("sqlite3_result_value", + uint64(ctx.handle), uint64(value.handle)) +} + +// ResultError sets the result of the function an error. +// +// https://sqlite.org/c3ref/result_blob.html +func (ctx Context) ResultError(err error) { + if errors.Is(err, NOMEM) { + ctx.c.call("sqlite3_result_error_nomem", uint64(ctx.handle)) + return + } + + if errors.Is(err, TOOBIG) { + ctx.c.call("sqlite3_result_error_toobig", uint64(ctx.handle)) + return + } + + msg, code := errorCode(err, _OK) + if msg != "" { + defer ctx.c.arena.mark()() + ptr := ctx.c.arena.string(msg) + ctx.c.call("sqlite3_result_error", + uint64(ctx.handle), uint64(ptr), uint64(len(msg))) + } + if code != _OK { + ctx.c.call("sqlite3_result_error_code", + uint64(ctx.handle), uint64(code)) + } +} diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go index f027c4ee9c..c1d96bb02f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/driver/driver.go +++ b/vendor/github.com/ncruces/go-sqlite3/driver/driver.go @@ -12,25 +12,39 @@ // // sql.Open("sqlite3", "file:demo.db?_txlock=immediate") // +// Possible values are: "deferred", "immediate", "exclusive". +// A [read-only] transaction is always "deferred", regardless of "_txlock". +// +// The time encoding/decoding format can be specified using "_timefmt": +// +// sql.Open("sqlite3", "file:demo.db?_timefmt=sqlite") +// +// Possible values are: "auto" (the default), "sqlite", "rfc3339"; +// "auto" encodes as RFC 3339 and decodes any [format] supported by SQLite; +// "sqlite" encodes as SQLite and decodes any [format] supported by SQLite; +// "rfc3339" encodes and decodes RFC 3339 only. +// // [PRAGMA] statements can be specified using "_pragma": // -// sql.Open("sqlite3", "file:demo.db?_pragma=busy_timeout(10000)&_pragma=locking_mode(normal)") +// sql.Open("sqlite3", "file:demo.db?_pragma=busy_timeout(10000)") // -// If no PRAGMAs are specified, a busy timeout of 1 minute -// and normal locking mode are used. +// If no PRAGMAs are specified, a busy timeout of 1 minute is set. // // Order matters: // busy timeout and locking mode should be the first PRAGMAs set, in that order. // -// [URI]: https://www.sqlite.org/uri.html -// [PRAGMA]: https://www.sqlite.org/pragma.html -// [TRANSACTION]: https://www.sqlite.org/lang_transaction.html#deferred_immediate_and_exclusive_transactions +// [URI]: https://sqlite.org/uri.html +// [PRAGMA]: https://sqlite.org/pragma.html +// [format]: https://sqlite.org/lang_datefunc.html#time_values +// [TRANSACTION]: https://sqlite.org/lang_transaction.html#deferred_immediate_and_exclusive_transactions +// [read-only]: https://pkg.go.dev/database/sql#TxOptions package driver import ( "context" "database/sql" "database/sql/driver" + "errors" "fmt" "io" "net/url" @@ -41,69 +55,147 @@ import ( "github.com/ncruces/go-sqlite3/internal/util" ) +// This variable can be replaced with -ldflags: +// +// go build -ldflags="-X github.com/ncruces/go-sqlite3/driver.driverName=sqlite" +var driverName = "sqlite3" + func init() { - sql.Register("sqlite3", sqlite{}) + if driverName != "" { + sql.Register(driverName, sqlite{}) + } +} + +// Open opens the SQLite database specified by dataSourceName as a [database/sql.DB]. +// +// The init function is called by the driver on new connections. +// The conn can be used to execute queries, register functions, etc. +// Any error return closes the conn and passes the error to [database/sql]. +func Open(dataSourceName string, init func(*sqlite3.Conn) error) (*sql.DB, error) { + c, err := newConnector(dataSourceName, init) + if err != nil { + return nil, err + } + return sql.OpenDB(c), nil } type sqlite struct{} -func (sqlite) Open(name string) (_ driver.Conn, err error) { - var c conn - c.Conn, err = sqlite3.Open(name) +func (sqlite) Open(name string) (driver.Conn, error) { + c, err := newConnector(name, nil) if err != nil { return nil, err } + return c.Connect(context.Background()) +} + +func (sqlite) OpenConnector(name string) (driver.Connector, error) { + return newConnector(name, nil) +} + +func newConnector(name string, init func(*sqlite3.Conn) error) (*connector, error) { + c := connector{name: name, init: init} - c.txBegin = "BEGIN" - var pragmas []string + var txlock, timefmt string if strings.HasPrefix(name, "file:") { if _, after, ok := strings.Cut(name, "?"); ok { - query, _ := url.ParseQuery(after) - - switch s := query.Get("_txlock"); s { - case "": - c.txBegin = "BEGIN" - case "deferred", "immediate", "exclusive": - c.txBegin = "BEGIN " + s - default: - c.Close() - return nil, fmt.Errorf("sqlite3: invalid _txlock: %s", s) + query, err := url.ParseQuery(after) + if err != nil { + return nil, err } - - pragmas = query["_pragma"] + txlock = query.Get("_txlock") + timefmt = query.Get("_timefmt") + c.pragmas = query.Has("_pragma") } } - if len(pragmas) == 0 { - err := c.Conn.Exec(` - PRAGMA busy_timeout=60000; - PRAGMA locking_mode=normal; - `) + + switch txlock { + case "": + c.txBegin = "BEGIN" + case "deferred", "immediate", "exclusive": + c.txBegin = "BEGIN " + txlock + default: + return nil, fmt.Errorf("sqlite3: invalid _txlock: %s", txlock) + } + + switch timefmt { + case "": + c.tmRead = sqlite3.TimeFormatAuto + c.tmWrite = sqlite3.TimeFormatDefault + case "sqlite": + c.tmRead = sqlite3.TimeFormatAuto + c.tmWrite = sqlite3.TimeFormat3 + case "rfc3339": + c.tmRead = sqlite3.TimeFormatDefault + c.tmWrite = sqlite3.TimeFormatDefault + default: + c.tmRead = sqlite3.TimeFormat(timefmt) + c.tmWrite = sqlite3.TimeFormat(timefmt) + } + return &c, nil +} + +type connector struct { + init func(*sqlite3.Conn) error + name string + txBegin string + tmRead sqlite3.TimeFormat + tmWrite sqlite3.TimeFormat + pragmas bool +} + +func (n *connector) Driver() driver.Driver { + return sqlite{} +} + +func (n *connector) Connect(ctx context.Context) (_ driver.Conn, err error) { + c := &conn{ + txBegin: n.txBegin, + tmRead: n.tmRead, + tmWrite: n.tmWrite, + } + + c.Conn, err = sqlite3.Open(n.name) + if err != nil { + return nil, err + } + defer func() { if err != nil { c.Close() + } + }() + + old := c.Conn.SetInterrupt(ctx) + defer c.Conn.SetInterrupt(old) + + if !n.pragmas { + err = c.Conn.Exec(`PRAGMA busy_timeout=60000`) + if err != nil { return nil, err } - c.reusable = true - } else { - s, _, err := c.Conn.Prepare(` - SELECT * FROM - PRAGMA_locking_mode, - PRAGMA_query_only; - `) + } + if n.init != nil { + err = n.init(c.Conn) + if err != nil { + return nil, err + } + } + if n.pragmas || n.init != nil { + s, _, err := c.Conn.Prepare(`PRAGMA query_only`) if err != nil { - c.Close() return nil, err } - if s.Step() { - c.reusable = s.ColumnText(0) == "normal" - c.readOnly = s.ColumnRawText(1)[0] // 0 or 1 + if s.Step() && s.ColumnBool(0) { + c.readOnly = '1' + } else { + c.readOnly = '0' } err = s.Close() if err != nil { - c.Close() return nil, err } } - return &c, nil + return c, nil } type conn struct { @@ -111,20 +203,21 @@ type conn struct { txBegin string txCommit string txRollback string - reusable bool + tmRead sqlite3.TimeFormat + tmWrite sqlite3.TimeFormat readOnly byte } var ( // Ensure these interfaces are implemented: - _ driver.ExecerContext = &conn{} - _ driver.ConnBeginTx = &conn{} - _ driver.Validator = &conn{} - _ sqlite3.DriverConn = &conn{} + _ driver.ConnPrepareContext = &conn{} + _ driver.ExecerContext = &conn{} + _ driver.ConnBeginTx = &conn{} + _ sqlite3.DriverConn = &conn{} ) -func (c *conn) IsValid() bool { - return c.reusable +func (c *conn) Raw() *sqlite3.Conn { + return c.Conn } func (c *conn) Begin() (driver.Tx, error) { @@ -140,10 +233,10 @@ func (c *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, e txBegin = ` BEGIN deferred; PRAGMA query_only=on` - c.txCommit = ` + c.txRollback = ` ROLLBACK; PRAGMA query_only=` + string(c.readOnly) - c.txRollback = c.txCommit + c.txCommit = c.txRollback } switch opts.Isolation { @@ -167,14 +260,20 @@ func (c *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, e func (c *conn) Commit() error { err := c.Conn.Exec(c.txCommit) - if err != nil && !c.GetAutocommit() { + if err != nil && !c.Conn.GetAutocommit() { c.Rollback() } return err } func (c *conn) Rollback() error { - return c.Conn.Exec(c.txRollback) + err := c.Conn.Exec(c.txRollback) + if errors.Is(err, sqlite3.INTERRUPT) { + old := c.Conn.SetInterrupt(context.Background()) + defer c.Conn.SetInterrupt(old) + err = c.Conn.Exec(c.txRollback) + } + return err } func (c *conn) Prepare(query string) (driver.Stmt, error) { @@ -190,19 +289,10 @@ func (c *conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, e return nil, err } if tail != "" { - // Check if the tail contains any SQL. - st, _, err := c.Conn.Prepare(tail) - if err != nil { - s.Close() - return nil, err - } - if st != nil { - s.Close() - st.Close() - return nil, util.TailErr - } + s.Close() + return nil, util.TailErr } - return &stmt{s, c.Conn}, nil + return &stmt{Stmt: s, tmRead: c.tmRead, tmWrite: c.tmWrite}, nil } func (c *conn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) { @@ -211,6 +301,12 @@ func (c *conn) ExecContext(ctx context.Context, query string, args []driver.Name return nil, driver.ErrSkip } + if savept, ok := ctx.(*saveptCtx); ok { + // Called from driver.Savepoint. + savept.Savepoint = c.Conn.Savepoint() + return resultRowsAffected(0), nil + } + old := c.Conn.SetInterrupt(ctx) defer c.Conn.SetInterrupt(old) @@ -222,9 +318,14 @@ func (c *conn) ExecContext(ctx context.Context, query string, args []driver.Name return newResult(c.Conn), nil } +func (*conn) CheckNamedValue(arg *driver.NamedValue) error { + return nil +} + type stmt struct { - Stmt *sqlite3.Stmt - Conn *sqlite3.Conn + *sqlite3.Stmt + tmWrite sqlite3.TimeFormat + tmRead sqlite3.TimeFormat } var ( @@ -234,10 +335,6 @@ var ( _ driver.NamedValueChecker = &stmt{} ) -func (s *stmt) Close() error { - return s.Stmt.Close() -} - func (s *stmt) NumInput() int { n := s.Stmt.BindCount() for i := 1; i <= n; i++ { @@ -259,26 +356,35 @@ func (s *stmt) Query(args []driver.Value) (driver.Rows, error) { } func (s *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) { - // Use QueryContext to setup bindings. - // No need to close rows: that simply resets the statement, exec does the same. - _, err := s.QueryContext(ctx, args) + err := s.setupBindings(args) if err != nil { return nil, err } + old := s.Stmt.Conn().SetInterrupt(ctx) + defer s.Stmt.Conn().SetInterrupt(old) + err = s.Stmt.Exec() if err != nil { return nil, err } - return newResult(s.Conn), nil + return newResult(s.Stmt.Conn()), nil } func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) { - err := s.Stmt.ClearBindings() + err := s.setupBindings(args) if err != nil { return nil, err } + return &rows{ctx: ctx, stmt: s}, nil +} + +func (s *stmt) setupBindings(args []driver.NamedValue) error { + err := s.Stmt.ClearBindings() + if err != nil { + return err + } var ids [3]int for _, arg := range args { @@ -310,7 +416,11 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driv case sqlite3.ZeroBlob: err = s.Stmt.BindZeroBlob(id, int64(a)) case time.Time: - err = s.Stmt.BindTime(id, a, sqlite3.TimeFormatDefault) + err = s.Stmt.BindTime(id, a, s.tmWrite) + case interface{ Pointer() any }: + err = s.Stmt.BindPointer(id, a.Pointer()) + case interface{ JSON() any }: + err = s.Stmt.BindJSON(id, a.JSON()) case nil: err = s.Stmt.BindNull(id) default: @@ -318,17 +428,19 @@ func (s *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driv } } if err != nil { - return nil, err + return err } } - - return &rows{ctx, s.Stmt, s.Conn}, nil + return nil } func (s *stmt) CheckNamedValue(arg *driver.NamedValue) error { switch arg.Value.(type) { case bool, int, int64, float64, string, []byte, - sqlite3.ZeroBlob, time.Time, nil: + sqlite3.ZeroBlob, time.Time, + interface{ Pointer() any }, + interface{ JSON() any }, + nil: return nil default: return driver.ErrSkip @@ -367,27 +479,52 @@ func (r resultRowsAffected) RowsAffected() (int64, error) { } type rows struct { - ctx context.Context - Stmt *sqlite3.Stmt - Conn *sqlite3.Conn + ctx context.Context + *stmt + names []string + types []string } func (r *rows) Close() error { + r.Stmt.ClearBindings() return r.Stmt.Reset() } func (r *rows) Columns() []string { - count := r.Stmt.ColumnCount() - columns := make([]string, count) - for i := range columns { - columns[i] = r.Stmt.ColumnName(i) + if r.names == nil { + count := r.Stmt.ColumnCount() + r.names = make([]string, count) + for i := range r.names { + r.names[i] = r.Stmt.ColumnName(i) + } } - return columns + return r.names +} + +func (r *rows) declType(index int) string { + if r.types == nil { + count := r.Stmt.ColumnCount() + r.types = make([]string, count) + for i := range r.types { + r.types[i] = strings.ToUpper(r.Stmt.ColumnDeclType(i)) + } + } + return r.types[index] +} + +func (r *rows) ColumnTypeDatabaseTypeName(index int) string { + decltype := r.declType(index) + if len := len(decltype); len > 0 && decltype[len-1] == ')' { + if i := strings.LastIndexByte(decltype, '('); i >= 0 { + decltype = decltype[:i] + } + } + return strings.TrimSpace(decltype) } func (r *rows) Next(dest []driver.Value) error { - old := r.Conn.SetInterrupt(r.ctx) - defer r.Conn.SetInterrupt(old) + old := r.Stmt.Conn().SetInterrupt(r.ctx) + defer r.Stmt.Conn().SetInterrupt(old) if !r.Stmt.Step() { if err := r.Stmt.Err(); err != nil { @@ -397,7 +534,12 @@ func (r *rows) Next(dest []driver.Value) error { } for i := range dest { - switch r.Stmt.ColumnType(i) { + t := r.Stmt.ColumnType(i) + if tm, ok := r.decodeTime(i, t); ok { + dest[i] = tm + continue + } + switch t { case sqlite3.INTEGER: dest[i] = r.Stmt.ColumnInt64(i) case sqlite3.FLOAT: @@ -405,13 +547,9 @@ func (r *rows) Next(dest []driver.Value) error { case sqlite3.BLOB: dest[i] = r.Stmt.ColumnRawBlob(i) case sqlite3.TEXT: - dest[i] = stringOrTime(r.Stmt.ColumnRawText(i)) + dest[i] = stringOrTime(r.Stmt.ColumnText(i)) case sqlite3.NULL: - if buf, ok := dest[i].([]byte); ok { - dest[i] = buf[0:0] - } else { - dest[i] = nil - } + dest[i] = nil default: panic(util.AssertErr()) } @@ -419,3 +557,22 @@ func (r *rows) Next(dest []driver.Value) error { return r.Stmt.Err() } + +func (r *rows) decodeTime(i int, typ sqlite3.Datatype) (_ time.Time, _ bool) { + if r.tmRead == sqlite3.TimeFormatDefault { + return + } + switch typ { + case sqlite3.INTEGER, sqlite3.FLOAT, sqlite3.TEXT: + // maybe + default: + return + } + switch r.declType(i) { + case "DATE", "TIME", "DATETIME", "TIMESTAMP": + // maybe + default: + return + } + return r.Stmt.ColumnTime(i, r.tmRead), r.Stmt.Err() == nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go b/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go new file mode 100644 index 0000000000..60aa6b9914 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/driver/savepoint.go @@ -0,0 +1,27 @@ +package driver + +import ( + "database/sql" + "time" + + "github.com/ncruces/go-sqlite3" +) + +// Savepoint establishes a new transaction savepoint. +// +// https://sqlite.org/lang_savepoint.html +func Savepoint(tx *sql.Tx) sqlite3.Savepoint { + var ctx saveptCtx + tx.ExecContext(&ctx, "") + return ctx.Savepoint +} + +type saveptCtx struct{ sqlite3.Savepoint } + +func (*saveptCtx) Deadline() (deadline time.Time, ok bool) { return } + +func (*saveptCtx) Done() <-chan struct{} { return nil } + +func (*saveptCtx) Err() error { return nil } + +func (*saveptCtx) Value(key any) any { return nil } diff --git a/vendor/github.com/ncruces/go-sqlite3/driver/time.go b/vendor/github.com/ncruces/go-sqlite3/driver/time.go index fa3247da05..0fc82383a6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/driver/time.go +++ b/vendor/github.com/ncruces/go-sqlite3/driver/time.go @@ -9,23 +9,23 @@ import ( // if it roundtrips back to the same string. // This way times can be persisted to, and recovered from, the database, // but if a string is needed, [database/sql] will recover the same string. -func stringOrTime(text []byte) driver.Value { +func stringOrTime(text string) driver.Value { // Weed out (some) values that can't possibly be // [time.RFC3339Nano] timestamps. if len(text) < len("2006-01-02T15:04:05Z") { - return string(text) + return text } if len(text) > len(time.RFC3339Nano) { - return string(text) + return text } if text[4] != '-' || text[10] != 'T' || text[16] != ':' { - return string(text) + return text } // Slow path. - date, err := time.Parse(time.RFC3339Nano, string(text)) - if err == nil && date.Format(time.RFC3339Nano) == string(text) { + date, err := time.Parse(time.RFC3339Nano, text) + if err == nil && date.Format(time.RFC3339Nano) == text { return date } - return string(text) + return text } diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/README.md b/vendor/github.com/ncruces/go-sqlite3/embed/README.md index 06c488696b..46b349850d 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/embed/README.md @@ -1,14 +1,15 @@ # Embeddable WASM build of SQLite -This folder includes an embeddable WASM build of SQLite 3.42.0 for use with +This folder includes an embeddable WASM build of SQLite 3.44.2 for use with [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3). The following optional features are compiled in: -- [math functions](https://www.sqlite.org/lang_mathfunc.html) -- [FTS3/4](https://www.sqlite.org/fts3.html)/[5](https://www.sqlite.org/fts5.html) -- [JSON](https://www.sqlite.org/json1.html) -- [R*Tree](https://www.sqlite.org/rtree.html) -- [GeoPoly](https://www.sqlite.org/geopoly.html) +- [math functions](https://sqlite.org/lang_mathfunc.html) +- [FTS3/4](https://sqlite.org/fts3.html)/[5](https://sqlite.org/fts5.html) +- [JSON](https://sqlite.org/json1.html) +- [R*Tree](https://sqlite.org/rtree.html) +- [GeoPoly](https://sqlite.org/geopoly.html) +- [soundex](https://sqlite.org/lang_corefunc.html#soundex) - [base64](https://github.com/sqlite/sqlite/blob/master/ext/misc/base64.c) - [decimal](https://github.com/sqlite/sqlite/blob/master/ext/misc/decimal.c) - [regexp](https://github.com/sqlite/sqlite/blob/master/ext/misc/regexp.c) diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/build.sh b/vendor/github.com/ncruces/go-sqlite3/embed/build.sh index f461b2664f..615a2d0572 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/build.sh +++ b/vendor/github.com/ncruces/go-sqlite3/embed/build.sh @@ -4,24 +4,27 @@ set -euo pipefail cd -P -- "$(dirname -- "$0")" ROOT=../ -BINARYEN="$ROOT/tools/binaryen-version_113/bin" -WASI_SDK="$ROOT/tools/wasi-sdk-20.0/bin" +BINARYEN="$ROOT/tools/binaryen-version_116/bin" +WASI_SDK="$ROOT/tools/wasi-sdk-21.0/bin" "$WASI_SDK/clang" --target=wasm32-wasi -flto -g0 -O2 \ -o sqlite3.wasm "$ROOT/sqlite3/main.c" \ -I"$ROOT/sqlite3" \ -mexec-model=reactor \ - -mmutable-globals \ + -msimd128 -mmutable-globals \ -mbulk-memory -mreference-types \ -mnontrapping-fptoint -msign-ext \ + -fno-stack-protector -fno-stack-clash-protection \ -Wl,--initial-memory=327680 \ -Wl,--stack-first \ -Wl,--import-undefined \ + -D_HAVE_SQLITE_CONFIG_H \ $(awk '{print "-Wl,--export="$0}' exports.txt) trap 'rm -f sqlite3.tmp' EXIT "$BINARYEN/wasm-ctor-eval" -g -c _initialize sqlite3.wasm -o sqlite3.tmp -"$BINARYEN/wasm-opt" -g -O2 sqlite3.tmp -o sqlite3.wasm \ - --enable-multivalue --enable-mutable-globals \ +"$BINARYEN/wasm-opt" -g --strip --strip-producers -c -O3 \ + sqlite3.tmp -o sqlite3.wasm \ + --enable-simd --enable-mutable-globals --enable-multivalue \ --enable-bulk-memory --enable-reference-types \ --enable-nontrapping-float-to-int --enable-sign-ext \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt index 2a07fc0c14..0fefb373db 100644 --- a/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt +++ b/vendor/github.com/ncruces/go-sqlite3/embed/exports.txt @@ -1,49 +1,101 @@ free malloc malloc_destructor -sqlite3_errcode -sqlite3_errstr -sqlite3_errmsg -sqlite3_error_offset -sqlite3_open_v2 -sqlite3_close -sqlite3_close_v2 -sqlite3_prepare_v3 -sqlite3_finalize -sqlite3_reset -sqlite3_step -sqlite3_exec -sqlite3_clear_bindings +sqlite3_aggregate_context +sqlite3_anycollseq_init +sqlite3_backup_finish +sqlite3_backup_init +sqlite3_backup_pagecount +sqlite3_backup_remaining +sqlite3_backup_step +sqlite3_bind_blob64 +sqlite3_bind_double +sqlite3_bind_int64 +sqlite3_bind_null sqlite3_bind_parameter_count sqlite3_bind_parameter_index sqlite3_bind_parameter_name -sqlite3_bind_null -sqlite3_bind_int64 -sqlite3_bind_double +sqlite3_bind_pointer_go sqlite3_bind_text64 -sqlite3_bind_blob64 +sqlite3_bind_value sqlite3_bind_zeroblob64 -sqlite3_column_count -sqlite3_column_name -sqlite3_column_type -sqlite3_column_int64 -sqlite3_column_double -sqlite3_column_text -sqlite3_column_blob -sqlite3_column_bytes -sqlite3_blob_open -sqlite3_blob_close sqlite3_blob_bytes +sqlite3_blob_close +sqlite3_blob_open sqlite3_blob_read -sqlite3_blob_write sqlite3_blob_reopen -sqlite3_backup_init -sqlite3_backup_step -sqlite3_backup_finish -sqlite3_backup_remaining -sqlite3_backup_pagecount -sqlite3_uri_parameter -sqlite3_uri_key +sqlite3_blob_write sqlite3_changes64 +sqlite3_clear_bindings +sqlite3_close +sqlite3_close_v2 +sqlite3_column_blob +sqlite3_column_bytes +sqlite3_column_count +sqlite3_column_decltype +sqlite3_column_double +sqlite3_column_int64 +sqlite3_column_name +sqlite3_column_text +sqlite3_column_type +sqlite3_column_value +sqlite3_create_aggregate_function_go +sqlite3_create_collation_go +sqlite3_create_function_go +sqlite3_create_module_go +sqlite3_create_window_function_go +sqlite3_declare_vtab +sqlite3_errcode +sqlite3_errmsg +sqlite3_error_offset +sqlite3_errstr +sqlite3_exec +sqlite3_finalize +sqlite3_get_autocommit +sqlite3_get_auxdata +sqlite3_interrupt sqlite3_last_insert_rowid -sqlite3_get_autocommit \ No newline at end of file +sqlite3_open_v2 +sqlite3_overload_function +sqlite3_prepare_v3 +sqlite3_progress_handler_go +sqlite3_reset +sqlite3_result_blob64 +sqlite3_result_double +sqlite3_result_error +sqlite3_result_error_code +sqlite3_result_error_nomem +sqlite3_result_error_toobig +sqlite3_result_int64 +sqlite3_result_null +sqlite3_result_pointer_go +sqlite3_result_text64 +sqlite3_result_value +sqlite3_result_zeroblob64 +sqlite3_set_auxdata_go +sqlite3_step +sqlite3_stmt_busy +sqlite3_stmt_readonly +sqlite3_stmt_status +sqlite3_uri_key +sqlite3_uri_parameter +sqlite3_user_data +sqlite3_value_blob +sqlite3_value_bytes +sqlite3_value_double +sqlite3_value_dup +sqlite3_value_free +sqlite3_value_int64 +sqlite3_value_nochange +sqlite3_value_pointer_go +sqlite3_value_text +sqlite3_value_type +sqlite3_vtab_collation +sqlite3_vtab_config_go +sqlite3_vtab_distinct +sqlite3_vtab_in +sqlite3_vtab_in_first +sqlite3_vtab_in_next +sqlite3_vtab_nochange +sqlite3_vtab_on_conflict +sqlite3_vtab_rhs_value \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm b/vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm index be6574a138252050b4ef34ee58179f1cc05b1e20..0b73eba8a4c2b6cc7ecadddf31f8e4ad7913b8aa 100644 GIT binary patch literal 1470071 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 JZV>#RgK?sdDZwm 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

@_bYXz# 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

$|=O}+h=9|T-jP&5K7AkkB>F)`7vT8w$1x$ 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 }gA@*cnk?L6or(_f^YnP5-*Ifn>|ddM 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�z$m7tc2XKToBDBbzk& zxHltV*-h9`hkFC=3xGdC#o0QRa>1#(z-n-R6u(Q6 zwi|7*1(ySRqf$Y8%Ob6&1-}RHgp3yBKVHFG5AYtseeRy6R{I40Cd$M~1y}uJ@|41& z;;Tza%cf4d=GyD7_f()0K#6@f&4306f-|Wf%p&cLy~lFl-ylBP#+1AIF{^!(c8>Vm zN+0nM`;7x#0qB*ZE*ky!F&AHQ>1CJWsSy_uGZ;-~i`8a#Bsg7cw^hIX$pZ#*A}OhZ z&N@3SJ>#6g=bm@|kP9-0UN~%c*58OBmLB7ba}VyAUR;Ovz8=>RgP;q zE)T8>T$Q-I(Ep~#t@hMJjQ{tbaW+7p`ys?#xW5heDS+p`42;oeBn;X3yR@F3Td1hj z*k5-6-2nU$65$;D)teo;i<_-$#R*+}oC;yZ{UZ{r-tvbNEe8 zf&S6|&(ikFg7jCZN?_m)Fy|hUmLYV&) z5UQitl!^uu6jU}D!fHZzq8x8J``{ZP7g3-Mkn|x6yMf?ZeL1fYL$EaBB`!d9iAZjI z8p&1QznB2UM6#n@Q^^Zwr5`7R z2d>a+_Ef9_@{c*m+CMbh^i36o}0kK)oKwc z0G z?MM{X3Iw7+jz|U&=+guW{eZ9s2(IsaTFqMUKp#TLoxjp*A4gF7(07Krk!flTvh@cb z8P@=wtPyyEJb^7!Ir-fnl-Q1D9*d0hA@V4;vCV4#JHhEg-&6qo?)i%X;_+@J_S%tK zHxOhxaO2t$z&?Jp6sH?2Z)Dw3OV<9ZF77cW4AQ1V7f zUQ5Y?ki40ammzr!RFt^aQt}>3J`2fRlzekJssm#tH0dbkU zS|qnq@=cTQW(!)5%4WHDQ*s(|@2BJ(sAoHrOXhBT7Rl*IZo-Z0It;bDmAKrkl$?R& zwYW){U!v8ts`Vz~^w~d6r#S}*dno^}Am0q;WYvySeoCJIoSIB|By-Jx;*2%eKuTWe z!OrzK^0}KS`CKILrsPf2Q8iVptZH49d>)b;p9galaZN9nTYZgAb3PDSf#8}B1UCSZ zxpqLYa{+Bm`6-z`LNx5*TAgMH5ROy+*%0j*C(Q$pmE(6-xKT$d{tMr25*VWV8Ki%$lzbtQ*HUsf6l}GqCYi_%N@gY= zH~OhHK>U^Nw3K+95{Cga|0U$z|6gc6YQgzNaxm`8dvXR_M$)lj0W8;(CDR~5vJ198| z$riX2WXf1G?5E@$Bp;{b`OsWWSWRwv1<50k+>D!)2xK-rPIm~k1Jp(VVKWe1x0OS8 z$MT_jT;qQYAo(6o#2NInf+ zf5&w<8h$NAfLo5$_^OIE1|Yf!>t|?BD_E6St-yK+n<;Qqg?bU%zroQGp|@IYtM`ND zOOSS{dR>O!>*3mKgvHTtJYw}P@fc&AIl>tO-;Ty}jENfReq(XXM9)})0g{P|w0HAb zRN}9&h=RoG0#@efSPwy$_dp

    min-hu+~xehw>n$qH=9Bk|4^z3#fTj?XK?IaP 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 Pfn^Auqsz7HVg3FGmLyai literal 1444429 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%0DVvKV;inkAoqPM9(fi_x#o#4it>K(D!$ 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

    tbSrJ{DE=VR5AjOdN2WPUQg=-pO)r4-@5CABxD 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 diff --git a/vendor/github.com/ncruces/go-sqlite3/error.go b/vendor/github.com/ncruces/go-sqlite3/error.go index 957a7440b7..838f1aaefe 100644 --- a/vendor/github.com/ncruces/go-sqlite3/error.go +++ b/vendor/github.com/ncruces/go-sqlite3/error.go @@ -1,6 +1,7 @@ package sqlite3 import ( + "errors" "strconv" "strings" @@ -9,7 +10,7 @@ import ( // Error wraps an SQLite Error Code. // -// https://www.sqlite.org/c3ref/errcode.html +// https://sqlite.org/c3ref/errcode.html type Error struct { str string msg string @@ -19,14 +20,14 @@ type Error struct { // Code returns the primary error code for this error. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html func (e *Error) Code() ErrorCode { return ErrorCode(e.code) } // ExtendedCode returns the extended error code for this error. // -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html func (e *Error) ExtendedCode() ExtendedErrorCode { return ExtendedErrorCode(e.code) } @@ -43,8 +44,7 @@ func (e *Error) Error() string { } if e.msg != "" { - b.WriteByte(':') - b.WriteByte(' ') + b.WriteString(": ") b.WriteString(e.msg) } @@ -68,6 +68,19 @@ func (e *Error) Is(err error) bool { return false } +// As converts this error to an [ErrorCode] or [ExtendedErrorCode]. +func (e *Error) As(err any) bool { + switch c := err.(type) { + case *ErrorCode: + *c = e.Code() + return true + case *ExtendedErrorCode: + *c = e.ExtendedCode() + return true + } + return false +} + // Temporary returns true for [BUSY] errors. func (e *Error) Temporary() bool { return e.Code() == BUSY @@ -104,6 +117,15 @@ func (e ExtendedErrorCode) Is(err error) bool { return ok && c == ErrorCode(e) } +// As converts this error to an [ErrorCode]. +func (e ExtendedErrorCode) As(err any) bool { + c, ok := err.(*ErrorCode) + if ok { + *c = ErrorCode(e) + } + return ok +} + // Temporary returns true for [BUSY] errors. func (e ExtendedErrorCode) Temporary() bool { return ErrorCode(e) == BUSY @@ -113,3 +135,28 @@ func (e ExtendedErrorCode) Temporary() bool { func (e ExtendedErrorCode) Timeout() bool { return e == BUSY_TIMEOUT } + +func errorCode(err error, def ErrorCode) (msg string, code uint32) { + switch code := err.(type) { + case ErrorCode: + return "", uint32(code) + case ExtendedErrorCode: + return "", uint32(code) + case *Error: + return code.msg, uint32(code.code) + case nil: + return "", _OK + } + + var ecode ErrorCode + var xcode xErrorCode + switch { + case errors.As(err, &xcode): + code = uint32(xcode) + case errors.As(err, &ecode): + code = uint32(ecode) + default: + code = uint32(def) + } + return err.Error(), code +} diff --git a/vendor/github.com/ncruces/go-sqlite3/func.go b/vendor/github.com/ncruces/go-sqlite3/func.go new file mode 100644 index 0000000000..fbf0812d22 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/func.go @@ -0,0 +1,175 @@ +package sqlite3 + +import ( + "context" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" +) + +// AnyCollationNeeded registers a fake collating function +// for any unknown collating sequence. +// The fake collating function works like BINARY. +// +// This can be used to load schemas that contain +// one or more unknown collating sequences. +func (c *Conn) AnyCollationNeeded() { + c.call("sqlite3_anycollseq_init", uint64(c.handle), 0, 0) +} + +// CreateCollation defines a new collating sequence. +// +// https://sqlite.org/c3ref/create_collation.html +func (c *Conn) CreateCollation(name string, fn func(a, b []byte) int) error { + defer c.arena.mark()() + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + r := c.call("sqlite3_create_collation_go", + uint64(c.handle), uint64(namePtr), uint64(funcPtr)) + return c.error(r) +} + +// CreateFunction defines a new scalar SQL function. +// +// https://sqlite.org/c3ref/create_function.html +func (c *Conn) CreateFunction(name string, nArg int, flag FunctionFlag, fn ScalarFunction) error { + defer c.arena.mark()() + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + r := c.call("sqlite3_create_function_go", + uint64(c.handle), uint64(namePtr), uint64(nArg), + uint64(flag), uint64(funcPtr)) + return c.error(r) +} + +// ScalarFunction is the type of a scalar SQL function. +type ScalarFunction func(ctx Context, arg ...Value) + +// CreateWindowFunction defines a new aggregate or aggregate window SQL function. +// If fn returns a [WindowFunction], then an aggregate window function is created. +// If fn returns an [io.Closer], it will be called to free resources. +// +// https://sqlite.org/c3ref/create_function.html +func (c *Conn) CreateWindowFunction(name string, nArg int, flag FunctionFlag, fn func() AggregateFunction) error { + defer c.arena.mark()() + call := "sqlite3_create_aggregate_function_go" + namePtr := c.arena.string(name) + funcPtr := util.AddHandle(c.ctx, fn) + if _, ok := fn().(WindowFunction); ok { + call = "sqlite3_create_window_function_go" + } + r := c.call(call, + uint64(c.handle), uint64(namePtr), uint64(nArg), + uint64(flag), uint64(funcPtr)) + return c.error(r) +} + +// AggregateFunction is the interface an aggregate function should implement. +// +// https://sqlite.org/appfunc.html +type AggregateFunction interface { + // Step is invoked to add a row to the current window. + // The function arguments, if any, corresponding to the row being added are passed to Step. + Step(ctx Context, arg ...Value) + + // Value is invoked to return the current (or final) value of the aggregate. + Value(ctx Context) +} + +// WindowFunction is the interface an aggregate window function should implement. +// +// https://sqlite.org/windowfunctions.html +type WindowFunction interface { + AggregateFunction + + // Inverse is invoked to remove the oldest presently aggregated result of Step from the current window. + // The function arguments, if any, are those passed to Step for the row being removed. + Inverse(ctx Context, arg ...Value) +} + +func destroyCallback(ctx context.Context, mod api.Module, pApp uint32) { + util.DelHandle(ctx, pApp) +} + +func compareCallback(ctx context.Context, mod api.Module, pApp, nKey1, pKey1, nKey2, pKey2 uint32) uint32 { + fn := util.GetHandle(ctx, pApp).(func(a, b []byte) int) + return uint32(fn(util.View(mod, pKey1, uint64(nKey1)), util.View(mod, pKey2, uint64(nKey2)))) +} + +func funcCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := userDataHandle(db, pCtx).(ScalarFunction) + fn(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func stepCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil) + fn.Step(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func finalCallback(ctx context.Context, mod api.Module, pCtx uint32) { + var handle uint32 + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, &handle) + fn.Value(Context{db, pCtx}) + if err := util.DelHandle(ctx, handle); err != nil { + Context{db, pCtx}.ResultError(err) + } +} + +func valueCallback(ctx context.Context, mod api.Module, pCtx uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil) + fn.Value(Context{db, pCtx}) +} + +func inverseCallback(ctx context.Context, mod api.Module, pCtx, nArg, pArg uint32) { + db := ctx.Value(connKey{}).(*Conn) + fn := aggregateCtxHandle(db, pCtx, nil).(WindowFunction) + fn.Inverse(Context{db, pCtx}, callbackArgs(db, nArg, pArg)...) +} + +func userDataHandle(db *Conn, pCtx uint32) any { + pApp := uint32(db.call("sqlite3_user_data", uint64(pCtx))) + return util.GetHandle(db.ctx, pApp) +} + +func aggregateCtxHandle(db *Conn, pCtx uint32, close *uint32) AggregateFunction { + // On close, we're getting rid of the aggregate. + // Don't allocate space to store it. + var size uint64 + if close == nil { + size = ptrlen + } + ptr := uint32(db.call("sqlite3_aggregate_context", uint64(pCtx), size)) + + // If we already have an aggregate, return it. + if ptr != 0 { + if handle := util.ReadUint32(db.mod, ptr); handle != 0 { + fn := util.GetHandle(db.ctx, handle).(AggregateFunction) + if close != nil { + *close = handle + } + return fn + } + } + + // Create a new aggregate, and store it if needed. + fn := userDataHandle(db, pCtx).(func() AggregateFunction)() + if ptr != 0 { + util.WriteUint32(db.mod, ptr, util.AddHandle(db.ctx, fn)) + } + return fn +} + +func callbackArgs(db *Conn, nArg, pArg uint32) []Value { + args := make([]Value, nArg) + for i := range args { + args[i] = Value{ + sqlite: db.sqlite, + handle: util.ReadUint32(db.mod, pArg+ptrlen*uint32(i)), + } + } + return args +} diff --git a/vendor/github.com/ncruces/go-sqlite3/go.work b/vendor/github.com/ncruces/go-sqlite3/go.work new file mode 100644 index 0000000000..18e3785922 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/go.work @@ -0,0 +1,6 @@ +go 1.21 + +use ( + . + ./gormlite +) diff --git a/vendor/github.com/ncruces/go-sqlite3/go.work.sum b/vendor/github.com/ncruces/go-sqlite3/go.work.sum new file mode 100644 index 0000000000..cf0b1d6783 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/go.work.sum @@ -0,0 +1,4 @@ +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go index 6398bc1c1e..86bb9749db 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/const.go @@ -72,6 +72,7 @@ const ( IOERR_ROLLBACK_ATOMIC = IOERR | (31 << 8) IOERR_DATA = IOERR | (32 << 8) IOERR_CORRUPTFS = IOERR | (33 << 8) + IOERR_IN_PAGE = IOERR | (34 << 8) LOCKED_SHAREDCACHE = LOCKED | (1 << 8) LOCKED_VTAB = LOCKED | (2 << 8) BUSY_RECOVERY = BUSY | (1 << 8) diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go index 7bcd45ae94..1f5555fd3e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/error.go @@ -1,7 +1,6 @@ package util import ( - "fmt" "runtime" "strconv" ) @@ -15,14 +14,14 @@ const ( OOMErr = ErrorString("sqlite3: out of memory") RangeErr = ErrorString("sqlite3: index out of range") NoNulErr = ErrorString("sqlite3: missing NUL terminator") - NoGlobalErr = ErrorString("sqlite3: could not find global: ") - NoFuncErr = ErrorString("sqlite3: could not find function: ") - BinaryErr = ErrorString("sqlite3: no SQLite binary embed/set/loaded") + NoBinaryErr = ErrorString("sqlite3: no SQLite binary embed/set/loaded") + BadBinaryErr = ErrorString("sqlite3: invalid SQLite binary embed/set/loaded") TimeErr = ErrorString("sqlite3: invalid time value") WhenceErr = ErrorString("sqlite3: invalid whence") OffsetErr = ErrorString("sqlite3: invalid offset") TailErr = ErrorString("sqlite3: multiple statements") IsolationErr = ErrorString("sqlite3: unsupported isolation level") + ValueErr = ErrorString("sqlite3: unsupported value") NoVFSErr = ErrorString("sqlite3: no such vfs: ") ) @@ -34,14 +33,6 @@ func AssertErr() ErrorString { return ErrorString(msg) } -func Finalizer[T any](skip int) func(*T) { - msg := fmt.Sprintf("sqlite3: %T not closed", new(T)) - if _, file, line, ok := runtime.Caller(skip + 1); ok && skip >= 0 { - msg += " (" + file + ":" + strconv.Itoa(line) + ")" - } - return func(*T) { panic(ErrorString(msg)) } -} - func ErrorCodeString(rc uint32) string { switch rc { case ABORT_ROLLBACK: diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go index 65efe3b39e..9ff775774c 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/func.go @@ -10,6 +10,32 @@ import ( type i32 interface{ ~int32 | ~uint32 } type i64 interface{ ~int64 | ~uint64 } +type funcVI[T0 i32] func(context.Context, api.Module, T0) + +func (fn funcVI[T0]) Call(ctx context.Context, mod api.Module, stack []uint64) { + fn(ctx, mod, T0(stack[0])) +} + +func ExportFuncVI[T0 i32](mod wazero.HostModuleBuilder, name string, fn func(context.Context, api.Module, T0)) { + mod.NewFunctionBuilder(). + WithGoModuleFunction(funcVI[T0](fn), + []api.ValueType{api.ValueTypeI32}, nil). + Export(name) +} + +type funcVIII[T0, T1, T2 i32] func(context.Context, api.Module, T0, T1, T2) + +func (fn funcVIII[T0, T1, T2]) Call(ctx context.Context, mod api.Module, stack []uint64) { + fn(ctx, mod, T0(stack[0]), T1(stack[1]), T2(stack[2])) +} + +func ExportFuncVIII[T0, T1, T2 i32](mod wazero.HostModuleBuilder, name string, fn func(context.Context, api.Module, T0, T1, T2)) { + mod.NewFunctionBuilder(). + WithGoModuleFunction(funcVIII[T0, T1, T2](fn), + []api.ValueType{api.ValueTypeI32, api.ValueTypeI32, api.ValueTypeI32}, nil). + Export(name) +} + type funcII[TR, T0 i32] func(context.Context, api.Module, T0) TR func (fn funcII[TR, T0]) Call(ctx context.Context, mod api.Module, stack []uint64) { diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go new file mode 100644 index 0000000000..2309ed478f --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/handle.go @@ -0,0 +1,75 @@ +package util + +import ( + "context" + "io" + + "github.com/tetratelabs/wazero/experimental" +) + +type handleKey struct{} +type handleState struct { + handles []any + empty int +} + +func NewContext(ctx context.Context) context.Context { + state := new(handleState) + ctx = experimental.WithCloseNotifier(ctx, state) + ctx = context.WithValue(ctx, handleKey{}, state) + return ctx +} + +func (s *handleState) CloseNotify(ctx context.Context, exitCode uint32) { + for _, h := range s.handles { + if c, ok := h.(io.Closer); ok { + c.Close() + } + } + s.handles = nil + s.empty = 0 +} + +func GetHandle(ctx context.Context, id uint32) any { + if id == 0 { + return nil + } + s := ctx.Value(handleKey{}).(*handleState) + return s.handles[^id] +} + +func DelHandle(ctx context.Context, id uint32) error { + if id == 0 { + return nil + } + s := ctx.Value(handleKey{}).(*handleState) + a := s.handles[^id] + s.handles[^id] = nil + s.empty++ + if c, ok := a.(io.Closer); ok { + return c.Close() + } + return nil +} + +func AddHandle(ctx context.Context, a any) (id uint32) { + if a == nil { + panic(NilErr) + } + s := ctx.Value(handleKey{}).(*handleState) + + // Find an empty slot. + if s.empty > cap(s.handles)-len(s.handles) { + for id, h := range s.handles { + if h == nil { + s.empty-- + s.handles[id] = a + return ^uint32(id) + } + } + } + + // Add a new slot. + s.handles = append(s.handles, a) + return -uint32(len(s.handles)) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go index 0b3564720f..a09523fd16 100644 --- a/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go +++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go @@ -14,6 +14,9 @@ func View(mod api.Module, ptr uint32, size uint64) []byte { if size > math.MaxUint32 { panic(RangeErr) } + if size == 0 { + return nil + } buf, ok := mod.Memory().Read(ptr, uint32(size)) if !ok { panic(RangeErr) @@ -21,6 +24,17 @@ func View(mod api.Module, ptr uint32, size uint64) []byte { return buf } +func ReadUint8(mod api.Module, ptr uint32) uint8 { + if ptr == 0 { + panic(NilErr) + } + v, ok := mod.Memory().ReadByte(ptr) + if !ok { + panic(RangeErr) + } + return v +} + func ReadUint32(mod api.Module, ptr uint32) uint32 { if ptr == 0 { panic(NilErr) @@ -32,6 +46,16 @@ func ReadUint32(mod api.Module, ptr uint32) uint32 { return v } +func WriteUint8(mod api.Module, ptr uint32, v uint8) { + if ptr == 0 { + panic(NilErr) + } + ok := mod.Memory().WriteByte(ptr, v) + if !ok { + panic(RangeErr) + } +} + func WriteUint32(mod api.Module, ptr uint32, v uint32) { if ptr == 0 { panic(NilErr) diff --git a/vendor/github.com/ncruces/go-sqlite3/json.go b/vendor/github.com/ncruces/go-sqlite3/json.go new file mode 100644 index 0000000000..c0086ea1de --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/json.go @@ -0,0 +1,46 @@ +package sqlite3 + +import ( + "encoding/json" + "strconv" + "time" + "unsafe" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// JSON returns a value that can be used as an argument to +// [database/sql.DB.Exec], [database/sql.Row.Scan] and similar methods to +// store value as JSON, or decode JSON into value. +func JSON(value any) any { + return jsonValue{value} +} + +type jsonValue struct{ any } + +func (j jsonValue) JSON() any { return j.any } + +func (j jsonValue) Scan(value any) error { + var buf []byte + + switch v := value.(type) { + case []byte: + buf = v + case string: + buf = unsafe.Slice(unsafe.StringData(v), len(v)) + case int64: + buf = strconv.AppendInt(nil, v, 10) + case float64: + buf = strconv.AppendFloat(nil, v, 'g', -1, 64) + case time.Time: + buf = append(buf, '"') + buf = v.AppendFormat(buf, time.RFC3339Nano) + buf = append(buf, '"') + case nil: + buf = append(buf, "null"...) + default: + panic(util.AssertErr()) + } + + return json.Unmarshal(buf, j.any) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/module.go b/vendor/github.com/ncruces/go-sqlite3/module.go deleted file mode 100644 index e279601629..0000000000 --- a/vendor/github.com/ncruces/go-sqlite3/module.go +++ /dev/null @@ -1,352 +0,0 @@ -// Package sqlite3 wraps the C SQLite API. -package sqlite3 - -import ( - "context" - "io" - "math" - "os" - "sync" - - "github.com/ncruces/go-sqlite3/internal/util" - "github.com/ncruces/go-sqlite3/vfs" - "github.com/tetratelabs/wazero" - "github.com/tetratelabs/wazero/api" -) - -// Configure SQLite WASM. -// -// Importing package embed initializes these -// with an appropriate build of SQLite: -// -// import _ "github.com/ncruces/go-sqlite3/embed" -var ( - Binary []byte // WASM binary to load. - Path string // Path to load the binary from. -) - -var sqlite3 struct { - runtime wazero.Runtime - compiled wazero.CompiledModule - err error - once sync.Once -} - -func instantiateModule() (*module, error) { - ctx := context.Background() - - sqlite3.once.Do(compileModule) - if sqlite3.err != nil { - return nil, sqlite3.err - } - - cfg := wazero.NewModuleConfig() - - mod, err := sqlite3.runtime.InstantiateModule(ctx, sqlite3.compiled, cfg) - if err != nil { - return nil, err - } - return newModule(mod) -} - -func compileModule() { - ctx := context.Background() - sqlite3.runtime = wazero.NewRuntime(ctx) - - env := vfs.ExportHostFunctions(sqlite3.runtime.NewHostModuleBuilder("env")) - _, sqlite3.err = env.Instantiate(ctx) - if sqlite3.err != nil { - return - } - - bin := Binary - if bin == nil && Path != "" { - bin, sqlite3.err = os.ReadFile(Path) - if sqlite3.err != nil { - return - } - } - if bin == nil { - sqlite3.err = util.BinaryErr - return - } - - sqlite3.compiled, sqlite3.err = sqlite3.runtime.CompileModule(ctx, bin) -} - -type module struct { - ctx context.Context - mod api.Module - vfs io.Closer - api sqliteAPI - arg [8]uint64 -} - -func newModule(mod api.Module) (m *module, err error) { - m = new(module) - m.mod = mod - m.ctx, m.vfs = vfs.NewContext(context.Background()) - - getFun := func(name string) api.Function { - f := mod.ExportedFunction(name) - if f == nil { - err = util.NoFuncErr + util.ErrorString(name) - return nil - } - return f - } - - getVal := func(name string) uint32 { - g := mod.ExportedGlobal(name) - if g == nil { - err = util.NoGlobalErr + util.ErrorString(name) - return 0 - } - return util.ReadUint32(mod, uint32(g.Get())) - } - - m.api = sqliteAPI{ - free: getFun("free"), - malloc: getFun("malloc"), - destructor: getVal("malloc_destructor"), - errcode: getFun("sqlite3_errcode"), - errstr: getFun("sqlite3_errstr"), - errmsg: getFun("sqlite3_errmsg"), - erroff: getFun("sqlite3_error_offset"), - open: getFun("sqlite3_open_v2"), - close: getFun("sqlite3_close"), - closeZombie: getFun("sqlite3_close_v2"), - prepare: getFun("sqlite3_prepare_v3"), - finalize: getFun("sqlite3_finalize"), - reset: getFun("sqlite3_reset"), - step: getFun("sqlite3_step"), - exec: getFun("sqlite3_exec"), - clearBindings: getFun("sqlite3_clear_bindings"), - bindCount: getFun("sqlite3_bind_parameter_count"), - bindIndex: getFun("sqlite3_bind_parameter_index"), - bindName: getFun("sqlite3_bind_parameter_name"), - bindNull: getFun("sqlite3_bind_null"), - bindInteger: getFun("sqlite3_bind_int64"), - bindFloat: getFun("sqlite3_bind_double"), - bindText: getFun("sqlite3_bind_text64"), - bindBlob: getFun("sqlite3_bind_blob64"), - bindZeroBlob: getFun("sqlite3_bind_zeroblob64"), - columnCount: getFun("sqlite3_column_count"), - columnName: getFun("sqlite3_column_name"), - columnType: getFun("sqlite3_column_type"), - columnInteger: getFun("sqlite3_column_int64"), - columnFloat: getFun("sqlite3_column_double"), - columnText: getFun("sqlite3_column_text"), - columnBlob: getFun("sqlite3_column_blob"), - columnBytes: getFun("sqlite3_column_bytes"), - blobOpen: getFun("sqlite3_blob_open"), - blobClose: getFun("sqlite3_blob_close"), - blobReopen: getFun("sqlite3_blob_reopen"), - blobBytes: getFun("sqlite3_blob_bytes"), - blobRead: getFun("sqlite3_blob_read"), - blobWrite: getFun("sqlite3_blob_write"), - backupInit: getFun("sqlite3_backup_init"), - backupStep: getFun("sqlite3_backup_step"), - backupFinish: getFun("sqlite3_backup_finish"), - backupRemaining: getFun("sqlite3_backup_remaining"), - backupPageCount: getFun("sqlite3_backup_pagecount"), - changes: getFun("sqlite3_changes64"), - lastRowid: getFun("sqlite3_last_insert_rowid"), - autocommit: getFun("sqlite3_get_autocommit"), - } - if err != nil { - return nil, err - } - return m, nil -} - -func (m *module) close() error { - err := m.mod.Close(m.ctx) - m.vfs.Close() - return err -} - -func (m *module) error(rc uint64, handle uint32, sql ...string) error { - if rc == _OK { - return nil - } - - err := Error{code: rc} - - if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { - panic(util.OOMErr) - } - - if r := m.call(m.api.errstr, rc); r != 0 { - err.str = util.ReadString(m.mod, uint32(r), _MAX_STRING) - } - - if r := m.call(m.api.errmsg, uint64(handle)); r != 0 { - err.msg = util.ReadString(m.mod, uint32(r), _MAX_STRING) - } - - if sql != nil { - if r := m.call(m.api.erroff, uint64(handle)); r != math.MaxUint32 { - err.sql = sql[0][r:] - } - } - - switch err.msg { - case err.str, "not an error": - err.msg = "" - } - return &err -} - -func (m *module) call(fn api.Function, params ...uint64) uint64 { - copy(m.arg[:], params) - err := fn.CallWithStack(m.ctx, m.arg[:]) - if err != nil { - // The module closed or panicked; release resources. - m.vfs.Close() - panic(err) - } - return m.arg[0] -} - -func (m *module) free(ptr uint32) { - if ptr == 0 { - return - } - m.call(m.api.free, uint64(ptr)) -} - -func (m *module) new(size uint64) uint32 { - if size > _MAX_ALLOCATION_SIZE { - panic(util.OOMErr) - } - ptr := uint32(m.call(m.api.malloc, size)) - if ptr == 0 && size != 0 { - panic(util.OOMErr) - } - return ptr -} - -func (m *module) newBytes(b []byte) uint32 { - if b == nil { - return 0 - } - ptr := m.new(uint64(len(b))) - util.WriteBytes(m.mod, ptr, b) - return ptr -} - -func (m *module) newString(s string) uint32 { - ptr := m.new(uint64(len(s) + 1)) - util.WriteString(m.mod, ptr, s) - return ptr -} - -func (m *module) newArena(size uint64) arena { - return arena{ - m: m, - base: m.new(size), - size: uint32(size), - } -} - -type arena struct { - m *module - ptrs []uint32 - base uint32 - next uint32 - size uint32 -} - -func (a *arena) free() { - if a.m == nil { - return - } - a.reset() - a.m.free(a.base) - a.m = nil -} - -func (a *arena) reset() { - for _, ptr := range a.ptrs { - a.m.free(ptr) - } - a.ptrs = nil - a.next = 0 -} - -func (a *arena) new(size uint64) uint32 { - if size <= uint64(a.size-a.next) { - ptr := a.base + a.next - a.next += uint32(size) - return ptr - } - ptr := a.m.new(size) - a.ptrs = append(a.ptrs, ptr) - return ptr -} - -func (a *arena) bytes(b []byte) uint32 { - if b == nil { - return 0 - } - ptr := a.new(uint64(len(b))) - util.WriteBytes(a.m.mod, ptr, b) - return ptr -} - -func (a *arena) string(s string) uint32 { - ptr := a.new(uint64(len(s) + 1)) - util.WriteString(a.m.mod, ptr, s) - return ptr -} - -type sqliteAPI struct { - free api.Function - malloc api.Function - errcode api.Function - errstr api.Function - errmsg api.Function - erroff api.Function - open api.Function - close api.Function - closeZombie api.Function - prepare api.Function - finalize api.Function - reset api.Function - step api.Function - exec api.Function - clearBindings api.Function - bindNull api.Function - bindCount api.Function - bindIndex api.Function - bindName api.Function - bindInteger api.Function - bindFloat api.Function - bindText api.Function - bindBlob api.Function - bindZeroBlob api.Function - columnCount api.Function - columnName api.Function - columnType api.Function - columnInteger api.Function - columnFloat api.Function - columnText api.Function - columnBlob api.Function - columnBytes api.Function - blobOpen api.Function - blobClose api.Function - blobReopen api.Function - blobBytes api.Function - blobRead api.Function - blobWrite api.Function - backupInit api.Function - backupStep api.Function - backupFinish api.Function - backupRemaining api.Function - backupPageCount api.Function - changes api.Function - lastRowid api.Function - autocommit api.Function - destructor uint32 -} diff --git a/vendor/github.com/ncruces/go-sqlite3/pointer.go b/vendor/github.com/ncruces/go-sqlite3/pointer.go new file mode 100644 index 0000000000..dba1e44cbf --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/pointer.go @@ -0,0 +1,14 @@ +package sqlite3 + +// Pointer returns a pointer to a value +// that can be used as an argument to +// [database/sql.DB.Exec] and similar methods. +// +// https://sqlite.org/bindptr.html +func Pointer[T any](val T) any { + return pointer[T]{val} +} + +type pointer[T any] struct{ val T } + +func (p pointer[T]) Pointer() any { return p.val } diff --git a/vendor/github.com/ncruces/go-sqlite3/quote.go b/vendor/github.com/ncruces/go-sqlite3/quote.go new file mode 100644 index 0000000000..d1cd6fa875 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/quote.go @@ -0,0 +1,112 @@ +package sqlite3 + +import ( + "bytes" + "math" + "strconv" + "strings" + "time" + "unsafe" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Quote escapes and quotes a value +// making it safe to embed in SQL text. +func Quote(value any) string { + switch v := value.(type) { + case nil: + return "NULL" + case bool: + if v { + return "1" + } else { + return "0" + } + + case int: + return strconv.Itoa(v) + case int64: + return strconv.FormatInt(v, 10) + case float64: + switch { + case math.IsNaN(v): + return "NULL" + case math.IsInf(v, 1): + return "9.0e999" + case math.IsInf(v, -1): + return "-9.0e999" + } + return strconv.FormatFloat(v, 'g', -1, 64) + case time.Time: + return "'" + v.Format(time.RFC3339Nano) + "'" + + case string: + if strings.IndexByte(v, 0) >= 0 { + break + } + + buf := make([]byte, 2+len(v)+strings.Count(v, "'")) + buf[0] = '\'' + i := 1 + for _, b := range []byte(v) { + if b == '\'' { + buf[i] = b + i += 1 + } + buf[i] = b + i += 1 + } + buf[i] = '\'' + return unsafe.String(&buf[0], len(buf)) + + case []byte: + buf := make([]byte, 3+2*len(v)) + buf[0] = 'x' + buf[1] = '\'' + i := 2 + for _, b := range v { + const hex = "0123456789ABCDEF" + buf[i+0] = hex[b/16] + buf[i+1] = hex[b%16] + i += 2 + } + buf[i] = '\'' + return unsafe.String(&buf[0], len(buf)) + + case ZeroBlob: + if v > ZeroBlob(1e9-3)/2 { + break + } + + buf := bytes.Repeat([]byte("0"), int(3+2*int64(v))) + buf[0] = 'x' + buf[1] = '\'' + buf[len(buf)-1] = '\'' + return unsafe.String(&buf[0], len(buf)) + } + + panic(util.ValueErr) +} + +// QuoteIdentifier escapes and quotes an identifier +// making it safe to embed in SQL text. +func QuoteIdentifier(id string) string { + if strings.IndexByte(id, 0) >= 0 { + panic(util.ValueErr) + } + + buf := make([]byte, 2+len(id)+strings.Count(id, `"`)) + buf[0] = '"' + i := 1 + for _, b := range []byte(id) { + if b == '"' { + buf[i] = b + i += 1 + } + buf[i] = b + i += 1 + } + buf[i] = '"' + return unsafe.String(&buf[0], len(buf)) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/sqlite.go b/vendor/github.com/ncruces/go-sqlite3/sqlite.go new file mode 100644 index 0000000000..15bbf6ecd2 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/sqlite.go @@ -0,0 +1,316 @@ +// Package sqlite3 wraps the C SQLite API. +package sqlite3 + +import ( + "context" + "math" + "math/bits" + "os" + "sync" + "unsafe" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/ncruces/go-sqlite3/vfs" + "github.com/tetratelabs/wazero" + "github.com/tetratelabs/wazero/api" +) + +// Configure SQLite WASM. +// +// Importing package embed initializes these +// with an appropriate build of SQLite: +// +// import _ "github.com/ncruces/go-sqlite3/embed" +var ( + Binary []byte // WASM binary to load. + Path string // Path to load the binary from. + + RuntimeConfig wazero.RuntimeConfig +) + +var instance struct { + runtime wazero.Runtime + compiled wazero.CompiledModule + err error + once sync.Once +} + +func compileSQLite() { + if RuntimeConfig == nil { + RuntimeConfig = wazero.NewRuntimeConfig() + } + + ctx := context.Background() + instance.runtime = wazero.NewRuntimeWithConfig(ctx, RuntimeConfig) + + env := instance.runtime.NewHostModuleBuilder("env") + env = vfs.ExportHostFunctions(env) + env = exportCallbacks(env) + _, instance.err = env.Instantiate(ctx) + if instance.err != nil { + return + } + + bin := Binary + if bin == nil && Path != "" { + bin, instance.err = os.ReadFile(Path) + if instance.err != nil { + return + } + } + if bin == nil { + instance.err = util.NoBinaryErr + return + } + + instance.compiled, instance.err = instance.runtime.CompileModule(ctx, bin) +} + +type sqlite struct { + ctx context.Context + mod api.Module + funcs struct { + fn [32]api.Function + id [32]*byte + mask uint32 + } + stack [8]uint64 + freer uint32 +} + +func instantiateSQLite() (sqlt *sqlite, err error) { + instance.once.Do(compileSQLite) + if instance.err != nil { + return nil, instance.err + } + + sqlt = new(sqlite) + sqlt.ctx = util.NewContext(context.Background()) + + sqlt.mod, err = instance.runtime.InstantiateModule(sqlt.ctx, + instance.compiled, wazero.NewModuleConfig()) + if err != nil { + return nil, err + } + + global := sqlt.mod.ExportedGlobal("malloc_destructor") + if global == nil { + return nil, util.BadBinaryErr + } + + sqlt.freer = util.ReadUint32(sqlt.mod, uint32(global.Get())) + if err != nil { + return nil, err + } + return sqlt, nil +} + +func (sqlt *sqlite) close() error { + return sqlt.mod.Close(sqlt.ctx) +} + +func (sqlt *sqlite) error(rc uint64, handle uint32, sql ...string) error { + if rc == _OK { + return nil + } + + err := Error{code: rc} + + if err.Code() == NOMEM || err.ExtendedCode() == IOERR_NOMEM { + panic(util.OOMErr) + } + + if r := sqlt.call("sqlite3_errstr", rc); r != 0 { + err.str = util.ReadString(sqlt.mod, uint32(r), _MAX_NAME) + } + + if handle != 0 { + if r := sqlt.call("sqlite3_errmsg", uint64(handle)); r != 0 { + err.msg = util.ReadString(sqlt.mod, uint32(r), _MAX_NAME) + } + + if sql != nil { + if r := sqlt.call("sqlite3_error_offset", uint64(handle)); r != math.MaxUint32 { + err.sql = sql[0][r:] + } + } + } + + switch err.msg { + case err.str, "not an error": + err.msg = "" + } + return &err +} + +func (sqlt *sqlite) getfn(name string) api.Function { + c := &sqlt.funcs + p := unsafe.StringData(name) + for i := range c.id { + if c.id[i] == p { + c.id[i] = nil + c.mask &^= uint32(1) << i + return c.fn[i] + } + } + return sqlt.mod.ExportedFunction(name) +} + +func (sqlt *sqlite) putfn(name string, fn api.Function) { + c := &sqlt.funcs + p := unsafe.StringData(name) + i := bits.TrailingZeros32(^c.mask) + if i < 32 { + c.id[i] = p + c.fn[i] = fn + c.mask |= uint32(1) << i + } else { + c.id[0] = p + c.fn[0] = fn + c.mask = uint32(1) + } +} + +func (sqlt *sqlite) call(name string, params ...uint64) uint64 { + copy(sqlt.stack[:], params) + fn := sqlt.getfn(name) + err := fn.CallWithStack(sqlt.ctx, sqlt.stack[:]) + if err != nil { + panic(err) + } + sqlt.putfn(name, fn) + return sqlt.stack[0] +} + +func (sqlt *sqlite) free(ptr uint32) { + if ptr == 0 { + return + } + sqlt.call("free", uint64(ptr)) +} + +func (sqlt *sqlite) new(size uint64) uint32 { + if size > _MAX_ALLOCATION_SIZE { + panic(util.OOMErr) + } + ptr := uint32(sqlt.call("malloc", size)) + if ptr == 0 && size != 0 { + panic(util.OOMErr) + } + return ptr +} + +func (sqlt *sqlite) newBytes(b []byte) uint32 { + if (*[0]byte)(b) == nil { + return 0 + } + ptr := sqlt.new(uint64(len(b))) + util.WriteBytes(sqlt.mod, ptr, b) + return ptr +} + +func (sqlt *sqlite) newString(s string) uint32 { + ptr := sqlt.new(uint64(len(s) + 1)) + util.WriteString(sqlt.mod, ptr, s) + return ptr +} + +func (sqlt *sqlite) newArena(size uint64) arena { + return arena{ + sqlt: sqlt, + size: uint32(size), + base: sqlt.new(size), + } +} + +type arena struct { + sqlt *sqlite + ptrs []uint32 + base uint32 + next uint32 + size uint32 +} + +func (a *arena) free() { + if a.sqlt == nil { + return + } + for _, ptr := range a.ptrs { + a.sqlt.free(ptr) + } + a.sqlt.free(a.base) + a.sqlt = nil +} + +func (a *arena) mark() (reset func()) { + ptrs := len(a.ptrs) + next := a.next + return func() { + for _, ptr := range a.ptrs[ptrs:] { + a.sqlt.free(ptr) + } + a.ptrs = a.ptrs[:ptrs] + a.next = next + } +} + +func (a *arena) new(size uint64) uint32 { + if size <= uint64(a.size-a.next) { + ptr := a.base + a.next + a.next += uint32(size) + return ptr + } + ptr := a.sqlt.new(size) + a.ptrs = append(a.ptrs, ptr) + return ptr +} + +func (a *arena) bytes(b []byte) uint32 { + if b == nil { + return 0 + } + ptr := a.new(uint64(len(b))) + util.WriteBytes(a.sqlt.mod, ptr, b) + return ptr +} + +func (a *arena) string(s string) uint32 { + ptr := a.new(uint64(len(s) + 1)) + util.WriteString(a.sqlt.mod, ptr, s) + return ptr +} + +func exportCallbacks(env wazero.HostModuleBuilder) wazero.HostModuleBuilder { + util.ExportFuncII(env, "go_progress", progressCallback) + util.ExportFuncVI(env, "go_destroy", destroyCallback) + util.ExportFuncVIII(env, "go_func", funcCallback) + util.ExportFuncVIII(env, "go_step", stepCallback) + util.ExportFuncVI(env, "go_final", finalCallback) + util.ExportFuncVI(env, "go_value", valueCallback) + util.ExportFuncVIII(env, "go_inverse", inverseCallback) + util.ExportFuncIIIIII(env, "go_compare", compareCallback) + util.ExportFuncIIIIII(env, "go_vtab_create", vtabModuleCallback(0)) + util.ExportFuncIIIIII(env, "go_vtab_connect", vtabModuleCallback(1)) + util.ExportFuncII(env, "go_vtab_disconnect", vtabDisconnectCallback) + util.ExportFuncII(env, "go_vtab_destroy", vtabDestroyCallback) + util.ExportFuncIII(env, "go_vtab_best_index", vtabBestIndexCallback) + util.ExportFuncIIIII(env, "go_vtab_update", vtabUpdateCallback) + util.ExportFuncIII(env, "go_vtab_rename", vtabRenameCallback) + util.ExportFuncIIIII(env, "go_vtab_find_function", vtabFindFuncCallback) + util.ExportFuncII(env, "go_vtab_begin", vtabBeginCallback) + util.ExportFuncII(env, "go_vtab_sync", vtabSyncCallback) + util.ExportFuncII(env, "go_vtab_commit", vtabCommitCallback) + util.ExportFuncII(env, "go_vtab_rollback", vtabRollbackCallback) + util.ExportFuncIII(env, "go_vtab_savepoint", vtabSavepointCallback) + util.ExportFuncIII(env, "go_vtab_release", vtabReleaseCallback) + util.ExportFuncIII(env, "go_vtab_rollback_to", vtabRollbackToCallback) + util.ExportFuncIIIIII(env, "go_vtab_integrity", vtabIntegrityCallback) + util.ExportFuncIII(env, "go_cur_open", cursorOpenCallback) + util.ExportFuncII(env, "go_cur_close", cursorCloseCallback) + util.ExportFuncIIIIII(env, "go_cur_filter", cursorFilterCallback) + util.ExportFuncII(env, "go_cur_next", cursorNextCallback) + util.ExportFuncII(env, "go_cur_eof", cursorEOFCallback) + util.ExportFuncIIII(env, "go_cur_column", cursorColumnCallback) + util.ExportFuncIII(env, "go_cur_rowid", cursorRowIDCallback) + return env +} diff --git a/vendor/github.com/ncruces/go-sqlite3/stmt.go b/vendor/github.com/ncruces/go-sqlite3/stmt.go index 2fae0b40fb..e9b80ae821 100644 --- a/vendor/github.com/ncruces/go-sqlite3/stmt.go +++ b/vendor/github.com/ncruces/go-sqlite3/stmt.go @@ -1,7 +1,9 @@ package sqlite3 import ( + "encoding/json" "math" + "strconv" "time" "github.com/ncruces/go-sqlite3/internal/util" @@ -9,7 +11,7 @@ import ( // Stmt is a prepared statement object. // -// https://www.sqlite.org/c3ref/stmt.html +// https://sqlite.org/c3ref/stmt.html type Stmt struct { c *Conn err error @@ -20,33 +22,49 @@ type Stmt struct { // // It is safe to close a nil, zero or closed Stmt. // -// https://www.sqlite.org/c3ref/finalize.html +// https://sqlite.org/c3ref/finalize.html func (s *Stmt) Close() error { if s == nil || s.handle == 0 { return nil } - r := s.c.call(s.c.api.finalize, uint64(s.handle)) + r := s.c.call("sqlite3_finalize", uint64(s.handle)) s.handle = 0 return s.c.error(r) } +// Conn returns the database connection to which the prepared statement belongs. +// +// https://sqlite.org/c3ref/db_handle.html +func (s *Stmt) Conn() *Conn { + return s.c +} + +// ReadOnly returns true if and only if the statement +// makes no direct changes to the content of the database file. +// +// https://sqlite.org/c3ref/stmt_readonly.html +func (s *Stmt) ReadOnly() bool { + r := s.c.call("sqlite3_stmt_readonly", uint64(s.handle)) + return r != 0 +} + // Reset resets the prepared statement object. // -// https://www.sqlite.org/c3ref/reset.html +// https://sqlite.org/c3ref/reset.html func (s *Stmt) Reset() error { - r := s.c.call(s.c.api.reset, uint64(s.handle)) + r := s.c.call("sqlite3_reset", uint64(s.handle)) s.err = nil return s.c.error(r) } -// ClearBindings resets all bindings on the prepared statement. +// Busy determines if a prepared statement has been reset. // -// https://www.sqlite.org/c3ref/clear_bindings.html -func (s *Stmt) ClearBindings() error { - r := s.c.call(s.c.api.clearBindings, uint64(s.handle)) - return s.c.error(r) +// https://sqlite.org/c3ref/stmt_busy.html +func (s *Stmt) Busy() bool { + r := s.c.call("sqlite3_stmt_busy", uint64(s.handle)) + return r != 0 } // Step evaluates the SQL statement. @@ -57,16 +75,17 @@ func (s *Stmt) ClearBindings() error { // If an error has occurred, Step returns false; // call [Stmt.Err] or [Stmt.Reset] to get the error. // -// https://www.sqlite.org/c3ref/step.html +// https://sqlite.org/c3ref/step.html func (s *Stmt) Step() bool { s.c.checkInterrupt() - r := s.c.call(s.c.api.step, uint64(s.handle)) - if r == _ROW { + r := s.c.call("sqlite3_step", uint64(s.handle)) + switch r { + case _ROW: + s.err = nil return true - } - if r == _DONE { + case _DONE: s.err = nil - } else { + default: s.err = s.c.error(r) } return false @@ -75,7 +94,7 @@ func (s *Stmt) Step() bool { // Err gets the last error occurred during [Stmt.Step]. // Err returns nil after [Stmt.Reset] is called. // -// https://www.sqlite.org/c3ref/step.html +// https://sqlite.org/c3ref/step.html func (s *Stmt) Err() error { return s.err } @@ -88,11 +107,32 @@ func (s *Stmt) Exec() error { return s.Reset() } +// Status monitors the performance characteristics of prepared statements. +// +// https://sqlite.org/c3ref/stmt_status.html +func (s *Stmt) Status(op StmtStatus, reset bool) int { + var i uint64 + if reset { + i = 1 + } + r := s.c.call("sqlite3_stmt_status", uint64(s.handle), + uint64(op), i) + return int(r) +} + +// ClearBindings resets all bindings on the prepared statement. +// +// https://sqlite.org/c3ref/clear_bindings.html +func (s *Stmt) ClearBindings() error { + r := s.c.call("sqlite3_clear_bindings", uint64(s.handle)) + return s.c.error(r) +} + // BindCount returns the number of SQL parameters in the prepared statement. // -// https://www.sqlite.org/c3ref/bind_parameter_count.html +// https://sqlite.org/c3ref/bind_parameter_count.html func (s *Stmt) BindCount() int { - r := s.c.call(s.c.api.bindCount, + r := s.c.call("sqlite3_bind_parameter_count", uint64(s.handle)) return int(r) } @@ -100,11 +140,11 @@ func (s *Stmt) BindCount() int { // BindIndex returns the index of a parameter in the prepared statement // given its name. // -// https://www.sqlite.org/c3ref/bind_parameter_index.html +// https://sqlite.org/c3ref/bind_parameter_index.html func (s *Stmt) BindIndex(name string) int { - defer s.c.arena.reset() + defer s.c.arena.mark()() namePtr := s.c.arena.string(name) - r := s.c.call(s.c.api.bindIndex, + r := s.c.call("sqlite3_bind_parameter_index", uint64(s.handle), uint64(namePtr)) return int(r) } @@ -112,16 +152,16 @@ func (s *Stmt) BindIndex(name string) int { // BindName returns the name of a parameter in the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_parameter_name.html +// https://sqlite.org/c3ref/bind_parameter_name.html func (s *Stmt) BindName(param int) string { - r := s.c.call(s.c.api.bindName, + r := s.c.call("sqlite3_bind_parameter_name", uint64(s.handle), uint64(param)) ptr := uint32(r) if ptr == 0 { return "" } - return util.ReadString(s.c.mod, ptr, _MAX_STRING) + return util.ReadString(s.c.mod, ptr, _MAX_NAME) } // BindBool binds a bool to the prepared statement. @@ -129,18 +169,19 @@ func (s *Stmt) BindName(param int) string { // SQLite does not have a separate boolean storage class. // Instead, boolean values are stored as integers 0 (false) and 1 (true). // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindBool(param int, value bool) error { + var i int64 if value { - return s.BindInt64(param, 1) + i = 1 } - return s.BindInt64(param, 0) + return s.BindInt64(param, i) } // BindInt binds an int to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindInt(param int, value int) error { return s.BindInt64(param, int64(value)) } @@ -148,9 +189,9 @@ func (s *Stmt) BindInt(param int, value int) error { // BindInt64 binds an int64 to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindInt64(param int, value int64) error { - r := s.c.call(s.c.api.bindInteger, + r := s.c.call("sqlite3_bind_int64", uint64(s.handle), uint64(param), uint64(value)) return s.c.error(r) } @@ -158,9 +199,9 @@ func (s *Stmt) BindInt64(param int, value int64) error { // BindFloat binds a float64 to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindFloat(param int, value float64) error { - r := s.c.call(s.c.api.bindFloat, + r := s.c.call("sqlite3_bind_double", uint64(s.handle), uint64(param), math.Float64bits(value)) return s.c.error(r) } @@ -168,13 +209,32 @@ func (s *Stmt) BindFloat(param int, value float64) error { // BindText binds a string to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindText(param int, value string) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } ptr := s.c.newString(value) - r := s.c.call(s.c.api.bindText, + r := s.c.call("sqlite3_bind_text64", + uint64(s.handle), uint64(param), + uint64(ptr), uint64(len(value)), + uint64(s.c.freer), _UTF8) + return s.c.error(r) +} + +// BindRawText binds a []byte to the prepared statement as text. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindRawText(param int, value []byte) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } + ptr := s.c.newBytes(value) + r := s.c.call("sqlite3_bind_text64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(value)), - uint64(s.c.api.destructor), _UTF8) + uint64(s.c.freer), _UTF8) return s.c.error(r) } @@ -182,22 +242,25 @@ func (s *Stmt) BindText(param int, value string) error { // The leftmost SQL parameter has an index of 1. // Binding a nil slice is the same as calling [Stmt.BindNull]. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindBlob(param int, value []byte) error { + if len(value) > _MAX_LENGTH { + return TOOBIG + } ptr := s.c.newBytes(value) - r := s.c.call(s.c.api.bindBlob, + r := s.c.call("sqlite3_bind_blob64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(value)), - uint64(s.c.api.destructor)) + uint64(s.c.freer)) return s.c.error(r) } // BindZeroBlob binds a zero-filled, length n BLOB to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindZeroBlob(param int, n int64) error { - r := s.c.call(s.c.api.bindZeroBlob, + r := s.c.call("sqlite3_bind_zeroblob64", uint64(s.handle), uint64(param), uint64(n)) return s.c.error(r) } @@ -205,9 +268,9 @@ func (s *Stmt) BindZeroBlob(param int, n int64) error { // BindNull binds a NULL to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindNull(param int) error { - r := s.c.call(s.c.api.bindNull, + r := s.c.call("sqlite3_bind_null", uint64(s.handle), uint64(param)) return s.c.error(r) } @@ -215,7 +278,7 @@ func (s *Stmt) BindNull(param int) error { // BindTime binds a [time.Time] to the prepared statement. // The leftmost SQL parameter has an index of 1. // -// https://www.sqlite.org/c3ref/bind_blob.html +// https://sqlite.org/c3ref/bind_blob.html func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error { if format == TimeFormatDefault { return s.bindRFC3339Nano(param, value) @@ -234,24 +297,62 @@ func (s *Stmt) BindTime(param int, value time.Time, format TimeFormat) error { } func (s *Stmt) bindRFC3339Nano(param int, value time.Time) error { - const maxlen = uint64(len(time.RFC3339Nano)) + const maxlen = uint64(len(time.RFC3339Nano)) + 5 ptr := s.c.new(maxlen) buf := util.View(s.c.mod, ptr, maxlen) buf = value.AppendFormat(buf[:0], time.RFC3339Nano) - r := s.c.call(s.c.api.bindText, + r := s.c.call("sqlite3_bind_text64", uint64(s.handle), uint64(param), uint64(ptr), uint64(len(buf)), - uint64(s.c.api.destructor), _UTF8) + uint64(s.c.freer), _UTF8) + return s.c.error(r) +} + +// BindPointer binds a NULL to the prepared statement, just like [Stmt.BindNull], +// but it also associates ptr with that NULL value such that it can be retrieved +// within an application-defined SQL function using [Value.Pointer]. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindPointer(param int, ptr any) error { + valPtr := util.AddHandle(s.c.ctx, ptr) + r := s.c.call("sqlite3_bind_pointer_go", + uint64(s.handle), uint64(param), uint64(valPtr)) + return s.c.error(r) +} + +// BindJSON binds the JSON encoding of value to the prepared statement. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindJSON(param int, value any) error { + data, err := json.Marshal(value) + if err != nil { + return err + } + return s.BindRawText(param, data) +} + +// BindValue binds a copy of value to the prepared statement. +// The leftmost SQL parameter has an index of 1. +// +// https://sqlite.org/c3ref/bind_blob.html +func (s *Stmt) BindValue(param int, value Value) error { + if value.sqlite != s.c.sqlite { + return MISUSE + } + r := s.c.call("sqlite3_bind_value", + uint64(s.handle), uint64(param), uint64(value.handle)) return s.c.error(r) } // ColumnCount returns the number of columns in a result set. // -// https://www.sqlite.org/c3ref/column_count.html +// https://sqlite.org/c3ref/column_count.html func (s *Stmt) ColumnCount() int { - r := s.c.call(s.c.api.columnCount, + r := s.c.call("sqlite3_column_count", uint64(s.handle)) return int(r) } @@ -259,35 +360,48 @@ func (s *Stmt) ColumnCount() int { // ColumnName returns the name of the result column. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_name.html +// https://sqlite.org/c3ref/column_name.html func (s *Stmt) ColumnName(col int) string { - r := s.c.call(s.c.api.columnName, + r := s.c.call("sqlite3_column_name", uint64(s.handle), uint64(col)) ptr := uint32(r) if ptr == 0 { panic(util.OOMErr) } - return util.ReadString(s.c.mod, ptr, _MAX_STRING) + return util.ReadString(s.c.mod, ptr, _MAX_NAME) } // ColumnType returns the initial [Datatype] of the result column. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnType(col int) Datatype { - r := s.c.call(s.c.api.columnType, + r := s.c.call("sqlite3_column_type", uint64(s.handle), uint64(col)) return Datatype(r) } +// ColumnDeclType returns the declared datatype of the result column. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_decltype.html +func (s *Stmt) ColumnDeclType(col int) string { + r := s.c.call("sqlite3_column_decltype", + uint64(s.handle), uint64(col)) + if r == 0 { + return "" + } + return util.ReadString(s.c.mod, uint32(r), _MAX_NAME) +} + // ColumnBool returns the value of the result column as a bool. // The leftmost column of the result set has the index 0. // SQLite does not have a separate boolean storage class. // Instead, boolean values are retrieved as integers, // with 0 converted to false and any other value to true. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnBool(col int) bool { if i := s.ColumnInt64(col); i != 0 { return true @@ -298,7 +412,7 @@ func (s *Stmt) ColumnBool(col int) bool { // ColumnInt returns the value of the result column as an int. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnInt(col int) int { return int(s.ColumnInt64(col)) } @@ -306,9 +420,9 @@ func (s *Stmt) ColumnInt(col int) int { // ColumnInt64 returns the value of the result column as an int64. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnInt64(col int) int64 { - r := s.c.call(s.c.api.columnInteger, + r := s.c.call("sqlite3_column_int64", uint64(s.handle), uint64(col)) return int64(r) } @@ -316,9 +430,9 @@ func (s *Stmt) ColumnInt64(col int) int64 { // ColumnFloat returns the value of the result column as a float64. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnFloat(col int) float64 { - r := s.c.call(s.c.api.columnFloat, + r := s.c.call("sqlite3_column_double", uint64(s.handle), uint64(col)) return math.Float64frombits(r) } @@ -326,7 +440,7 @@ func (s *Stmt) ColumnFloat(col int) float64 { // ColumnTime returns the value of the result column as a [time.Time]. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time { var v any switch s.ColumnType(col) { @@ -351,7 +465,7 @@ func (s *Stmt) ColumnTime(col int, format TimeFormat) time.Time { // ColumnText returns the value of the result column as a string. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnText(col int) string { return string(s.ColumnRawText(col)) } @@ -360,7 +474,7 @@ func (s *Stmt) ColumnText(col int) string { // the value of the result column as a []byte. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnBlob(col int, buf []byte) []byte { return append(buf, s.ColumnRawBlob(col)...) } @@ -370,22 +484,11 @@ func (s *Stmt) ColumnBlob(col int, buf []byte) []byte { // subsequent calls to [Stmt] methods. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnRawText(col int) []byte { - r := s.c.call(s.c.api.columnText, - uint64(s.handle), uint64(col)) - - ptr := uint32(r) - if ptr == 0 { - r = s.c.call(s.c.api.errcode, uint64(s.c.handle)) - s.err = s.c.error(r) - return nil - } - - r = s.c.call(s.c.api.columnBytes, + r := s.c.call("sqlite3_column_text", uint64(s.handle), uint64(col)) - - return util.View(s.c.mod, ptr, r) + return s.columnRawBytes(col, uint32(r)) } // ColumnRawBlob returns the value of the result column as a []byte. @@ -393,35 +496,59 @@ func (s *Stmt) ColumnRawText(col int) []byte { // subsequent calls to [Stmt] methods. // The leftmost column of the result set has the index 0. // -// https://www.sqlite.org/c3ref/column_blob.html +// https://sqlite.org/c3ref/column_blob.html func (s *Stmt) ColumnRawBlob(col int) []byte { - r := s.c.call(s.c.api.columnBlob, + r := s.c.call("sqlite3_column_blob", uint64(s.handle), uint64(col)) + return s.columnRawBytes(col, uint32(r)) +} - ptr := uint32(r) +func (s *Stmt) columnRawBytes(col int, ptr uint32) []byte { if ptr == 0 { - r = s.c.call(s.c.api.errcode, uint64(s.c.handle)) + r := s.c.call("sqlite3_errcode", uint64(s.c.handle)) s.err = s.c.error(r) return nil } - r = s.c.call(s.c.api.columnBytes, + r := s.c.call("sqlite3_column_bytes", uint64(s.handle), uint64(col)) - return util.View(s.c.mod, ptr, r) } -// Return true if stmt is an empty SQL statement. -// This is used as an optimization. -// It's OK to always return false here. -func emptyStatement(stmt string) bool { - for _, b := range []byte(stmt) { - switch b { - case ' ', '\n', '\r', '\t', '\v', '\f': - case ';': - default: - return false - } +// ColumnJSON parses the JSON-encoded value of the result column +// and stores it in the value pointed to by ptr. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_blob.html +func (s *Stmt) ColumnJSON(col int, ptr any) error { + var data []byte + switch s.ColumnType(col) { + case NULL: + data = append(data, "null"...) + case TEXT: + data = s.ColumnRawText(col) + case BLOB: + data = s.ColumnRawBlob(col) + case INTEGER: + data = strconv.AppendInt(nil, s.ColumnInt64(col), 10) + case FLOAT: + data = strconv.AppendFloat(nil, s.ColumnFloat(col), 'g', -1, 64) + default: + panic(util.AssertErr()) + } + return json.Unmarshal(data, ptr) +} + +// ColumnValue returns the unprotected value of the result column. +// The leftmost column of the result set has the index 0. +// +// https://sqlite.org/c3ref/column_blob.html +func (s *Stmt) ColumnValue(col int) Value { + r := s.c.call("sqlite3_column_value", + uint64(s.handle), uint64(col)) + return Value{ + unprot: true, + sqlite: s.c.sqlite, + handle: uint32(r), } - return true } diff --git a/vendor/github.com/ncruces/go-sqlite3/time.go b/vendor/github.com/ncruces/go-sqlite3/time.go index 6fddc3eadf..47ac67241f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/time.go +++ b/vendor/github.com/ncruces/go-sqlite3/time.go @@ -15,12 +15,12 @@ import ( // See the documentation for the [TimeFormatDefault] constant // for formats recognized by SQLite. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html type TimeFormat string // TimeFormats recognized by SQLite to encode/decode time values. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html#time_values const ( TimeFormatDefault TimeFormat = "" // time.RFC3339Nano @@ -83,9 +83,9 @@ const ( // a float64 for [TimeFormatJulianDay] and [TimeFormatUnixFrac], // or an int64 for the other numeric formats. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html // -// [collating sequence]: https://www.sqlite.org/datatype3.html#collating_sequences +// [collating sequence]: https://sqlite.org/datatype3.html#collating_sequences func (f TimeFormat) Encode(t time.Time) any { switch f { // Numeric formats @@ -136,7 +136,7 @@ func (f TimeFormat) Encode(t time.Time) any { // Unix timestamps before 1980 and after 9999 may be misinterpreted as julian day numbers, // or have the wrong time unit. // -// https://www.sqlite.org/lang_datefunc.html +// https://sqlite.org/lang_datefunc.html func (f TimeFormat) Decode(v any) (time.Time, error) { switch f { // Numeric formats @@ -164,9 +164,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { case float64: sec, frac := math.Modf(v) nsec := math.Floor(frac * 1e9) - return time.Unix(int64(sec), int64(nsec)), nil + return time.Unix(int64(sec), int64(nsec)).UTC(), nil case int64: - return time.Unix(v, 0), nil + return time.Unix(v, 0).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -181,9 +181,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.UnixMilli(int64(math.Floor(v))), nil + return time.UnixMilli(int64(math.Floor(v))).UTC(), nil case int64: - return time.UnixMilli(int64(v)), nil + return time.UnixMilli(int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -198,9 +198,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.UnixMicro(int64(math.Floor(v))), nil + return time.UnixMicro(int64(math.Floor(v))).UTC(), nil case int64: - return time.UnixMicro(int64(v)), nil + return time.UnixMicro(int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -215,9 +215,9 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } switch v := v.(type) { case float64: - return time.Unix(0, int64(math.Floor(v))), nil + return time.Unix(0, int64(math.Floor(v))).UTC(), nil case int64: - return time.Unix(0, int64(v)), nil + return time.Unix(0, int64(v)).UTC(), nil default: return time.Time{}, util.TimeErr } @@ -238,26 +238,16 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { } dates := []TimeFormat{ - TimeFormat6TZ, TimeFormat6, TimeFormat3TZ, TimeFormat3, - TimeFormat5TZ, TimeFormat5, TimeFormat2TZ, TimeFormat2, - TimeFormat1, + TimeFormat9, TimeFormat8, + TimeFormat6, TimeFormat5, + TimeFormat3, TimeFormat2, TimeFormat1, } for _, f := range dates { - t, err := time.Parse(string(f), s) + t, err := f.Decode(s) if err == nil { return t, nil } } - - times := []TimeFormat{ - TimeFormat9TZ, TimeFormat9, TimeFormat8TZ, TimeFormat8, - } - for _, f := range times { - t, err := time.Parse(string(f), s) - if err == nil { - return t.AddDate(2000, 0, 0), nil - } - } } switch v := v.(type) { case float64: @@ -314,7 +304,10 @@ func (f TimeFormat) Decode(v any) (time.Time, error) { return time.Time{}, util.TimeErr } t, err := f.parseRelaxed(s) - return t.AddDate(2000, 0, 0), err + if err != nil { + return time.Time{}, err + } + return t.AddDate(2000, 0, 0), nil default: s, ok := v.(string) @@ -338,3 +331,20 @@ func (f TimeFormat) parseRelaxed(s string) (time.Time, error) { } return t, nil } + +// Scanner returns a [database/sql.Scanner] that can be used as an argument to +// [database/sql.Row.Scan] and similar methods to +// decode a time value into dest using this format. +func (f TimeFormat) Scanner(dest *time.Time) interface{ Scan(any) error } { + return timeScanner{dest, f} +} + +type timeScanner struct { + *time.Time + TimeFormat +} + +func (s timeScanner) Scan(src any) (err error) { + *s.Time, err = s.Decode(src) + return +} diff --git a/vendor/github.com/ncruces/go-sqlite3/tx.go b/vendor/github.com/ncruces/go-sqlite3/tx.go index 5fe144c114..f9996e4d4f 100644 --- a/vendor/github.com/ncruces/go-sqlite3/tx.go +++ b/vendor/github.com/ncruces/go-sqlite3/tx.go @@ -7,18 +7,19 @@ import ( "math/rand" "runtime" "strconv" + "strings" ) // Tx is an in-progress database transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html type Tx struct { c *Conn } // Begin starts a deferred transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) Begin() Tx { // BEGIN even if interrupted. err := c.txExecInterrupted(`BEGIN DEFERRED`) @@ -30,7 +31,7 @@ func (c *Conn) Begin() Tx { // BeginImmediate starts an immediate transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) BeginImmediate() (Tx, error) { err := c.Exec(`BEGIN IMMEDIATE`) if err != nil { @@ -41,7 +42,7 @@ func (c *Conn) BeginImmediate() (Tx, error) { // BeginExclusive starts an exclusive transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (c *Conn) BeginExclusive() (Tx, error) { err := c.Exec(`BEGIN EXCLUSIVE`) if err != nil { @@ -55,14 +56,14 @@ func (c *Conn) BeginExclusive() (Tx, error) { // // This is meant to be deferred: // -// func doWork(conn *sqlite3.Conn) (err error) { -// tx := conn.Begin() +// func doWork(db *sqlite3.Conn) (err error) { +// tx := db.Begin() // defer tx.End(&err) // // // ... do work in the transaction // } // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) End(errp *error) { recovered := recover() if recovered != nil { @@ -93,7 +94,7 @@ func (tx Tx) End(errp *error) { // Commit commits the transaction. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) Commit() error { return tx.c.Exec(`COMMIT`) } @@ -101,7 +102,7 @@ func (tx Tx) Commit() error { // Rollback rolls back the transaction, // even if the connection has been interrupted. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (tx Tx) Rollback() error { return tx.c.txExecInterrupted(`ROLLBACK`) } @@ -109,7 +110,7 @@ func (tx Tx) Rollback() error { // Savepoint is a marker within a transaction // that allows for partial rollback. // -// https://www.sqlite.org/lang_savepoint.html +// https://sqlite.org/lang_savepoint.html type Savepoint struct { c *Conn name string @@ -117,19 +118,10 @@ type Savepoint struct { // Savepoint establishes a new transaction savepoint. // -// https://www.sqlite.org/lang_savepoint.html +// https://sqlite.org/lang_savepoint.html func (c *Conn) Savepoint() Savepoint { - name := "sqlite3.Savepoint" - var pc [1]uintptr - if n := runtime.Callers(2, pc[:]); n > 0 { - frames := runtime.CallersFrames(pc[:n]) - frame, _ := frames.Next() - if frame.Function != "" { - name = frame.Function - } - } // Names can be reused; this makes catching bugs more likely. - name += "#" + strconv.Itoa(int(rand.Int31())) + name := saveptName() + "_" + strconv.Itoa(int(rand.Int31())) err := c.txExecInterrupted(fmt.Sprintf("SAVEPOINT %q;", name)) if err != nil { @@ -138,13 +130,34 @@ func (c *Conn) Savepoint() Savepoint { return Savepoint{c: c, name: name} } +func saveptName() (name string) { + defer func() { + if name == "" { + name = "sqlite3.Savepoint" + } + }() + + var pc [8]uintptr + n := runtime.Callers(3, pc[:]) + if n <= 0 { + return "" + } + frames := runtime.CallersFrames(pc[:n]) + frame, more := frames.Next() + for more && (strings.HasPrefix(frame.Function, "database/sql.") || + strings.HasPrefix(frame.Function, "github.com/ncruces/go-sqlite3/driver.")) { + frame, more = frames.Next() + } + return frame.Function +} + // Release releases the savepoint rolling back any changes // if *error points to a non-nil error. // // This is meant to be deferred: // -// func doWork(conn *sqlite3.Conn) (err error) { -// savept := conn.Savepoint() +// func doWork(db *sqlite3.Conn) (err error) { +// savept := db.Savepoint() // defer savept.Release(&err) // // // ... do work in the transaction @@ -185,7 +198,7 @@ func (s Savepoint) Release(errp *error) { // even if the connection has been interrupted. // Rollback does not release the savepoint. // -// https://www.sqlite.org/lang_transaction.html +// https://sqlite.org/lang_transaction.html func (s Savepoint) Rollback() error { // ROLLBACK even if interrupted. return s.c.txExecInterrupted(fmt.Sprintf("ROLLBACK TO %q;", s.name)) diff --git a/vendor/github.com/ncruces/go-sqlite3/value.go b/vendor/github.com/ncruces/go-sqlite3/value.go new file mode 100644 index 0000000000..e180eb46a7 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/value.go @@ -0,0 +1,188 @@ +package sqlite3 + +import ( + "encoding/json" + "math" + "strconv" + "time" + + "github.com/ncruces/go-sqlite3/internal/util" +) + +// Value is any value that can be stored in a database table. +// +// https://sqlite.org/c3ref/value.html +type Value struct { + *sqlite + handle uint32 + unprot bool + copied bool +} + +func (v Value) protected() uint64 { + if v.unprot { + panic(util.ValueErr) + } + return uint64(v.handle) +} + +// Dup makes a copy of the SQL value and returns a pointer to that copy. +// +// https://sqlite.org/c3ref/value_dup.html +func (v Value) Dup() *Value { + r := v.call("sqlite3_value_dup", uint64(v.handle)) + return &Value{ + copied: true, + sqlite: v.sqlite, + handle: uint32(r), + } +} + +// Close frees an SQL value previously obtained by [Value.Dup]. +// +// https://sqlite.org/c3ref/value_dup.html +func (dup *Value) Close() error { + if !dup.copied { + panic(util.ValueErr) + } + dup.call("sqlite3_value_free", uint64(dup.handle)) + dup.handle = 0 + return nil +} + +// Type returns the initial [Datatype] of the value. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Type() Datatype { + r := v.call("sqlite3_value_type", v.protected()) + return Datatype(r) +} + +// Bool returns the value as a bool. +// SQLite does not have a separate boolean storage class. +// Instead, boolean values are retrieved as integers, +// with 0 converted to false and any other value to true. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Bool() bool { + if i := v.Int64(); i != 0 { + return true + } + return false +} + +// Int returns the value as an int. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Int() int { + return int(v.Int64()) +} + +// Int64 returns the value as an int64. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Int64() int64 { + r := v.call("sqlite3_value_int64", v.protected()) + return int64(r) +} + +// Float returns the value as a float64. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Float() float64 { + r := v.call("sqlite3_value_double", v.protected()) + return math.Float64frombits(r) +} + +// Time returns the value as a [time.Time]. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Time(format TimeFormat) time.Time { + var a any + switch v.Type() { + case INTEGER: + a = v.Int64() + case FLOAT: + a = v.Float() + case TEXT, BLOB: + a = v.Text() + case NULL: + return time.Time{} + default: + panic(util.AssertErr()) + } + t, _ := format.Decode(a) + return t +} + +// Text returns the value as a string. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Text() string { + return string(v.RawText()) +} + +// Blob appends to buf and returns +// the value as a []byte. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) Blob(buf []byte) []byte { + return append(buf, v.RawBlob()...) +} + +// RawText returns the value as a []byte. +// The []byte is owned by SQLite and may be invalidated by +// subsequent calls to [Value] methods. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) RawText() []byte { + r := v.call("sqlite3_value_text", v.protected()) + return v.rawBytes(uint32(r)) +} + +// RawBlob returns the value as a []byte. +// The []byte is owned by SQLite and may be invalidated by +// subsequent calls to [Value] methods. +// +// https://sqlite.org/c3ref/value_blob.html +func (v Value) RawBlob() []byte { + r := v.call("sqlite3_value_blob", v.protected()) + return v.rawBytes(uint32(r)) +} + +func (v Value) rawBytes(ptr uint32) []byte { + if ptr == 0 { + return nil + } + + r := v.call("sqlite3_value_bytes", v.protected()) + return util.View(v.mod, ptr, r) +} + +// Pointer gets the pointer associated with this value, +// or nil if it has no associated pointer. +func (v Value) Pointer() any { + r := v.call("sqlite3_value_pointer_go", v.protected()) + return util.GetHandle(v.ctx, uint32(r)) +} + +// JSON parses a JSON-encoded value +// and stores the result in the value pointed to by ptr. +func (v Value) JSON(ptr any) error { + var data []byte + switch v.Type() { + case NULL: + data = append(data, "null"...) + case TEXT: + data = v.RawText() + case BLOB: + data = v.RawBlob() + case INTEGER: + data = strconv.AppendInt(nil, v.Int64(), 10) + case FLOAT: + data = strconv.AppendFloat(nil, v.Float(), 'g', -1, 64) + default: + panic(util.AssertErr()) + } + return json.Unmarshal(data, ptr) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/README.md b/vendor/github.com/ncruces/go-sqlite3/vfs/README.md index f028964cae..0d734b47b2 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/README.md +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/README.md @@ -1,9 +1,7 @@ # Go SQLite VFS API -This package implements the SQLite [OS Interface](https://www.sqlite.org/vfs.html) (aka VFS). +This package implements the SQLite [OS Interface](https://sqlite.org/vfs.html) (aka VFS). -It replaces the default VFS with a pure Go implementation, -that is tested on Linux, macOS and Windows, -but which should also work on illumos and the various BSDs. +It replaces the default SQLite VFS with a pure Go implementation. It also exposes interfaces that should allow you to implement your own custom VFSes. \ No newline at end of file diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/api.go b/vendor/github.com/ncruces/go-sqlite3/vfs/api.go index 7425096241..df4d790a4e 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/api.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/api.go @@ -7,7 +7,7 @@ import "net/url" // // Use sqlite3.ErrorCode or sqlite3.ExtendedErrorCode to return specific error codes to SQLite. // -// https://www.sqlite.org/c3ref/vfs.html +// https://sqlite.org/c3ref/vfs.html type VFS interface { Open(name string, flags OpenFlag) (File, OpenFlag, error) Delete(name string, syncDir bool) error @@ -15,10 +15,10 @@ type VFS interface { FullPathname(name string) (string, error) } -// VFSParams extends VFS to with the ability to handle URI parameters +// VFSParams extends VFS with the ability to handle URI parameters // through the OpenParams method. // -// https://www.sqlite.org/c3ref/uri_boolean.html +// https://sqlite.org/c3ref/uri_boolean.html type VFSParams interface { VFS OpenParams(name string, flags OpenFlag, params url.Values) (File, OpenFlag, error) @@ -29,7 +29,7 @@ type VFSParams interface { // Use sqlite3.ErrorCode or sqlite3.ExtendedErrorCode to return specific error codes to SQLite. // In particular, sqlite3.BUSY is necessary to correctly implement lock methods. // -// https://www.sqlite.org/c3ref/io_methods.html +// https://sqlite.org/c3ref/io_methods.html type File interface { Close() error ReadAt(p []byte, off int64) (n int, err error) @@ -47,7 +47,7 @@ type File interface { // FileLockState extends File to implement the // SQLITE_FCNTL_LOCKSTATE file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntllockstate type FileLockState interface { File LockState() LockLevel @@ -56,7 +56,7 @@ type FileLockState interface { // FileSizeHint extends File to implement the // SQLITE_FCNTL_SIZE_HINT file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizehint type FileSizeHint interface { File SizeHint(size int64) error @@ -65,16 +65,25 @@ type FileSizeHint interface { // FileHasMoved extends File to implement the // SQLITE_FCNTL_HAS_MOVED file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlhasmoved type FileHasMoved interface { File HasMoved() (bool, error) } +// FileOverwrite extends File to implement the +// SQLITE_FCNTL_OVERWRITE file control opcode. +// +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntloverwrite +type FileOverwrite interface { + File + Overwrite() error +} + // FilePowersafeOverwrite extends File to implement the // SQLITE_FCNTL_POWERSAFE_OVERWRITE file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlpowersafeoverwrite type FilePowersafeOverwrite interface { File PowersafeOverwrite() bool @@ -84,7 +93,7 @@ type FilePowersafeOverwrite interface { // FilePowersafeOverwrite extends File to implement the // SQLITE_FCNTL_COMMIT_PHASETWO file control opcode. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlcommitphasetwo type FileCommitPhaseTwo interface { File CommitPhaseTwo() error @@ -94,7 +103,7 @@ type FileCommitPhaseTwo interface { // SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, SQLITE_FCNTL_COMMIT_ATOMIC_WRITE // and SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE file control opcodes. // -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbeginatomicwrite type FileBatchAtomicWrite interface { File BeginAtomicWrite() error diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go b/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go new file mode 100644 index 0000000000..035458e687 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/clear.go @@ -0,0 +1,9 @@ +//go:build !go1.21 + +package vfs + +func clear(b []byte) { + for i := range b { + b[i] = 0 + } +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go index 110e8b5663..02e8f06361 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go @@ -3,12 +3,12 @@ package vfs import "github.com/ncruces/go-sqlite3/internal/util" const ( - _MAX_STRING = 512 // Used for short strings: names, error messages… + _MAX_NAME = 512 // Used for short strings: names, error messages… _MAX_PATHNAME = 512 _DEFAULT_SECTOR_SIZE = 4096 ) -// https://www.sqlite.org/rescode.html +// https://sqlite.org/rescode.html type _ErrorCode uint32 func (e _ErrorCode) Error() string { @@ -49,7 +49,7 @@ const ( // OpenFlag is a flag for the [VFS] Open method. // -// https://www.sqlite.org/c3ref/c_open_autoproxy.html +// https://sqlite.org/c3ref/c_open_autoproxy.html type OpenFlag uint32 const ( @@ -78,7 +78,7 @@ const ( // AccessFlag is a flag for the [VFS] Access method. // -// https://www.sqlite.org/c3ref/c_access_exists.html +// https://sqlite.org/c3ref/c_access_exists.html type AccessFlag uint32 const ( @@ -89,7 +89,7 @@ const ( // SyncFlag is a flag for the [File] Sync method. // -// https://www.sqlite.org/c3ref/c_sync_dataonly.html +// https://sqlite.org/c3ref/c_sync_dataonly.html type SyncFlag uint32 const ( @@ -100,7 +100,7 @@ const ( // LockLevel is a value used with [File] Lock and Unlock methods. // -// https://www.sqlite.org/c3ref/c_lock_exclusive.html +// https://sqlite.org/c3ref/c_lock_exclusive.html type LockLevel uint32 const ( @@ -146,7 +146,7 @@ const ( // DeviceCharacteristic is a flag retuned by the [File] DeviceCharacteristics method. // -// https://www.sqlite.org/c3ref/c_iocap_atomic.html +// https://sqlite.org/c3ref/c_iocap_atomic.html type DeviceCharacteristic uint32 const ( @@ -167,7 +167,7 @@ const ( IOCAP_BATCH_ATOMIC DeviceCharacteristic = 0x00004000 ) -// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html +// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html type _FcntlOpcode uint32 const ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go index 84d1368e2c..160a949489 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go @@ -9,7 +9,6 @@ import ( "path/filepath" "runtime" "syscall" - "time" ) type vfsOS struct{} @@ -124,11 +123,10 @@ func (vfsOS) OpenParams(name string, flags OpenFlag, params url.Values) (File, O type vfsFile struct { *os.File - lockTimeout time.Duration - lock LockLevel - psow bool - syncDir bool - readOnly bool + lock LockLevel + psow bool + syncDir bool + readOnly bool } var ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go b/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go index e83530eb4d..3815fd2914 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/lock.go @@ -1,11 +1,6 @@ package vfs -import ( - "os" - "time" - - "github.com/ncruces/go-sqlite3/internal/util" -) +import "github.com/ncruces/go-sqlite3/internal/util" const ( _PENDING_BYTE = 0x40000000 @@ -48,7 +43,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { if f.lock != LOCK_NONE { panic(util.AssertErr()) } - if rc := osGetSharedLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetSharedLock(f.File); rc != _OK { return rc } f.lock = LOCK_SHARED @@ -59,7 +54,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { if f.lock != LOCK_SHARED { panic(util.AssertErr()) } - if rc := osGetReservedLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetReservedLock(f.File); rc != _OK { return rc } f.lock = LOCK_RESERVED @@ -77,7 +72,7 @@ func (f *vfsFile) Lock(lock LockLevel) error { } f.lock = LOCK_PENDING } - if rc := osGetExclusiveLock(f.File, f.lockTimeout); rc != _OK { + if rc := osGetExclusiveLock(f.File); rc != _OK { return rc } f.lock = LOCK_EXCLUSIVE @@ -133,18 +128,3 @@ func (f *vfsFile) CheckReservedLock() (bool, error) { } return osCheckReservedLock(f.File) } - -func osGetReservedLock(file *os.File, timeout time.Duration) _ErrorCode { - // Acquire the RESERVED lock. - return osWriteLock(file, _RESERVED_BYTE, 1, timeout) -} - -func osGetPendingLock(file *os.File) _ErrorCode { - // Acquire the PENDING lock. - return osWriteLock(file, _PENDING_BYTE, 1, 0) -} - -func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { - // Test the RESERVED lock. - return osCheckLock(file, _RESERVED_BYTE, 1) -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go index 2f04d3b4b7..0fccfc57f1 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go @@ -1,4 +1,4 @@ -//go:build freebsd || openbsd || netbsd || dragonfly || (darwin && sqlite3_bsd) +//go:build (freebsd || openbsd || netbsd || dragonfly || sqlite3_flock) && !sqlite3_nosys package vfs @@ -20,16 +20,16 @@ func osUnlock(file *os.File, start, len int64) _ErrorCode { } func osLock(file *os.File, how int, timeout time.Duration, def _ErrorCode) _ErrorCode { + before := time.Now() var err error for { err = unix.Flock(int(file.Fd()), how) if errno, _ := err.(unix.Errno); errno != unix.EAGAIN { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) } return osLockErrorCode(err, def) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go index 9043971147..2077cebce4 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go @@ -1,4 +1,4 @@ -//go:build !sqlite3_bsd +//go:build !sqlite3_flock && !sqlite3_nosys package vfs @@ -39,12 +39,11 @@ func osAllocate(file *os.File, size int64) error { return nil } - // https://stackoverflow.com/a/11497568/867786 store := unix.Fstore_t{ - Flags: unix.F_ALLOCATECONTIG, + Flags: unix.F_ALLOCATEALL | unix.F_ALLOCATECONTIG, Posmode: unix.F_PEOFPOSMODE, Offset: 0, - Length: size, + Length: size - off, } // Try to get a continuous chunk of disk space. diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go index 216138062c..a19d29dec4 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go @@ -1,3 +1,5 @@ +//go:build !sqlite3_nosys + package vfs import ( diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go new file mode 100644 index 0000000000..d2beefb97c --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_nolock.go @@ -0,0 +1,33 @@ +//go:build !(linux || darwin || windows || freebsd || openbsd || netbsd || dragonfly || illumos) || sqlite3_nosys + +package vfs + +import "os" + +func osGetSharedLock(file *os.File) _ErrorCode { + return _IOERR_RDLOCK +} + +func osGetReservedLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osGetPendingLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osGetExclusiveLock(file *os.File) _ErrorCode { + return _IOERR_LOCK +} + +func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { + return _IOERR_RDLOCK +} + +func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { + return _IOERR_UNLOCK +} + +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + return false, _IOERR_CHECKRESERVEDLOCK +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go index 27179d48e3..d3aa3cebca 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go @@ -1,4 +1,4 @@ -//go:build linux || illumos +//go:build (linux || illumos) && !sqlite3_nosys package vfs @@ -27,16 +27,16 @@ func osLock(file *os.File, typ int16, start, len int64, timeout time.Duration, d Start: start, Len: len, } + before := time.Now() var err error for { err = unix.FcntlFlock(file.Fd(), unix.F_OFD_SETLK, &lock) if errno, _ := err.(unix.Errno); errno != unix.EAGAIN { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) } return osLockErrorCode(err, def) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go new file mode 100644 index 0000000000..1621c0998b --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go @@ -0,0 +1,36 @@ +//go:build !unix || sqlite3_nosys + +package vfs + +import ( + "io/fs" + "os" +) + +func osAccess(path string, flags AccessFlag) error { + fi, err := os.Stat(path) + if err != nil { + return err + } + if flags == ACCESS_EXISTS { + return nil + } + + const ( + S_IREAD = 0400 + S_IWRITE = 0200 + S_IEXEC = 0100 + ) + + var want fs.FileMode = S_IREAD + if flags == ACCESS_READWRITE { + want |= S_IWRITE + } + if fi.IsDir() { + want |= S_IEXEC + } + if fi.Mode()&want != want { + return fs.ErrPermission + } + return nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go similarity index 63% rename from vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go rename to vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go index 23fe3b42fc..60c92182cb 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_other.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go @@ -1,4 +1,4 @@ -//go:build !linux && (!darwin || sqlite3_bsd) +//go:build !(linux || darwin) || sqlite3_flock || sqlite3_nosys package vfs @@ -7,10 +7,6 @@ import ( "os" ) -func osSync(file *os.File, fullsync, dataonly bool) error { - return file.Sync() -} - func osAllocate(file *os.File, size int64) error { off, err := file.Seek(0, io.SeekEnd) if err != nil { diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go new file mode 100644 index 0000000000..ac4904773b --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go @@ -0,0 +1,14 @@ +//go:build !unix || sqlite3_nosys + +package vfs + +import "os" + +func osSetMode(file *os.File, modeof string) error { + fi, err := os.Stat(modeof) + if err != nil { + return err + } + file.Chmod(fi.Mode()) + return nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go new file mode 100644 index 0000000000..9a66081cf1 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_open.go @@ -0,0 +1,12 @@ +//go:build !windows || sqlite3_nosys + +package vfs + +import ( + "io/fs" + "os" +) + +func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { + return os.OpenFile(name, flag, perm) +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go new file mode 100644 index 0000000000..6ea6aa1d16 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go @@ -0,0 +1,9 @@ +//go:build !(linux || darwin) || sqlite3_flock || sqlite3_nosys + +package vfs + +import "os" + +func osSync(file *os.File, fullsync, dataonly bool) error { + return file.Sync() +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go index 345bbbf671..bf4b44efd6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go @@ -1,20 +1,14 @@ -//go:build unix +//go:build unix && !sqlite3_nosys package vfs import ( - "io/fs" "os" "syscall" - "time" "golang.org/x/sys/unix" ) -func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { - return os.OpenFile(name, flag, perm) -} - func osAccess(path string, flags AccessFlag) error { var access uint32 // unix.F_OK switch flags { @@ -37,64 +31,3 @@ func osSetMode(file *os.File, modeof string) error { } return nil } - -func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { - // Test the PENDING lock before acquiring a new SHARED lock. - if pending, _ := osCheckLock(file, _PENDING_BYTE, 1); pending { - return _BUSY - } - // Acquire the SHARED lock. - return osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) -} - -func osGetExclusiveLock(file *os.File, timeout time.Duration) _ErrorCode { - if timeout == 0 { - timeout = time.Millisecond - } - - // Acquire the EXCLUSIVE lock. - return osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) -} - -func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { - if state >= LOCK_EXCLUSIVE { - // Downgrade to a SHARED lock. - if rc := osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0); rc != _OK { - // In theory, the downgrade to a SHARED cannot fail because another - // process is holding an incompatible lock. If it does, this - // indicates that the other process is not following the locking - // protocol. If this happens, return _IOERR_RDLOCK. Returning - // BUSY would confuse the upper layer. - return _IOERR_RDLOCK - } - } - // Release the PENDING and RESERVED locks. - return osUnlock(file, _PENDING_BYTE, 2) -} - -func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { - // Release all locks. - return osUnlock(file, 0, 0) -} - -func osLockErrorCode(err error, def _ErrorCode) _ErrorCode { - if err == nil { - return _OK - } - if errno, ok := err.(unix.Errno); ok { - switch errno { - case - unix.EACCES, - unix.EAGAIN, - unix.EBUSY, - unix.EINTR, - unix.ENOLCK, - unix.EDEADLK, - unix.ETIMEDOUT: - return _BUSY - case unix.EPERM: - return _PERM - } - } - return def -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go new file mode 100644 index 0000000000..b57a032b0e --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix2.go @@ -0,0 +1,82 @@ +//go:build (linux || darwin || freebsd || openbsd || netbsd || dragonfly || illumos) && !sqlite3_nosys + +package vfs + +import ( + "os" + "time" + + "golang.org/x/sys/unix" +) + +func osGetSharedLock(file *os.File) _ErrorCode { + // Test the PENDING lock before acquiring a new SHARED lock. + if pending, _ := osCheckLock(file, _PENDING_BYTE, 1); pending { + return _BUSY + } + // Acquire the SHARED lock. + return osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0) +} + +func osGetReservedLock(file *os.File) _ErrorCode { + // Acquire the RESERVED lock. + return osWriteLock(file, _RESERVED_BYTE, 1, 0) +} + +func osGetPendingLock(file *os.File) _ErrorCode { + // Acquire the PENDING lock. + return osWriteLock(file, _PENDING_BYTE, 1, 0) +} + +func osGetExclusiveLock(file *os.File) _ErrorCode { + // Acquire the EXCLUSIVE lock. + return osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, time.Millisecond) +} + +func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode { + if state >= LOCK_EXCLUSIVE { + // Downgrade to a SHARED lock. + if rc := osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0); rc != _OK { + // In theory, the downgrade to a SHARED cannot fail because another + // process is holding an incompatible lock. If it does, this + // indicates that the other process is not following the locking + // protocol. If this happens, return _IOERR_RDLOCK. Returning + // BUSY would confuse the upper layer. + return _IOERR_RDLOCK + } + } + // Release the PENDING and RESERVED locks. + return osUnlock(file, _PENDING_BYTE, 2) +} + +func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode { + // Release all locks. + return osUnlock(file, 0, 0) +} + +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + // Test the RESERVED lock. + return osCheckLock(file, _RESERVED_BYTE, 1) +} + +func osLockErrorCode(err error, def _ErrorCode) _ErrorCode { + if err == nil { + return _OK + } + if errno, ok := err.(unix.Errno); ok { + switch errno { + case + unix.EACCES, + unix.EAGAIN, + unix.EBUSY, + unix.EINTR, + unix.ENOLCK, + unix.EDEADLK, + unix.ETIMEDOUT: + return _BUSY + case unix.EPERM: + return _PERM + } + } + return def +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go index e94291654e..e2e2c5591d 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go @@ -1,3 +1,5 @@ +//go:build !sqlite3_nosys + package vfs import ( @@ -25,40 +27,9 @@ func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) { return os.NewFile(uintptr(r), name), nil } -func osAccess(path string, flags AccessFlag) error { - fi, err := os.Stat(path) - if err != nil { - return err - } - if flags == ACCESS_EXISTS { - return nil - } - - var want fs.FileMode = windows.S_IRUSR - if flags == ACCESS_READWRITE { - want |= windows.S_IWUSR - } - if fi.IsDir() { - want |= windows.S_IXUSR - } - if fi.Mode()&want != want { - return fs.ErrPermission - } - return nil -} - -func osSetMode(file *os.File, modeof string) error { - fi, err := os.Stat(modeof) - if err != nil { - return err - } - file.Chmod(fi.Mode()) - return nil -} - -func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { +func osGetSharedLock(file *os.File) _ErrorCode { // Acquire the PENDING lock temporarily before acquiring a new SHARED lock. - rc := osReadLock(file, _PENDING_BYTE, 1, timeout) + rc := osReadLock(file, _PENDING_BYTE, 1, 0) if rc == _OK { // Acquire the SHARED lock. @@ -70,16 +41,22 @@ func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode { return rc } -func osGetExclusiveLock(file *os.File, timeout time.Duration) _ErrorCode { - if timeout == 0 { - timeout = time.Millisecond - } +func osGetReservedLock(file *os.File) _ErrorCode { + // Acquire the RESERVED lock. + return osWriteLock(file, _RESERVED_BYTE, 1, 0) +} + +func osGetPendingLock(file *os.File) _ErrorCode { + // Acquire the PENDING lock. + return osWriteLock(file, _PENDING_BYTE, 1, 0) +} +func osGetExclusiveLock(file *os.File) _ErrorCode { // Release the SHARED lock. osUnlock(file, _SHARED_FIRST, _SHARED_SIZE) // Acquire the EXCLUSIVE lock. - rc := osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout) + rc := osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, time.Millisecond) if rc != _OK { // Reacquire the SHARED lock. @@ -125,6 +102,11 @@ func osReleaseLock(file *os.File, state LockLevel) _ErrorCode { return _OK } +func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { + // Test the RESERVED lock. + return osCheckLock(file, _RESERVED_BYTE, 1) +} + func osUnlock(file *os.File, start, len uint32) _ErrorCode { err := windows.UnlockFileEx(windows.Handle(file.Fd()), 0, len, 0, &windows.Overlapped{Offset: start}) @@ -138,6 +120,7 @@ func osUnlock(file *os.File, start, len uint32) _ErrorCode { } func osLock(file *os.File, flags, start, len uint32, timeout time.Duration, def _ErrorCode) _ErrorCode { + before := time.Now() var err error for { err = windows.LockFileEx(windows.Handle(file.Fd()), flags, @@ -145,11 +128,16 @@ func osLock(file *os.File, flags, start, len uint32, timeout time.Duration, def if errno, _ := err.(windows.Errno); errno != windows.ERROR_LOCK_VIOLATION { break } - if timeout < time.Millisecond { + if timeout <= 0 || timeout < time.Since(before) { + break + } + if err := windows.TimeBeginPeriod(1); err != nil { break } - timeout -= time.Millisecond time.Sleep(time.Millisecond) + if err := windows.TimeEndPeriod(1); err != nil { + break + } } return osLockErrorCode(err, def) } diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go b/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go index 33bc54b3b4..7009444985 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/registry.go @@ -12,7 +12,7 @@ var ( // If there is no match, nil is returned. // If name is empty, the default VFS is returned. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Find(name string) VFS { if name == "" || name == "os" { return vfsOS{} @@ -24,7 +24,7 @@ func Find(name string) VFS { // Register registers a VFS. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Register(name string, vfs VFS) { if name == "" || name == "os" { return @@ -39,7 +39,7 @@ func Register(name string, vfs VFS) { // Unregister unregisters a VFS. // -// https://www.sqlite.org/c3ref/vfs_find.html +// https://sqlite.org/c3ref/vfs_find.html func Unregister(name string) { vfsRegistryMtx.Lock() defer vfsRegistryMtx.Unlock() diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go index e50bacffc8..820f4dccd8 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go @@ -23,7 +23,6 @@ func ExportHostFunctions(env wazero.HostModuleBuilder) wazero.HostModuleBuilder util.ExportFuncIIJ(env, "go_localtime", vfsLocaltime) util.ExportFuncIIII(env, "go_randomness", vfsRandomness) util.ExportFuncIII(env, "go_sleep", vfsSleep) - util.ExportFuncIII(env, "go_current_time", vfsCurrentTime) util.ExportFuncIII(env, "go_current_time_64", vfsCurrentTime64) util.ExportFuncIIIII(env, "go_full_pathname", vfsFullPathname) util.ExportFuncIIII(env, "go_delete", vfsDelete) @@ -44,35 +43,8 @@ func ExportHostFunctions(env wazero.HostModuleBuilder) wazero.HostModuleBuilder return env } -type vfsKey struct{} -type vfsState struct { - files []File -} - -// NewContext is an internal API users need not call directly. -// -// NewContext creates a new context to hold [api.Module] specific VFS data. -// The context should be passed to any [api.Function] calls that might -// generate VFS host callbacks. -// The returned [io.Closer] should be closed after the [api.Module] is closed, -// to release any associated resources. -func NewContext(ctx context.Context) (context.Context, io.Closer) { - vfs := new(vfsState) - return context.WithValue(ctx, vfsKey{}, vfs), vfs -} - -func (vfs *vfsState) Close() error { - for _, f := range vfs.files { - if f != nil { - f.Close() - } - } - vfs.files = nil - return nil -} - func vfsFind(ctx context.Context, mod api.Module, zVfsName uint32) uint32 { - name := util.ReadString(mod, zVfsName, _MAX_STRING) + name := util.ReadString(mod, zVfsName, _MAX_NAME) if vfs := Find(name); vfs != nil && vfs != (vfsOS{}) { return 1 } @@ -111,12 +83,6 @@ func vfsSleep(ctx context.Context, mod api.Module, pVfs, nMicro uint32) _ErrorCo return _OK } -func vfsCurrentTime(ctx context.Context, mod api.Module, pVfs, prNow uint32) _ErrorCode { - day := julianday.Float(time.Now()) - util.WriteFloat64(mod, prNow, day) - return _OK -} - func vfsCurrentTime64(ctx context.Context, mod api.Module, pVfs, piNow uint32) _ErrorCode { day, nsec := julianday.Date(time.Now()) msec := day*86_400_000 + nsec/1_000_000 @@ -183,6 +149,10 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile uint32, fla file, flags, err = vfs.Open(path, flags) } + if err != nil { + return vfsErrorCode(err, _CANTOPEN) + } + if file, ok := file.(FilePowersafeOverwrite); ok { if !parsed { params = vfsURIParameters(ctx, mod, zPath, flags) @@ -192,14 +162,10 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile uint32, fla } } - if err != nil { - return vfsErrorCode(err, _CANTOPEN) - } - - vfsFileRegister(ctx, mod, pFile, file) if pOutFlags != 0 { util.WriteUint32(mod, pOutFlags, uint32(flags)) } + vfsFileRegister(ctx, mod, pFile, file) return _OK } @@ -291,14 +257,6 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl return _OK } - case _FCNTL_LOCK_TIMEOUT: - if file, ok := file.(*vfsFile); ok { - millis := file.lockTimeout.Milliseconds() - file.lockTimeout = time.Duration(util.ReadUint32(mod, pArg)) * time.Millisecond - util.WriteUint32(mod, pArg, uint32(millis)) - return _OK - } - case _FCNTL_POWERSAFE_OVERWRITE: if file, ok := file.(FilePowersafeOverwrite); ok { switch util.ReadUint32(mod, pArg) { @@ -336,6 +294,12 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl return vfsErrorCode(err, _IOERR_FSTAT) } + case _FCNTL_OVERWRITE: + if file, ok := file.(FileOverwrite); ok { + err := file.Overwrite() + return vfsErrorCode(err, _IOERR) + } + case _FCNTL_COMMIT_PHASETWO: if file, ok := file.(FileCommitPhaseTwo); ok { err := file.CommitPhaseTwo() @@ -360,10 +324,8 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl } // Consider also implementing these opcodes (in use by SQLite): - // _FCNTL_PDB // _FCNTL_BUSYHANDLER // _FCNTL_CHUNK_SIZE - // _FCNTL_OVERWRITE // _FCNTL_PRAGMA // _FCNTL_SYNC return _NOTFOUND @@ -402,7 +364,7 @@ func vfsURIParameters(ctx context.Context, mod api.Module, zPath uint32, flags O if stack[0] == 0 { return params } - key := util.ReadString(mod, uint32(stack[0]), _MAX_STRING) + key := util.ReadString(mod, uint32(stack[0]), _MAX_NAME) if params.Has(key) { continue } @@ -415,7 +377,7 @@ func vfsURIParameters(ctx context.Context, mod api.Module, zPath uint32, flags O if params == nil { params = url.Values{} } - params.Set(key, util.ReadString(mod, uint32(stack[0]), _MAX_STRING)) + params.Set(key, util.ReadString(mod, uint32(stack[0]), _MAX_NAME)) } } @@ -423,7 +385,7 @@ func vfsGet(mod api.Module, pVfs uint32) VFS { var name string if pVfs != 0 { const zNameOffset = 16 - name = util.ReadString(mod, util.ReadUint32(mod, pVfs+zNameOffset), _MAX_STRING) + name = util.ReadString(mod, util.ReadUint32(mod, pVfs+zNameOffset), _MAX_NAME) } if vfs := Find(name); vfs != nil { return vfs @@ -431,40 +393,22 @@ func vfsGet(mod api.Module, pVfs uint32) VFS { panic(util.NoVFSErr + util.ErrorString(name)) } -func vfsFileNew(vfs *vfsState, file File) uint32 { - // Find an empty slot. - for id, f := range vfs.files { - if f == nil { - vfs.files[id] = file - return uint32(id) - } - } - - // Add a new slot. - vfs.files = append(vfs.files, file) - return uint32(len(vfs.files) - 1) -} - func vfsFileRegister(ctx context.Context, mod api.Module, pFile uint32, file File) { const fileHandleOffset = 4 - id := vfsFileNew(ctx.Value(vfsKey{}).(*vfsState), file) + id := util.AddHandle(ctx, file) util.WriteUint32(mod, pFile+fileHandleOffset, id) } func vfsFileGet(ctx context.Context, mod api.Module, pFile uint32) File { const fileHandleOffset = 4 - vfs := ctx.Value(vfsKey{}).(*vfsState) id := util.ReadUint32(mod, pFile+fileHandleOffset) - return vfs.files[id] + return util.GetHandle(ctx, id).(File) } func vfsFileClose(ctx context.Context, mod api.Module, pFile uint32) error { const fileHandleOffset = 4 - vfs := ctx.Value(vfsKey{}).(*vfsState) id := util.ReadUint32(mod, pFile+fileHandleOffset) - file := vfs.files[id] - vfs.files[id] = nil - return file.Close() + return util.DelHandle(ctx, id) } func vfsErrorCode(err error, def _ErrorCode) _ErrorCode { @@ -477,9 +421,3 @@ func vfsErrorCode(err error, def _ErrorCode) _ErrorCode { } return def } - -func clear(b []byte) { - for i := range b { - b[i] = 0 - } -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vtab.go b/vendor/github.com/ncruces/go-sqlite3/vtab.go new file mode 100644 index 0000000000..f5bddf7e6f --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/vtab.go @@ -0,0 +1,605 @@ +package sqlite3 + +import ( + "context" + "reflect" + + "github.com/ncruces/go-sqlite3/internal/util" + "github.com/tetratelabs/wazero/api" +) + +// CreateModule registers a new virtual table module name. +// If create is nil, the virtual table is eponymous. +// +// https://sqlite.org/c3ref/create_module.html +func CreateModule[T VTab](db *Conn, name string, create, connect VTabConstructor[T]) error { + var flags int + + const ( + VTAB_CREATOR = 0x01 + VTAB_DESTROYER = 0x02 + VTAB_UPDATER = 0x04 + VTAB_RENAMER = 0x08 + VTAB_OVERLOADER = 0x10 + VTAB_CHECKER = 0x20 + VTAB_TX = 0x40 + VTAB_SAVEPOINTER = 0x80 + ) + + if create != nil { + flags |= VTAB_CREATOR + } + + vtab := reflect.TypeOf(connect).Out(0) + if implements[VTabDestroyer](vtab) { + flags |= VTAB_DESTROYER + } + if implements[VTabUpdater](vtab) { + flags |= VTAB_UPDATER + } + if implements[VTabRenamer](vtab) { + flags |= VTAB_RENAMER + } + if implements[VTabOverloader](vtab) { + flags |= VTAB_OVERLOADER + } + if implements[VTabChecker](vtab) { + flags |= VTAB_CHECKER + } + if implements[VTabTx](vtab) { + flags |= VTAB_TX + } + if implements[VTabSavepointer](vtab) { + flags |= VTAB_SAVEPOINTER + } + + defer db.arena.mark()() + namePtr := db.arena.string(name) + modulePtr := util.AddHandle(db.ctx, module[T]{create, connect}) + r := db.call("sqlite3_create_module_go", uint64(db.handle), + uint64(namePtr), uint64(flags), uint64(modulePtr)) + return db.error(r) +} + +func implements[T any](typ reflect.Type) bool { + var ptr *T + return typ.Implements(reflect.TypeOf(ptr).Elem()) +} + +// DeclareVtab declares the schema of a virtual table. +// +// https://sqlite.org/c3ref/declare_vtab.html +func (c *Conn) DeclareVtab(sql string) error { + defer c.arena.mark()() + sqlPtr := c.arena.string(sql) + r := c.call("sqlite3_declare_vtab", uint64(c.handle), uint64(sqlPtr)) + return c.error(r) +} + +// IndexConstraintOp is a virtual table constraint operator code. +// +// https://sqlite.org/c3ref/c_vtab_constraint_support.html +type VtabConfigOption uint8 + +const ( + VTAB_CONSTRAINT_SUPPORT VtabConfigOption = 1 + VTAB_INNOCUOUS VtabConfigOption = 2 + VTAB_DIRECTONLY VtabConfigOption = 3 + VTAB_USES_ALL_SCHEMAS VtabConfigOption = 4 +) + +// VtabConfig configures various facets of the virtual table interface. +// +// https://sqlite.org/c3ref/vtab_config.html +func (c *Conn) VtabConfig(op VtabConfigOption, args ...any) error { + var i uint64 + if op == VTAB_CONSTRAINT_SUPPORT && len(args) > 0 { + if b, ok := args[0].(bool); ok && b { + i = 1 + } + } + r := c.call("sqlite3_vtab_config_go", uint64(c.handle), uint64(op), i) + return c.error(r) +} + +// VTabConstructor is a virtual table constructor function. +type VTabConstructor[T VTab] func(db *Conn, module, schema, table string, arg ...string) (T, error) + +type module[T VTab] [2]VTabConstructor[T] + +// A VTab describes a particular instance of the virtual table. +// A VTab may optionally implement [io.Closer] to free resources. +// +// https://sqlite.org/c3ref/vtab.html +type VTab interface { + // https://sqlite.org/vtab.html#xbestindex + BestIndex(*IndexInfo) error + // https://sqlite.org/vtab.html#xopen + Open() (VTabCursor, error) +} + +// A VTabDestroyer allows a virtual table to drop persistent state. +type VTabDestroyer interface { + VTab + // https://sqlite.org/vtab.html#sqlite3_module.xDestroy + Destroy() error +} + +// A VTabUpdater allows a virtual table to be updated. +type VTabUpdater interface { + VTab + // https://sqlite.org/vtab.html#xupdate + Update(arg ...Value) (rowid int64, err error) +} + +// A VTabRenamer allows a virtual table to be renamed. +type VTabRenamer interface { + VTab + // https://sqlite.org/vtab.html#xrename + Rename(new string) error +} + +// A VTabOverloader allows a virtual table to overload SQL functions. +type VTabOverloader interface { + VTab + // https://sqlite.org/vtab.html#xfindfunction + FindFunction(arg int, name string) (ScalarFunction, IndexConstraintOp) +} + +// A VTabChecker allows a virtual table to report errors +// to the PRAGMA integrity_check PRAGMA quick_check commands. +// +// Integrity should return an error if it finds problems in the content of the virtual table, +// but should avoid returning a (wrapped) [Error], [ErrorCode] or [ExtendedErrorCode], +// as those indicate the Integrity method itself encountered problems +// while trying to evaluate the virtual table content. +type VTabChecker interface { + VTab + // https://sqlite.org/vtab.html#xintegrity + Integrity(schema, table string, flags int) error +} + +// A VTabTx allows a virtual table to implement +// transactions with two-phase commit. +// +// Anything that is required as part of a commit that may fail +// should be performed in the Sync() callback. +// Current versions of SQLite ignore any errors +// returned by Commit() and Rollback(). +type VTabTx interface { + VTab + // https://sqlite.org/vtab.html#xBegin + Begin() error + // https://sqlite.org/vtab.html#xsync + Sync() error + // https://sqlite.org/vtab.html#xcommit + Commit() error + // https://sqlite.org/vtab.html#xrollback + Rollback() error +} + +// A VTabSavepointer allows a virtual table to implement +// nested transactions. +// +// https://sqlite.org/vtab.html#xsavepoint +type VTabSavepointer interface { + VTabTx + Savepoint(id int) error + Release(id int) error + RollbackTo(id int) error +} + +// A VTabCursor describes cursors that point +// into the virtual table and are used +// to loop through the virtual table. +// A VTabCursor may optionally implement +// [io.Closer] to free resources. +// +// http://sqlite.org/c3ref/vtab_cursor.html +type VTabCursor interface { + // https://sqlite.org/vtab.html#xfilter + Filter(idxNum int, idxStr string, arg ...Value) error + // https://sqlite.org/vtab.html#xnext + Next() error + // https://sqlite.org/vtab.html#xeof + EOF() bool + // https://sqlite.org/vtab.html#xcolumn + Column(ctx *Context, n int) error + // https://sqlite.org/vtab.html#xrowid + RowID() (int64, error) +} + +// An IndexInfo describes virtual table indexing information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexInfo struct { + // Inputs + Constraint []IndexConstraint + OrderBy []IndexOrderBy + ColumnsUsed int64 + // Outputs + ConstraintUsage []IndexConstraintUsage + IdxNum int + IdxStr string + IdxFlags IndexScanFlag + OrderByConsumed bool + EstimatedCost float64 + EstimatedRows int64 + // Internal + c *Conn + handle uint32 +} + +// An IndexConstraint describes virtual table indexing constraint information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexConstraint struct { + Column int + Op IndexConstraintOp + Usable bool +} + +// An IndexOrderBy describes virtual table indexing order by information. +// +// https://sqlite.org/c3ref/index_info.html +type IndexOrderBy struct { + Column int + Desc bool +} + +// An IndexConstraintUsage describes how virtual table indexing constraints will be used. +// +// https://sqlite.org/c3ref/index_info.html +type IndexConstraintUsage struct { + ArgvIndex int + Omit bool +} + +// RHSValue returns the value of the right-hand operand of a constraint +// if the right-hand operand is known. +// +// https://sqlite.org/c3ref/vtab_rhs_value.html +func (idx *IndexInfo) RHSValue(column int) (Value, error) { + defer idx.c.arena.mark()() + valPtr := idx.c.arena.new(ptrlen) + r := idx.c.call("sqlite3_vtab_rhs_value", + uint64(idx.handle), uint64(column), uint64(valPtr)) + if err := idx.c.error(r); err != nil { + return Value{}, err + } + return Value{ + sqlite: idx.c.sqlite, + handle: util.ReadUint32(idx.c.mod, valPtr), + }, nil +} + +func (idx *IndexInfo) load() { + // https://sqlite.org/c3ref/index_info.html + mod := idx.c.mod + ptr := idx.handle + + idx.Constraint = make([]IndexConstraint, util.ReadUint32(mod, ptr+0)) + idx.ConstraintUsage = make([]IndexConstraintUsage, util.ReadUint32(mod, ptr+0)) + idx.OrderBy = make([]IndexOrderBy, util.ReadUint32(mod, ptr+8)) + + constraintPtr := util.ReadUint32(mod, ptr+4) + for i := range idx.Constraint { + idx.Constraint[i] = IndexConstraint{ + Column: int(int32(util.ReadUint32(mod, constraintPtr+0))), + Op: IndexConstraintOp(util.ReadUint8(mod, constraintPtr+4)), + Usable: util.ReadUint8(mod, constraintPtr+5) != 0, + } + constraintPtr += 12 + } + + orderByPtr := util.ReadUint32(mod, ptr+12) + for i := range idx.OrderBy { + idx.OrderBy[i] = IndexOrderBy{ + Column: int(int32(util.ReadUint32(mod, orderByPtr+0))), + Desc: util.ReadUint8(mod, orderByPtr+4) != 0, + } + orderByPtr += 8 + } + + idx.EstimatedCost = util.ReadFloat64(mod, ptr+40) + idx.EstimatedRows = int64(util.ReadUint64(mod, ptr+48)) + idx.ColumnsUsed = int64(util.ReadUint64(mod, ptr+64)) +} + +func (idx *IndexInfo) save() { + // https://sqlite.org/c3ref/index_info.html + mod := idx.c.mod + ptr := idx.handle + + usagePtr := util.ReadUint32(mod, ptr+16) + for _, usage := range idx.ConstraintUsage { + util.WriteUint32(mod, usagePtr+0, uint32(usage.ArgvIndex)) + if usage.Omit { + util.WriteUint8(mod, usagePtr+4, 1) + } + usagePtr += 8 + } + + util.WriteUint32(mod, ptr+20, uint32(idx.IdxNum)) + if idx.IdxStr != "" { + util.WriteUint32(mod, ptr+24, idx.c.newString(idx.IdxStr)) + util.WriteUint32(mod, ptr+28, 1) // needToFreeIdxStr + } + if idx.OrderByConsumed { + util.WriteUint32(mod, ptr+32, 1) + } + util.WriteFloat64(mod, ptr+40, idx.EstimatedCost) + util.WriteUint64(mod, ptr+48, uint64(idx.EstimatedRows)) + util.WriteUint32(mod, ptr+56, uint32(idx.IdxFlags)) +} + +// IndexConstraintOp is a virtual table constraint operator code. +// +// https://sqlite.org/c3ref/c_index_constraint_eq.html +type IndexConstraintOp uint8 + +const ( + INDEX_CONSTRAINT_EQ IndexConstraintOp = 2 + INDEX_CONSTRAINT_GT IndexConstraintOp = 4 + INDEX_CONSTRAINT_LE IndexConstraintOp = 8 + INDEX_CONSTRAINT_LT IndexConstraintOp = 16 + INDEX_CONSTRAINT_GE IndexConstraintOp = 32 + INDEX_CONSTRAINT_MATCH IndexConstraintOp = 64 + INDEX_CONSTRAINT_LIKE IndexConstraintOp = 65 + INDEX_CONSTRAINT_GLOB IndexConstraintOp = 66 + INDEX_CONSTRAINT_REGEXP IndexConstraintOp = 67 + INDEX_CONSTRAINT_NE IndexConstraintOp = 68 + INDEX_CONSTRAINT_ISNOT IndexConstraintOp = 69 + INDEX_CONSTRAINT_ISNOTNULL IndexConstraintOp = 70 + INDEX_CONSTRAINT_ISNULL IndexConstraintOp = 71 + INDEX_CONSTRAINT_IS IndexConstraintOp = 72 + INDEX_CONSTRAINT_LIMIT IndexConstraintOp = 73 + INDEX_CONSTRAINT_OFFSET IndexConstraintOp = 74 + INDEX_CONSTRAINT_FUNCTION IndexConstraintOp = 150 +) + +// IndexScanFlag is a virtual table scan flag. +// +// https://sqlite.org/c3ref/c_index_scan_unique.html +type IndexScanFlag uint32 + +const ( + INDEX_SCAN_UNIQUE IndexScanFlag = 1 +) + +func vtabModuleCallback(i int) func(_ context.Context, _ api.Module, _, _, _, _, _ uint32) uint32 { + return func(ctx context.Context, mod api.Module, pMod, argc, argv, ppVTab, pzErr uint32) uint32 { + arg := make([]reflect.Value, 1+argc) + arg[0] = reflect.ValueOf(ctx.Value(connKey{})) + + for i := uint32(0); i < argc; i++ { + ptr := util.ReadUint32(mod, argv+i*ptrlen) + arg[i+1] = reflect.ValueOf(util.ReadString(mod, ptr, _MAX_SQL_LENGTH)) + } + + module := vtabGetHandle(ctx, mod, pMod) + res := reflect.ValueOf(module).Index(i).Call(arg) + err, _ := res[1].Interface().(error) + if err == nil { + vtabPutHandle(ctx, mod, ppVTab, res[0].Interface()) + } + + return vtabError(ctx, mod, pzErr, _PTR_ERROR, err) + } +} + +func vtabDisconnectCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + err := vtabDelHandle(ctx, mod, pVTab) + return vtabError(ctx, mod, 0, _PTR_ERROR, err) +} + +func vtabDestroyCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabDestroyer) + err := vtab.Destroy() + if cerr := vtabDelHandle(ctx, mod, pVTab); err == nil { + err = cerr + } + return vtabError(ctx, mod, 0, _PTR_ERROR, err) +} + +func vtabBestIndexCallback(ctx context.Context, mod api.Module, pVTab, pIdxInfo uint32) uint32 { + var info IndexInfo + info.handle = pIdxInfo + info.c = ctx.Value(connKey{}).(*Conn) + info.load() + + vtab := vtabGetHandle(ctx, mod, pVTab).(VTab) + err := vtab.BestIndex(&info) + + info.save() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabUpdateCallback(ctx context.Context, mod api.Module, pVTab, argc, argv, pRowID uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabUpdater) + + db := ctx.Value(connKey{}).(*Conn) + args := callbackArgs(db, argc, argv) + rowID, err := vtab.Update(args...) + if err == nil { + util.WriteUint64(mod, pRowID, uint64(rowID)) + } + + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRenameCallback(ctx context.Context, mod api.Module, pVTab, zNew uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabRenamer) + err := vtab.Rename(util.ReadString(mod, zNew, _MAX_NAME)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabFindFuncCallback(ctx context.Context, mod api.Module, pVTab, nArg, zName, pxFunc uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabOverloader) + fn, op := vtab.FindFunction(int(nArg), util.ReadString(mod, zName, _MAX_NAME)) + if fn != nil { + handle := util.AddHandle(ctx, fn) + util.WriteUint32(mod, pxFunc, handle) + if op == 0 { + op = 1 + } + } + return uint32(op) +} + +func vtabIntegrityCallback(ctx context.Context, mod api.Module, pVTab, zSchema, zTabName, mFlags, pzErr uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabChecker) + schema := util.ReadString(mod, zSchema, _MAX_NAME) + table := util.ReadString(mod, zTabName, _MAX_NAME) + err := vtab.Integrity(schema, table, int(mFlags)) + // xIntegrity should return OK - even if it finds problems in the content of the virtual table. + // https://sqlite.org/vtab.html#xintegrity + vtabError(ctx, mod, pzErr, _PTR_ERROR, err) + _, code := errorCode(err, _OK) + return code +} + +func vtabBeginCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Begin() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabSyncCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Sync() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabCommitCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Commit() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRollbackCallback(ctx context.Context, mod api.Module, pVTab uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabTx) + err := vtab.Rollback() + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabSavepointCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.Savepoint(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabReleaseCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.Release(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func vtabRollbackToCallback(ctx context.Context, mod api.Module, pVTab, id uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTabSavepointer) + err := vtab.RollbackTo(int(id)) + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func cursorOpenCallback(ctx context.Context, mod api.Module, pVTab, ppCur uint32) uint32 { + vtab := vtabGetHandle(ctx, mod, pVTab).(VTab) + + cursor, err := vtab.Open() + if err == nil { + vtabPutHandle(ctx, mod, ppCur, cursor) + } + + return vtabError(ctx, mod, pVTab, _VTAB_ERROR, err) +} + +func cursorCloseCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + err := vtabDelHandle(ctx, mod, pCur) + return vtabError(ctx, mod, 0, _VTAB_ERROR, err) +} + +func cursorFilterCallback(ctx context.Context, mod api.Module, pCur, idxNum, idxStr, argc, argv uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + db := ctx.Value(connKey{}).(*Conn) + args := callbackArgs(db, argc, argv) + var idxName string + if idxStr != 0 { + idxName = util.ReadString(mod, idxStr, _MAX_NAME) + } + err := cursor.Filter(int(idxNum), idxName, args...) + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorEOFCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + if cursor.EOF() { + return 1 + } + return 0 +} + +func cursorNextCallback(ctx context.Context, mod api.Module, pCur uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + err := cursor.Next() + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorColumnCallback(ctx context.Context, mod api.Module, pCur, pCtx, n uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + db := ctx.Value(connKey{}).(*Conn) + err := cursor.Column(&Context{db, pCtx}, int(n)) + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +func cursorRowIDCallback(ctx context.Context, mod api.Module, pCur, pRowID uint32) uint32 { + cursor := vtabGetHandle(ctx, mod, pCur).(VTabCursor) + + rowID, err := cursor.RowID() + if err == nil { + util.WriteUint64(mod, pRowID, uint64(rowID)) + } + + return vtabError(ctx, mod, pCur, _CURSOR_ERROR, err) +} + +const ( + _PTR_ERROR = iota + _VTAB_ERROR + _CURSOR_ERROR +) + +func vtabError(ctx context.Context, mod api.Module, ptr, kind uint32, err error) uint32 { + msg, code := errorCode(err, ERROR) + if msg != "" && ptr != 0 { + switch kind { + case _VTAB_ERROR: + ptr = ptr + 8 // zErrMsg + case _CURSOR_ERROR: + ptr = util.ReadUint32(mod, ptr) + 8 // pVtab->zErrMsg + } + db := ctx.Value(connKey{}).(*Conn) + if ptr := util.ReadUint32(mod, ptr); ptr != 0 { + db.free(ptr) + } + util.WriteUint32(mod, ptr, db.newString(msg)) + } + return code +} + +func vtabGetHandle(ctx context.Context, mod api.Module, ptr uint32) any { + const handleOffset = 4 + handle := util.ReadUint32(mod, ptr-handleOffset) + return util.GetHandle(ctx, handle) +} + +func vtabDelHandle(ctx context.Context, mod api.Module, ptr uint32) error { + const handleOffset = 4 + handle := util.ReadUint32(mod, ptr-handleOffset) + return util.DelHandle(ctx, handle) +} + +func vtabPutHandle(ctx context.Context, mod api.Module, pptr uint32, val any) { + const handleOffset = 4 + handle := util.AddHandle(ctx, val) + ptr := util.ReadUint32(mod, pptr) + util.WriteUint32(mod, ptr-handleOffset, handle) +} diff --git a/vendor/github.com/ncruces/julianday/julianday.go b/vendor/github.com/ncruces/julianday/julianday.go index 4aa5243e17..d7d0e1960f 100644 --- a/vendor/github.com/ncruces/julianday/julianday.go +++ b/vendor/github.com/ncruces/julianday/julianday.go @@ -47,7 +47,7 @@ func Float(t time.Time) float64 { return float64(day) + float64(nsec)/nsec_per_day } -// Float returns the Julian date for t as a string. +// Format returns the Julian date for t as a string. // // This has nanosecond precision. func Format(t time.Time) string { @@ -87,7 +87,7 @@ func FloatTime(date float64) time.Time { return Time(int64(day), int64(nsec)) } -// Parse parses a formatted Julian date and returns the time value it represents. +// Parse parses a formatted Julian date and returns the UTC Time it represents. // // This has nanosecond precision. func Parse(s string) (time.Time, error) { diff --git a/vendor/github.com/reeflective/readline/inputrc/testdata/spaces.inputrc b/vendor/github.com/reeflective/readline/inputrc/testdata/spaces.inputrc new file mode 100644 index 0000000000..cae93ca759 --- /dev/null +++ b/vendor/github.com/reeflective/readline/inputrc/testdata/spaces.inputrc @@ -0,0 +1,12 @@ +app: usql +term: xterm-256 +mode: vi +####----#### +set editing-mode vi +set vi-ins-mode-string "\1\e[4 q\2" +set my-other-string 'a b' +####----#### +vars: + editing-mode: vi + my-other-string: 'a b' + vi-ins-mode-string: "\1\e[4 q\2" diff --git a/vendor/github.com/tetratelabs/wazero/Makefile b/vendor/github.com/tetratelabs/wazero/Makefile index 5c7eae416f..26d4c9e187 100644 --- a/vendor/github.com/tetratelabs/wazero/Makefile +++ b/vendor/github.com/tetratelabs/wazero/Makefile @@ -212,6 +212,12 @@ check: # This makes sure the intepreter can be used. Most often the package that can # drift here is "platform" or "sysfs": # +# Ensure we build on plan9. See #1578 + @GOARCH=amd64 GOOS=plan9 go build ./... +# Ensure we build on gojs. See #1526. + @GOARCH=wasm GOOS=js go build ./... +# Ensure we build on gojs. See #1526. + @GOARCH=wasm GOOS=wasip1 go build ./... # Ensure we build on windows: @GOARCH=amd64 GOOS=windows go build ./... # Ensure we build on an arbitrary operating system: diff --git a/vendor/github.com/tetratelabs/wazero/RATIONALE.md b/vendor/github.com/tetratelabs/wazero/RATIONALE.md index 32a0da20e6..94f5de2512 100644 --- a/vendor/github.com/tetratelabs/wazero/RATIONALE.md +++ b/vendor/github.com/tetratelabs/wazero/RATIONALE.md @@ -235,7 +235,7 @@ rt := wazero.NewRuntimeConfig() // initialized properly There are a few drawbacks to this, notably some work for maintainers. * Interfaces are decoupled from the structs implementing them, which means the signature has to be repeated twice. * Interfaces have to be documented and guarded at time of use, that 3rd party implementations aren't supported. -* As of Golang 1.18, interfaces are still [not well supported](https://github.com/golang/go/issues/5860) in godoc. +* As of Golang 1.21, interfaces are still [not well supported](https://github.com/golang/go/issues/5860) in godoc. ## Config @@ -616,6 +616,135 @@ act differently and document `ModuleConfig` is more about emulating, not necessa ## File systems +### Motivation on `sys.FS` + +The `sys.FS` abstraction in wazero was created because of limitations in +`fs.FS`, and `fs.File` in Go. Compilers targeting `wasip1` may access +functionality that writes new files. The ability to overcome this was requested +even before wazero was named this, via issue #21 in March 2021. + +A month later, golang/go#45757 was raised by someone else on the same topic. As +of July 2023, this has not resolved to a writeable file system abstraction. + +Over the next year more use cases accumulated, consolidated in March 2022 into +#390. This closed in January 2023 with a milestone of providing more +functionality, limited to users giving a real directory. This didn't yet expose +a file abstraction for general purpose use. Internally, this used `os.File`. +However, a wasm module instance is a virtual machine. Only supporting `os.File` +breaks sand-boxing use cases. Moreover, `os.File` is not an interface. Even +though this abstracts functionality, it does allow interception use cases. + +Hence, a few days later in January 2023, we had more issues asking to expose an +abstraction, #1013 and later #1532, on use cases like masking access to files. +In other words, the use case requests never stopped, and aren't solved by +exposing only real files. + +In summary, the primary motivation for exposing a replacement for `fs.FS` and +`fs.File` was around repetitive use case requests for years, around +interception and the ability to create new files, both virtual and real files. +While some use cases are solved with real files, not all are. Regardless, an +interface approach is necessary to ensure users can intercept I/O operations. + +### Why doesn't `sys.File` have a `Fd()` method? + +There are many features we could expose. We could make File expose underlying +file descriptors in case they are supported, for integration of system calls +that accept multiple ones, namely `poll` for multiplexing. This special case is +described in a subsequent section. + +As noted above, users have been asking for a file abstraction for over two +years, and a common answer was to wait. Making users wait is a problem, +especially so long. Good reasons to make people wait are stabilization. Edge +case features are not a great reason to hold abstractions from users. + +Another reason is implementation difficulty. Go did not attempt to abstract +file descriptors. For example, unlike `fs.ReadFile` there is no `fs.FdFile` +interface. Most likely, this is because file descriptors are an implementation +detail of common features. Programming languages, including Go, do not require +end users to know about file descriptors. Types such as `fs.File` can be used +without any knowledge of them. Implementations may or may not have file +descriptors. For example, in Go, `os.DirFS` has underlying file descriptors +while `embed.FS` does not. + +Despite this, some may want to expose a non-standard interface because +`os.File` has `Fd() uintptr` to return a file descriptor. Mainly, this is +handy to integrate with `syscall` package functions (on `GOOS` values that +declare them). Notice, though that `uintptr` is unsafe and not an abstraction. +Close inspection will find some `os.File` types internally use `poll.FD` +instead, yet this is not possible to use abstractly because that type is not +exposed. For example, `plan9` uses a different type than `poll.FD`. In other +words, even in real files, `Fd()` is not wholly portable, despite it being +useful on many operating systems with the `syscall` package. + +The reasons above, why Go doesn't abstract `FdFile` interface are a subset of +reasons why `sys.File` does not. If we exposed `File.Fd()` we not only would +have to declare all the edge cases that Go describes including impact of +finalizers, we would have to describe these in terms of virtualized files. +Then, we would have to reason with this value vs our existing virtualized +`sys.FileTable`, mapping whatever type we return to keys in that table, also +in consideration of garbage collection impact. The combination of issues like +this could lead down a path of not implementing a file system abstraction at +all, and instead a weak key mapped abstraction of the `syscall` package. Once +we finished with all the edge cases, we would have lost context of the original +reason why we started.. simply to allow file write access! + +When wazero attempts to do more than what the Go programming language team, it +has to be carefully evaluated, to: +* Be possible to implement at least for `os.File` backed files +* Not be confusing or cognitively hard for virtual file systems and normal use. +* Affordable: custom code is solely the responsible by the core team, a much + smaller group of individuals than who maintain the Go programming language. + +Due to problems well known in Go, consideration of the end users who constantly +ask for basic file system functionality, and the difficulty virtualizing file +descriptors at multiple levels, we don't expose `Fd()` and likely won't ever +expose `Fd()` on `sys.File`. + +### Why does `sys.File` have a `Poll()` method, while `sys.FS` does not? + +wazero exposes `File.Poll` which allows one-at-a-time poll use cases, +requested by multiple users. This not only includes abstract tests such as +Go 1.21 `GOOS=wasip1`, but real use cases including python and container2wasm +repls, as well listen sockets. The main use cases is non-blocking poll on a +single file. Being a single file, this has no risk of problems such as +head-of-line blocking, even when emulated. + +The main use case of multi-poll are bidirectional network services, something +not used in `GOOS=wasip1` standard libraries, but could be in the future. +Moving forward without a multi-poller allows wazero to expose its file system +abstraction instead of continuing to hold back it back for edge cases. We'll +continue discussion below regardless, as rationale was requested. + +You can loop through multiple `sys.File`, using `File.Poll` to see if an event +is ready, but there is a head-of-line blocking problem. If a long timeout is +used, bad luck could have a file that has nothing to read or write before one +that does. This could cause more blocking than necessary, even if you could +poll the others just after with a zero timeout. What's worse than this is if +unlimited blocking was used (`timeout=-1`). The host implementations could use +goroutines to avoid this, but interrupting a "forever" poll is problematic. All +of these are reasons to consider a multi-poll API, but do not require exporting +`File.Fd()`. + +Should multi-poll becomes critical, `sys.FS` could expose a `Poll` function +like below, despite it being the non-portable, complicated if possible to +implement on all platforms and virtual file systems. +```go +ready, errno := fs.Poll([]sys.PollFile{{f1, sys.POLLIN}, {f2, sys.POLLOUT}}, timeoutMillis) +``` + +A real filesystem could handle this by using an approach like the internal +`unix.Poll` function in Go, passing file descriptors on unix platforms, or +returning `sys.ENOSYS` for unsupported operating systems. Implementation for +virtual files could have a strategy around timeout to avoid the worst case of +head-of-line blocking (unlimited timeout). + +Let's remember that when designing abstractions, it is not best to add an +interface for everything. Certainly, Go doesn't, as evidenced by them not +exposing `poll.FD` in `os.File`! Such a multi-poll could be limited to +built-in filesystems in the wazero repository, avoiding complexity of trying to +support and test this abstractly. This would still permit multiplexing for CLI +users, and also permit single file polling as exists now. + ### Why doesn't wazero implement the working directory? An early design of wazero's API included a `WithWorkDirFS` which allowed @@ -1270,19 +1399,18 @@ as for regular file descriptors: data is assumed to be present and a success is written back to the result buffer. However, if the reader is detected to read from `os.Stdin`, -a special code path is followed, invoking `platform.Select()`. +a special code path is followed, invoking `sysfs.poll()`. -`platform.Select()` is a wrapper for `select(2)` on POSIX systems, +`sysfs.poll()` is a wrapper for `poll(2)` on POSIX systems, and it is emulated on Windows. -### Select on POSIX +### Poll on POSIX -On POSIX systems,`select(2)` allows to wait for incoming data on a file +On POSIX systems, `poll(2)` allows to wait for incoming data on a file descriptor, and block until either data becomes available or the timeout -expires. It is not surprising that `select(2)` and `poll(2)` have lot in common: -the main difference is how the file descriptor parameters are passed. +expires. -Usage of `platform.Select()` is only reserved for the standard input case, because +Usage of `syfs.poll()` is currently only reserved for standard input, because 1. it is really only necessary to handle interactive input: otherwise, there is no way in Go to peek from Standard Input without actually @@ -1291,11 +1419,11 @@ Usage of `platform.Select()` is only reserved for the standard input case, becau 2. if `Stdin` is connected to a pipe, it is ok in most cases to return with success immediately; -3. `platform.Select()` is currently a blocking call, irrespective of goroutines, +3. `syfs.poll()` is currently a blocking call, irrespective of goroutines, because the underlying syscall is; thus, it is better to limit its usage. So, if the subscription is for `os.Stdin` and the handle is detected -to correspond to an interactive session, then `platform.Select()` will be +to correspond to an interactive session, then `sysfs.poll()` will be invoked with a the `Stdin` handle *and* the timeout. This also means that in this specific case, the timeout is uninterruptible, @@ -1303,35 +1431,46 @@ unless data becomes available on `Stdin` itself. ### Select on Windows -On Windows `platform.Select()` cannot be delegated to a single +On Windows `sysfs.poll()` cannot be delegated to a single syscall, because there is no single syscall to handle sockets, pipes and regular files. Instead, we emulate its behavior for the cases that are currently -of interest. +of interest. - For regular files, we _always_ report them as ready, as [most operating systems do anyway][async-io-windows]. -- For pipes, we iterate on the given `readfds` -and we invoke [`PeekNamedPipe`][peeknamedpipe]. We currently ignore -`writefds` and `exceptfds` for pipes. In particular, -`Stdin`, when present, is set to the `readfds` FdSet. +- For pipes, we invoke [`PeekNamedPipe`][peeknamedpipe] +for each file handle we detect is a pipe open for reading. +We currently ignore pipes open for writing. - Notably, we include also support for sockets using the [WinSock -implementation of `select`][winsock-select], but instead -of relying on the timeout argument of the `select` function, +implementation of `poll`][wsapoll], but instead +of relying on the timeout argument of the `WSAPoll` function, we set a 0-duration timeout so that it behaves like a peek. This way, we can check for regular files all at once, -at the beginning of the function, then we poll pipes and +at the beginning of the function, then we poll pipes and sockets periodically using a cancellable `time.Tick`, which plays nicely with the rest of the Go runtime. +### Impact of blocking + +Because this is a blocking syscall, it will also block the carrier thread of +the goroutine, preventing any means to support context cancellation directly. + +There are ways to obviate this issue. We outline here one idea, that is however +not currently implemented. A common approach to support context cancellation is +to add a signal file descriptor to the set, e.g. the read-end of a pipe or an +eventfd on Linux. When the context is canceled, we may unblock a Select call by +writing to the fd, causing it to return immediately. This however requires to +do a bit of housekeeping to hide the "special" FD from the end-user. + [poll_oneoff]: https://github.com/WebAssembly/wasi-poll#why-is-the-function-called-poll_oneoff [async-io-windows]: https://tinyclouds.org/iocp_links [peeknamedpipe]: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe -[winsock-select]: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-select +[wsapoll]: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll ## Signed encoding of integer global constant initializers diff --git a/vendor/github.com/tetratelabs/wazero/config.go b/vendor/github.com/tetratelabs/wazero/config.go index 8fcfb5fa2b..70219b055f 100644 --- a/vendor/github.com/tetratelabs/wazero/config.go +++ b/vendor/github.com/tetratelabs/wazero/config.go @@ -11,10 +11,10 @@ import ( "time" "github.com/tetratelabs/wazero/api" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/engine/compiler" "github.com/tetratelabs/wazero/internal/engine/interpreter" "github.com/tetratelabs/wazero/internal/filecache" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/internalapi" "github.com/tetratelabs/wazero/internal/platform" internalsock "github.com/tetratelabs/wazero/internal/sock" @@ -846,7 +846,7 @@ func (c *moduleConfig) toSysContext() (sysCtx *internalsys.Context, err error) { environ = append(environ, result) } - var fs []fsapi.FS + var fs []experimentalsys.FS var guestPaths []string if f, ok := c.fsConfig.(*fsConfig); ok { fs, guestPaths = f.preopens() diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go similarity index 62% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go index 6e99b1b5d0..0b997cb8fc 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/dir.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/dir.go @@ -1,11 +1,9 @@ -package fsapi +package sys import ( "fmt" "io/fs" - "time" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" ) @@ -22,7 +20,7 @@ type FileType = fs.FileMode // - This extends `dirent` defined in POSIX with some fields defined by // Linux. See https://man7.org/linux/man-pages/man3/readdir.3.html and // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/dirent.h.html -// - This has a subset of fields defined in Stat_t. Notably, there is no +// - This has a subset of fields defined in sys.Stat_t. Notably, there is no // field corresponding to Stat_t.Dev because that value will be constant // for all files in a directory. To get the Dev value, call File.Stat on // the directory File.Readdir was called on. @@ -59,51 +57,36 @@ func (DirFile) IsAppend() bool { } // SetAppend implements File.SetAppend -func (DirFile) SetAppend(bool) experimentalsys.Errno { - return experimentalsys.EISDIR -} - -// IsNonblock implements File.IsNonblock -func (DirFile) IsNonblock() bool { - return false -} - -// SetNonblock implements File.SetNonblock -func (DirFile) SetNonblock(bool) experimentalsys.Errno { - return experimentalsys.EISDIR +func (DirFile) SetAppend(bool) Errno { + return EISDIR } // IsDir implements File.IsDir -func (DirFile) IsDir() (bool, experimentalsys.Errno) { +func (DirFile) IsDir() (bool, Errno) { return true, 0 } // Read implements File.Read -func (DirFile) Read([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Read([]byte) (int, Errno) { + return 0, EISDIR } // Pread implements File.Pread -func (DirFile) Pread([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR -} - -// PollRead implements File.PollRead -func (DirFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { - return false, experimentalsys.ENOSYS +func (DirFile) Pread([]byte, int64) (int, Errno) { + return 0, EISDIR } // Write implements File.Write -func (DirFile) Write([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Write([]byte) (int, Errno) { + return 0, EISDIR } // Pwrite implements File.Pwrite -func (DirFile) Pwrite([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.EISDIR +func (DirFile) Pwrite([]byte, int64) (int, Errno) { + return 0, EISDIR } // Truncate implements File.Truncate -func (DirFile) Truncate(int64) experimentalsys.Errno { - return experimentalsys.EISDIR +func (DirFile) Truncate(int64) Errno { + return EISDIR } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go index 81baadd0d9..2389494960 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/errno.go @@ -35,6 +35,7 @@ const ( ENOENT ENOSYS ENOTDIR + ERANGE ENOTEMPTY ENOTSOCK ENOTSUP @@ -79,6 +80,8 @@ func (e Errno) Error() string { return "functionality not supported" case ENOTDIR: return "not a directory or a symbolic link to a directory" + case ERANGE: + return "result too large" case ENOTEMPTY: return "directory not empty" case ENOTSOCK: diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go new file mode 100644 index 0000000000..f8f2e5b128 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/file.go @@ -0,0 +1,317 @@ +package sys + +import "github.com/tetratelabs/wazero/sys" + +// File is a writeable fs.File bridge backed by syscall functions needed for ABI +// including WASI and runtime.GOOS=js. +// +// Implementations should embed UnimplementedFile for forward compatability. Any +// unsupported method or parameter should return ENOSYS. +// +// # Errors +// +// All methods that can return an error return a Errno, which is zero +// on success. +// +// Restricting to Errno matches current WebAssembly host functions, +// which are constrained to well-known error codes. For example, `GOOS=js` maps +// hard coded values and panics otherwise. More commonly, WASI maps syscall +// errors to u32 numeric values. +// +// # Notes +// +// - You must call Close to avoid file resource conflicts. For example, +// Windows cannot delete the underlying directory while a handle to it +// remains open. +// - A writable filesystem abstraction is not yet implemented as of Go 1.20. +// See https://github.com/golang/go/issues/45757 +type File interface { + // Dev returns the device ID (Stat_t.Dev) of this file, zero if unknown or + // an error retrieving it. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. Zero should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + // - This combined with Ino can implement os.SameFile. + Dev() (uint64, Errno) + + // Ino returns the serial number (Stat_t.Ino) of this file, zero if unknown + // or an error retrieving it. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. Zero should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + // - This combined with Dev can implement os.SameFile. + Ino() (sys.Inode, Errno) + + // IsDir returns true if this file is a directory or an error there was an + // error retrieving this information. + // + // # Errors + // + // Possible errors are those from Stat, except ENOSYS should not + // be returned. false should be returned if there is no implementation. + // + // # Notes + // + // - Implementations should cache this result. + IsDir() (bool, Errno) + + // IsAppend returns true if the file was opened with O_APPEND, or + // SetAppend was successfully enabled on this file. + // + // # Notes + // + // - This might not match the underlying state of the file descriptor if + // the file was not opened via OpenFile. + IsAppend() bool + + // SetAppend toggles the append mode (O_APPEND) of this file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - There is no `O_APPEND` for `fcntl` in POSIX, so implementations may + // have to re-open the underlying file to apply this. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html + SetAppend(enable bool) Errno + + // Stat is similar to syscall.Fstat. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fstat and `fstatat` with `AT_FDCWD` in POSIX. + // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html + // - A fs.FileInfo backed implementation sets atim, mtim and ctim to the + // same value. + // - Windows allows you to stat a closed directory. + Stat() (sys.Stat_t, Errno) + + // Read attempts to read all bytes in the file into `buf`, and returns the + // count read even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.Reader and `read` in POSIX, preferring semantics of + // io.Reader. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html + // - Unlike io.Reader, there is no io.EOF returned on end-of-file. To + // read the file completely, the caller must repeat until `n` is zero. + Read(buf []byte) (n int, errno Errno) + + // Pread attempts to read all bytes in the file into `p`, starting at the + // offset `off`, and returns the count read even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EINVAL: the offset was negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.ReaderAt and `pread` in POSIX, preferring semantics + // of io.ReaderAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html + // - Unlike io.ReaderAt, there is no io.EOF returned on end-of-file. To + // read the file completely, the caller must repeat until `n` is zero. + Pread(buf []byte, off int64) (n int, errno Errno) + + // Seek attempts to set the next offset for Read or Write and returns the + // resulting absolute offset or an error. + // + // # Parameters + // + // The `offset` parameters is interpreted in terms of `whence`: + // - io.SeekStart: relative to the start of the file, e.g. offset=0 sets + // the next Read or Write to the beginning of the file. + // - io.SeekCurrent: relative to the current offset, e.g. offset=16 sets + // the next Read or Write 16 bytes past the prior. + // - io.SeekEnd: relative to the end of the file, e.g. offset=-1 sets the + // next Read or Write to the last byte in the file. + // + // # Behavior when a directory + // + // The only supported use case for a directory is seeking to `offset` zero + // (`whence` = io.SeekStart). This should have the same behavior as + // os.File, which resets any internal state used by Readdir. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not readable. + // - EINVAL: the offset was negative. + // + // # Notes + // + // - This is like io.Seeker and `fseek` in POSIX, preferring semantics + // of io.Seeker. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html + Seek(offset int64, whence int) (newOffset int64, errno Errno) + + // Readdir reads the contents of the directory associated with file and + // returns a slice of up to n Dirent values in an arbitrary order. This is + // a stateful function, so subsequent calls return any next values. + // + // If n > 0, Readdir returns at most n entries or an error. + // If n <= 0, Readdir returns all remaining entries or an error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file was closed or not a directory. + // - ENOENT: the directory could not be read (e.g. deleted). + // + // # Notes + // + // - This is like `Readdir` on os.File, but unlike `readdir` in POSIX. + // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html + // - Unlike os.File, there is no io.EOF returned on end-of-directory. To + // read the directory completely, the caller must repeat until the + // count read (`len(dirents)`) is less than `n`. + // - See /RATIONALE.md for design notes. + Readdir(n int) (dirents []Dirent, errno Errno) + + // Write attempts to write all bytes in `p` to the file, and returns the + // count written even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file was closed, not writeable, or a directory. + // + // # Notes + // + // - This is like io.Writer and `write` in POSIX, preferring semantics of + // io.Writer. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html + Write(buf []byte) (n int, errno Errno) + + // Pwrite attempts to write all bytes in `p` to the file at the given + // offset `off`, and returns the count written even on error. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed or not writeable. + // - EINVAL: the offset was negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like io.WriterAt and `pwrite` in POSIX, preferring semantics + // of io.WriterAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html + Pwrite(buf []byte, off int64) (n int, errno Errno) + + // Truncate truncates a file to a specified length. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // - EINVAL: the `size` is negative. + // - EISDIR: the file was a directory. + // + // # Notes + // + // - This is like syscall.Ftruncate and `ftruncate` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html + // - Windows does not error when calling Truncate on a closed file. + Truncate(size int64) Errno + + // Sync synchronizes changes to the file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fsync and `fsync` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html + // - This returns with no error instead of ENOSYS when + // unimplemented. This prevents fake filesystems from erring. + // - Windows does not error when calling Sync on a closed file. + Sync() Errno + + // Datasync synchronizes the data of a file. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.Fdatasync and `fdatasync` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html + // - This returns with no error instead of ENOSYS when + // unimplemented. This prevents fake filesystems from erring. + // - As this is commonly missing, some implementations dispatch to Sync. + Datasync() Errno + + // Utimens set file access and modification times of this file, at + // nanosecond precision. + // + // # Parameters + // + // The `atim` and `mtim` parameters refer to access and modification time + // stamps as defined in sys.Stat_t. To retain one or the other, substitute + // it with the pseudo-timestamp UTIME_OMIT. + // + // # Errors + // + // A zero Errno is success. The below are expected otherwise: + // - ENOSYS: the implementation does not support this function. + // - EBADF: the file or directory was closed. + // + // # Notes + // + // - This is like syscall.UtimesNano and `futimens` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html + // - Windows requires files to be open with O_RDWR, which means you + // cannot use this to update timestamps on a directory (EPERM). + Utimens(atim, mtim int64) Errno + + // Close closes the underlying file. + // + // A zero Errno is returned if unimplemented or success. + // + // # Notes + // + // - This is like syscall.Close and `close` in POSIX. See + // https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html + Close() Errno +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go similarity index 67% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go index 50bf61687d..1ce99cef18 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/fs.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/fs.go @@ -1,10 +1,8 @@ -package fsapi +package sys import ( "io/fs" - "syscall" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" ) @@ -34,11 +32,11 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` or `flag` is invalid. - // - sys.EISDIR: the path was a directory, but flag included O_RDWR or + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` or `flag` is invalid. + // - EISDIR: the path was a directory, but flag included O_RDWR or // O_WRONLY - // - sys.ENOENT: `path` doesn't exist and `flag` doesn't contain O_CREAT. + // - ENOENT: `path` doesn't exist and `flag` doesn't contain O_CREAT. // // # Constraints on the returned file // @@ -59,15 +57,15 @@ type FS interface { // - Implications of permissions when O_CREAT are described in Chmod notes. // - This is like `open` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html - OpenFile(path string, flag Oflag, perm fs.FileMode) (File, experimentalsys.Errno) + OpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno) // Lstat gets file status without following symbolic links. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.ENOENT: `path` doesn't exist. + // - ENOSYS: the implementation does not support this function. + // - ENOENT: `path` doesn't exist. // // # Notes // @@ -79,15 +77,15 @@ type FS interface { // same value. // - When the path is a symbolic link, the stat returned is for the link, // not the file it refers to. - Lstat(path string) (sys.Stat_t, experimentalsys.Errno) + Lstat(path string) (sys.Stat_t, Errno) // Stat gets file status. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.ENOENT: `path` doesn't exist. + // - ENOSYS: the implementation does not support this function. + // - ENOENT: `path` doesn't exist. // // # Notes // @@ -99,17 +97,17 @@ type FS interface { // same value. // - When the path is a symbolic link, the stat returned is for the file // it refers to. - Stat(path string) (sys.Stat_t, experimentalsys.Errno) + Stat(path string) (sys.Stat_t, Errno) // Mkdir makes a directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.EEXIST: `path` exists and is a directory. - // - sys.ENOTDIR: `path` exists and is a file. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - EEXIST: `path` exists and is a directory. + // - ENOTDIR: `path` exists and is a file. // // # Notes // @@ -118,16 +116,16 @@ type FS interface { // - This is like `mkdir` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html // - Implications of permissions are described in Chmod notes. - Mkdir(path string, perm fs.FileMode) experimentalsys.Errno + Mkdir(path string, perm fs.FileMode) Errno // Chmod changes the mode of the file. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` does not exist. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` does not exist. // // # Notes // @@ -138,19 +136,19 @@ type FS interface { // - Windows ignores the execute bit, and any permissions come back as // group and world. For example, chmod of 0400 reads back as 0444, and // 0700 0666. Also, permissions on directories aren't supported at all. - Chmod(path string, perm fs.FileMode) experimentalsys.Errno + Chmod(path string, perm fs.FileMode) Errno // Rename renames file or directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `from` or `to` is invalid. - // - sys.ENOENT: `from` or `to` don't exist. - // - sys.ENOTDIR: `from` is a directory and `to` exists as a file. - // - sys.EISDIR: `from` is a file and `to` exists as a directory. - // - sys.ENOTEMPTY: `both from` and `to` are existing directory, but + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `from` or `to` is invalid. + // - ENOENT: `from` or `to` don't exist. + // - ENOTDIR: `from` is a directory and `to` exists as a file. + // - EISDIR: `from` is a file and `to` exists as a directory. + // - ENOTEMPTY: `both from` and `to` are existing directory, but // `to` is not empty. // // # Notes @@ -160,18 +158,18 @@ type FS interface { // - This is like `rename` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/rename.html // - Windows doesn't let you overwrite an existing directory. - Rename(from, to string) experimentalsys.Errno + Rename(from, to string) Errno // Rmdir removes a directory. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` doesn't exist. - // - sys.ENOTDIR: `path` exists, but isn't a directory. - // - sys.ENOTEMPTY: `path` exists, but isn't empty. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` doesn't exist. + // - ENOTDIR: `path` exists, but isn't a directory. + // - ENOTEMPTY: `path` exists, but isn't empty. // // # Notes // @@ -179,18 +177,18 @@ type FS interface { // file system. // - This is like `rmdir` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/rmdir.html - // - As of Go 1.19, Windows maps sys.ENOTDIR to sys.ENOENT. - Rmdir(path string) experimentalsys.Errno + // - As of Go 1.19, Windows maps ENOTDIR to ENOENT. + Rmdir(path string) Errno // Unlink removes a directory entry. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.ENOENT: `path` doesn't exist. - // - sys.EISDIR: `path` exists, but is a directory. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - ENOENT: `path` doesn't exist. + // - EISDIR: `path` exists, but is a directory. // // # Notes // @@ -201,7 +199,7 @@ type FS interface { // - On Windows, syscall.Unlink doesn't delete symlink to directory unlike other platforms. Implementations might // want to combine syscall.RemoveDirectory with syscall.Unlink in order to delete such links on Windows. // See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-removedirectorya - Unlink(path string) experimentalsys.Errno + Unlink(path string) Errno // Link creates a "hard" link from oldPath to newPath, in contrast to a // soft link (via Symlink). @@ -209,10 +207,10 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EPERM: `oldPath` is invalid. - // - sys.ENOENT: `oldPath` doesn't exist. - // - sys.EISDIR: `newPath` exists, but is a directory. + // - ENOSYS: the implementation does not support this function. + // - EPERM: `oldPath` is invalid. + // - ENOENT: `oldPath` doesn't exist. + // - EISDIR: `newPath` exists, but is a directory. // // # Notes // @@ -220,7 +218,7 @@ type FS interface { // file system. // - This is like `link` in POSIX. See // https://pubs.opengroup.org/onlinepubs/9699919799/functions/link.html - Link(oldPath, newPath string) experimentalsys.Errno + Link(oldPath, newPath string) Errno // Symlink creates a "soft" link from oldPath to newPath, in contrast to a // hard link (via Link). @@ -228,9 +226,9 @@ type FS interface { // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EPERM: `oldPath` or `newPath` is invalid. - // - sys.EEXIST: `newPath` exists. + // - ENOSYS: the implementation does not support this function. + // - EPERM: `oldPath` or `newPath` is invalid. + // - EEXIST: `newPath` exists. // // # Notes // @@ -244,17 +242,17 @@ type FS interface { // See https://github.com/bytecodealliance/cap-std/blob/v1.0.4/cap-std/src/fs/dir.rs#L404-L409 // for how others implement this. // - Symlinks in Windows requires `SeCreateSymbolicLinkPrivilege`. - // Otherwise, sys.EPERM results. + // Otherwise, EPERM results. // See https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-symbolic-links - Symlink(oldPath, linkName string) experimentalsys.Errno + Symlink(oldPath, linkName string) Errno // Readlink reads the contents of a symbolic link. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. // // # Notes // @@ -265,32 +263,31 @@ type FS interface { // - On Windows, the path separator is different from other platforms, // but to provide consistent results to Wasm, this normalizes to a "/" // separator. - Readlink(path string) (string, experimentalsys.Errno) + Readlink(path string) (string, Errno) // Utimens set file access and modification times on a path relative to // this file system, at nanosecond precision. // // # Parameters // - // The `times` parameter includes the access and modification timestamps to - // assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT - // may be specified instead of real timestamps. A nil `times` parameter - // behaves the same as if both were set to UTIME_NOW. If the path is a - // symbolic link, the target of expanding that link is updated. + // If the path is a symbolic link, the target of expanding that link is + // updated. + // + // The `atim` and `mtim` parameters refer to access and modification time + // stamps as defined in sys.Stat_t. To retain one or the other, substitute + // it with the pseudo-timestamp UTIME_OMIT. // // # Errors // // A zero Errno is success. The below are expected otherwise: - // - sys.ENOSYS: the implementation does not support this function. - // - sys.EINVAL: `path` is invalid. - // - sys.EEXIST: `path` exists and is a directory. - // - sys.ENOTDIR: `path` exists and is a file. + // - ENOSYS: the implementation does not support this function. + // - EINVAL: `path` is invalid. + // - EEXIST: `path` exists and is a directory. + // - ENOTDIR: `path` exists and is a file. // // # Notes // // - This is like syscall.UtimesNano and `utimensat` with `AT_FDCWD` in // POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html - Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno - // TODO: change impl to not use syscall package, - // possibly by being just a pair of int64s.. + Utimens(path string, atim, mtim int64) Errno } diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go similarity index 99% rename from vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go rename to vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go index eac4fc9874..39ebd378f6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/oflag.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/oflag.go @@ -1,4 +1,4 @@ -package fsapi +package sys // Oflag are flags used for FS.OpenFile. Values, including zero, should not be // interpreted numerically. Instead, use by constants prefixed with 'O_' with diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go index aa6eb23d80..d28f6faa03 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno.go @@ -1,51 +1,59 @@ +//go:build !plan9 + package sys import "syscall" -func syscallToErrno(errno syscall.Errno) Errno { +func syscallToErrno(err error) (Errno, bool) { + errno, ok := err.(syscall.Errno) + if !ok { + return 0, false + } switch errno { case 0: - return 0 + return 0, true case syscall.EACCES: - return EACCES + return EACCES, true case syscall.EAGAIN: - return EAGAIN + return EAGAIN, true case syscall.EBADF: - return EBADF + return EBADF, true case syscall.EEXIST: - return EEXIST + return EEXIST, true case syscall.EFAULT: - return EFAULT + return EFAULT, true case syscall.EINTR: - return EINTR + return EINTR, true case syscall.EINVAL: - return EINVAL + return EINVAL, true case syscall.EIO: - return EIO + return EIO, true case syscall.EISDIR: - return EISDIR + return EISDIR, true case syscall.ELOOP: - return ELOOP + return ELOOP, true case syscall.ENAMETOOLONG: - return ENAMETOOLONG + return ENAMETOOLONG, true case syscall.ENOENT: - return ENOENT + return ENOENT, true case syscall.ENOSYS: - return ENOSYS + return ENOSYS, true case syscall.ENOTDIR: - return ENOTDIR + return ENOTDIR, true + case syscall.ERANGE: + return ERANGE, true case syscall.ENOTEMPTY: - return ENOTEMPTY + return ENOTEMPTY, true case syscall.ENOTSOCK: - return ENOTSOCK + return ENOTSOCK, true case syscall.ENOTSUP: - return ENOTSUP + return ENOTSUP, true case syscall.EPERM: - return EPERM + return EPERM, true case syscall.EROFS: - return EROFS + return EROFS, true default: - return EIO + return EIO, true } } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go index 56c8441d95..8a88ed7658 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_notwindows.go @@ -2,15 +2,12 @@ package sys -import "syscall" - func errorToErrno(err error) Errno { - switch err := err.(type) { - case Errno: - return err - case syscall.Errno: - return syscallToErrno(err) - default: - return EIO + if errno, ok := err.(Errno); ok { + return errno + } + if errno, ok := syscallToErrno(err); ok { + return errno } + return EIO } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go new file mode 100644 index 0000000000..0e454f0acb --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_plan9.go @@ -0,0 +1,5 @@ +package sys + +func syscallToErrno(err error) (Errno, bool) { + return 0, false +} diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go index 4c512133a4..761a1f9dc2 100644 --- a/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/syscall_errno_windows.go @@ -54,7 +54,8 @@ func errorToErrno(err error) Errno { case _ERROR_NEGATIVE_SEEK, _ERROR_INVALID_NAME: return EINVAL } - return syscallToErrno(err) + errno, _ := syscallToErrno(err) + return errno default: return EIO } diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go new file mode 100644 index 0000000000..4f3e01fefb --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/time.go @@ -0,0 +1,10 @@ +package sys + +import "math" + +// UTIME_OMIT is a special constant for use in updating times via FS.Utimens +// or File.Utimens. When used for atim or mtim, the value is retained. +// +// Note: This may be implemented via a stat when the underlying filesystem +// does not support this value. +const UTIME_OMIT int64 = math.MinInt64 diff --git a/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go b/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go new file mode 100644 index 0000000000..d853d9e8f4 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/experimental/sys/unimplemented.go @@ -0,0 +1,160 @@ +package sys + +import ( + "io/fs" + + "github.com/tetratelabs/wazero/sys" +) + +// UnimplementedFS is an FS that returns ENOSYS for all functions, +// This should be embedded to have forward compatible implementations. +type UnimplementedFS struct{} + +// OpenFile implements FS.OpenFile +func (UnimplementedFS) OpenFile(path string, flag Oflag, perm fs.FileMode) (File, Errno) { + return nil, ENOSYS +} + +// Lstat implements FS.Lstat +func (UnimplementedFS) Lstat(path string) (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Stat implements FS.Stat +func (UnimplementedFS) Stat(path string) (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Readlink implements FS.Readlink +func (UnimplementedFS) Readlink(path string) (string, Errno) { + return "", ENOSYS +} + +// Mkdir implements FS.Mkdir +func (UnimplementedFS) Mkdir(path string, perm fs.FileMode) Errno { + return ENOSYS +} + +// Chmod implements FS.Chmod +func (UnimplementedFS) Chmod(path string, perm fs.FileMode) Errno { + return ENOSYS +} + +// Rename implements FS.Rename +func (UnimplementedFS) Rename(from, to string) Errno { + return ENOSYS +} + +// Rmdir implements FS.Rmdir +func (UnimplementedFS) Rmdir(path string) Errno { + return ENOSYS +} + +// Link implements FS.Link +func (UnimplementedFS) Link(_, _ string) Errno { + return ENOSYS +} + +// Symlink implements FS.Symlink +func (UnimplementedFS) Symlink(_, _ string) Errno { + return ENOSYS +} + +// Unlink implements FS.Unlink +func (UnimplementedFS) Unlink(path string) Errno { + return ENOSYS +} + +// Utimens implements FS.Utimens +func (UnimplementedFS) Utimens(path string, atim, mtim int64) Errno { + return ENOSYS +} + +// UnimplementedFile is a File that returns ENOSYS for all functions, +// except where no-op are otherwise documented. +// +// This should be embedded to have forward compatible implementations. +type UnimplementedFile struct{} + +// Dev implements File.Dev +func (UnimplementedFile) Dev() (uint64, Errno) { + return 0, 0 +} + +// Ino implements File.Ino +func (UnimplementedFile) Ino() (sys.Inode, Errno) { + return 0, 0 +} + +// IsDir implements File.IsDir +func (UnimplementedFile) IsDir() (bool, Errno) { + return false, 0 +} + +// IsAppend implements File.IsAppend +func (UnimplementedFile) IsAppend() bool { + return false +} + +// SetAppend implements File.SetAppend +func (UnimplementedFile) SetAppend(bool) Errno { + return ENOSYS +} + +// Stat implements File.Stat +func (UnimplementedFile) Stat() (sys.Stat_t, Errno) { + return sys.Stat_t{}, ENOSYS +} + +// Read implements File.Read +func (UnimplementedFile) Read([]byte) (int, Errno) { + return 0, ENOSYS +} + +// Pread implements File.Pread +func (UnimplementedFile) Pread([]byte, int64) (int, Errno) { + return 0, ENOSYS +} + +// Seek implements File.Seek +func (UnimplementedFile) Seek(int64, int) (int64, Errno) { + return 0, ENOSYS +} + +// Readdir implements File.Readdir +func (UnimplementedFile) Readdir(int) (dirents []Dirent, errno Errno) { + return nil, ENOSYS +} + +// Write implements File.Write +func (UnimplementedFile) Write([]byte) (int, Errno) { + return 0, ENOSYS +} + +// Pwrite implements File.Pwrite +func (UnimplementedFile) Pwrite([]byte, int64) (int, Errno) { + return 0, ENOSYS +} + +// Truncate implements File.Truncate +func (UnimplementedFile) Truncate(int64) Errno { + return ENOSYS +} + +// Sync implements File.Sync +func (UnimplementedFile) Sync() Errno { + return 0 // not ENOSYS +} + +// Datasync implements File.Datasync +func (UnimplementedFile) Datasync() Errno { + return 0 // not ENOSYS +} + +// Utimens implements File.Utimens +func (UnimplementedFile) Utimens(int64, int64) Errno { + return ENOSYS +} + +// Close implements File.Close +func (UnimplementedFile) Close() (errno Errno) { return } diff --git a/vendor/github.com/tetratelabs/wazero/fsconfig.go b/vendor/github.com/tetratelabs/wazero/fsconfig.go index 560da0b37d..c28909e19e 100644 --- a/vendor/github.com/tetratelabs/wazero/fsconfig.go +++ b/vendor/github.com/tetratelabs/wazero/fsconfig.go @@ -3,7 +3,7 @@ package wazero import ( "io/fs" - "github.com/tetratelabs/wazero/internal/fsapi" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/sys" "github.com/tetratelabs/wazero/internal/sysfs" ) @@ -135,7 +135,7 @@ type FSConfig interface { type fsConfig struct { // fs are the currently configured filesystems. - fs []fsapi.FS + fs []experimentalsys.FS // guestPaths are the user-supplied names of the filesystems, retained for // error messages and fmt.Stringer. guestPaths []string @@ -152,7 +152,7 @@ func NewFSConfig() FSConfig { // clone makes a deep copy of this module config. func (c *fsConfig) clone() *fsConfig { ret := *c // copy except slice and maps which share a ref - ret.fs = make([]fsapi.FS, 0, len(c.fs)) + ret.fs = make([]experimentalsys.FS, 0, len(c.fs)) ret.fs = append(ret.fs, c.fs...) ret.guestPaths = make([]string, 0, len(c.guestPaths)) ret.guestPaths = append(ret.guestPaths, c.guestPaths...) @@ -165,21 +165,26 @@ func (c *fsConfig) clone() *fsConfig { // WithDirMount implements FSConfig.WithDirMount func (c *fsConfig) WithDirMount(dir, guestPath string) FSConfig { - return c.withMount(sysfs.NewDirFS(dir), guestPath) + return c.WithSysFSMount(sysfs.DirFS(dir), guestPath) } // WithReadOnlyDirMount implements FSConfig.WithReadOnlyDirMount func (c *fsConfig) WithReadOnlyDirMount(dir, guestPath string) FSConfig { - return c.withMount(sysfs.NewReadFS(sysfs.NewDirFS(dir)), guestPath) + return c.WithSysFSMount(&sysfs.ReadFS{FS: sysfs.DirFS(dir)}, guestPath) } // WithFSMount implements FSConfig.WithFSMount func (c *fsConfig) WithFSMount(fs fs.FS, guestPath string) FSConfig { - return c.withMount(sysfs.Adapt(fs), guestPath) + var adapted experimentalsys.FS + if fs != nil { + adapted = &sysfs.AdaptFS{FS: fs} + } + return c.WithSysFSMount(adapted, guestPath) } -func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { - if _, ok := fs.(fsapi.UnimplementedFS); ok { +// WithSysFSMount implements sysfs.FSConfig +func (c *fsConfig) WithSysFSMount(fs experimentalsys.FS, guestPath string) FSConfig { + if _, ok := fs.(experimentalsys.UnimplementedFS); ok { return c // don't add fake paths. } cleaned := sys.StripPrefixesAndTrailingSlash(guestPath) @@ -187,7 +192,7 @@ func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { if i, ok := ret.guestPathToFS[cleaned]; ok { ret.fs[i] = fs ret.guestPaths[i] = guestPath - } else { + } else if fs != nil { ret.guestPathToFS[cleaned] = len(ret.fs) ret.fs = append(ret.fs, fs) ret.guestPaths = append(ret.guestPaths, guestPath) @@ -197,12 +202,12 @@ func (c *fsConfig) withMount(fs fsapi.FS, guestPath string) FSConfig { // preopens returns the possible nil index-correlated preopened filesystems // with guest paths. -func (c *fsConfig) preopens() ([]fsapi.FS, []string) { +func (c *fsConfig) preopens() ([]experimentalsys.FS, []string) { preopenCount := len(c.fs) if preopenCount == 0 { return nil, nil } - fs := make([]fsapi.FS, len(c.fs)) + fs := make([]experimentalsys.FS, len(c.fs)) copy(fs, c.fs) guestPaths := make([]string, len(c.guestPaths)) copy(guestPaths, c.guestPaths) diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go index 033b70cb7d..9d28ae17b0 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/fs.go @@ -7,15 +7,12 @@ import ( "math" "path" "strings" - "syscall" "unsafe" "github.com/tetratelabs/wazero/api" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" "github.com/tetratelabs/wazero/internal/sys" - "github.com/tetratelabs/wazero/internal/sysfs" "github.com/tetratelabs/wazero/internal/wasip1" "github.com/tetratelabs/wazero/internal/wasm" sysapi "github.com/tetratelabs/wazero/sys" @@ -415,7 +412,7 @@ func fdFilestatGetFunc(mod api.Module, fd int32, resultBuf uint32) experimentals return writeFilestat(buf, &st, filetype) } -func getExtendedWasiFiletype(file fsapi.File, fm fs.FileMode) (ftype uint8) { +func getExtendedWasiFiletype(file experimentalsys.File, fm fs.FileMode) (ftype uint8) { ftype = getWasiFiletype(fm) if ftype == wasip1.FILETYPE_UNKNOWN { if _, ok := file.(socketapi.TCPSock); ok { @@ -503,50 +500,55 @@ func fdFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) ex return experimentalsys.EBADF } - times, errno := toTimes(atim, mtim, fstFlags) + atim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags) if errno != 0 { return errno } // Try to update the file timestamps by file-descriptor. - errno = f.File.Utimens(×) + errno = f.File.Utimens(atim, mtim) // Fall back to path based, despite it being less precise. switch errno { case experimentalsys.EPERM, experimentalsys.ENOSYS: - errno = f.FS.Utimens(f.Name, ×) + errno = f.FS.Utimens(f.Name, atim, mtim) } return errno } -func toTimes(atim, mtime int64, fstFlags uint16) (times [2]syscall.Timespec, errno experimentalsys.Errno) { +func toTimes(walltime func() int64, atim, mtim int64, fstFlags uint16) (int64, int64, experimentalsys.Errno) { // times[0] == atim, times[1] == mtim + var nowTim int64 + // coerce atim into a timespec if set, now := fstFlags&wasip1.FstflagsAtim != 0, fstFlags&wasip1.FstflagsAtimNow != 0; set && now { - errno = experimentalsys.EINVAL - return + return 0, 0, experimentalsys.EINVAL } else if set { - times[0] = syscall.NsecToTimespec(atim) + // atim is already correct } else if now { - times[0].Nsec = sysfs.UTIME_NOW + nowTim = walltime() + atim = nowTim } else { - times[0].Nsec = sysfs.UTIME_OMIT + atim = experimentalsys.UTIME_OMIT } // coerce mtim into a timespec if set, now := fstFlags&wasip1.FstflagsMtim != 0, fstFlags&wasip1.FstflagsMtimNow != 0; set && now { - errno = experimentalsys.EINVAL - return + return 0, 0, experimentalsys.EINVAL } else if set { - times[1] = syscall.NsecToTimespec(mtime) + // mtim is already correct } else if now { - times[1].Nsec = sysfs.UTIME_NOW + if nowTim != 0 { + mtim = nowTim + } else { + mtim = walltime() + } } else { - times[1].Nsec = sysfs.UTIME_OMIT + mtim = experimentalsys.UTIME_OMIT } - return + return atim, mtim, 0 } // fdPread is the WASI function named FdPreadName which reads from a file @@ -745,11 +747,11 @@ var fdRead = newHostFunc( // preader tracks an offset across multiple reads. type preader struct { - f fsapi.File + f experimentalsys.File offset int64 } -// Read implements the same function as documented on fsapi.File. +// Read implements the same function as documented on sys.File. func (w *preader) Read(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // less overhead on zero-length reads. @@ -942,7 +944,7 @@ const largestDirent = int64(math.MaxUint32 - wasip1.DirentSize) // // `bufToWrite` is the amount of memory needed to write direntCount, which // includes up to wasip1.DirentSize of a last truncated entry. -func maxDirents(dirents []fsapi.Dirent, bufLen uint32) (bufToWrite uint32, direntCount int, truncatedLen uint32) { +func maxDirents(dirents []experimentalsys.Dirent, bufLen uint32) (bufToWrite uint32, direntCount int, truncatedLen uint32) { lenRemaining := bufLen for i := range dirents { if lenRemaining == 0 { @@ -991,7 +993,7 @@ func maxDirents(dirents []fsapi.Dirent, bufLen uint32) (bufToWrite uint32, diren // writeDirents writes the directory entries to the buffer, which is pre-sized // based on maxDirents. truncatedEntryLen means the last is written without its // name. -func writeDirents(buf []byte, dirents []fsapi.Dirent, d_next uint64, direntCount int, truncatedLen uint32) { +func writeDirents(buf []byte, dirents []experimentalsys.Dirent, d_next uint64, direntCount int, truncatedLen uint32) { pos := uint32(0) skipNameI := -1 @@ -1233,11 +1235,11 @@ func fdWriteFn(_ context.Context, mod api.Module, params []uint64) experimentals // pwriter tracks an offset across multiple writes. type pwriter struct { - f fsapi.File + f experimentalsys.File offset int64 } -// Write implements the same function as documented on fsapi.File. +// Write implements the same function as documented on sys.File. func (w *pwriter) Write(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // less overhead on zero-length writes. @@ -1445,7 +1447,7 @@ func pathFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) sys := mod.(*wasm.ModuleInstance).Sys fsc := sys.FS() - times, errno := toTimes(atim, mtim, fstFlags) + atim, mtim, errno := toTimes(sys.WalltimeNanos, atim, mtim, fstFlags) if errno != 0 { return errno } @@ -1457,14 +1459,14 @@ func pathFilestatSetTimesFn(_ context.Context, mod api.Module, params []uint64) symlinkFollow := flags&wasip1.LOOKUP_SYMLINK_FOLLOW != 0 if symlinkFollow { - return preopen.Utimens(pathName, ×) + return preopen.Utimens(pathName, atim, mtim) } // Otherwise, we need to emulate don't follow by opening the file by path. - if f, errno := preopen.OpenFile(pathName, syscall.O_WRONLY, 0); errno != 0 { + if f, errno := preopen.OpenFile(pathName, experimentalsys.O_WRONLY, 0); errno != 0 { return errno } else { defer f.Close() - return f.Utimens(×) + return f.Utimens(atim, mtim) } } @@ -1595,7 +1597,7 @@ func pathOpenFn(_ context.Context, mod api.Module, params []uint64) experimental } fileOpenFlags := openFlags(dirflags, oflags, fdflags, rights) - isDir := fileOpenFlags&fsapi.O_DIRECTORY != 0 + isDir := fileOpenFlags&experimentalsys.O_DIRECTORY != 0 if isDir && oflags&wasip1.O_CREAT != 0 { return experimentalsys.EINVAL // use pathCreateDirectory! @@ -1642,7 +1644,7 @@ func pathOpenFn(_ context.Context, mod api.Module, params []uint64) experimental // // See https://github.com/WebAssembly/wasi-libc/blob/659ff414560721b1660a19685110e484a081c3d4/libc-bottom-half/sources/at_fdcwd.c // See https://linux.die.net/man/2/openat -func atPath(fsc *sys.FSContext, mem api.Memory, fd int32, p, pathLen uint32) (fsapi.FS, string, experimentalsys.Errno) { +func atPath(fsc *sys.FSContext, mem api.Memory, fd int32, p, pathLen uint32) (experimentalsys.FS, string, experimentalsys.Errno) { b, ok := mem.Read(p, pathLen) if !ok { return nil, "", experimentalsys.EFAULT @@ -1696,15 +1698,15 @@ func preopenPath(fsc *sys.FSContext, fd int32) (string, experimentalsys.Errno) { } } -func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi.Oflag) { +func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags experimentalsys.Oflag) { if dirflags&wasip1.LOOKUP_SYMLINK_FOLLOW == 0 { - openFlags |= fsapi.O_NOFOLLOW + openFlags |= experimentalsys.O_NOFOLLOW } if oflags&wasip1.O_DIRECTORY != 0 { - openFlags |= fsapi.O_DIRECTORY + openFlags |= experimentalsys.O_DIRECTORY return // Early return for directories as the rest of flags doesn't make sense for it. } else if oflags&wasip1.O_EXCL != 0 { - openFlags |= fsapi.O_EXCL + openFlags |= experimentalsys.O_EXCL } // Because we don't implement rights, we partially rely on the open flags // to determine the mode in which the file will be opened. This will create @@ -1713,30 +1715,30 @@ func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi // which sets O_CREAT but does not give read or write permissions will // successfully create a file when running with wazero, but might get a // permission denied error on other runtimes. - defaultMode := fsapi.O_RDONLY + defaultMode := experimentalsys.O_RDONLY if oflags&wasip1.O_TRUNC != 0 { - openFlags |= fsapi.O_TRUNC - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_TRUNC + defaultMode = experimentalsys.O_RDWR } if oflags&wasip1.O_CREAT != 0 { - openFlags |= fsapi.O_CREAT - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_CREAT + defaultMode = experimentalsys.O_RDWR } if fdflags&wasip1.FD_NONBLOCK != 0 { - openFlags |= fsapi.O_NONBLOCK + openFlags |= experimentalsys.O_NONBLOCK } if fdflags&wasip1.FD_APPEND != 0 { - openFlags |= fsapi.O_APPEND - defaultMode = fsapi.O_RDWR + openFlags |= experimentalsys.O_APPEND + defaultMode = experimentalsys.O_RDWR } if fdflags&wasip1.FD_DSYNC != 0 { - openFlags |= fsapi.O_DSYNC + openFlags |= experimentalsys.O_DSYNC } if fdflags&wasip1.FD_RSYNC != 0 { - openFlags |= fsapi.O_RSYNC + openFlags |= experimentalsys.O_RSYNC } if fdflags&wasip1.FD_SYNC != 0 { - openFlags |= fsapi.O_SYNC + openFlags |= experimentalsys.O_SYNC } // Since rights were discontinued in wasi, we only interpret RIGHT_FD_WRITE @@ -1748,11 +1750,11 @@ func openFlags(dirflags, oflags, fdflags uint16, rights uint32) (openFlags fsapi const rw = r | w switch { case (rights & rw) == rw: - openFlags |= fsapi.O_RDWR + openFlags |= experimentalsys.O_RDWR case (rights & w) == w: - openFlags |= fsapi.O_WRONLY + openFlags |= experimentalsys.O_WRONLY case (rights & r) == r: - openFlags |= fsapi.O_RDONLY + openFlags |= experimentalsys.O_RDONLY default: openFlags |= defaultMode } @@ -1794,6 +1796,10 @@ func pathReadlinkFn(_ context.Context, mod api.Module, params []uint64) experime return errno } + if len(dst) > int(bufLen) { + return experimentalsys.ERANGE + } + if ok := mem.WriteString(buf, dst); !ok { return experimentalsys.EFAULT } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go index aed08b7bea..d09f30245b 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/poll.go @@ -6,6 +6,7 @@ import ( "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" internalsys "github.com/tetratelabs/wazero/internal/sys" "github.com/tetratelabs/wazero/internal/wasip1" "github.com/tetratelabs/wazero/internal/wasm" @@ -46,7 +47,6 @@ type event struct { eventType byte userData []byte errno wasip1.Errno - outOffset uint32 } func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno { @@ -90,16 +90,16 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno var blockingStdinSubs []*event // The timeout is initialized at max Duration, the loop will find the minimum. var timeout time.Duration = 1<<63 - 1 - // Count of all the clock subscribers that have been already written back to outBuf. - clockEvents := uint32(0) - // Count of all the non-clock subscribers that have been already written back to outBuf. - readySubs := uint32(0) + // Count of all the subscriptions that have been already written back to outBuf. + // nevents*32 returns at all times the offset where the next event should be written: + // this way we ensure that there are no gaps between records. + nevents := uint32(0) // Layout is subscription_u: Union // https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#subscription_u for i := uint32(0); i < nsubscriptions; i++ { inOffset := i * 48 - outOffset := i * 32 + outOffset := nevents * 32 eventType := inBuf[inOffset+8] // +8 past userdata // +8 past userdata +8 contents_offset @@ -110,12 +110,10 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno eventType: eventType, userData: userData, errno: wasip1.ErrnoSuccess, - outOffset: outOffset, } switch eventType { case wasip1.EventTypeClock: // handle later - clockEvents++ newTimeout, err := processClockEvent(argBuf) if err != 0 { return err @@ -125,7 +123,8 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno timeout = newTimeout } // Ack the clock event to the outBuf. - writeEvent(outBuf, evt) + writeEvent(outBuf[outOffset:], evt) + nevents++ case wasip1.EventTypeFdRead: fd := int32(le.Uint32(argBuf)) if fd < 0 { @@ -133,16 +132,15 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno } if file, ok := fsc.LookupFile(fd); !ok { evt.errno = wasip1.ErrnoBadf - writeEvent(outBuf, evt) - readySubs++ - continue - } else if fd == internalsys.FdStdin && !file.File.IsNonblock() { - // if the fd is Stdin, and it is in non-blocking mode, + writeEvent(outBuf[outOffset:], evt) + nevents++ + } else if fd != internalsys.FdStdin && file.File.IsNonblock() { + writeEvent(outBuf[outOffset:], evt) + nevents++ + } else { + // if the fd is Stdin, and it is in blocking mode, // do not ack yet, append to a slice for delayed evaluation. blockingStdinSubs = append(blockingStdinSubs, evt) - } else { - writeEvent(outBuf, evt) - readySubs++ } case wasip1.EventTypeFdWrite: fd := int32(le.Uint32(argBuf)) @@ -154,47 +152,46 @@ func pollOneoffFn(_ context.Context, mod api.Module, params []uint64) sys.Errno } else { evt.errno = wasip1.ErrnoBadf } - readySubs++ - writeEvent(outBuf, evt) + nevents++ + writeEvent(outBuf[outOffset:], evt) default: return sys.EINVAL } } - // If there are subscribers with data ready, we have already written them to outBuf, - // and we don't need to wait for the timeout: clear it. - if readySubs != 0 { - timeout = 0 + sysCtx := mod.(*wasm.ModuleInstance).Sys + if nevents == nsubscriptions { + // We already wrote back all the results. We already wrote this number + // earlier to offset `resultNevents`. + // We only need to observe the timeout (nonzero if there are clock subscriptions) + // and return. + if timeout > 0 { + sysCtx.Nanosleep(int64(timeout)) + } + return 0 } // If there are blocking stdin subscribers, check for data with given timeout. - if len(blockingStdinSubs) > 0 { - stdin, ok := fsc.LookupFile(internalsys.FdStdin) - if !ok { - return sys.EBADF - } - // Wait for the timeout to expire, or for some data to become available on Stdin. - stdinReady, errno := stdin.File.PollRead(&timeout) - if errno != 0 { - return errno - } - if stdinReady { - // stdin has data ready to for reading, write back all the events - for i := range blockingStdinSubs { - readySubs++ - evt := blockingStdinSubs[i] - evt.errno = 0 - writeEvent(outBuf, evt) - } + stdin, ok := fsc.LookupFile(internalsys.FdStdin) + if !ok { + return sys.EBADF + } + // Wait for the timeout to expire, or for some data to become available on Stdin. + + if stdinReady, errno := stdin.File.Poll(fsapi.POLLIN, int32(timeout.Milliseconds())); errno != 0 { + return errno + } else if stdinReady { + // stdin has data ready to for reading, write back all the events + for i := range blockingStdinSubs { + evt := blockingStdinSubs[i] + evt.errno = 0 + writeEvent(outBuf[nevents*32:], evt) + nevents++ } - } else { - // No subscribers, just wait for the given timeout. - sysCtx := mod.(*wasm.ModuleInstance).Sys - sysCtx.Nanosleep(int64(timeout)) } - if readySubs != nsubscriptions { - if !mod.Memory().WriteUint32Le(resultNevents, readySubs+clockEvents) { + if nevents != nsubscriptions { + if !mod.Memory().WriteUint32Le(resultNevents, nevents) { return sys.EFAULT } } @@ -234,9 +231,9 @@ func processClockEvent(inBuf []byte) (time.Duration, sys.Errno) { // writeEvent writes the event corresponding to the processed subscription. // https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-event-struct func writeEvent(outBuf []byte, evt *event) { - copy(outBuf[evt.outOffset:], evt.userData) // userdata - outBuf[evt.outOffset+8] = byte(evt.errno) // uint16, but safe as < 255 - outBuf[evt.outOffset+9] = 0 - le.PutUint32(outBuf[evt.outOffset+10:], uint32(evt.eventType)) + copy(outBuf, evt.userData) // userdata + outBuf[8] = byte(evt.errno) // uint16, but safe as < 255 + outBuf[9] = 0 + le.PutUint32(outBuf[10:], uint32(evt.eventType)) // TODO: When FD events are supported, write outOffset+16 } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go index a3c20ad586..756c0d3913 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/sock.go @@ -2,7 +2,6 @@ package wasi_snapshot_preview1 import ( "context" - "syscall" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/experimental/sys" @@ -175,11 +174,11 @@ func sockShutdownFn(_ context.Context, mod api.Module, params []uint64) sys.Errn switch how { case wasip1.SD_RD | wasip1.SD_WR: - sysHow = syscall.SHUT_RD | syscall.SHUT_WR + sysHow = socketapi.SHUT_RD | socketapi.SHUT_WR case wasip1.SD_RD: - sysHow = syscall.SHUT_RD + sysHow = socketapi.SHUT_RD case wasip1.SD_WR: - sysHow = syscall.SHUT_WR + sysHow = socketapi.SHUT_WR default: return sys.EINVAL } diff --git a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go index a4a220596b..6c52cc4bcd 100644 --- a/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go +++ b/vendor/github.com/tetratelabs/wazero/imports/wasi_snapshot_preview1/testdata/tinygo/wasi.go @@ -29,8 +29,10 @@ func main() { } case "sock": // TODO: undefined: net.FileListener + // See https://github.com/tinygo-org/tinygo/pull/2748 case "nonblock": // TODO: undefined: syscall.SetNonblock + // See https://github.com/tinygo-org/tinygo/issues/3840 } } diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go index ca07a716d2..f8b76fa448 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine.go @@ -48,6 +48,10 @@ type ( // as the underlying memory region is accessed by assembly directly by using // codesElement0Address. functions []function + + // Keep a reference to the compiled module to prevent the GC from reclaiming + // it while the code may still be needed. + module *compiledModule } // callEngine holds context per moduleEngine.Call, and shared across all the @@ -130,11 +134,13 @@ type ( // initialFn is the initial function for this call engine. initialFn *function + // Keep a reference to the compiled module to prevent the GC from reclaiming + // it while the code may still be needed. + module *compiledModule + // stackIterator provides a way to iterate over the stack for Listeners. // It is setup and valid only during a call to a Listener hook. stackIterator stackIterator - - ensureTermination bool } // moduleContext holds the per-function call specific module information. @@ -264,12 +270,27 @@ type ( } compiledModule struct { - executable asm.CodeSegment - functions []compiledFunction - source *wasm.Module + // The data that need to be accessed by compiledFunction.parent are + // separated in an embedded field because we use finalizers to manage + // the lifecycle of compiledModule instances and having cyclic pointers + // prevents the Go runtime from calling them, which results in memory + // leaks since the memory mapped code segments cannot be released. + // + // The indirection guarantees that the finalizer set on compiledModule + // instances can run when all references are gone, and the Go GC can + // manage to reclaim the compiledCode when all compiledFunction objects + // referencing it have been freed. + *compiledCode + functions []compiledFunction + ensureTermination bool } + compiledCode struct { + source *wasm.Module + executable asm.CodeSegment + } + // compiledFunction corresponds to a function in a module (not instantiated one). This holds the machine code // compiled by wazero compiler. compiledFunction struct { @@ -282,7 +303,7 @@ type ( index wasm.Index goFunc interface{} listener experimental.FunctionListener - parent *compiledModule + parent *compiledCode sourceOffsetMap sourceOffsetMap } @@ -355,13 +376,13 @@ const ( functionSize = 40 // Offsets for wasm.ModuleInstance. - moduleInstanceGlobalsOffset = 32 - moduleInstanceMemoryOffset = 56 - moduleInstanceTablesOffset = 64 - moduleInstanceEngineOffset = 88 - moduleInstanceTypeIDsOffset = 104 - moduleInstanceDataInstancesOffset = 128 - moduleInstanceElementInstancesOffset = 152 + moduleInstanceGlobalsOffset = 24 + moduleInstanceMemoryOffset = 48 + moduleInstanceTablesOffset = 56 + moduleInstanceEngineOffset = 80 + moduleInstanceTypeIDsOffset = 96 + moduleInstanceDataInstancesOffset = 120 + moduleInstanceElementInstancesOffset = 144 // Offsets for wasm.TableInstance. tableInstanceTableOffset = 0 @@ -496,13 +517,6 @@ func (e *engine) Close() (err error) { e.mux.Lock() defer e.mux.Unlock() // Releasing the references to compiled codes including the memory-mapped machine codes. - - for i := range e.codes { - for j := range e.codes[i].functions { - e.codes[i].functions[j].parent = nil - } - } - e.codes = nil return } @@ -523,9 +537,11 @@ func (e *engine) CompileModule(_ context.Context, module *wasm.Module, listeners var withGoFunc bool localFuncs, importedFuncs := len(module.FunctionSection), module.ImportFunctionCount cm := &compiledModule{ + compiledCode: &compiledCode{ + source: module, + }, functions: make([]compiledFunction, localFuncs), ensureTermination: ensureTermination, - source: module, } if localFuncs == 0 { @@ -559,7 +575,7 @@ func (e *engine) CompileModule(_ context.Context, module *wasm.Module, listeners funcIndex := wasm.Index(i) compiledFn := &cm.functions[i] compiledFn.executableOffset = executable.Size() - compiledFn.parent = cm + compiledFn.parent = cm.compiledCode compiledFn.index = importedFuncs + funcIndex if i < ln { compiledFn.listener = listeners[i] @@ -628,6 +644,8 @@ func (e *engine) NewModuleEngine(module *wasm.Module, instance *wasm.ModuleInsta parent: c, } } + + me.module = cm return me, nil } @@ -638,11 +656,17 @@ func (e *moduleEngine) ResolveImportedFunction(index, indexInImportedModule wasm e.functions[index] = imported.functions[indexInImportedModule] } +// ResolveImportedMemory implements wasm.ModuleEngine. +func (e *moduleEngine) ResolveImportedMemory(wasm.ModuleEngine) {} + // FunctionInstanceReference implements the same method as documented on wasm.ModuleEngine. func (e *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference { return uintptr(unsafe.Pointer(&e.functions[funcIndex])) } +// DoneInstantiation implements wasm.ModuleEngine. +func (e *moduleEngine) DoneInstantiation() {} + // NewFunction implements wasm.ModuleEngine. func (e *moduleEngine) NewFunction(index wasm.Index) api.Function { return e.newFunction(&e.functions[index]) @@ -657,24 +681,20 @@ func (e *moduleEngine) newFunction(f *function) api.Function { } // LookupFunction implements the same method as documented on wasm.ModuleEngine. -func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (f api.Function, err error) { +func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) { if tableOffset >= uint32(len(t.References)) || t.Type != wasm.RefTypeFuncref { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } rawPtr := t.References[tableOffset] if rawPtr == 0 { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } tf := functionFromUintptr(rawPtr) if tf.typeID != typeId { - err = wasmruntime.ErrRuntimeIndirectCallTypeMismatch - return + panic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch) } - f = e.newFunction(tf) - return + return tf.moduleInstance, tf.parent.index } // functionFromUintptr resurrects the original *function from the given uintptr @@ -720,7 +740,7 @@ func (ce *callEngine) CallWithStack(ctx context.Context, stack []uint64) error { func (ce *callEngine) call(ctx context.Context, params, results []uint64) (_ []uint64, err error) { m := ce.initialFn.moduleInstance - if ce.ensureTermination { + if ce.module.ensureTermination { select { case <-ctx.Done(): // If the provided context is already done, close the call context @@ -741,12 +761,14 @@ func (ce *callEngine) call(ctx context.Context, params, results []uint64) (_ []u // If the module closed during the call, and the call didn't err for another reason, set an ExitError. err = m.FailIfClosed() } + // Ensure that the compiled module will never be GC'd before this method returns. + runtime.KeepAlive(ce.module) }() ft := ce.initialFn.funcType ce.initializeStack(ft, params) - if ce.ensureTermination { + if ce.module.ensureTermination { done := m.CloseModuleOnCanceledOrTimeout(ctx) defer done() } @@ -946,24 +968,24 @@ func newEngine(enabledFeatures api.CoreFeatures, fileCache filecache.Cache) *eng // // By declaring these values as `var`, slices created via `make([]..., var)` // will never be allocated on stack [1]. This means accessing these slices via -// raw pointers is safe: As of version 1.18, Go's garbage collector never relocates +// raw pointers is safe: As of version 1.21, Go's garbage collector never relocates // heap-allocated objects (aka no compaction of memory [2]). // // On Go upgrades, re-validate heap-allocation via `go build -gcflags='-m' ./internal/engine/compiler/...`. // -// [1] https://github.com/golang/go/blob/68ecdc2c70544c303aa923139a5f16caf107d955/src/cmd/compile/internal/escape/utils.go#L206-L208 -// [2] https://github.com/golang/go/blob/68ecdc2c70544c303aa923139a5f16caf107d955/src/runtime/mgc.go#L9 +// [1] https://github.com/golang/go/blob/c19c4c566c63818dfd059b352e52c4710eecf14d/src/cmd/compile/internal/escape/utils.go#L213-L215 +// [2] https://github.com/golang/go/blob/c19c4c566c63818dfd059b352e52c4710eecf14d/src/runtime/mgc.go#L9 // [3] https://mayurwadekar2.medium.com/escape-analysis-in-golang-ee40a1c064c1 // [4] https://medium.com/@yulang.chu/go-stack-or-heap-2-slices-which-keep-in-stack-have-limitation-of-size-b3f3adfd6190 var initialStackSize uint64 = 512 func (e *moduleEngine) newCallEngine(stackSize uint64, fn *function) *callEngine { ce := &callEngine{ - stack: make([]uint64, stackSize), - archContext: newArchContext(), - initialFn: fn, - moduleContext: moduleContext{fn: fn}, - ensureTermination: fn.parent.parent.ensureTermination, + stack: make([]uint64, stackSize), + archContext: newArchContext(), + initialFn: fn, + moduleContext: moduleContext{fn: fn}, + module: e.module, } stackHeader := (*reflect.SliceHeader)(unsafe.Pointer(&ce.stack)) diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go index e6b3b0e914..37e481bdb6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/engine_cache.go @@ -17,6 +17,7 @@ import ( func (e *engine) deleteCompiledModule(module *wasm.Module) { e.mux.Lock() defer e.mux.Unlock() + delete(e.codes, module.ID) // Note: we do not call e.Cache.Delete, as the lifetime of @@ -158,14 +159,18 @@ func deserializeCompiledModule(wazeroVersion string, reader io.ReadCloser, modul ensureTermination := header[cachedVersionEnd] != 0 functionsNum := binary.LittleEndian.Uint32(header[len(header)-4:]) - cm = &compiledModule{functions: make([]compiledFunction, functionsNum), ensureTermination: ensureTermination} + cm = &compiledModule{ + compiledCode: new(compiledCode), + functions: make([]compiledFunction, functionsNum), + ensureTermination: ensureTermination, + } imported := module.ImportFunctionCount var eightBytes [8]byte for i := uint32(0); i < functionsNum; i++ { f := &cm.functions[i] - f.parent = cm + f.parent = cm.compiledCode // Read the stack pointer ceil. if f.stackPointerCeil, err = readUint64(reader, &eightBytes); err != nil { diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go index 2555ae3c6e..7de2b33189 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/compiler/impl_amd64.go @@ -1088,7 +1088,7 @@ func (c *amd64Compiler) compileAdd(o *wazeroir.UnionOperation) error { return err } - x1 := c.locationStack.peek() // Note this is peek, pop! + x1 := c.locationStack.peek() // Note this is peek! if err := c.compileEnsureOnRegister(x1); err != nil { return err } @@ -1125,7 +1125,7 @@ func (c *amd64Compiler) compileSub(o *wazeroir.UnionOperation) error { return err } - x1 := c.locationStack.peek() // Note this is peek, pop! + x1 := c.locationStack.peek() // Note this is peek! if err := c.compileEnsureOnRegister(x1); err != nil { return err } @@ -3499,7 +3499,7 @@ func (c *amd64Compiler) compileStoreImpl(offsetConst uint32, inst asm.Instructio reg, err := c.compileMemoryAccessCeilSetup(offsetConst, targetSizeInBytes) if err != nil { - return nil + return err } c.assembler.CompileRegisterToMemoryWithIndex( diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go b/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go index ad3e7f7603..8f0db3c75f 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/interpreter/interpreter.go @@ -442,6 +442,12 @@ func (e *moduleEngine) ResolveImportedFunction(index, indexInImportedModule wasm e.functions[index] = imported.functions[indexInImportedModule] } +// ResolveImportedMemory implements wasm.ModuleEngine. +func (e *moduleEngine) ResolveImportedMemory(wasm.ModuleEngine) {} + +// DoneInstantiation implements wasm.ModuleEngine. +func (e *moduleEngine) DoneInstantiation() {} + // FunctionInstanceReference implements the same method as documented on wasm.ModuleEngine. func (e *moduleEngine) FunctionInstanceReference(funcIndex wasm.Index) wasm.Reference { return uintptr(unsafe.Pointer(&e.functions[funcIndex])) @@ -456,25 +462,20 @@ func (e *moduleEngine) NewFunction(index wasm.Index) (ce api.Function) { } // LookupFunction implements the same method as documented on wasm.ModuleEngine. -func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (f api.Function, err error) { +func (e *moduleEngine) LookupFunction(t *wasm.TableInstance, typeId wasm.FunctionTypeID, tableOffset wasm.Index) (*wasm.ModuleInstance, wasm.Index) { if tableOffset >= uint32(len(t.References)) { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } rawPtr := t.References[tableOffset] if rawPtr == 0 { - err = wasmruntime.ErrRuntimeInvalidTableAccess - return + panic(wasmruntime.ErrRuntimeInvalidTableAccess) } tf := functionFromUintptr(rawPtr) if tf.typeID != typeId { - err = wasmruntime.ErrRuntimeIndirectCallTypeMismatch - return + panic(wasmruntime.ErrRuntimeIndirectCallTypeMismatch) } - - f = e.newCallEngine(tf) - return + return tf.moduleInstance, tf.parent.index } // Definition implements the same method as documented on api.Function. @@ -4113,7 +4114,6 @@ func (ce *callEngine) callNativeFuncWithListener(ctx context.Context, m *wasm.Mo // popMemoryOffset takes a memory offset off the stack for use in load and store instructions. // As the top of stack value is 64-bit, this ensures it is in range before returning it. func (ce *callEngine) popMemoryOffset(op *wazeroir.UnionOperation) uint32 { - // TODO: Document what 'us' is and why we expect to look at value 1. offset := op.U2 + ce.popValue() if offset > math.MaxUint32 { panic(wasmruntime.ErrRuntimeOutOfBoundsMemoryAccess) diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go index f40d4155a8..0640b22712 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/file.go @@ -1,77 +1,17 @@ package fsapi -import ( - "syscall" - "time" +import experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" -) - -// File is a writeable fs.File bridge backed by syscall functions needed for ABI -// including WASI and runtime.GOOS=js. -// -// Implementations should embed UnimplementedFile for forward compatability. Any -// unsupported method or parameter should return ENOSYS. -// -// # Errors -// -// All methods that can return an error return a Errno, which is zero -// on success. -// -// Restricting to Errno matches current WebAssembly host functions, -// which are constrained to well-known error codes. For example, `GOOS=js` maps -// hard coded values and panics otherwise. More commonly, WASI maps syscall -// errors to u32 numeric values. +// File includes methods not yet ready to document for end users, notably +// non-blocking functionality. // -// # Notes -// -// - You must call Close to avoid file resource conflicts. For example, -// Windows cannot delete the underlying directory while a handle to it -// remains open. -// - A writable filesystem abstraction is not yet implemented as of Go 1.20. -// See https://github.com/golang/go/issues/45757 +// Particularly, Poll is subject to debate. For example, whether a user should +// be able to choose how to implement timeout or not. Currently, this interface +// allows the user to choose to sleep or use native polling, and which choice +// they make impacts thread behavior as summarized here: +// https://github.com/tetratelabs/wazero/pull/1606#issuecomment-1665475516 type File interface { - // Dev returns the device ID (Stat_t.Dev) of this file, zero if unknown or - // an error retrieving it. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. Zero should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - // - This combined with Ino can implement os.SameFile. - Dev() (uint64, experimentalsys.Errno) - - // Ino returns the serial number (Stat_t.Ino) of this file, zero if unknown - // or an error retrieving it. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. Zero should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - // - This combined with Dev can implement os.SameFile. - Ino() (sys.Inode, experimentalsys.Errno) - - // IsDir returns true if this file is a directory or an error there was an - // error retrieving this information. - // - // # Errors - // - // Possible errors are those from Stat, except ENOSYS should not - // be returned. false should be returned if there is no implementation. - // - // # Notes - // - // - Implementations should cache this result. - IsDir() (bool, experimentalsys.Errno) + experimentalsys.File // IsNonblock returns true if the file was opened with O_NONBLOCK, or // SetNonblock was successfully enabled on this file. @@ -96,272 +36,34 @@ type File interface { // POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fcntl.html SetNonblock(enable bool) experimentalsys.Errno - // IsAppend returns true if the file was opened with fsapi.O_APPEND, or - // SetAppend was successfully enabled on this file. - // - // # Notes - // - // - This might not match the underlying state of the file descriptor if - // the file was not opened via OpenFile. - IsAppend() bool - - // SetAppend toggles the append mode (fsapi.O_APPEND) of this file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - There is no `O_APPEND` for `fcntl` in POSIX, so implementations may - // have to re-open the underlying file to apply this. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html - SetAppend(enable bool) experimentalsys.Errno - - // Stat is similar to syscall.Fstat. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fstat and `fstatat` with `AT_FDCWD` in POSIX. - // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/stat.html - // - A fs.FileInfo backed implementation sets atim, mtim and ctim to the - // same value. - // - Windows allows you to stat a closed directory. - Stat() (sys.Stat_t, experimentalsys.Errno) - - // Read attempts to read all bytes in the file into `buf`, and returns the - // count read even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.Reader and `read` in POSIX, preferring semantics of - // io.Reader. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/read.html - // - Unlike io.Reader, there is no io.EOF returned on end-of-file. To - // read the file completely, the caller must repeat until `n` is zero. - Read(buf []byte) (n int, errno experimentalsys.Errno) - - // Pread attempts to read all bytes in the file into `p`, starting at the - // offset `off`, and returns the count read even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EINVAL: the offset was negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.ReaderAt and `pread` in POSIX, preferring semantics - // of io.ReaderAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pread.html - // - Unlike io.ReaderAt, there is no io.EOF returned on end-of-file. To - // read the file completely, the caller must repeat until `n` is zero. - Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) - - // Seek attempts to set the next offset for Read or Write and returns the - // resulting absolute offset or an error. + // Poll returns if the file has data ready to be read or written. // // # Parameters // - // The `offset` parameters is interpreted in terms of `whence`: - // - io.SeekStart: relative to the start of the file, e.g. offset=0 sets - // the next Read or Write to the beginning of the file. - // - io.SeekCurrent: relative to the current offset, e.g. offset=16 sets - // the next Read or Write 16 bytes past the prior. - // - io.SeekEnd: relative to the end of the file, e.g. offset=-1 sets the - // next Read or Write to the last byte in the file. - // - // # Behavior when a directory - // - // The only supported use case for a directory is seeking to `offset` zero - // (`whence` = io.SeekStart). This should have the same behavior as - // os.File, which resets any internal state used by Readdir. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not readable. - // - EINVAL: the offset was negative. - // - // # Notes - // - // - This is like io.Seeker and `fseek` in POSIX, preferring semantics - // of io.Seeker. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/fseek.html - Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) - - // PollRead returns if the file has data ready to be read or an error. + // The `flag` parameter determines which event to await, such as POLLIN, + // POLLOUT, or a combination like `POLLIN|POLLOUT`. // - // # Parameters + // The `timeoutMillis` parameter is how long to block for an event, or + // interrupted, in milliseconds. There are two special values: + // - zero returns immediately + // - any negative value blocks any amount of time // - // The `timeout` parameter when nil blocks up to forever. + // # Results // - // # Errors + // `ready` means there was data ready to read or written. False can mean no + // event was ready or `errno` is not zero. // - // A zero Errno is success. The below are expected otherwise: + // A zero `errno` is success. The below are expected otherwise: // - ENOSYS: the implementation does not support this function. + // - ENOTSUP: the implementation does not the flag combination. + // - EINTR: the call was interrupted prior to an event. // // # Notes // // - This is like `poll` in POSIX, for a single file. // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/poll.html // - No-op files, such as those which read from /dev/null, should return - // immediately true to avoid hangs (because data will never become - // available). - PollRead(timeout *time.Duration) (ready bool, errno experimentalsys.Errno) - - // Readdir reads the contents of the directory associated with file and - // returns a slice of up to n Dirent values in an arbitrary order. This is - // a stateful function, so subsequent calls return any next values. - // - // If n > 0, Readdir returns at most n entries or an error. - // If n <= 0, Readdir returns all remaining entries or an error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file was closed or not a directory. - // - ENOENT: the directory could not be read (e.g. deleted). - // - // # Notes - // - // - This is like `Readdir` on os.File, but unlike `readdir` in POSIX. - // See https://pubs.opengroup.org/onlinepubs/9699919799/functions/readdir.html - // - Unlike os.File, there is no io.EOF returned on end-of-directory. To - // read the directory completely, the caller must repeat until the - // count read (`len(dirents)`) is less than `n`. - // - See /RATIONALE.md for design notes. - Readdir(n int) (dirents []Dirent, errno experimentalsys.Errno) - - // Write attempts to write all bytes in `p` to the file, and returns the - // count written even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file was closed, not writeable, or a directory. - // - // # Notes - // - // - This is like io.Writer and `write` in POSIX, preferring semantics of - // io.Writer. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html - Write(buf []byte) (n int, errno experimentalsys.Errno) - - // Pwrite attempts to write all bytes in `p` to the file at the given - // offset `off`, and returns the count written even on error. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed or not writeable. - // - EINVAL: the offset was negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like io.WriterAt and `pwrite` in POSIX, preferring semantics - // of io.WriterAt. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/pwrite.html - Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) - - // Truncate truncates a file to a specified length. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - EINVAL: the `size` is negative. - // - EISDIR: the file was a directory. - // - // # Notes - // - // - This is like syscall.Ftruncate and `ftruncate` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftruncate.html - // - Windows does not error when calling Truncate on a closed file. - Truncate(size int64) experimentalsys.Errno - - // Sync synchronizes changes to the file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fsync and `fsync` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html - // - This returns with no error instead of ENOSYS when - // unimplemented. This prevents fake filesystems from erring. - // - Windows does not error when calling Sync on a closed file. - Sync() experimentalsys.Errno - - // Datasync synchronizes the data of a file. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.Fdatasync and `fdatasync` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html - // - This returns with no error instead of ENOSYS when - // unimplemented. This prevents fake filesystems from erring. - // - As this is commonly missing, some implementations dispatch to Sync. - Datasync() experimentalsys.Errno - - // Utimens set file access and modification times of this file, at - // nanosecond precision. - // - // # Parameters - // - // The `times` parameter includes the access and modification timestamps to - // assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT may be - // specified instead of real timestamps. A nil `times` parameter behaves the - // same as if both were set to UTIME_NOW. - // - // # Errors - // - // A zero Errno is success. The below are expected otherwise: - // - ENOSYS: the implementation does not support this function. - // - EBADF: the file or directory was closed. - // - // # Notes - // - // - This is like syscall.UtimesNano and `futimens` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html - // - Windows requires files to be open with fsapi.O_RDWR, which means you - // cannot use this to update timestamps on a directory (EPERM). - Utimens(times *[2]syscall.Timespec) experimentalsys.Errno - - // Close closes the underlying file. - // - // A zero Errno is returned if unimplemented or success. - // - // # Notes - // - // - This is like syscall.Close and `close` in POSIX. See - // https://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html - Close() experimentalsys.Errno + // immediately true, as data will never become available. + // - See /RATIONALE.md for detailed notes including impact of blocking. + Poll(flag Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) } diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go new file mode 100644 index 0000000000..25f7c5711b --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/poll.go @@ -0,0 +1,20 @@ +package fsapi + +// Pflag are bit flags used for File.Poll. Values, including zero, should not +// be interpreted numerically. Instead, use by constants prefixed with 'POLL'. +// +// # Notes +// +// - This is like `pollfd.events` flags for `poll` in POSIX. See +// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/poll.h.html +type Pflag uint32 + +// Only define bitflags we support and are needed by `poll_oneoff` in wasip1 +// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#eventrwflags +const ( + // POLLIN is a read event. + POLLIN Pflag = 1 << iota + + // POLLOUT is a write event. + POLLOUT +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go b/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go index b31cbd13f5..99d9c2db34 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go +++ b/vendor/github.com/tetratelabs/wazero/internal/fsapi/unimplemented.go @@ -1,193 +1,27 @@ package fsapi -import ( - "io/fs" - "syscall" - "time" +import experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" -) - -// UnimplementedFS is an FS that returns ENOSYS for all functions, -// This should be embedded to have forward compatible implementations. -type UnimplementedFS struct{} - -// String implements fmt.Stringer -func (UnimplementedFS) String() string { - return "Unimplemented:/" -} - -// Open implements the same method as documented on fs.FS -func (UnimplementedFS) Open(name string) (fs.File, error) { - return nil, &fs.PathError{Op: "open", Path: name, Err: experimentalsys.ENOSYS} -} - -// OpenFile implements FS.OpenFile -func (UnimplementedFS) OpenFile(path string, flag Oflag, perm fs.FileMode) (File, experimentalsys.Errno) { - return nil, experimentalsys.ENOSYS -} - -// Lstat implements FS.Lstat -func (UnimplementedFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Stat implements FS.Stat -func (UnimplementedFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Readlink implements FS.Readlink -func (UnimplementedFS) Readlink(path string) (string, experimentalsys.Errno) { - return "", experimentalsys.ENOSYS -} - -// Mkdir implements FS.Mkdir -func (UnimplementedFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Chmod implements FS.Chmod -func (UnimplementedFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Rename implements FS.Rename -func (UnimplementedFS) Rename(from, to string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Rmdir implements FS.Rmdir -func (UnimplementedFS) Rmdir(path string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Link implements FS.Link -func (UnimplementedFS) Link(_, _ string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Symlink implements FS.Symlink -func (UnimplementedFS) Symlink(_, _ string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Unlink implements FS.Unlink -func (UnimplementedFS) Unlink(path string) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Utimens implements FS.Utimens -func (UnimplementedFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Truncate implements FS.Truncate -func (UnimplementedFS) Truncate(string, int64) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// UnimplementedFile is a File that returns ENOSYS for all functions, -// except where no-op are otherwise documented. -// -// This should be embedded to have forward compatible implementations. -type UnimplementedFile struct{} - -// Dev implements File.Dev -func (UnimplementedFile) Dev() (uint64, experimentalsys.Errno) { - return 0, 0 -} - -// Ino implements File.Ino -func (UnimplementedFile) Ino() (sys.Inode, experimentalsys.Errno) { - return 0, 0 -} - -// IsDir implements File.IsDir -func (UnimplementedFile) IsDir() (bool, experimentalsys.Errno) { - return false, 0 +func Adapt(f experimentalsys.File) File { + if f, ok := f.(File); ok { + return f + } + return unimplementedFile{f} } -// IsAppend implements File.IsAppend -func (UnimplementedFile) IsAppend() bool { - return false -} - -// SetAppend implements File.SetAppend -func (UnimplementedFile) SetAppend(bool) experimentalsys.Errno { - return experimentalsys.ENOSYS -} +type unimplementedFile struct{ experimentalsys.File } // IsNonblock implements File.IsNonblock -func (UnimplementedFile) IsNonblock() bool { +func (unimplementedFile) IsNonblock() bool { return false } // SetNonblock implements File.SetNonblock -func (UnimplementedFile) SetNonblock(bool) experimentalsys.Errno { +func (unimplementedFile) SetNonblock(bool) experimentalsys.Errno { return experimentalsys.ENOSYS } -// Stat implements File.Stat -func (UnimplementedFile) Stat() (sys.Stat_t, experimentalsys.Errno) { - return sys.Stat_t{}, experimentalsys.ENOSYS -} - -// Read implements File.Read -func (UnimplementedFile) Read([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Pread implements File.Pread -func (UnimplementedFile) Pread([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Seek implements File.Seek -func (UnimplementedFile) Seek(int64, int) (int64, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Readdir implements File.Readdir -func (UnimplementedFile) Readdir(int) (dirents []Dirent, errno experimentalsys.Errno) { - return nil, experimentalsys.ENOSYS -} - -// PollRead implements File.PollRead -func (UnimplementedFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { +// Poll implements File.Poll +func (unimplementedFile) Poll(Pflag, int32) (ready bool, errno experimentalsys.Errno) { return false, experimentalsys.ENOSYS } - -// Write implements File.Write -func (UnimplementedFile) Write([]byte) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Pwrite implements File.Pwrite -func (UnimplementedFile) Pwrite([]byte, int64) (int, experimentalsys.Errno) { - return 0, experimentalsys.ENOSYS -} - -// Truncate implements File.Truncate -func (UnimplementedFile) Truncate(int64) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Sync implements File.Sync -func (UnimplementedFile) Sync() experimentalsys.Errno { - return 0 // not ENOSYS -} - -// Datasync implements File.Datasync -func (UnimplementedFile) Datasync() experimentalsys.Errno { - return 0 // not ENOSYS -} - -// Utimens implements File.Utimens -func (UnimplementedFile) Utimens(*[2]syscall.Timespec) experimentalsys.Errno { - return experimentalsys.ENOSYS -} - -// Close implements File.Close -func (UnimplementedFile) Close() (errno experimentalsys.Errno) { return } diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go deleted file mode 100644 index 1017c805ac..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset.go +++ /dev/null @@ -1,25 +0,0 @@ -//go:build !windows - -package platform - -// Set adds the given fd to the set. -func (f *FdSet) Set(fd int) { - f.Bits[fd/nfdbits] |= (1 << (uintptr(fd) % nfdbits)) -} - -// Clear removes the given fd from the set. -func (f *FdSet) Clear(fd int) { - f.Bits[fd/nfdbits] &^= (1 << (uintptr(fd) % nfdbits)) -} - -// IsSet returns true when fd is in the set. -func (f *FdSet) IsSet(fd int) bool { - return f.Bits[fd/nfdbits]&(1<<(uintptr(fd)%nfdbits)) != 0 -} - -// Zero clears the set. -func (f *FdSet) Zero() { - for i := range f.Bits { - f.Bits[i] = 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go deleted file mode 100644 index da52339cbc..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_darwin.go +++ /dev/null @@ -1,8 +0,0 @@ -package platform - -import "syscall" - -const nfdbits = 0x20 - -// FdSet re-exports syscall.FdSet with utility methods. -type FdSet syscall.FdSet diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go deleted file mode 100644 index f392caf4c1..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_linux.go +++ /dev/null @@ -1,8 +0,0 @@ -package platform - -import "syscall" - -const nfdbits = 0x40 - -// FdSet re-exports syscall.FdSet with utility methods. -type FdSet syscall.FdSet diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go deleted file mode 100644 index ad9cf09109..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_unsupported.go +++ /dev/null @@ -1,10 +0,0 @@ -//go:build !darwin && !linux && !windows - -package platform - -const nfdbits = 0x40 - -// FdSet mocks syscall.FdSet on systems that do not support it. -type FdSet struct { - Bits [16]int64 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go b/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go deleted file mode 100644 index 60773ed54a..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/platform/fdset_windows.go +++ /dev/null @@ -1,239 +0,0 @@ -package platform - -import ( - "syscall" - "unsafe" -) - -var procGetNamedPipeInfo = kernel32.NewProc("GetNamedPipeInfo") - -// Maximum number of fds in a WinSockFdSet. -const _FD_SETSIZE = 64 - -// WinSockFdSet implements the FdSet representation that is used internally by WinSock. -// -// Note: this representation is quite different from the one used in most POSIX implementations -// where a bitfield is usually implemented; instead on Windows we have a simpler array+count pair. -// Notice that because it keeps a count of the inserted handles, the first argument of select -// in WinSock is actually ignored. -// -// The implementation of the Set, Clear, IsSet, Zero, methods follows exactly -// the real implementation found in WinSock2.h, e.g. see: -// https://github.com/microsoft/win32metadata/blob/ef7725c75c6b39adfdc13ba26fb1d89ac954449a/generation/WinSDK/RecompiledIdlHeaders/um/WinSock2.h#L124-L175 -type WinSockFdSet struct { - // count is the number of used slots used in the handles slice. - count uint64 - // handles is the array of handles. This is called "array" in the WinSock implementation - // and it has a fixed length of _FD_SETSIZE. - handles [_FD_SETSIZE]syscall.Handle -} - -// FdSet implements the same methods provided on other plaforms. -// -// Note: the implementation is very different from POSIX; Windows provides -// POSIX select only for sockets. We emulate a select for other APIs in the sysfs -// package, but we still want to use the "real" select in the case of sockets. -// So, we keep separate FdSets for sockets, pipes and regular files, so that we can -// handle them separately. For instance sockets can be used directly in winsock select. -type FdSet struct { - sockets WinSockFdSet - pipes WinSockFdSet - regular WinSockFdSet -} - -// SetAll overwrites all the fields in f with the fields in g. -func (f *FdSet) SetAll(g *FdSet) { - if f == nil { - return - } - f.sockets = g.sockets - f.pipes = g.pipes - f.regular = g.regular -} - -// Sockets returns a WinSockFdSet containing the handles in this FdSet that are sockets. -func (f *FdSet) Sockets() *WinSockFdSet { - if f == nil { - return nil - } - return &f.sockets -} - -// Regular returns a WinSockFdSet containing the handles in this FdSet that are regular files. -func (f *FdSet) Regular() *WinSockFdSet { - if f == nil { - return nil - } - return &f.regular -} - -// Pipes returns a WinSockFdSet containing the handles in this FdSet that are pipes. -func (f *FdSet) Pipes() *WinSockFdSet { - if f == nil { - return nil - } - return &f.pipes -} - -// getFdSetFor returns a pointer to the right fd set for the given fd. -// It checks the type for fd and returns the field for pipes, regular or sockets -// to simplify code. -// -// For instance, if fd is a socket and it must be set if f.pipes, instead -// of writing: -// -// if isSocket(fd) { -// f.sockets.Set(fd) -// } -// -// It is possible to write: -// -// f.getFdSetFor(fd).Set(fd) -func (f *FdSet) getFdSetFor(fd int) *WinSockFdSet { - h := syscall.Handle(fd) - t, err := syscall.GetFileType(h) - if err != nil { - return nil - } - switch t { - case syscall.FILE_TYPE_CHAR, syscall.FILE_TYPE_DISK: - return &f.regular - case syscall.FILE_TYPE_PIPE: - if isSocket(h) { - return &f.sockets - } else { - return &f.pipes - } - default: - return nil - } -} - -// Set adds the given fd to the set. -func (f *FdSet) Set(fd int) { - if s := f.getFdSetFor(fd); s != nil { - s.Set(fd) - } -} - -// Clear removes the given fd from the set. -func (f *FdSet) Clear(fd int) { - if s := f.getFdSetFor(fd); s != nil { - s.Clear(fd) - } -} - -// IsSet returns true when fd is in the set. -func (f *FdSet) IsSet(fd int) bool { - if s := f.getFdSetFor(fd); s != nil { - return s.IsSet(fd) - } - return false -} - -// Copy returns a copy of this FdSet. It returns nil, if the FdSet is nil. -func (f *FdSet) Copy() *FdSet { - if f == nil { - return nil - } - return &FdSet{ - sockets: f.sockets, - pipes: f.pipes, - regular: f.regular, - } -} - -// Zero clears the set. It returns 0 if the FdSet is nil. -func (f *FdSet) Count() int { - if f == nil { - return 0 - } - return f.sockets.Count() + f.regular.Count() + f.pipes.Count() -} - -// Zero clears the set. -func (f *FdSet) Zero() { - if f == nil { - return - } - f.sockets.Zero() - f.regular.Zero() - f.pipes.Zero() -} - -// Set adds the given fd to the set. -func (f *WinSockFdSet) Set(fd int) { - if f.count < _FD_SETSIZE { - f.handles[f.count] = syscall.Handle(fd) - f.count++ - } -} - -// Clear removes the given fd from the set. -func (f *WinSockFdSet) Clear(fd int) { - h := syscall.Handle(fd) - for i := uint64(0); i < f.count; i++ { - if f.handles[i] == h { - for ; i < f.count-1; i++ { - f.handles[i] = f.handles[i+1] - } - f.count-- - break - } - } -} - -// IsSet returns true when fd is in the set. -func (f *WinSockFdSet) IsSet(fd int) bool { - h := syscall.Handle(fd) - for i := uint64(0); i < f.count; i++ { - if f.handles[i] == h { - return true - } - } - return false -} - -// Zero clears the set. -func (f *WinSockFdSet) Zero() { - if f == nil { - return - } - f.handles = [64]syscall.Handle{} - f.count = 0 -} - -// Count returns the number of values that are set in the fd set. -func (f *WinSockFdSet) Count() int { - if f == nil { - return 0 - } - return int(f.count) -} - -// Copy returns a copy of the fd set or nil if it is nil. -func (f *WinSockFdSet) Copy() *WinSockFdSet { - if f == nil { - return nil - } - copy := *f - return © -} - -// Get returns the handle at the given index. -func (f *WinSockFdSet) Get(index int) syscall.Handle { - return f.handles[index] -} - -// isSocket returns true if the given file handle -// is a pipe. -func isSocket(fd syscall.Handle) bool { - r, _, errno := syscall.SyscallN( - procGetNamedPipeInfo.Addr(), - uintptr(fd), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil)), - uintptr(unsafe.Pointer(nil))) - return r == 0 || errno != 0 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go index c49d1fbb22..ca17aa39ee 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock.go @@ -5,25 +5,24 @@ import ( "net" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) // TCPSock is a pseudo-file representing a TCP socket. type TCPSock interface { - fsapi.File + sys.File Accept() (TCPConn, sys.Errno) } // TCPConn is a pseudo-file representing a TCP connection. type TCPConn interface { - fsapi.File + sys.File // Recvfrom only supports the flag sysfs.MSG_PEEK - // TODO: document this like fsapi.File with known sys.Errno + // TODO: document this like sys.File with known sys.Errno Recvfrom(p []byte, flags int) (n int, errno sys.Errno) - // TODO: document this like fsapi.File with known sys.Errno + // TODO: document this like sys.File with known sys.Errno Shutdown(how int) sys.Errno } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go new file mode 100644 index 0000000000..30cdb9f926 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_supported.go @@ -0,0 +1,11 @@ +//go:build !plan9 && !js + +package sock + +import "syscall" + +const ( + SHUT_RD = syscall.SHUT_RD + SHUT_RDWR = syscall.SHUT_RDWR + SHUT_WR = syscall.SHUT_WR +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go new file mode 100644 index 0000000000..76ec031efa --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sock/sock_unsupported.go @@ -0,0 +1,10 @@ +//go:build plan9 || js + +package sock + +// plan9/js doesn't declare these constants +const ( + SHUT_RD = 1 << iota + SHUT_WR + SHUT_RDWR = SHUT_RD | SHUT_WR +) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go b/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go index f85e2ff24e..332a952626 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/fs.go @@ -48,7 +48,7 @@ type FileEntry struct { IsPreopen bool // FS is the filesystem associated with the pre-open. - FS fsapi.FS + FS sys.FS // File is always non-nil. File fsapi.File @@ -91,7 +91,7 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { return f.direntCache, 0 } -// DirentCache is a caching abstraction of fsapi.File Readdir. +// DirentCache is a caching abstraction of sys.File Readdir. // // This is special-cased for "wasi_snapshot_preview1.fd_readdir", and may be // unneeded, or require changes, to support preview1 or preview2. @@ -99,7 +99,7 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { // described below, any may need to be re-read. This accepts any positions // in the cache, rather than track the position of the last dirent. // - dot entries ("." and "..") must be returned. See /RATIONALE.md for why. -// - An fsapi.Dirent Name is variable length, it could exceed memory size and +// - An sys.Dirent Name is variable length, it could exceed memory size and // need to be re-read. // - Multiple dirents may be returned. It is more efficient to read from the // underlying file in bulk vs one-at-a-time. @@ -110,17 +110,17 @@ func (f *FileEntry) DirentCache() (*DirentCache, sys.Errno) { // approach is sometimes called a sliding window. type DirentCache struct { // f is the underlying file - f fsapi.File + f sys.File // dotEntries are the "." and ".." entries added when the directory is // initialized. - dotEntries []fsapi.Dirent + dotEntries []sys.Dirent // dirents are the potentially unread directory entries. // // Internal detail: nil is different from zero length. Zero length is an // exhausted directory (eof). nil means the re-read. - dirents []fsapi.Dirent + dirents []sys.Dirent // countRead is the total count of dirents read since last rewind. countRead uint64 @@ -132,28 +132,28 @@ type DirentCache struct { } // synthesizeDotEntries generates a slice of the two elements "." and "..". -func synthesizeDotEntries(f *FileEntry) ([]fsapi.Dirent, sys.Errno) { +func synthesizeDotEntries(f *FileEntry) ([]sys.Dirent, sys.Errno) { dotIno, errno := f.File.Ino() if errno != 0 { return nil, errno } - result := [2]fsapi.Dirent{} - result[0] = fsapi.Dirent{Name: ".", Ino: dotIno, Type: fs.ModeDir} + result := [2]sys.Dirent{} + result[0] = sys.Dirent{Name: ".", Ino: dotIno, Type: fs.ModeDir} // See /RATIONALE.md for why we don't attempt to get an inode for ".." and // why in wasi-libc this won't fan-out either. - result[1] = fsapi.Dirent{Name: "..", Ino: 0, Type: fs.ModeDir} + result[1] = sys.Dirent{Name: "..", Ino: 0, Type: fs.ModeDir} return result[:], 0 } // exhaustedDirents avoids allocating empty slices. -var exhaustedDirents = [0]fsapi.Dirent{} +var exhaustedDirents = [0]sys.Dirent{} -// Read is similar to and returns the same errors as `Readdir` on fsapi.File. +// Read is similar to and returns the same errors as `Readdir` on sys.File. // The main difference is this caches entries returned, resulting in multiple // valid positions to read from. // // When zero, `pos` means rewind to the beginning of this directory. This -// implies a rewind (Seek to zero on the underlying fsapi.File), unless the +// implies a rewind (Seek to zero on the underlying sys.File), unless the // initial entries are still cached. // // When non-zero, `pos` is the zero based index of all dirents returned since @@ -162,9 +162,9 @@ var exhaustedDirents = [0]fsapi.Dirent{} // described on DirentCache documentation. // // Up to `n` entries are cached and returned. When `n` exceeds the cache, the -// difference are read from the underlying fsapi.File via `Readdir`. EOF is +// difference are read from the underlying sys.File via `Readdir`. EOF is // when `len(dirents)` returned are less than `n`. -func (d *DirentCache) Read(pos uint64, n uint32) (dirents []fsapi.Dirent, errno sys.Errno) { +func (d *DirentCache) Read(pos uint64, n uint32) (dirents []sys.Dirent, errno sys.Errno) { switch { case pos > d.countRead: // farther than read or negative coerced to uint64. return nil, sys.ENOENT @@ -239,7 +239,7 @@ func (d *DirentCache) Read(pos uint64, n uint32) (dirents []fsapi.Dirent, errno } // cachedDirents returns up to `n` dirents from the cache. -func (d *DirentCache) cachedDirents(n uint32) []fsapi.Dirent { +func (d *DirentCache) cachedDirents(n uint32) []sys.Dirent { direntCount := uint32(len(d.dirents)) switch { case direntCount == 0: @@ -252,7 +252,7 @@ func (d *DirentCache) cachedDirents(n uint32) []fsapi.Dirent { type FSContext struct { // rootFS is the root ("/") mount. - rootFS fsapi.FS + rootFS sys.FS // openedFiles is a map of file descriptor numbers (>=FdPreopen) to open files // (or directories) and defaults to empty. @@ -269,9 +269,9 @@ type FileTable = descriptor.Table[int32, *FileEntry] // // TODO: This is only used by GOOS=js and tests: Remove when we remove GOOS=js // (after Go 1.22 is released). -func (c *FSContext) RootFS() fsapi.FS { +func (c *FSContext) RootFS() sys.FS { if rootFS := c.rootFS; rootFS == nil { - return fsapi.UnimplementedFS{} + return sys.UnimplementedFS{} } else { return rootFS } @@ -284,11 +284,11 @@ func (c *FSContext) LookupFile(fd int32) (*FileEntry, bool) { // OpenFile opens the file into the table and returns its file descriptor. // The result must be closed by CloseFile or Close. -func (c *FSContext) OpenFile(fs fsapi.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (int32, sys.Errno) { +func (c *FSContext) OpenFile(fs sys.FS, path string, flag sys.Oflag, perm fs.FileMode) (int32, sys.Errno) { if f, errno := fs.OpenFile(path, flag, perm); errno != 0 { return 0, errno } else { - fe := &FileEntry{FS: fs, File: f} + fe := &FileEntry{FS: fs, File: fsapi.Adapt(f)} if path == "/" || path == "." { fe.Name = "" } else { @@ -330,8 +330,8 @@ func (c *FSContext) Renumber(from, to int32) sys.Errno { return 0 } -// SockAccept accepts a socketapi.TCPConn into the file table and returns -// its file descriptor. +// SockAccept accepts a sock.TCPConn into the file table and returns its file +// descriptor. func (c *FSContext) SockAccept(sockFD int32, nonblock bool) (int32, sys.Errno) { var sock socketapi.TCPSock if e, ok := c.LookupFile(sockFD); !ok || !e.IsPreopen { @@ -340,18 +340,20 @@ func (c *FSContext) SockAccept(sockFD int32, nonblock bool) (int32, sys.Errno) { return 0, sys.EBADF // Not a sock } - var conn socketapi.TCPConn - var errno sys.Errno - if conn, errno = sock.Accept(); errno != 0 { + conn, errno := sock.Accept() + if errno != 0 { return 0, errno - } else if nonblock { - if errno = conn.SetNonblock(true); errno != 0 { + } + + fe := &FileEntry{File: fsapi.Adapt(conn)} + + if nonblock { + if errno = fe.File.SetNonblock(true); errno != 0 { _ = conn.Close() return 0, errno } } - fe := &FileEntry{File: conn} if newFD, ok := c.openedFiles.Insert(fe); !ok { return 0, sys.EBADF } else { @@ -391,7 +393,7 @@ func (c *FSContext) Close() (err error) { func (c *Context) InitFSContext( stdin io.Reader, stdout, stderr io.Writer, - fs []fsapi.FS, guestPaths []string, + fs []sys.FS, guestPaths []string, tcpListeners []*net.TCPListener, ) (err error) { inFile, err := stdinFileEntry(stdin) @@ -427,7 +429,7 @@ func (c *Context) InitFSContext( } for _, tl := range tcpListeners { - c.fsc.openedFiles.Insert(&FileEntry{IsPreopen: true, File: sysfs.NewTCPListenerFile(tl)}) + c.fsc.openedFiles.Insert(&FileEntry{IsPreopen: true, File: fsapi.Adapt(sysfs.NewTCPListenerFile(tl))}) } return nil } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go b/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go index 011a5a4dc5..fe233d29ea 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/lazy.go @@ -1,126 +1,124 @@ package sys import ( - "syscall" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/sys" ) -// compile-time check to ensure lazyDir implements fsapi.File. -var _ fsapi.File = (*lazyDir)(nil) +// compile-time check to ensure lazyDir implements sys.File. +var _ experimentalsys.File = (*lazyDir)(nil) type lazyDir struct { - fsapi.DirFile + experimentalsys.DirFile - fs fsapi.FS - f fsapi.File + fs experimentalsys.FS + f experimentalsys.File } -// Dev implements the same method as documented on fsapi.File -func (r *lazyDir) Dev() (uint64, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Dev implements the same method as documented on sys.File +func (d *lazyDir) Dev() (uint64, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Dev() } } -// Ino implements the same method as documented on fsapi.File -func (r *lazyDir) Ino() (sys.Inode, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Ino implements the same method as documented on sys.File +func (d *lazyDir) Ino() (sys.Inode, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Ino() } } -// IsDir implements the same method as documented on fsapi.File -func (r *lazyDir) IsDir() (bool, experimentalsys.Errno) { +// IsDir implements the same method as documented on sys.File +func (d *lazyDir) IsDir() (bool, experimentalsys.Errno) { // Note: we don't return a constant because we don't know if this is really // backed by a dir, until the first call. - if f, ok := r.file(); !ok { + if f, ok := d.file(); !ok { return false, experimentalsys.EBADF } else { return f.IsDir() } } -// IsAppend implements the same method as documented on fsapi.File -func (r *lazyDir) IsAppend() bool { +// IsAppend implements the same method as documented on sys.File +func (d *lazyDir) IsAppend() bool { return false } -// SetAppend implements the same method as documented on fsapi.File -func (r *lazyDir) SetAppend(bool) experimentalsys.Errno { +// SetAppend implements the same method as documented on sys.File +func (d *lazyDir) SetAppend(bool) experimentalsys.Errno { return experimentalsys.EISDIR } -// Seek implements the same method as documented on fsapi.File -func (r *lazyDir) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Seek implements the same method as documented on sys.File +func (d *lazyDir) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { + if f, ok := d.file(); !ok { return 0, experimentalsys.EBADF } else { return f.Seek(offset, whence) } } -// Stat implements the same method as documented on fsapi.File -func (r *lazyDir) Stat() (sys.Stat_t, experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Stat implements the same method as documented on sys.File +func (d *lazyDir) Stat() (sys.Stat_t, experimentalsys.Errno) { + if f, ok := d.file(); !ok { return sys.Stat_t{}, experimentalsys.EBADF } else { return f.Stat() } } -// Readdir implements the same method as documented on fsapi.File -func (r *lazyDir) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { - if f, ok := r.file(); !ok { +// Readdir implements the same method as documented on sys.File +func (d *lazyDir) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { + if f, ok := d.file(); !ok { return nil, experimentalsys.EBADF } else { return f.Readdir(n) } } -// Sync implements the same method as documented on fsapi.File -func (r *lazyDir) Sync() experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Sync implements the same method as documented on sys.File +func (d *lazyDir) Sync() experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { return f.Sync() } } -// Datasync implements the same method as documented on fsapi.File -func (r *lazyDir) Datasync() experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Datasync implements the same method as documented on sys.File +func (d *lazyDir) Datasync() experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { return f.Datasync() } } -// Utimens implements the same method as documented on fsapi.File -func (r *lazyDir) Utimens(times *[2]syscall.Timespec) experimentalsys.Errno { - if f, ok := r.file(); !ok { +// Utimens implements the same method as documented on sys.File +func (d *lazyDir) Utimens(atim, mtim int64) experimentalsys.Errno { + if f, ok := d.file(); !ok { return experimentalsys.EBADF } else { - return f.Utimens(times) + return f.Utimens(atim, mtim) } } // file returns the underlying file or false if it doesn't exist. -func (r *lazyDir) file() (fsapi.File, bool) { - if f := r.f; r.f != nil { +func (d *lazyDir) file() (experimentalsys.File, bool) { + if f := d.f; d.f != nil { return f, true } var errno experimentalsys.Errno - r.f, errno = r.fs.OpenFile(".", fsapi.O_RDONLY, 0) + d.f, errno = d.fs.OpenFile(".", experimentalsys.O_RDONLY, 0) switch errno { case 0: - return r.f, true + return d.f, true case experimentalsys.ENOENT: return nil, false default: @@ -129,10 +127,25 @@ func (r *lazyDir) file() (fsapi.File, bool) { } // Close implements fs.File -func (r *lazyDir) Close() experimentalsys.Errno { - f := r.f +func (d *lazyDir) Close() experimentalsys.Errno { + f := d.f if f == nil { return 0 // never opened } return f.Close() } + +// IsNonblock implements the same method as documented on fsapi.File +func (d *lazyDir) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (d *lazyDir) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.EISDIR +} + +// Poll implements the same method as documented on fsapi.File +func (d *lazyDir) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go b/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go index b153e32c19..32c33661eb 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/stdio.go @@ -3,7 +3,6 @@ package sys import ( "io" "os" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -19,7 +18,7 @@ type StdinFile struct { io.Reader } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *StdinFile) Read(buf []byte) (int, experimentalsys.Errno) { n, err := f.Reader.Read(buf) return n, experimentalsys.UnwrapOSError(err) @@ -31,7 +30,7 @@ type writerFile struct { w io.Writer } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *writerFile) Write(buf []byte) (int, experimentalsys.Errno) { n, err := f.w.Write(buf) return n, experimentalsys.UnwrapOSError(err) @@ -44,13 +43,16 @@ type noopStdinFile struct { noopStdioFile } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (noopStdinFile) Read([]byte) (int, experimentalsys.Errno) { return 0, 0 // Always EOF } -// PollRead implements the same method as documented on fsapi.File -func (noopStdinFile) PollRead(*time.Duration) (ready bool, errno experimentalsys.Errno) { +// Poll implements the same method as documented on fsapi.File +func (noopStdinFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) { + if flag != fsapi.POLLIN { + return false, experimentalsys.ENOTSUP + } return true, 0 // always ready to read nothing } @@ -60,28 +62,43 @@ type noopStdoutFile struct { noopStdioFile } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (noopStdoutFile) Write(buf []byte) (int, experimentalsys.Errno) { return len(buf), 0 // same as io.Discard } type noopStdioFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (noopStdioFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return sys.Stat_t{Mode: modeDevice, Nlink: 1}, 0 } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (noopStdioFile) IsDir() (bool, experimentalsys.Errno) { return false, 0 } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (noopStdioFile) Close() (errno experimentalsys.Errno) { return } +// IsNonblock implements the same method as documented on fsapi.File +func (noopStdioFile) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (noopStdioFile) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Poll implements the same method as documented on fsapi.File +func (noopStdioFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} + func stdinFileEntry(r io.Reader) (*FileEntry, error) { if r == nil { return &FileEntry{Name: "stdin", IsPreopen: true, File: &noopStdinFile{}}, nil diff --git a/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go b/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go index aedd7c7035..12279ee495 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sys/sys.go @@ -7,7 +7,7 @@ import ( "net" "time" - "github.com/tetratelabs/wazero/internal/fsapi" + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) @@ -110,11 +110,11 @@ func (c *Context) RandSource() io.Reader { } // DefaultContext returns Context with no values set except a possible nil -// fsapi.FS. +// sys.FS. // // Note: This is only used for testing. -func DefaultContext(fs fsapi.FS) *Context { - if sysCtx, err := NewContext(0, nil, nil, nil, nil, nil, nil, nil, 0, nil, 0, nil, nil, []fsapi.FS{fs}, []string{""}, nil); err != nil { +func DefaultContext(fs experimentalsys.FS) *Context { + if sysCtx, err := NewContext(0, nil, nil, nil, nil, nil, nil, nil, 0, nil, 0, nil, nil, []experimentalsys.FS{fs}, []string{""}, nil); err != nil { panic(fmt.Errorf("BUG: DefaultContext should never error: %w", err)) } else { return sysCtx @@ -135,7 +135,7 @@ func NewContext( nanotimeResolution sys.ClockResolution, nanosleep sys.Nanosleep, osyield sys.Osyield, - fs []fsapi.FS, guestPaths []string, + fs []experimentalsys.FS, guestPaths []string, tcpListeners []*net.TCPListener, ) (sysCtx *Context, err error) { sysCtx = &Context{args: args, environ: environ} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go index 75d70888c8..51a9a54804 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/adapter.go @@ -6,45 +6,39 @@ import ( "path" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/sys" ) -// Adapt adapts the input to fsapi.FS unless it is already one. Use NewDirFS instead -// of os.DirFS as it handles interop issues such as windows support. -// -// Note: This performs no flag verification on OpenFile. fsapi.FS cannot read -// flags as there is no parameter to pass them through with. Moreover, fsapi.FS -// documentation does not require the file to be present. In summary, we can't -// enforce flag behavior. -func Adapt(fs fs.FS) fsapi.FS { - if fs == nil { - return fsapi.UnimplementedFS{} - } - if sys, ok := fs.(fsapi.FS); ok { - return sys - } - return &adapter{fs: fs} +type AdaptFS struct { + FS fs.FS } -type adapter struct { - fsapi.UnimplementedFS - fs fs.FS +// String implements fmt.Stringer +func (a *AdaptFS) String() string { + return fmt.Sprintf("%v", a.FS) } -// String implements fmt.Stringer -func (a *adapter) String() string { - return fmt.Sprintf("%v", a.fs) +// OpenFile implements the same method as documented on sys.FS +func (a *AdaptFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(a.FS, cleanPath(path), flag, perm) } -// OpenFile implements the same method as documented on fsapi.FS -func (a *adapter) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(a.fs, cleanPath(path), flag, perm) +// Lstat implements the same method as documented on sys.FS +func (a *AdaptFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { + // At this time, we make the assumption sys.FS instances do not support + // symbolic links, therefore Lstat is the same as Stat. This is obviously + // not true, but until FS.FS has a solid story for how to handle symlinks, + // we are better off not making a decision that would be difficult to + // revert later on. + // + // For further discussions on the topic, see: + // https://github.com/golang/go/issues/49580 + return a.Stat(path) } -// Stat implements the same method as documented on fsapi.FS -func (a *adapter) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { - f, errno := a.OpenFile(path, fsapi.O_RDONLY, 0) +// Stat implements the same method as documented on sys.FS +func (a *AdaptFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { + f, errno := a.OpenFile(path, experimentalsys.O_RDONLY, 0) if errno != 0 { return sys.Stat_t{}, errno } @@ -52,17 +46,49 @@ func (a *adapter) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { return f.Stat() } -// Lstat implements the same method as documented on fsapi.FS -func (a *adapter) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { - // At this time, we make the assumption that fsapi.FS instances do not support - // symbolic links, therefore Lstat is the same as Stat. This is obviously - // not true but until fsapi.FS has a solid story for how to handle symlinks we - // are better off not making a decision that would be difficult to revert - // later on. - // - // For further discussions on the topic, see: - // https://github.com/golang/go/issues/49580 - return a.Stat(path) +// Readlink implements the same method as documented on sys.FS +func (a *AdaptFS) Readlink(string) (string, experimentalsys.Errno) { + return "", experimentalsys.ENOSYS +} + +// Mkdir implements the same method as documented on sys.FS +func (a *AdaptFS) Mkdir(string, fs.FileMode) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Chmod implements the same method as documented on sys.FS +func (a *AdaptFS) Chmod(string, fs.FileMode) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Rename implements the same method as documented on sys.FS +func (a *AdaptFS) Rename(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Rmdir implements the same method as documented on sys.FS +func (a *AdaptFS) Rmdir(string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Link implements the same method as documented on sys.FS +func (a *AdaptFS) Link(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Symlink implements the same method as documented on sys.FS +func (a *AdaptFS) Symlink(string, string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Unlink implements the same method as documented on sys.FS +func (a *AdaptFS) Unlink(string) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Utimens implements the same method as documented on sys.FS +func (a *AdaptFS) Utimens(string, int64, int64) experimentalsys.Errno { + return experimentalsys.ENOSYS } func cleanPath(name string) string { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go index 5a217394b3..f9823287cf 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dir.go @@ -4,15 +4,14 @@ import ( "io" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -func adjustReaddirErr(f fsapi.File, isClosed bool, err error) sys.Errno { +func adjustReaddirErr(f sys.File, isClosed bool, err error) sys.Errno { if err == io.EOF { return 0 // e.g. Readdir on darwin returns io.EOF, but linux doesn't. } else if errno := sys.UnwrapOSError(err); errno != 0 { errno = dirError(f, isClosed, errno) - // Comply with errors allowed on fsapi.File Readdir + // Comply with errors allowed on sys.File Readdir switch errno { case sys.EINVAL: // os.File Readdir can return this return sys.EBADF diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go index c908d6c550..05d5b647ea 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/dirfs.go @@ -3,15 +3,13 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) -func NewDirFS(dir string) fsapi.FS { +func DirFS(dir string) experimentalsys.FS { return &dirFS{ dir: dir, cleanedDir: ensureTrailingPathSeparator(dir), @@ -25,8 +23,11 @@ func ensureTrailingPathSeparator(dir string) string { return dir } +// dirFS is not exported because the input fields must be maintained together. +// This is likely why os.DirFS doesn't, either! type dirFS struct { - fsapi.UnimplementedFS + experimentalsys.UnimplementedFS + dir string // cleanedDir is for easier OS-specific concatenation, as it always has // a trailing path separator. @@ -38,22 +39,22 @@ func (d *dirFS) String() string { return d.dir } -// OpenFile implements the same method as documented on fsapi.FS -func (d *dirFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { +// OpenFile implements the same method as documented on sys.FS +func (d *dirFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { return OpenOSFile(d.join(path), flag, perm) } -// Lstat implements the same method as documented on fsapi.FS +// Lstat implements the same method as documented on sys.FS func (d *dirFS) Lstat(path string) (sys.Stat_t, experimentalsys.Errno) { return lstat(d.join(path)) } -// Stat implements the same method as documented on fsapi.FS +// Stat implements the same method as documented on sys.FS func (d *dirFS) Stat(path string) (sys.Stat_t, experimentalsys.Errno) { return stat(d.join(path)) } -// Mkdir implements the same method as documented on fsapi.FS +// Mkdir implements the same method as documented on sys.FS func (d *dirFS) Mkdir(path string, perm fs.FileMode) (errno experimentalsys.Errno) { err := os.Mkdir(d.join(path), perm) if errno = experimentalsys.UnwrapOSError(err); errno == experimentalsys.ENOTDIR { @@ -62,19 +63,19 @@ func (d *dirFS) Mkdir(path string, perm fs.FileMode) (errno experimentalsys.Errn return } -// Chmod implements the same method as documented on fsapi.FS +// Chmod implements the same method as documented on sys.FS func (d *dirFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { err := os.Chmod(d.join(path), perm) return experimentalsys.UnwrapOSError(err) } -// Rename implements the same method as documented on fsapi.FS +// Rename implements the same method as documented on sys.FS func (d *dirFS) Rename(from, to string) experimentalsys.Errno { from, to = d.join(from), d.join(to) return rename(from, to) } -// Readlink implements the same method as documented on fsapi.FS +// Readlink implements the same method as documented on sys.FS func (d *dirFS) Readlink(path string) (string, experimentalsys.Errno) { // Note: do not use syscall.Readlink as that causes race on Windows. // In any case, syscall.Readlink does almost the same logic as os.Readlink. @@ -85,28 +86,23 @@ func (d *dirFS) Readlink(path string) (string, experimentalsys.Errno) { return platform.ToPosixPath(dst), 0 } -// Link implements the same method as documented on fsapi.FS +// Link implements the same method as documented on sys.FS func (d *dirFS) Link(oldName, newName string) experimentalsys.Errno { err := os.Link(d.join(oldName), d.join(newName)) return experimentalsys.UnwrapOSError(err) } -// Rmdir implements the same method as documented on fsapi.FS +// Rmdir implements the same method as documented on sys.FS func (d *dirFS) Rmdir(path string) experimentalsys.Errno { return rmdir(d.join(path)) } -func rmdir(path string) experimentalsys.Errno { - err := syscall.Rmdir(path) - return experimentalsys.UnwrapOSError(err) -} - -// Unlink implements the same method as documented on fsapi.FS +// Unlink implements the same method as documented on sys.FS func (d *dirFS) Unlink(path string) (err experimentalsys.Errno) { return unlink(d.join(path)) } -// Symlink implements the same method as documented on fsapi.FS +// Symlink implements the same method as documented on sys.FS func (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno { // Note: do not resolve `oldName` relative to this dirFS. The link result is always resolved // when dereference the `link` on its usage (e.g. readlink, read, etc). @@ -115,9 +111,9 @@ func (d *dirFS) Symlink(oldName, link string) experimentalsys.Errno { return experimentalsys.UnwrapOSError(err) } -// Utimens implements the same method as documented on fsapi.FS -func (d *dirFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - return Utimens(d.join(path), times) +// Utimens implements the same method as documented on sys.FS +func (d *dirFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno { + return utimens(d.join(path), atim, mtim) } func (d *dirFS) join(path string) string { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go index b3285cab65..9a77205bb5 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file.go @@ -4,6 +4,7 @@ import ( "io" "io/fs" "os" + "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -20,11 +21,11 @@ func NewStdioFile(stdin bool, f fs.File) (fsapi.File, error) { } else { mode = st.Mode() } - var flag fsapi.Oflag + var flag experimentalsys.Oflag if stdin { - flag = fsapi.O_RDONLY + flag = experimentalsys.O_RDONLY } else { - flag = fsapi.O_WRONLY + flag = experimentalsys.O_WRONLY } var file fsapi.File if of, ok := f.(*os.File); ok { @@ -36,14 +37,14 @@ func NewStdioFile(stdin bool, f fs.File) (fsapi.File, error) { return &stdioFile{File: file, st: sys.Stat_t{Mode: mode, Nlink: 1}}, nil } -func OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (*os.File, experimentalsys.Errno) { - if flag&fsapi.O_DIRECTORY != 0 && flag&(fsapi.O_WRONLY|fsapi.O_RDWR) != 0 { +func OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (*os.File, experimentalsys.Errno) { + if flag&experimentalsys.O_DIRECTORY != 0 && flag&(experimentalsys.O_WRONLY|experimentalsys.O_RDWR) != 0 { return nil, experimentalsys.EISDIR // invalid to open a directory writeable } return openFile(path, flag, perm) } -func OpenOSFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { +func OpenOSFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { f, errno := OpenFile(path, flag, perm) if errno != 0 { return nil, errno @@ -51,8 +52,8 @@ func OpenOSFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, ex return newOsFile(path, flag, perm, f), 0 } -func OpenFSFile(fs fs.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - if flag&fsapi.O_DIRECTORY != 0 && flag&(fsapi.O_WRONLY|fsapi.O_RDWR) != 0 { +func OpenFSFile(fs fs.FS, path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + if flag&experimentalsys.O_DIRECTORY != 0 && flag&(experimentalsys.O_WRONLY|experimentalsys.O_RDWR) != 0 { return nil, experimentalsys.EISDIR // invalid to open a directory writeable } f, err := fs.Open(path) @@ -60,7 +61,7 @@ func OpenFSFile(fs fs.FS, path string, flag fsapi.Oflag, perm fs.FileMode) (fsap return nil, errno } // Don't return an os.File because the path is not absolute. osFile needs - // the path to be real and certain fs.File impls are subrooted. + // the path to be real and certain FS.File impls are subrooted. return &fsFile{fs: fs, name: path, file: f}, 0 } @@ -94,7 +95,7 @@ func (f *stdioFile) Close() experimentalsys.Errno { // implementation. Notably, this does not have access to the full file path. // so certain operations can't be supported, such as inode lookups on Windows. type fsFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile // fs is the file-system that opened the file, or nil when wrapped for // pre-opens like stdio. @@ -120,17 +121,17 @@ type fsFile struct { } type cachedStat struct { - // dev is the same as fsapi.Stat_t Dev. + // dev is the same as sys.Stat_t Dev. dev uint64 - // dev is the same as fsapi.Stat_t Ino. + // dev is the same as sys.Stat_t Ino. ino sys.Inode - // isDir is fsapi.Stat_t Mode masked with fs.ModeDir + // isDir is sys.Stat_t Mode masked with fs.ModeDir isDir bool } -// cachedStat returns the cacheable parts of fsapi.Stat_t or an error if they +// cachedStat returns the cacheable parts of sys.Stat_t or an error if they // couldn't be retrieved. func (f *fsFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) { if f.cachedSt == nil { @@ -141,35 +142,35 @@ func (f *fsFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno expe return f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0 } -// Dev implements the same method as documented on fsapi.File +// Dev implements the same method as documented on sys.File func (f *fsFile) Dev() (uint64, experimentalsys.Errno) { dev, _, _, errno := f.cachedStat() return dev, errno } -// Ino implements the same method as documented on fsapi.File +// Ino implements the same method as documented on sys.File func (f *fsFile) Ino() (sys.Inode, experimentalsys.Errno) { _, ino, _, errno := f.cachedStat() return ino, errno } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (f *fsFile) IsDir() (bool, experimentalsys.Errno) { _, _, isDir, errno := f.cachedStat() return isDir, errno } -// IsAppend implements the same method as documented on fsapi.File +// IsAppend implements the same method as documented on sys.File func (f *fsFile) IsAppend() bool { return false } -// SetAppend implements the same method as documented on fsapi.File +// SetAppend implements the same method as documented on sys.File func (f *fsFile) SetAppend(bool) (errno experimentalsys.Errno) { return fileError(f, f.closed, experimentalsys.ENOSYS) } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (f *fsFile) Stat() (sys.Stat_t, experimentalsys.Errno) { if f.closed { return sys.Stat_t{}, experimentalsys.EBADF @@ -185,7 +186,7 @@ func (f *fsFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return st, errno } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *fsFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { if n, errno = read(f.file, buf); errno != 0 { // Defer validation overhead until we've already had an error. @@ -194,7 +195,7 @@ func (f *fsFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pread implements the same method as documented on fsapi.File +// Pread implements the same method as documented on sys.File func (f *fsFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if ra, ok := f.file.(io.ReaderAt); ok { if n, errno = pread(ra, buf, off); errno != 0 { @@ -233,7 +234,7 @@ func (f *fsFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errn return } -// Seek implements the same method as documented on fsapi.File +// Seek implements the same method as documented on sys.File func (f *fsFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { // If this is a directory, and we're attempting to seek to position zero, // we have to re-open the file to ensure the directory state is reset. @@ -256,12 +257,12 @@ func (f *fsFile) Seek(offset int64, whence int) (newOffset int64, errno experime return } -// Readdir implements the same method as documented on fsapi.File +// Readdir implements the same method as documented on sys.File // // Notably, this uses readdirFile or fs.ReadDirFile if available. This does not // return inodes on windows. -func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { - // Windows lets you Readdir after close, fs.File also may not implement +func (f *fsFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { + // Windows lets you Readdir after close, FS.File also may not implement // close in a meaningful way. read our closed field to return consistent // results. if f.closed { @@ -277,7 +278,7 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E } if of, ok := f.file.(readdirFile); ok { - // We can't use f.name here because it is the path up to the fsapi.FS, + // We can't use f.name here because it is the path up to the sys.FS, // not necessarily the real path. For this reason, Windows may not be // able to populate inodes. However, Darwin and Linux will. if dirents, errno = readdir(of, "", n); errno != 0 { @@ -286,17 +287,17 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } - // Try with fs.ReadDirFile which is available on api.FS implementations - // like embed:fs. + // Try with FS.ReadDirFile which is available on api.FS implementations + // like embed:FS. if rdf, ok := f.file.(fs.ReadDirFile); ok { entries, e := rdf.ReadDir(n) if errno = adjustReaddirErr(f, f.closed, e); errno != 0 { return } - dirents = make([]fsapi.Dirent, 0, len(entries)) + dirents = make([]experimentalsys.Dirent, 0, len(entries)) for _, e := range entries { // By default, we don't attempt to read inode data - dirents = append(dirents, fsapi.Dirent{Name: e.Name(), Type: e.Type()}) + dirents = append(dirents, experimentalsys.Dirent{Name: e.Name(), Type: e.Type()}) } } else { errno = experimentalsys.EBADF // not a directory @@ -304,7 +305,7 @@ func (f *fsFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } -// Write implements the same method as documented on fsapi.File. +// Write implements the same method as documented on sys.File. func (f *fsFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { if w, ok := f.file.(io.Writer); ok { if n, errno = write(w, buf); errno != 0 { @@ -317,7 +318,7 @@ func (f *fsFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pwrite implements the same method as documented on fsapi.File. +// Pwrite implements the same method as documented on sys.File. func (f *fsFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if wa, ok := f.file.(io.WriterAt); ok { if n, errno = pwrite(wa, buf, off); errno != 0 { @@ -330,7 +331,7 @@ func (f *fsFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Err return } -// Close implements the same method as documented on fsapi.File. +// Close implements the same method as documented on sys.File. func (f *fsFile) Close() experimentalsys.Errno { if f.closed { return 0 @@ -343,8 +344,23 @@ func (f *fsFile) close() experimentalsys.Errno { return experimentalsys.UnwrapOSError(f.file.Close()) } +// IsNonblock implements the same method as documented on fsapi.File +func (f *fsFile) IsNonblock() bool { + return false +} + +// SetNonblock implements the same method as documented on fsapi.File +func (f *fsFile) SetNonblock(bool) experimentalsys.Errno { + return experimentalsys.ENOSYS +} + +// Poll implements the same method as documented on fsapi.File +func (f *fsFile) Poll(fsapi.Pflag, int32) (ready bool, errno experimentalsys.Errno) { + return false, experimentalsys.ENOSYS +} + // dirError is used for commands that work against a directory, but not a file. -func dirError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { +func dirError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { if vErrno := validate(f, isClosed, false, true); vErrno != 0 { return vErrno } @@ -352,7 +368,7 @@ func dirError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experime } // fileError is used for commands that work against a file, but not a directory. -func fileError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { +func fileError(f experimentalsys.File, isClosed bool, errno experimentalsys.Errno) experimentalsys.Errno { if vErrno := validate(f, isClosed, true, false); vErrno != 0 { return vErrno } @@ -360,7 +376,7 @@ func fileError(f fsapi.File, isClosed bool, errno experimentalsys.Errno) experim } // validate is used to making syscalls which will fail. -func validate(f fsapi.File, isClosed, wantFile, wantDir bool) experimentalsys.Errno { +func validate(f experimentalsys.File, isClosed, wantFile, wantDir bool) experimentalsys.Errno { if isClosed { return experimentalsys.EBADF } @@ -426,13 +442,13 @@ type readdirFile interface { } // readdir uses readdirFile.Readdir, special casing windows when path !="". -func readdir(f readdirFile, path string, n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { +func readdir(f readdirFile, path string, n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { fis, e := f.Readdir(n) if errno = experimentalsys.UnwrapOSError(e); errno != 0 { return } - dirents = make([]fsapi.Dirent, 0, len(fis)) + dirents = make([]experimentalsys.Dirent, 0, len(fis)) // linux/darwin won't have to fan out to lstat, but windows will. var ino sys.Inode @@ -443,7 +459,7 @@ func readdir(f readdirFile, path string, n int) (dirents []fsapi.Dirent, errno e if ino, errno = inoFromFileInfo(path, t); errno != 0 { return } - dirents = append(dirents, fsapi.Dirent{Name: t.Name(), Ino: ino, Type: t.Mode().Type()}) + dirents = append(dirents, experimentalsys.Dirent{Name: t.Name(), Ino: ino, Type: t.Mode().Type()}) } return } @@ -465,3 +481,40 @@ func pwrite(w io.WriterAt, buf []byte, off int64) (n int, errno experimentalsys. n, err := w.WriteAt(buf, off) return n, experimentalsys.UnwrapOSError(err) } + +func chtimes(path string, atim, mtim int64) (errno experimentalsys.Errno) { //nolint:unused + // When both inputs are omitted, there is nothing to change. + if atim == experimentalsys.UTIME_OMIT && mtim == experimentalsys.UTIME_OMIT { + return + } + + // UTIME_OMIT is expensive until progress is made in Go, as it requires a + // stat to read-back the value to re-apply. + // - https://github.com/golang/go/issues/32558. + // - https://go-review.googlesource.com/c/go/+/219638 (unmerged) + var st sys.Stat_t + if atim == experimentalsys.UTIME_OMIT || mtim == experimentalsys.UTIME_OMIT { + if st, errno = stat(path); errno != 0 { + return + } + } + + var atime, mtime time.Time + if atim == experimentalsys.UTIME_OMIT { + atime = epochNanosToTime(st.Atim) + mtime = epochNanosToTime(mtim) + } else if mtim == experimentalsys.UTIME_OMIT { + atime = epochNanosToTime(atim) + mtime = epochNanosToTime(st.Mtim) + } else { + atime = epochNanosToTime(atim) + mtime = epochNanosToTime(mtim) + } + return experimentalsys.UnwrapOSError(os.Chtimes(path, atime, mtime)) +} + +func epochNanosToTime(epochNanos int64) time.Time { //nolint:unused + seconds := epochNanos / 1e9 + nanos := epochNanos % 1e9 + return time.Unix(seconds, nanos) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go index 6023fa9b76..b27b2bc45f 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_test.go @@ -9,7 +9,6 @@ import ( "runtime" "testing" gofstest "testing/fstest" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" @@ -54,7 +53,7 @@ func TestRegularFileSetNonblock(t *testing.T) { defer r.Close() defer w.Close() - rF := newOsFile("", fsapi.O_RDONLY, 0, r) + rF := newOsFile("", experimentalsys.O_RDONLY, 0, r) errno := rF.SetNonblock(true) require.EqualErrno(t, 0, errno) @@ -78,13 +77,13 @@ func TestReadFdNonblock(t *testing.T) { defer w.Close() fd := r.Fd() - err = setNonblock(fd, true) - require.NoError(t, err) + errno := setNonblock(fd, true) + require.EqualErrno(t, 0, errno) // Read from the file without ever writing to it should not block. buf := make([]byte, 8) - _, e := readFd(fd, buf) - require.EqualErrno(t, experimentalsys.EAGAIN, e) + _, errno = readFd(fd, buf) + require.EqualErrno(t, experimentalsys.EAGAIN, errno) } func TestWriteFdNonblock(t *testing.T) { @@ -95,9 +94,9 @@ func TestWriteFdNonblock(t *testing.T) { defer w.Close() fd := w.Fd() - err = setNonblock(fd, true) + errno := setNonblock(fd, true) - require.NoError(t, err) + require.EqualErrno(t, 0, errno) // Create a buffer (the content is not relevant) buf := make([]byte, 1024) @@ -125,7 +124,7 @@ func TestFileSetAppend(t *testing.T) { require.NoError(t, os.WriteFile(fPath, []byte("0123456789"), 0o600)) // Open without APPEND. - f, errno := OpenOSFile(fPath, fsapi.O_RDWR, 0o600) + f, errno := OpenOSFile(fPath, experimentalsys.O_RDWR, 0o600) require.EqualErrno(t, 0, errno) require.False(t, f.IsAppend()) @@ -186,7 +185,7 @@ func TestFileIno(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - d, errno := OpenFSFile(tc.fs, ".", fsapi.O_RDONLY, 0) + d, errno := OpenFSFile(tc.fs, ".", experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -200,7 +199,7 @@ func TestFileIno(t *testing.T) { } t.Run("OS", func(t *testing.T) { - d, errno := OpenOSFile(tmpDir, fsapi.O_RDONLY, 0) + d, errno := OpenOSFile(tmpDir, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -213,16 +212,15 @@ func TestFileIno(t *testing.T) { }) } -// statSetsIno returns true if this will set fsapi.Stat_t Ino on stat. The +// statSetsIno returns true if this will set sys.Stat_t Ino on stat. The // reverse doesn't mean it won't. Rather it is inconsistent. This is needed -// because Windows on Go 1.18 sometimes, but not always returns non-zero inode. +// because Windows on Go 1.19 sometimes, but not always returns non-zero inode. func statSetsIno() bool { if runtime.GOOS != "windows" { return true } else { // Go can read the inode via a Windows file handle, but it is - // inconsistent on Go 1.18. - // TODO: check on 1.19 can! + // inconsistent on Go 1.19. return platform.IsAtLeastGo120 } } @@ -244,7 +242,7 @@ func TestFileIsDir(t *testing.T) { t.Run(tc.name, func(t *testing.T) { t.Run("file", func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, wazeroFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, wazeroFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -254,7 +252,7 @@ func TestFileIsDir(t *testing.T) { }) t.Run("dir", func(t *testing.T) { - d, errno := OpenFSFile(tc.fs, ".", fsapi.O_RDONLY, 0) + d, errno := OpenFSFile(tc.fs, ".", experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -266,7 +264,7 @@ func TestFileIsDir(t *testing.T) { } t.Run("OS dir", func(t *testing.T) { - d, errno := OpenOSFile(t.TempDir(), fsapi.O_RDONLY, 0) + d, errno := OpenOSFile(t.TempDir(), experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer d.Close() @@ -294,7 +292,7 @@ func TestFileReadAndPread(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, wazeroFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, wazeroFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -320,7 +318,9 @@ func TestFileReadAndPread(t *testing.T) { } } -func TestFilePollRead(t *testing.T) { +func TestFilePoll_POLLIN(t *testing.T) { + pflag := fsapi.POLLIN + // Test using os.Pipe as it is known to support poll. r, w, err := os.Pipe() require.NoError(t, err) @@ -330,10 +330,10 @@ func TestFilePollRead(t *testing.T) { rF, err := NewStdioFile(true, r) require.NoError(t, err) buf := make([]byte, 10) - timeout := time.Duration(0) // return immediately + timeout := int32(0) // return immediately // When there's nothing in the pipe, it isn't ready. - ready, errno := rF.PollRead(&timeout) + ready, errno := rF.Poll(pflag, timeout) require.EqualErrno(t, 0, errno) require.False(t, ready) @@ -343,7 +343,7 @@ func TestFilePollRead(t *testing.T) { require.NoError(t, err) // We should now be able to poll ready - ready, errno = rF.PollRead(&timeout) + ready, errno = rF.Poll(pflag, timeout) require.EqualErrno(t, 0, errno) require.True(t, ready) @@ -354,13 +354,32 @@ func TestFilePollRead(t *testing.T) { require.Equal(t, expected, buf[:len(expected)]) } -func requireRead(t *testing.T, f fsapi.File, buf []byte) { +func TestFilePoll_POLLOUT(t *testing.T) { + pflag := fsapi.POLLOUT + + // Test using os.Pipe as it is known to support poll. + r, w, err := os.Pipe() + require.NoError(t, err) + defer r.Close() + defer w.Close() + + wF, err := NewStdioFile(false, w) + require.NoError(t, err) + timeout := int32(0) // return immediately + + // We don't yet implement write blocking. + ready, errno := wF.Poll(pflag, timeout) + require.EqualErrno(t, experimentalsys.ENOTSUP, errno) + require.False(t, ready) +} + +func requireRead(t *testing.T, f experimentalsys.File, buf []byte) { n, errno := f.Read(buf) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } -func requirePread(t *testing.T, f fsapi.File, buf []byte, off int64) { +func requirePread(t *testing.T, f experimentalsys.File, buf []byte, off int64) { n, errno := f.Pread(buf, off) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) @@ -384,7 +403,7 @@ func TestFileRead_empty(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -417,7 +436,7 @@ func TestFilePread_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -431,20 +450,20 @@ func TestFileRead_Errors(t *testing.T) { path := path.Join(t.TempDir(), emptyFile) // Open the file write-only - flag := fsapi.O_WRONLY | fsapi.O_CREAT + flag := experimentalsys.O_WRONLY | experimentalsys.O_CREAT f := requireOpenFile(t, path, flag, 0o600) defer f.Close() buf := make([]byte, 5) tests := []struct { name string - fn func(fsapi.File) experimentalsys.Errno + fn func(experimentalsys.File) experimentalsys.Errno }{ - {name: "Read", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Read", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Read(buf) return errno }}, - {name: "Pread", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Pread", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Pread(buf, 0) return errno }}, @@ -470,19 +489,19 @@ func TestFileSeek(t *testing.T) { tests := []struct { name string - openFile func(string) (fsapi.File, experimentalsys.Errno) + openFile func(string) (experimentalsys.File, experimentalsys.Errno) }{ - {name: "fsFile os.DirFS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(dirFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile os.DirFS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(dirFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "fsFile embed.api.FS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(embedFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile embed.api.FS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(embedFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "fsFile fstest.MapFS", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenFSFile(mapFS, name, fsapi.O_RDONLY, 0) + {name: "fsFile fstest.MapFS", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenFSFile(mapFS, name, experimentalsys.O_RDONLY, 0) }}, - {name: "osFile", openFile: func(name string) (fsapi.File, experimentalsys.Errno) { - return OpenOSFile(path.Join(tmpDir, name), fsapi.O_RDONLY, 0o666) + {name: "osFile", openFile: func(name string) (experimentalsys.File, experimentalsys.Errno) { + return OpenOSFile(path.Join(tmpDir, name), experimentalsys.O_RDONLY, 0o666) }}, } @@ -560,7 +579,7 @@ func TestFileSeek(t *testing.T) { require.Equal(t, direntCount, len(dirents)) }) - seekToZero := func(f fsapi.File) experimentalsys.Errno { + seekToZero := func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Seek(0, io.SeekStart) return errno } @@ -569,7 +588,7 @@ func TestFileSeek(t *testing.T) { } } -func requireSeek(t *testing.T, f fsapi.File, off int64, whence int) int64 { +func requireSeek(t *testing.T, f experimentalsys.File, off int64, whence int) int64 { n, errno := f.Seek(off, whence) require.EqualErrno(t, 0, errno) return n @@ -591,7 +610,7 @@ func TestFileSeek_empty(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { - f, errno := OpenFSFile(tc.fs, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(tc.fs, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -614,7 +633,7 @@ func TestFileSeek_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, fsapi.O_RDONLY, 0) + f, errno := OpenFSFile(&maskFS{embedFS}, emptyFile, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer f.Close() @@ -623,10 +642,10 @@ func TestFileSeek_Unsupported(t *testing.T) { } func TestFileWriteAndPwrite(t *testing.T) { - // fsapi.FS doesn't support writes, and there is no other built-in + // sys.FS doesn't support writes, and there is no other built-in // implementation except os.File. path := path.Join(t.TempDir(), wazeroFile) - f := requireOpenFile(t, path, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, path, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() text := "wazero" @@ -663,36 +682,36 @@ func TestFileWriteAndPwrite(t *testing.T) { require.Equal(t, "wazerowazeroero", string(b)) } -func requireWrite(t *testing.T, f fsapi.File, buf []byte) { +func requireWrite(t *testing.T, f experimentalsys.File, buf []byte) { n, errno := f.Write(buf) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } -func requirePwrite(t *testing.T, f fsapi.File, buf []byte, off int64) { +func requirePwrite(t *testing.T, f experimentalsys.File, buf []byte, off int64) { n, errno := f.Pwrite(buf, off) require.EqualErrno(t, 0, errno) require.Equal(t, len(buf), n) } func TestFileWrite_empty(t *testing.T) { - // fsapi.FS doesn't support writes, and there is no other built-in + // sys.FS doesn't support writes, and there is no other built-in // implementation except os.File. path := path.Join(t.TempDir(), emptyFile) - f := requireOpenFile(t, path, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, path, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() tests := []struct { name string - fn func(fsapi.File, []byte) (int, experimentalsys.Errno) + fn func(experimentalsys.File, []byte) (int, experimentalsys.Errno) }{ - {name: "Write", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Write", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Write(buf) }}, - {name: "Pwrite from zero", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite from zero", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 0) }}, - {name: "Pwrite from 3", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite from 3", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 3) }}, } @@ -719,19 +738,19 @@ func TestFileWrite_Unsupported(t *testing.T) { embedFS, err := fs.Sub(testdata, "testdata") require.NoError(t, err) - // Use fsapi.O_RDWR so that it fails due to type not flags - f, errno := OpenFSFile(&maskFS{embedFS}, wazeroFile, fsapi.O_RDWR, 0) + // Use sys.O_RDWR so that it fails due to type not flags + f, errno := OpenFSFile(&maskFS{embedFS}, wazeroFile, experimentalsys.O_RDWR, 0) require.EqualErrno(t, 0, errno) defer f.Close() tests := []struct { name string - fn func(fsapi.File, []byte) (int, experimentalsys.Errno) + fn func(experimentalsys.File, []byte) (int, experimentalsys.Errno) }{ - {name: "Write", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Write", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Write(buf) }}, - {name: "Pwrite", fn: func(f fsapi.File, buf []byte) (int, experimentalsys.Errno) { + {name: "Pwrite", fn: func(f experimentalsys.File, buf []byte) (int, experimentalsys.Errno) { return f.Pwrite(buf, 0) }}, } @@ -756,20 +775,20 @@ func TestFileWrite_Errors(t *testing.T) { require.NoError(t, of.Close()) // Open the file read-only - flag := fsapi.O_RDONLY + flag := experimentalsys.O_RDONLY f := requireOpenFile(t, path, flag, 0o600) defer f.Close() buf := []byte("wazero") tests := []struct { name string - fn func(fsapi.File) experimentalsys.Errno + fn func(experimentalsys.File) experimentalsys.Errno }{ - {name: "Write", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Write", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Write(buf) return errno }}, - {name: "Pwrite", fn: func(f fsapi.File) experimentalsys.Errno { + {name: "Pwrite", fn: func(f experimentalsys.File) experimentalsys.Errno { _, errno := f.Pwrite(buf, 0) return errno }}, @@ -790,30 +809,30 @@ func TestFileWrite_Errors(t *testing.T) { } func TestFileSync_NoError(t *testing.T) { - testSync_NoError(t, fsapi.File.Sync) + testSync_NoError(t, experimentalsys.File.Sync) } func TestFileDatasync_NoError(t *testing.T) { - testSync_NoError(t, fsapi.File.Datasync) + testSync_NoError(t, experimentalsys.File.Datasync) } -func testSync_NoError(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { +func testSync_NoError(t *testing.T, sync func(experimentalsys.File) experimentalsys.Errno) { roPath := "file_test.go" - ro, errno := OpenFSFile(embedFS, roPath, fsapi.O_RDONLY, 0) + ro, errno := OpenFSFile(embedFS, roPath, experimentalsys.O_RDONLY, 0) require.EqualErrno(t, 0, errno) defer ro.Close() rwPath := path.Join(t.TempDir(), "datasync") - rw, errno := OpenOSFile(rwPath, fsapi.O_CREAT|fsapi.O_RDWR, 0o600) + rw, errno := OpenOSFile(rwPath, experimentalsys.O_CREAT|experimentalsys.O_RDWR, 0o600) require.EqualErrno(t, 0, errno) defer rw.Close() tests := []struct { name string - f fsapi.File + f experimentalsys.File }{ - {name: "UnimplementedFile", f: fsapi.UnimplementedFile{}}, - {name: "File of read-only fs.File", f: ro}, + {name: "UnimplementedFile", f: experimentalsys.UnimplementedFile{}}, + {name: "File of read-only FS.File", f: ro}, {name: "File of os.File", f: rw}, } @@ -827,20 +846,20 @@ func testSync_NoError(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) } func TestFileSync(t *testing.T) { - testSync(t, fsapi.File.Sync) + testSync(t, experimentalsys.File.Sync) } func TestFileDatasync(t *testing.T) { - testSync(t, fsapi.File.Datasync) + testSync(t, experimentalsys.File.Datasync) } // testSync doesn't guarantee sync works because the operating system may // sync anyway. There is no test in Go for syscall.Fdatasync, but closest is // similar to below. Effectively, this only tests that things don't error. -func testSync(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { +func testSync(t *testing.T, sync func(experimentalsys.File) experimentalsys.Errno) { // Even though it is invalid, try to sync a directory dPath := t.TempDir() - d := requireOpenFile(t, dPath, fsapi.O_RDONLY, 0) + d := requireOpenFile(t, dPath, experimentalsys.O_RDONLY, 0) defer d.Close() errno := sync(d) @@ -848,7 +867,7 @@ func testSync(t *testing.T, sync func(fsapi.File) experimentalsys.Errno) { fPath := path.Join(dPath, t.Name()) - f := requireOpenFile(t, fPath, fsapi.O_RDWR|fsapi.O_CREAT, 0o600) + f := requireOpenFile(t, fPath, experimentalsys.O_RDWR|experimentalsys.O_CREAT, 0o600) defer f.Close() expected := "hello world!" @@ -929,7 +948,7 @@ func TestFileTruncate(t *testing.T) { }) } - truncateToZero := func(f fsapi.File) experimentalsys.Errno { + truncateToZero := func(f experimentalsys.File) experimentalsys.Errno { return f.Truncate(0) } @@ -965,11 +984,11 @@ func TestFileUtimens(t *testing.T) { testUtimens(t, true) - testEBADFIfFileClosed(t, func(f fsapi.File) experimentalsys.Errno { - return f.Utimens(nil) + testEBADFIfFileClosed(t, func(f experimentalsys.File) experimentalsys.Errno { + return f.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) }) - testEBADFIfDirClosed(t, func(d fsapi.File) experimentalsys.Errno { - return d.Utimens(nil) + testEBADFIfDirClosed(t, func(d experimentalsys.File) experimentalsys.Errno { + return d.Utimens(experimentalsys.UTIME_OMIT, experimentalsys.UTIME_OMIT) }) } @@ -997,7 +1016,7 @@ func TestNewStdioFile(t *testing.T) { tests := []struct { name string - f fsapi.File + f experimentalsys.File // Depending on how the tests run, os.Stdin won't necessarily be a char // device. We compare against an os.File, to account for this. expectedType fs.FileMode @@ -1042,9 +1061,9 @@ func TestNewStdioFile(t *testing.T) { } } -func testEBADFIfDirClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEBADFIfDirClosed(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EBADF if dir closed", func(t *testing.T) { - d := requireOpenFile(t, t.TempDir(), fsapi.O_RDONLY, 0o755) + d := requireOpenFile(t, t.TempDir(), experimentalsys.O_RDONLY, 0o755) // close the directory underneath require.EqualErrno(t, 0, d.Close()) @@ -1053,7 +1072,7 @@ func testEBADFIfDirClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errn }) } -func testEBADFIfFileClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEBADFIfFileClosed(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EBADF if file closed", func(t *testing.T) { tmpDir := t.TempDir() @@ -1066,24 +1085,24 @@ func testEBADFIfFileClosed(t *testing.T, fn func(fsapi.File) experimentalsys.Err }) } -func testEISDIR(t *testing.T, fn func(fsapi.File) experimentalsys.Errno) bool { +func testEISDIR(t *testing.T, fn func(experimentalsys.File) experimentalsys.Errno) bool { return t.Run("EISDIR if directory", func(t *testing.T) { - f := requireOpenFile(t, os.TempDir(), fsapi.O_RDONLY|fsapi.O_DIRECTORY, 0o666) + f := requireOpenFile(t, os.TempDir(), experimentalsys.O_RDONLY|experimentalsys.O_DIRECTORY, 0o666) defer f.Close() require.EqualErrno(t, experimentalsys.EISDIR, fn(f)) }) } -func openForWrite(t *testing.T, path string, content []byte) fsapi.File { +func openForWrite(t *testing.T, path string, content []byte) experimentalsys.File { require.NoError(t, os.WriteFile(path, content, 0o0666)) - f := requireOpenFile(t, path, fsapi.O_RDWR, 0o666) + f := requireOpenFile(t, path, experimentalsys.O_RDWR, 0o666) _, errno := f.Write(content) require.EqualErrno(t, 0, errno) return f } -func requireOpenFile(t *testing.T, path string, flag fsapi.Oflag, perm fs.FileMode) fsapi.File { +func requireOpenFile(t *testing.T, path string, flag experimentalsys.Oflag, perm fs.FileMode) experimentalsys.File { f, errno := OpenOSFile(path, flag, perm) require.EqualErrno(t, 0, errno) return f diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go index 4ed51a9fe9..92eaf35423 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unix.go @@ -1,4 +1,4 @@ -//go:build unix || darwin || linux +//go:build unix package sysfs @@ -13,6 +13,11 @@ const ( nonBlockingFileWriteSupported = true ) +func rmdir(path string) sys.Errno { + err := syscall.Rmdir(path) + return sys.UnwrapOSError(err) +} + // readFd exposes syscall.Read. func readFd(fd uintptr, buf []byte) (int, sys.Errno) { if len(buf) == 0 { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go index eb8b5537fc..e74a8e4dd9 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_unsupported.go @@ -1,14 +1,22 @@ -//go:build !unix && !linux && !darwin && !windows +//go:build !unix && !windows package sysfs -import "github.com/tetratelabs/wazero/experimental/sys" +import ( + "os" + + "github.com/tetratelabs/wazero/experimental/sys" +) const ( nonBlockingFileReadSupported = false nonBlockingFileWriteSupported = false ) +func rmdir(path string) sys.Errno { + return sys.UnwrapOSError(os.Remove(path)) +} + // readFd returns ENOSYS on unsupported platforms. func readFd(fd uintptr, buf []byte) (int, sys.Errno) { return -1, sys.ENOSYS diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go index c07d2b92a1..3ad9648e65 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/file_windows.go @@ -81,3 +81,8 @@ func peekNamedPipe(handle syscall.Handle) (uint32, syscall.Errno) { 0) // [out, optional] LPDWORD lpBytesLeftThisMessage return totalBytesAvail, errno } + +func rmdir(path string) sys.Errno { + err := syscall.Rmdir(path) + return sys.UnwrapOSError(err) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go index 9144126b61..1f670ca116 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens.go @@ -1,53 +1,14 @@ +//go:build linux || darwin + package sysfs import ( "syscall" - "time" "unsafe" - experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/sys" + "github.com/tetratelabs/wazero/experimental/sys" ) -const ( - // UTIME_NOW is a special syscall.Timespec NSec value used to set the - // file's timestamp to a value close to, but not greater than the current - // system time. - UTIME_NOW = _UTIME_NOW - - // UTIME_OMIT is a special syscall.Timespec NSec value used to avoid - // setting the file's timestamp. - UTIME_OMIT = _UTIME_OMIT -) - -// Utimens set file access and modification times on a path resolved to the -// current working directory, at nanosecond precision. -// -// # Parameters -// -// The `times` parameter includes the access and modification timestamps to -// assign. Special syscall.Timespec NSec values UTIME_NOW and UTIME_OMIT may be -// specified instead of real timestamps. A nil `times` parameter behaves the -// same as if both were set to UTIME_NOW. If the path is a symbolic link, the -// target of expanding that link is updated. -// -// # Errors -// -// A zero sys.Errno is success. The below are expected otherwise: -// - sys.ENOSYS: the implementation does not support this function. -// - sys.EINVAL: `path` is invalid. -// - sys.EEXIST: `path` exists and is a directory. -// - sys.ENOTDIR: `path` exists and is a file. -// -// # Notes -// -// - This is like syscall.UtimesNano and `utimensat` with `AT_FDCWD` in -// POSIX. See https://pubs.opengroup.org/onlinepubs/9699919799/functions/futimens.html -func Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { - err := utimens(path, times) - return experimentalsys.UnwrapOSError(err) -} - func timesToPtr(times *[2]syscall.Timespec) unsafe.Pointer { //nolint:unused if times != nil { return unsafe.Pointer(×[0]) @@ -55,67 +16,22 @@ func timesToPtr(times *[2]syscall.Timespec) unsafe.Pointer { //nolint:unused return unsafe.Pointer(nil) } -func utimensPortable(path string, times *[2]syscall.Timespec) error { //nolint:unused - // Handle when both inputs are current system time. - if times == nil || times[0].Nsec == UTIME_NOW && times[1].Nsec == UTIME_NOW { - ts := nowTimespec() - return syscall.UtimesNano(path, []syscall.Timespec{ts, ts}) - } - +func timesToTimespecs(atim int64, mtim int64) (times *[2]syscall.Timespec) { // When both inputs are omitted, there is nothing to change. - if times[0].Nsec == UTIME_OMIT && times[1].Nsec == UTIME_OMIT { - return nil - } - - // Handle when neither input are special values - if times[0].Nsec != UTIME_NOW && times[1].Nsec != UTIME_NOW && - times[0].Nsec != UTIME_OMIT && times[1].Nsec != UTIME_OMIT { - return syscall.UtimesNano(path, times[:]) + if atim == sys.UTIME_OMIT && mtim == sys.UTIME_OMIT { + return } - // Now, either atim or mtim is a special value, but not both. - - // Now, either one of the inputs is a special value, or neither. This means - // we don't have a risk of re-reading the clock or re-doing stat. - if atim, err := normalizeTimespec(path, times, 0); err != 0 { - return err - } else if mtim, err := normalizeTimespec(path, times, 1); err != 0 { - return err + times = &[2]syscall.Timespec{} + if atim == sys.UTIME_OMIT { + times[0] = syscall.Timespec{Nsec: _UTIME_OMIT} + times[1] = syscall.NsecToTimespec(mtim) + } else if mtim == sys.UTIME_OMIT { + times[0] = syscall.NsecToTimespec(atim) + times[1] = syscall.Timespec{Nsec: _UTIME_OMIT} } else { - return syscall.UtimesNano(path, []syscall.Timespec{atim, mtim}) - } -} - -func normalizeTimespec(path string, times *[2]syscall.Timespec, i int) (ts syscall.Timespec, err experimentalsys.Errno) { //nolint:unused - switch times[i].Nsec { - case UTIME_NOW: // declined in Go per golang/go#31880. - ts = nowTimespec() - return - case UTIME_OMIT: - // UTIME_OMIT is expensive until progress is made in Go, as it requires a - // stat to read-back the value to re-apply. - // - https://github.com/golang/go/issues/32558. - // - https://go-review.googlesource.com/c/go/+/219638 (unmerged) - var st sys.Stat_t - if st, err = stat(path); err != 0 { - return - } - switch i { - case 0: - ts = syscall.NsecToTimespec(st.Atim) - case 1: - ts = syscall.NsecToTimespec(st.Mtim) - default: - panic("BUG") - } - return - default: // not special - ts = times[i] - return + times[0] = syscall.NsecToTimespec(atim) + times[1] = syscall.NsecToTimespec(mtim) } -} - -func nowTimespec() syscall.Timespec { //nolint:unused - now := time.Now().UnixNano() - return syscall.NsecToTimespec(now) + return } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go index a5663ede3c..88e4008f0a 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_darwin.go @@ -2,13 +2,14 @@ package sysfs import ( "syscall" - _ "unsafe" // for go:linkname + _ "unsafe" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" ) const ( _AT_FDCWD = -0x2 _AT_SYMLINK_NOFOLLOW = 0x0020 - _UTIME_NOW = -1 _UTIME_OMIT = -2 ) @@ -16,20 +17,25 @@ const ( //go:linkname utimensat syscall.utimensat func utimensat(dirfd int, path string, times *[2]syscall.Timespec, flags int) error -func utimens(path string, times *[2]syscall.Timespec) error { +func utimens(path string, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } var flags int - return utimensat(_AT_FDCWD, path, times, flags) + return experimentalsys.UnwrapOSError(utimensat(_AT_FDCWD, path, times, flags)) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } _p0 := timesToPtr(times) // Warning: futimens only exists since High Sierra (10.13). _, _, e1 := syscall_syscall6(libc_futimens_trampoline_addr, fd, uintptr(_p0), 0, 0, 0, 0) - if e1 != 0 { - return e1 - } - return nil + return experimentalsys.UnwrapOSError(e1) } // libc_futimens_trampoline_addr is the address of the diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go index 5008ca8140..3ec68537be 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_linux.go @@ -3,28 +3,38 @@ package sysfs import ( "syscall" "unsafe" - _ "unsafe" // for go:linkname + _ "unsafe" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" ) const ( _AT_FDCWD = -0x64 - _UTIME_NOW = (1 << 30) - 1 _UTIME_OMIT = (1 << 30) - 2 ) -func utimens(path string, times *[2]syscall.Timespec) (err error) { +func utimens(path string, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } + var flags int var _p0 *byte - _p0, err = syscall.BytePtrFromString(path) - if err != nil { - return + _p0, err := syscall.BytePtrFromString(path) + if err == nil { + err = utimensat(_AT_FDCWD, uintptr(unsafe.Pointer(_p0)), times, flags) } - return utimensat(_AT_FDCWD, uintptr(unsafe.Pointer(_p0)), times, flags) + return experimentalsys.UnwrapOSError(err) } // On linux, implement futimens via utimensat with the NUL path. -func futimens(fd uintptr, times *[2]syscall.Timespec) error { - return utimensat(int(fd), 0 /* NUL */, times, 0) +func futimens(fd uintptr, atim, mtim int64) experimentalsys.Errno { + times := timesToTimespecs(atim, mtim) + if times == nil { + return 0 + } + return experimentalsys.UnwrapOSError(utimensat(int(fd), 0 /* NUL */, times, 0)) } // utimensat is like syscall.utimensat special-cased to accept a NUL string for the path value. diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go index 2816cb84ee..c78a16b407 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_unsupported.go @@ -3,22 +3,14 @@ package sysfs import ( - "syscall" - "github.com/tetratelabs/wazero/experimental/sys" ) -// Define values even if not used except as sentinels. -const ( - _UTIME_NOW = -1 - _UTIME_OMIT = -2 -) - -func utimens(path string, times *[2]syscall.Timespec) error { - return utimensPortable(path, times) +func utimens(path string, atim, mtim int64) sys.Errno { + return chtimes(path, atim, mtim) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) error { // Go exports syscall.Futimes, which is microsecond granularity, and // WASI tests expect nanosecond. We don't yet have a way to invoke the // futimens syscall portably. diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go index 26d9c2a425..3a5289b70b 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/futimens_windows.go @@ -2,24 +2,16 @@ package sysfs import ( "syscall" - "time" "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/platform" ) -// Define values even if not used except as sentinels. -const ( - _UTIME_NOW = -1 - _UTIME_OMIT = -2 - SupportsSymlinkNoFollow = false -) - -func utimens(path string, times *[2]syscall.Timespec) error { - return utimensPortable(path, times) +func utimens(path string, atim, mtim int64) sys.Errno { + return chtimes(path, atim, mtim) } -func futimens(fd uintptr, times *[2]syscall.Timespec) error { +func futimens(fd uintptr, atim, mtim int64) error { // Before Go 1.20, ERROR_INVALID_HANDLE was returned for too many reasons. // Kick out so that callers can use path-based operations instead. if !platform.IsAtLeastGo120 { @@ -27,9 +19,9 @@ func futimens(fd uintptr, times *[2]syscall.Timespec) error { } // Per docs, zero isn't a valid timestamp as it cannot be differentiated - // from nil. In both cases, it is a marker like syscall.UTIME_OMIT. + // from nil. In both cases, it is a marker like sys.UTIME_OMIT. // See https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-setfiletime - a, w := timespecToFiletime(times) + a, w := timespecToFiletime(atim, mtim) if a == nil && w == nil { return nil // both omitted, so nothing to change @@ -42,32 +34,16 @@ func futimens(fd uintptr, times *[2]syscall.Timespec) error { return syscall.SetFileTime(h, nil, a, w) } -func timespecToFiletime(times *[2]syscall.Timespec) (a, w *syscall.Filetime) { - // Handle when both inputs are current system time. - if times == nil || times[0].Nsec == UTIME_NOW && times[1].Nsec == UTIME_NOW { - now := time.Now().UnixNano() - ft := syscall.NsecToFiletime(now) - return &ft, &ft - } - - // Now, either one of the inputs is current time, or neither. This - // means we don't have a risk of re-reading the clock. - a = timespecToFileTime(times, 0) - w = timespecToFileTime(times, 1) +func timespecToFiletime(atim, mtim int64) (a, w *syscall.Filetime) { + a = timespecToFileTime(atim) + w = timespecToFileTime(mtim) return } -func timespecToFileTime(times *[2]syscall.Timespec, i int) *syscall.Filetime { - if times[i].Nsec == UTIME_OMIT { +func timespecToFileTime(tim int64) *syscall.Filetime { + if tim == sys.UTIME_OMIT { return nil } - - var nsec int64 - if times[i].Nsec == UTIME_NOW { - nsec = time.Now().UnixNano() - } else { - nsec = syscall.TimespecToNsec(times[i]) - } - ft := syscall.NsecToFiletime(nsec) + ft := syscall.NsecToFiletime(tim) return &ft } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go new file mode 100644 index 0000000000..703f113660 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino.go @@ -0,0 +1,22 @@ +//go:build !windows && !plan9 + +package sysfs + +import ( + "io/fs" + "syscall" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { + switch v := info.Sys().(type) { + case *sys.Stat_t: + return v.Ino, 0 + case *syscall.Stat_t: + return v.Ino, 0 + default: + return 0, 0 + } +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go new file mode 100644 index 0000000000..9c669a475c --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_plan9.go @@ -0,0 +1,15 @@ +package sysfs + +import ( + "io/fs" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { + if v, ok := info.Sys().(*sys.Stat_t); ok { + return v.Ino, 0 + } + return 0, 0 +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go new file mode 100644 index 0000000000..d163b3601e --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/ino_windows.go @@ -0,0 +1,28 @@ +package sysfs + +import ( + "io/fs" + "path" + + experimentalsys "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/sys" +) + +// inoFromFileInfo uses stat to get the inode information of the file. +func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) { + if v, ok := info.Sys().(*sys.Stat_t); ok { + return v.Ino, 0 + } + if dirPath == "" { + // This is a FS.File backed implementation which doesn't have access to + // the original file path. + return + } + // Ino is no not in Win32FileAttributeData + inoPath := path.Clean(path.Join(dirPath, info.Name())) + var st sys.Stat_t + if st, errno = lstat(inoPath); errno == 0 { + ino = st.Ino + } + return +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go new file mode 100644 index 0000000000..8e94e5922f --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_plan9.go @@ -0,0 +1,11 @@ +package sysfs + +import "github.com/tetratelabs/wazero/experimental/sys" + +func setNonblock(fd uintptr, enable bool) sys.Errno { + return sys.ENOSYS +} + +func isNonblock(f *osFile) bool { + return false +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go index fdee885aa3..07fb15cf12 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_unix.go @@ -1,17 +1,17 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -func setNonblock(fd uintptr, enable bool) error { - return syscall.SetNonblock(int(fd), enable) +func setNonblock(fd uintptr, enable bool) sys.Errno { + return sys.UnwrapOSError(syscall.SetNonblock(int(fd), enable)) } func isNonblock(f *osFile) bool { - return f.flag&fsapi.O_NONBLOCK == fsapi.O_NONBLOCK + return f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go index 3acbf2721f..eb38ea5afa 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/nonblock_windows.go @@ -1,17 +1,15 @@ -//go:build windows - package sysfs import ( "io/fs" "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -func setNonblock(fd uintptr, enable bool) error { +func setNonblock(fd uintptr, enable bool) sys.Errno { // We invoke the syscall, but this is currently no-op. - return syscall.SetNonblock(syscall.Handle(fd), enable) + return sys.UnwrapOSError(syscall.SetNonblock(syscall.Handle(fd), enable)) } func isNonblock(f *osFile) bool { @@ -21,5 +19,5 @@ func isNonblock(f *osFile) bool { if errno == 0 { isValid = st.Mode&fs.ModeNamedPipe != 0 } - return isValid && f.flag&fsapi.O_NONBLOCK == fsapi.O_NONBLOCK + return isValid && f.flag&sys.O_NONBLOCK == sys.O_NONBLOCK } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go index e6c3b06c28..be6d2c35f6 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/oflag.go @@ -3,35 +3,35 @@ package sysfs import ( "os" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) // toOsOpenFlag converts the input to the flag parameter of os.OpenFile -func toOsOpenFlag(oflag fsapi.Oflag) (flag int) { +func toOsOpenFlag(oflag sys.Oflag) (flag int) { // First flags are exclusive - switch oflag & (fsapi.O_RDONLY | fsapi.O_RDWR | fsapi.O_WRONLY) { - case fsapi.O_RDONLY: + switch oflag & (sys.O_RDONLY | sys.O_RDWR | sys.O_WRONLY) { + case sys.O_RDONLY: flag |= os.O_RDONLY - case fsapi.O_RDWR: + case sys.O_RDWR: flag |= os.O_RDWR - case fsapi.O_WRONLY: + case sys.O_WRONLY: flag |= os.O_WRONLY } // Run down the flags defined in the os package - if oflag&fsapi.O_APPEND != 0 { + if oflag&sys.O_APPEND != 0 { flag |= os.O_APPEND } - if oflag&fsapi.O_CREAT != 0 { + if oflag&sys.O_CREAT != 0 { flag |= os.O_CREATE } - if oflag&fsapi.O_EXCL != 0 { + if oflag&sys.O_EXCL != 0 { flag |= os.O_EXCL } - if oflag&fsapi.O_SYNC != 0 { + if oflag&sys.O_SYNC != 0 { flag |= os.O_SYNC } - if oflag&fsapi.O_TRUNC != 0 { + if oflag&sys.O_TRUNC != 0 { flag |= os.O_TRUNC } return withSyscallOflag(oflag, flag) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go index 82275393b5..a4f54ca2cc 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_darwin.go @@ -3,22 +3,22 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // syscall.O_RSYNC not defined on darwin diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go index e91da95dfa..42adaa2140 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_freebsd.go @@ -3,20 +3,20 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_NOFOLLOW | sys.O_NONBLOCK -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } // syscall.O_DSYNC not defined on darwin - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // syscall.O_RSYNC not defined on darwin diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go index bfa9a23e19..7f4915480c 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_linux.go @@ -3,25 +3,25 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK | fsapi.O_RSYNC +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { flag |= syscall.O_DIRECTORY } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } - if oflag&fsapi.O_RSYNC != 0 { + if oflag&sys.O_RSYNC != 0 { flag |= syscall.O_RSYNC } return flag diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go index 4e886fb550..9ae1e2bcdb 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_notwindows.go @@ -7,14 +7,13 @@ import ( "os" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -// openFile is like os.OpenFile except it accepts a fsapi.Oflag and returns +// openFile is like os.OpenFile except it accepts a sys.Oflag and returns // sys.Errno. A zero sys.Errno is success. -func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { +func openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { f, err := os.OpenFile(path, toOsOpenFlag(oflag), perm) - // Note: This does not return a fsapi.File because fsapi.FS that returns + // Note: This does not return a sys.File because sys.FS that returns // one may want to hide the real OS path. For example, this is needed for // pre-opens. return f, sys.UnwrapOSError(err) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go index 6589ddac3f..bdf7dd84d2 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_sun.go @@ -5,26 +5,26 @@ package sysfs import ( "syscall" - "github.com/tetratelabs/wazero/internal/fsapi" + "github.com/tetratelabs/wazero/experimental/sys" ) -const supportedSyscallOflag = fsapi.O_DIRECTORY | fsapi.O_DSYNC | fsapi.O_NOFOLLOW | fsapi.O_NONBLOCK | fsapi.O_RSYNC +const supportedSyscallOflag = sys.O_DIRECTORY | sys.O_DSYNC | sys.O_NOFOLLOW | sys.O_NONBLOCK | sys.O_RSYNC -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { - if oflag&fsapi.O_DIRECTORY != 0 { +func withSyscallOflag(oflag sys.Oflag, flag int) int { + if oflag&sys.O_DIRECTORY != 0 { // See https://github.com/illumos/illumos-gate/blob/edd580643f2cf1434e252cd7779e83182ea84945/usr/src/uts/common/sys/fcntl.h#L90 flag |= 0x1000000 } - if oflag&fsapi.O_DSYNC != 0 { + if oflag&sys.O_DSYNC != 0 { flag |= syscall.O_DSYNC } - if oflag&fsapi.O_NOFOLLOW != 0 { + if oflag&sys.O_NOFOLLOW != 0 { flag |= syscall.O_NOFOLLOW } - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } - if oflag&fsapi.O_RSYNC != 0 { + if oflag&sys.O_RSYNC != 0 { flag |= syscall.O_RSYNC } return flag diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go index 9b925949aa..9f7a6d0885 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_unsupported.go @@ -2,11 +2,13 @@ package sysfs -import "github.com/tetratelabs/wazero/internal/fsapi" +import ( + "github.com/tetratelabs/wazero/experimental/sys" +) -const supportedSyscallOflag = fsapi.Oflag(0) +const supportedSyscallOflag = sys.Oflag(0) -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { +func withSyscallOflag(oflag sys.Oflag, flag int) int { // O_DIRECTORY not defined // O_DSYNC not defined // O_NOFOLLOW not defined diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go index bc7a7f7d0c..bcfbfbcd6b 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/open_file_windows.go @@ -8,12 +8,11 @@ import ( "unsafe" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" "github.com/tetratelabs/wazero/internal/platform" ) -func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { - isDir := oflag&fsapi.O_DIRECTORY > 0 +func openFile(path string, oflag sys.Oflag, perm fs.FileMode) (*os.File, sys.Errno) { + isDir := oflag&sys.O_DIRECTORY > 0 flag := toOsOpenFlag(oflag) // TODO: document why we are opening twice @@ -55,14 +54,14 @@ func openFile(path string, oflag fsapi.Oflag, perm fs.FileMode) (*os.File, sys.E return f, errno } -const supportedSyscallOflag = fsapi.O_NONBLOCK +const supportedSyscallOflag = sys.O_NONBLOCK // Map to synthetic values here https://github.com/golang/go/blob/go1.20/src/syscall/types_windows.go#L34-L48 -func withSyscallOflag(oflag fsapi.Oflag, flag int) int { +func withSyscallOflag(oflag sys.Oflag, flag int) int { // O_DIRECTORY not defined in windows // O_DSYNC not defined in windows // O_NOFOLLOW not defined in windows - if oflag&fsapi.O_NONBLOCK != 0 { + if oflag&sys.O_NONBLOCK != 0 { flag |= syscall.O_NONBLOCK } // O_RSYNC not defined in windows diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go index e39c92566c..13bd418f24 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/osfile.go @@ -5,16 +5,13 @@ import ( "io/fs" "os" "runtime" - "syscall" - "time" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/internal/fsapi" - "github.com/tetratelabs/wazero/internal/platform" "github.com/tetratelabs/wazero/sys" ) -func newOsFile(path string, flag fsapi.Oflag, perm fs.FileMode, f *os.File) fsapi.File { +func newOsFile(path string, flag experimentalsys.Oflag, perm fs.FileMode, f *os.File) fsapi.File { // Windows cannot read files written to a directory after it was opened. // This was noticed in #1087 in zig tests. Use a flag instead of a // different type. @@ -26,7 +23,7 @@ func newOsFile(path string, flag fsapi.Oflag, perm fs.FileMode, f *os.File) fsap // implement api.File. type osFile struct { path string - flag fsapi.Oflag + flag experimentalsys.Oflag perm fs.FileMode file *os.File fd uintptr @@ -44,7 +41,7 @@ type osFile struct { cachedSt *cachedStat } -// cachedStat returns the cacheable parts of fsapi.Stat_t or an error if they +// cachedStat returns the cacheable parts of sys.Stat_t or an error if they // couldn't be retrieved. func (f *osFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno experimentalsys.Errno) { if f.cachedSt == nil { @@ -55,19 +52,19 @@ func (f *osFile) cachedStat() (dev uint64, ino sys.Inode, isDir bool, errno expe return f.cachedSt.dev, f.cachedSt.ino, f.cachedSt.isDir, 0 } -// Dev implements the same method as documented on fsapi.File +// Dev implements the same method as documented on sys.File func (f *osFile) Dev() (uint64, experimentalsys.Errno) { dev, _, _, errno := f.cachedStat() return dev, errno } -// Ino implements the same method as documented on fsapi.File +// Ino implements the same method as documented on sys.File func (f *osFile) Ino() (sys.Inode, experimentalsys.Errno) { _, ino, _, errno := f.cachedStat() return ino, errno } -// IsDir implements the same method as documented on fsapi.File +// IsDir implements the same method as documented on sys.File func (f *osFile) IsDir() (bool, experimentalsys.Errno) { _, _, isDir, errno := f.cachedStat() return isDir, errno @@ -75,19 +72,19 @@ func (f *osFile) IsDir() (bool, experimentalsys.Errno) { // IsAppend implements File.IsAppend func (f *osFile) IsAppend() bool { - return f.flag&fsapi.O_APPEND == fsapi.O_APPEND + return f.flag&experimentalsys.O_APPEND == experimentalsys.O_APPEND } -// SetAppend implements the same method as documented on fsapi.File +// SetAppend implements the same method as documented on sys.File func (f *osFile) SetAppend(enable bool) (errno experimentalsys.Errno) { if enable { - f.flag |= fsapi.O_APPEND + f.flag |= experimentalsys.O_APPEND } else { - f.flag &= ^fsapi.O_APPEND + f.flag &= ^experimentalsys.O_APPEND } // Clear any create flag, as we are re-opening, not re-creating. - f.flag &= ^fsapi.O_CREAT + f.flag &= ^experimentalsys.O_CREAT // appendMode (bool) cannot be changed later, so we have to re-open the // file. https://github.com/golang/go/blob/go1.20/src/os/file_unix.go#L60 @@ -99,7 +96,7 @@ var _ reopenFile = (*fsFile)(nil).reopen func (f *osFile) reopen() (errno experimentalsys.Errno) { // Clear any create flag, as we are re-opening, not re-creating. - f.flag &= ^fsapi.O_CREAT + f.flag &= ^experimentalsys.O_CREAT _ = f.close() f.file, errno = OpenFile(f.path, f.flag, f.perm) @@ -114,17 +111,17 @@ func (f *osFile) IsNonblock() bool { // SetNonblock implements the same method as documented on fsapi.File func (f *osFile) SetNonblock(enable bool) (errno experimentalsys.Errno) { if enable { - f.flag |= fsapi.O_NONBLOCK + f.flag |= experimentalsys.O_NONBLOCK } else { - f.flag &= ^fsapi.O_NONBLOCK + f.flag &= ^experimentalsys.O_NONBLOCK } - if err := setNonblock(f.fd, enable); err != nil { - return fileError(f, f.closed, experimentalsys.UnwrapOSError(err)) + if errno = setNonblock(f.fd, enable); errno != 0 { + return fileError(f, f.closed, errno) } return 0 } -// Stat implements the same method as documented on fsapi.File +// Stat implements the same method as documented on sys.File func (f *osFile) Stat() (sys.Stat_t, experimentalsys.Errno) { if f.closed { return sys.Stat_t{}, experimentalsys.EBADF @@ -140,7 +137,7 @@ func (f *osFile) Stat() (sys.Stat_t, experimentalsys.Errno) { return st, errno } -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *osFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len reads. @@ -157,7 +154,7 @@ func (f *osFile) Read(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pread implements the same method as documented on fsapi.File +// Pread implements the same method as documented on sys.File func (f *osFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if n, errno = pread(f.file, buf, off); errno != 0 { // Defer validation overhead until we've already had an error. @@ -166,14 +163,14 @@ func (f *osFile) Pread(buf []byte, off int64) (n int, errno experimentalsys.Errn return } -// Seek implements the same method as documented on fsapi.File +// Seek implements the same method as documented on sys.File func (f *osFile) Seek(offset int64, whence int) (newOffset int64, errno experimentalsys.Errno) { if newOffset, errno = seek(f.file, offset, whence); errno != 0 { // Defer validation overhead until we've already had an error. errno = fileError(f, f.closed, errno) // If the error was trying to rewind a directory, re-open it. Notably, - // seeking to zero on a directory doesn't work on Windows with Go 1.18. + // seeking to zero on a directory doesn't work on Windows with Go 1.19. if errno == experimentalsys.EISDIR && offset == 0 && whence == io.SeekStart { errno = 0 f.reopenDir = true @@ -182,23 +179,14 @@ func (f *osFile) Seek(offset int64, whence int) (newOffset int64, errno experime return } -// PollRead implements the same method as documented on fsapi.File -func (f *osFile) PollRead(timeout *time.Duration) (ready bool, errno experimentalsys.Errno) { - fdSet := platform.FdSet{} - fd := int(f.fd) - fdSet.Set(fd) - nfds := fd + 1 // See https://man7.org/linux/man-pages/man2/select.2.html#:~:text=condition%20has%20occurred.-,nfds,-This%20argument%20should - count, err := _select(nfds, &fdSet, nil, nil, timeout) - if errno = experimentalsys.UnwrapOSError(err); errno != 0 { - // Defer validation overhead until we've already had an error. - errno = fileError(f, f.closed, errno) - } - return count > 0, errno +// Poll implements the same method as documented on fsapi.File +func (f *osFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno experimentalsys.Errno) { + return poll(f.fd, flag, timeoutMillis) } // Readdir implements File.Readdir. Notably, this uses "Readdir", not // "ReadDir", from os.File. -func (f *osFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.Errno) { +func (f *osFile) Readdir(n int) (dirents []experimentalsys.Dirent, errno experimentalsys.Errno) { if f.reopenDir { // re-open the directory if needed. f.reopenDir = false if errno = adjustReaddirErr(f, f.closed, f.reopen()); errno != 0 { @@ -212,7 +200,7 @@ func (f *osFile) Readdir(n int) (dirents []fsapi.Dirent, errno experimentalsys.E return } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *osFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len writes. @@ -226,7 +214,7 @@ func (f *osFile) Write(buf []byte) (n int, errno experimentalsys.Errno) { return } -// Pwrite implements the same method as documented on fsapi.File +// Pwrite implements the same method as documented on sys.File func (f *osFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Errno) { if n, errno = pwrite(f.file, buf, off); errno != 0 { // Defer validation overhead until we've already had an error. @@ -235,7 +223,7 @@ func (f *osFile) Pwrite(buf []byte, off int64) (n int, errno experimentalsys.Err return } -// Truncate implements the same method as documented on fsapi.File +// Truncate implements the same method as documented on sys.File func (f *osFile) Truncate(size int64) (errno experimentalsys.Errno) { if errno = experimentalsys.UnwrapOSError(f.file.Truncate(size)); errno != 0 { // Defer validation overhead until we've already had an error. @@ -244,27 +232,27 @@ func (f *osFile) Truncate(size int64) (errno experimentalsys.Errno) { return } -// Sync implements the same method as documented on fsapi.File +// Sync implements the same method as documented on sys.File func (f *osFile) Sync() experimentalsys.Errno { return fsync(f.file) } -// Datasync implements the same method as documented on fsapi.File +// Datasync implements the same method as documented on sys.File func (f *osFile) Datasync() experimentalsys.Errno { return datasync(f.file) } -// Utimens implements the same method as documented on fsapi.File -func (f *osFile) Utimens(times *[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.File +func (f *osFile) Utimens(atim, mtim int64) experimentalsys.Errno { if f.closed { return experimentalsys.EBADF } - err := futimens(f.fd, times) + err := futimens(f.fd, atim, mtim) return experimentalsys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *osFile) Close() experimentalsys.Errno { if f.closed { return 0 diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go new file mode 100644 index 0000000000..f5c9829529 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll.go @@ -0,0 +1,18 @@ +//go:build windows || linux || darwin + +package sysfs + +import ( + "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" +) + +// poll implements `Poll` as documented on sys.File via a file descriptor. +func poll(fd uintptr, flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + if flag != fsapi.POLLIN { + return false, sys.ENOTSUP + } + fds := []pollFd{newPollFd(fd, _POLLIN, 0)} + count, errno := _poll(fds, timeoutMillis) + return count > 0, errno +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go new file mode 100644 index 0000000000..1f7f890937 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.go @@ -0,0 +1,55 @@ +package sysfs + +import ( + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd int32 + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: int32(fd), events: events, revents: revents} +} + +// _POLLIN subscribes a notification when any readable data is available. +const _POLLIN = 0x0001 + +// _poll implements poll on Darwin via the corresponding libc function. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + var fdptr *pollFd + nfds := len(fds) + if nfds > 0 { + fdptr = &fds[0] + } + n1, _, err := syscall_syscall6( + libc_poll_trampoline_addr, + uintptr(unsafe.Pointer(fdptr)), + uintptr(nfds), + uintptr(int(timeoutMillis)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + return int(n1), sys.UnwrapOSError(err) +} + +// libc_poll_trampoline_addr is the address of the +// `libc_poll_trampoline` symbol, defined in `poll_darwin.s`. +// +// We use this to invoke the syscall through syscall_syscall6 imported below. +var libc_poll_trampoline_addr uintptr + +// Imports the select symbol from libc as `libc_poll`. +// +// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value +// or the "cgo" build flag. See /RATIONALE.md for why. +//go:cgo_import_dynamic libc_poll poll "/usr/lib/libSystem.B.dylib" diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s new file mode 100644 index 0000000000..e04fca583b --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_darwin.s @@ -0,0 +1,8 @@ +// lifted from golang.org/x/sys unix +#include "textflag.h" + +TEXT libc_poll_trampoline<>(SB), NOSPLIT, $0-0 + JMP libc_poll(SB) + +GLOBL ·libc_poll_trampoline_addr(SB), RODATA, $8 +DATA ·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go new file mode 100644 index 0000000000..dab7bb2cab --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_linux.go @@ -0,0 +1,57 @@ +package sysfs + +import ( + "syscall" + "time" + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd int32 + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: int32(fd), events: events, revents: revents} +} + +// _POLLIN subscribes a notification when any readable data is available. +const _POLLIN = 0x0001 + +// _poll implements poll on Linux via ppoll. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + var ts syscall.Timespec + if timeoutMillis >= 0 { + ts = syscall.NsecToTimespec(int64(time.Duration(timeoutMillis) * time.Millisecond)) + } + return ppoll(fds, &ts) +} + +// ppoll is a poll variant that allows to subscribe to a mask of signals. +// However, we do not need such mask, so the corresponding argument is always nil. +func ppoll(fds []pollFd, timespec *syscall.Timespec) (n int, err sys.Errno) { + var fdptr *pollFd + nfd := len(fds) + if nfd != 0 { + fdptr = &fds[0] + } + + n1, _, errno := syscall.Syscall6( + uintptr(syscall.SYS_PPOLL), + uintptr(unsafe.Pointer(fdptr)), + uintptr(nfd), + uintptr(unsafe.Pointer(timespec)), + uintptr(unsafe.Pointer(nil)), // sigmask is currently always ignored + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + + return int(n1), sys.UnwrapOSError(errno) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go new file mode 100644 index 0000000000..ebe8a6fa92 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_unsupported.go @@ -0,0 +1,13 @@ +//go:build !linux && !darwin && !windows + +package sysfs + +import ( + "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" +) + +// poll implements `Poll` as documented on fsapi.File via a file descriptor. +func poll(uintptr, fsapi.Pflag, int32) (bool, sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go new file mode 100644 index 0000000000..82c8b2bafd --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/poll_windows.go @@ -0,0 +1,224 @@ +package sysfs + +import ( + "syscall" + "time" + "unsafe" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +var ( + procWSAPoll = modws2_32.NewProc("WSAPoll") + procGetNamedPipeInfo = kernel32.NewProc("GetNamedPipeInfo") +) + +const ( + // _POLLRDNORM subscribes to normal data for read. + _POLLRDNORM = 0x0100 + // _POLLRDBAND subscribes to priority band (out-of-band) data for read. + _POLLRDBAND = 0x0200 + // _POLLIN subscribes a notification when any readable data is available. + _POLLIN = (_POLLRDNORM | _POLLRDBAND) +) + +// pollFd is the struct to query for file descriptor events using poll. +type pollFd struct { + // fd is the file descriptor. + fd uintptr + // events is a bitmap containing the requested events. + events int16 + // revents is a bitmap containing the returned events. + revents int16 +} + +// newPollFd is a constructor for pollFd that abstracts the platform-specific type of file descriptors. +func newPollFd(fd uintptr, events, revents int16) pollFd { + return pollFd{fd: fd, events: events, revents: revents} +} + +// pollInterval is the interval between each calls to peekNamedPipe in selectAllHandles +const pollInterval = 100 * time.Millisecond + +// _poll implements poll on Windows, for a subset of cases. +// +// fds may contain any number of file handles, but regular files and pipes are only processed for _POLLIN. +// Stdin is a pipe, thus it is checked for readiness when present. Pipes are checked using PeekNamedPipe. +// Regular files always immediately reported as ready, regardless their actual state and timeouts. +// +// If n==0 it will wait for the given timeout duration, but it will return sys.ENOSYS if timeout is nil, +// i.e. it won't block indefinitely. The given ctx is used to allow for cancellation, +// and it is currently used only in tests. +// +// The implementation actually polls every 100 milliseconds (pollInterval) until it reaches the +// given timeout (in millis). +// +// The duration may be negative, in which case it will wait indefinitely. The given ctx is +// used to allow for cancellation, and it is currently used only in tests. +func _poll(fds []pollFd, timeoutMillis int32) (n int, errno sys.Errno) { + if fds == nil { + return -1, sys.ENOSYS + } + + regular, pipes, sockets, errno := partionByFtype(fds) + nregular := len(regular) + if errno != 0 { + return -1, errno + } + + // Ticker that emits at every pollInterval. + tick := time.NewTicker(pollInterval) + tickCh := tick.C + defer tick.Stop() + + // Timer that expires after the given duration. + // Initialize afterCh as nil: the select below will wait forever. + var afterCh <-chan time.Time + if timeoutMillis >= 0 { + // If duration is not nil, instantiate the timer. + after := time.NewTimer(time.Duration(timeoutMillis) * time.Millisecond) + defer after.Stop() + afterCh = after.C + } + + npipes, nsockets, errno := peekAll(pipes, sockets) + if errno != 0 { + return -1, errno + } + count := nregular + npipes + nsockets + if count > 0 { + return count, 0 + } + + for { + select { + case <-afterCh: + return 0, 0 + case <-tickCh: + npipes, nsockets, errno := peekAll(pipes, sockets) + if errno != 0 { + return -1, errno + } + count = nregular + npipes + nsockets + if count > 0 { + return count, 0 + } + } + } +} + +func peekAll(pipes, sockets []pollFd) (npipes, nsockets int, errno sys.Errno) { + npipes, errno = peekPipes(pipes) + if errno != 0 { + return + } + + // Invoke wsaPoll with a 0-timeout to avoid blocking. + // Timeouts are handled in pollWithContext instead. + nsockets, errno = wsaPoll(sockets, 0) + if errno != 0 { + return + } + + count := npipes + nsockets + if count > 0 { + return + } + + return +} + +func peekPipes(fds []pollFd) (n int, errno sys.Errno) { + for _, fd := range fds { + bytes, errno := peekNamedPipe(syscall.Handle(fd.fd)) + if errno != 0 { + return -1, sys.UnwrapOSError(errno) + } + if bytes > 0 { + n++ + } + } + return +} + +// wsaPoll is the WSAPoll function from winsock2. +// +// See https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsapoll +func wsaPoll(fds []pollFd, timeout int) (n int, errno sys.Errno) { + if len(fds) > 0 { + sockptr := &fds[0] + ns, _, e := syscall.SyscallN( + procWSAPoll.Addr(), + uintptr(unsafe.Pointer(sockptr)), + uintptr(len(fds)), + uintptr(timeout)) + if e != 0 { + return -1, sys.UnwrapOSError(e) + } + n = int(ns) + } + return +} + +// ftype is a type of file that can be handled by poll. +type ftype uint8 + +const ( + ftype_regular ftype = iota + ftype_pipe + ftype_socket +) + +// partionByFtype checks the type of each fd in fds and returns 3 distinct partitions +// for regular files, named pipes and sockets. +func partionByFtype(fds []pollFd) (regular, pipe, socket []pollFd, errno sys.Errno) { + for _, pfd := range fds { + t, errno := ftypeOf(pfd.fd) + if errno != 0 { + return nil, nil, nil, errno + } + switch t { + case ftype_regular: + regular = append(regular, pfd) + case ftype_pipe: + pipe = append(pipe, pfd) + case ftype_socket: + socket = append(socket, pfd) + } + } + return +} + +// ftypeOf checks the type of fd and return the corresponding ftype. +func ftypeOf(fd uintptr) (ftype, sys.Errno) { + h := syscall.Handle(fd) + t, err := syscall.GetFileType(h) + if err != nil { + return 0, sys.UnwrapOSError(err) + } + switch t { + case syscall.FILE_TYPE_CHAR, syscall.FILE_TYPE_DISK: + return ftype_regular, 0 + case syscall.FILE_TYPE_PIPE: + if isSocket(h) { + return ftype_socket, 0 + } else { + return ftype_pipe, 0 + } + default: + return ftype_regular, 0 + } +} + +// isSocket returns true if the given file handle +// is a pipe. +func isSocket(fd syscall.Handle) bool { + r, _, errno := syscall.SyscallN( + procGetNamedPipeInfo.Addr(), + uintptr(fd), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil)), + uintptr(unsafe.Pointer(nil))) + return r == 0 || errno != 0 +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go index 1e96e2b4dd..59e331a298 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/readfs.go @@ -2,57 +2,25 @@ package sysfs import ( "io/fs" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" ) -// NewReadFS is used to mask an existing fsapi.FS for reads. Notably, this allows -// the CLI to do read-only mounts of directories the host user can write, but -// doesn't want the guest wasm to. For example, Python libraries shouldn't be -// written to at runtime by the python wasm file. -func NewReadFS(fs fsapi.FS) fsapi.FS { - if _, ok := fs.(*readFS); ok { - return fs - } else if _, ok = fs.(fsapi.UnimplementedFS); ok { - return fs // unimplemented is read-only - } - return &readFS{fs} -} - -type readFS struct { - fsapi.FS -} - -// OpenFile implements the same method as documented on fsapi.FS -func (r *readFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsapi.File, experimentalsys.Errno) { - // TODO: Once the real implementation is complete, move the below to - // /RATIONALE.md. Doing this while the type is unstable creates - // documentation drift as we expect a lot of reshaping meanwhile. - // - // Callers of this function expect to either open a valid file handle, or - // get an error, if they can't. We want to return ENOSYS if opened for - // anything except reads. - // - // Instead, we could return a fake no-op file on O_WRONLY. However, this - // hurts observability because a later write error to that file will be on - // a different source code line than the root cause which is opening with - // an unsupported flag. - // - // The tricky part is os.RD_ONLY is typically defined as zero, so while the - // parameter is named flag, the part about opening read vs write isn't a - // typical bitflag. We can't compare against zero anyway, because even if - // there isn't a current flag to OR in with that, there may be in the - // future. What we do instead is mask the flags about read/write mode and - // check if they are the opposite of read or not. - switch flag & (fsapi.O_RDONLY | fsapi.O_WRONLY | fsapi.O_RDWR) { - case fsapi.O_WRONLY, fsapi.O_RDWR: - if flag&fsapi.O_DIRECTORY != 0 { +type ReadFS struct { + experimentalsys.FS +} + +// OpenFile implements the same method as documented on sys.FS +func (r *ReadFS) OpenFile(path string, flag experimentalsys.Oflag, perm fs.FileMode) (experimentalsys.File, experimentalsys.Errno) { + // Mask the mutually exclusive bits as they determine write mode. + switch flag & (experimentalsys.O_RDONLY | experimentalsys.O_WRONLY | experimentalsys.O_RDWR) { + case experimentalsys.O_WRONLY, experimentalsys.O_RDWR: + // Return the correct error if a directory was opened for write. + if flag&experimentalsys.O_DIRECTORY != 0 { return nil, experimentalsys.EISDIR } return nil, experimentalsys.ENOSYS - default: // fsapi.O_RDONLY (or no flag) so we are ok! + default: // sys.O_RDONLY (integer zero) so we are ok! } f, errno := r.FS.OpenFile(path, flag, perm) @@ -62,80 +30,80 @@ func (r *readFS) OpenFile(path string, flag fsapi.Oflag, perm fs.FileMode) (fsap return &readFile{f}, 0 } -// Mkdir implements the same method as documented on fsapi.FS -func (r *readFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { +// Mkdir implements the same method as documented on sys.FS +func (r *ReadFS) Mkdir(path string, perm fs.FileMode) experimentalsys.Errno { return experimentalsys.EROFS } -// Chmod implements the same method as documented on fsapi.FS -func (r *readFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { +// Chmod implements the same method as documented on sys.FS +func (r *ReadFS) Chmod(path string, perm fs.FileMode) experimentalsys.Errno { return experimentalsys.EROFS } -// Rename implements the same method as documented on fsapi.FS -func (r *readFS) Rename(from, to string) experimentalsys.Errno { +// Rename implements the same method as documented on sys.FS +func (r *ReadFS) Rename(from, to string) experimentalsys.Errno { return experimentalsys.EROFS } -// Rmdir implements the same method as documented on fsapi.FS -func (r *readFS) Rmdir(path string) experimentalsys.Errno { +// Rmdir implements the same method as documented on sys.FS +func (r *ReadFS) Rmdir(path string) experimentalsys.Errno { return experimentalsys.EROFS } -// Link implements the same method as documented on fsapi.FS -func (r *readFS) Link(_, _ string) experimentalsys.Errno { +// Link implements the same method as documented on sys.FS +func (r *ReadFS) Link(_, _ string) experimentalsys.Errno { return experimentalsys.EROFS } -// Symlink implements the same method as documented on fsapi.FS -func (r *readFS) Symlink(_, _ string) experimentalsys.Errno { +// Symlink implements the same method as documented on sys.FS +func (r *ReadFS) Symlink(_, _ string) experimentalsys.Errno { return experimentalsys.EROFS } -// Unlink implements the same method as documented on fsapi.FS -func (r *readFS) Unlink(path string) experimentalsys.Errno { +// Unlink implements the same method as documented on sys.FS +func (r *ReadFS) Unlink(path string) experimentalsys.Errno { return experimentalsys.EROFS } -// Utimens implements the same method as documented on fsapi.FS -func (r *readFS) Utimens(path string, times *[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.FS +func (r *ReadFS) Utimens(path string, atim, mtim int64) experimentalsys.Errno { return experimentalsys.EROFS } // compile-time check to ensure readFile implements api.File. -var _ fsapi.File = (*readFile)(nil) +var _ experimentalsys.File = (*readFile)(nil) type readFile struct { - fsapi.File + experimentalsys.File } -// Write implements the same method as documented on fsapi.File. +// Write implements the same method as documented on sys.File. func (r *readFile) Write([]byte) (int, experimentalsys.Errno) { return 0, r.writeErr() } -// Pwrite implements the same method as documented on fsapi.File. +// Pwrite implements the same method as documented on sys.File. func (r *readFile) Pwrite([]byte, int64) (n int, errno experimentalsys.Errno) { return 0, r.writeErr() } -// Truncate implements the same method as documented on fsapi.File. +// Truncate implements the same method as documented on sys.File. func (r *readFile) Truncate(int64) experimentalsys.Errno { return r.writeErr() } -// Sync implements the same method as documented on fsapi.File. +// Sync implements the same method as documented on sys.File. func (r *readFile) Sync() experimentalsys.Errno { return experimentalsys.EBADF } -// Datasync implements the same method as documented on fsapi.File. +// Datasync implements the same method as documented on sys.File. func (r *readFile) Datasync() experimentalsys.Errno { return experimentalsys.EBADF } -// Utimens implements the same method as documented on fsapi.File. -func (r *readFile) Utimens(*[2]syscall.Timespec) experimentalsys.Errno { +// Utimens implements the same method as documented on sys.File. +func (r *readFile) Utimens(int64, int64) experimentalsys.Errno { return experimentalsys.EBADF } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go index 5ec22539e4..f7d84ef7ae 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go new file mode 100644 index 0000000000..474cc7595e --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/rename_plan9.go @@ -0,0 +1,14 @@ +package sysfs + +import ( + "os" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +func rename(from, to string) sys.Errno { + if from == to { + return 0 + } + return sys.UnwrapOSError(os.Rename(from, to)) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go deleted file mode 100644 index ac0861fda4..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select.go +++ /dev/null @@ -1,36 +0,0 @@ -package sysfs - -import ( - "time" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// _select exposes the select(2) syscall. This is named as such to avoid -// colliding with they keyword select while not exporting the function. -// -// # Notes on Parameters -// -// For convenience, we expose a pointer to a time.Duration instead of a pointer to a syscall.Timeval. -// It must be a pointer because `nil` means "wait forever". -// -// However, notice that select(2) may mutate the pointed Timeval on some platforms, -// for instance if the call returns early. -// -// This implementation *will not* update the pointed time.Duration value accordingly. -// -// See also: https://github.com/golang/sys/blob/master/unix/syscall_unix_test.go#L606-L617 -// -// # Notes on the Syscall -// -// Because this is a blocking syscall, it will also block the carrier thread of the goroutine, -// preventing any means to support context cancellation directly. -// -// There are ways to obviate this issue. We outline here one idea, that is however not currently implemented. -// A common approach to support context cancellation is to add a signal file descriptor to the set, -// e.g. the read-end of a pipe or an eventfd on Linux. -// When the context is canceled, we may unblock a Select call by writing to the fd, causing it to return immediately. -// This however requires to do a bit of housekeeping to hide the "special" FD from the end-user. -func _select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - return syscall_select(n, r, w, e, timeout) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go deleted file mode 100644 index eabf4f455b..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.go +++ /dev/null @@ -1,45 +0,0 @@ -package sysfs - -import ( - "syscall" - "time" - "unsafe" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// syscall_select invokes select on Darwin, with the given timeout Duration. -// We implement our own version instead of relying on syscall.Select because the latter -// only returns the error and discards the result. -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - result, _, errno := syscall_syscall6( - libc_select_trampoline_addr, - uintptr(n), - uintptr(unsafe.Pointer(r)), - uintptr(unsafe.Pointer(w)), - uintptr(unsafe.Pointer(e)), - uintptr(unsafe.Pointer(t)), - 0) - res := int(result) - if errno == 0 { - return res, nil - } - return res, errno -} - -// libc_select_trampoline_addr is the address of the -// `libc_select_trampoline` symbol, defined in `select_darwin.s`. -// -// We use this to invoke the syscall through syscall_syscall6 imported below. -var libc_select_trampoline_addr uintptr - -// Imports the select symbol from libc as `libc_select`. -// -// Note: CGO mechanisms are used in darwin regardless of the CGO_ENABLED value -// or the "cgo" build flag. See /RATIONALE.md for why. -//go:cgo_import_dynamic libc_select select "/usr/lib/libSystem.B.dylib" diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s deleted file mode 100644 index 16e65e8ec6..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_darwin.s +++ /dev/null @@ -1,8 +0,0 @@ -// lifted from golang.org/x/sys unix -#include "textflag.h" - -TEXT libc_select_trampoline<>(SB), NOSPLIT, $0-0 - JMP libc_select(SB) - -GLOBL ·libc_select_trampoline_addr(SB), RODATA, $8 -DATA ·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB) diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go deleted file mode 100644 index aae5e48f66..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_linux.go +++ /dev/null @@ -1,18 +0,0 @@ -package sysfs - -import ( - "syscall" - "time" - - "github.com/tetratelabs/wazero/internal/platform" -) - -// syscall_select invokes select on Unix (unless Darwin), with the given timeout Duration. -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - return syscall.Select(n, (*syscall.FdSet)(r), (*syscall.FdSet)(w), (*syscall.FdSet)(e), t) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go deleted file mode 100644 index 400df900e6..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_unsupported.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build !darwin && !linux && !windows - -package sysfs - -import ( - "time" - - "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" -) - -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - return -1, sys.ENOSYS -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go deleted file mode 100644 index b5c1a1bdb1..0000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/select_windows.go +++ /dev/null @@ -1,173 +0,0 @@ -package sysfs - -import ( - "context" - "syscall" - "time" - "unsafe" - - "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" -) - -// pollInterval is the interval between each calls to peekNamedPipe in selectAllHandles -const pollInterval = 100 * time.Millisecond - -// zeroDuration is the zero value for time.Duration. It is used in selectAllHandles. -var zeroDuration = time.Duration(0) - -// syscall_select emulates the select syscall on Windows, for a subset of cases. -// -// r, w, e may contain any number of file handles, but regular files and pipes are only processed for r (Read). -// Stdin is a pipe, thus it is checked for readiness when present. Pipes are checked using PeekNamedPipe. -// Regular files always immediately report as ready, regardless their actual state and timeouts. -// -// If n==0 it will wait for the given timeout duration, but it will return sys.ENOSYS if timeout is nil, -// i.e. it won't block indefinitely. -// -// Note: ideas taken from https://stackoverflow.com/questions/6839508/test-if-stdin-has-input-for-c-windows-and-or-linux -// PeekNamedPipe: https://learn.microsoft.com/en-us/windows/win32/api/namedpipeapi/nf-namedpipeapi-peeknamedpipe -func syscall_select(n int, r, w, e *platform.FdSet, timeout *time.Duration) (int, error) { - if n == 0 { - // Don't block indefinitely. - if timeout == nil { - return -1, sys.ENOSYS - } - time.Sleep(*timeout) - return 0, nil - } - - n, errno := selectAllHandles(context.TODO(), r, w, e, timeout) - if errno == 0 { - return n, nil - } - return n, errno -} - -// selectAllHandles emulates a general-purpose POSIX select on Windows. -// -// The implementation actually polls every 100 milliseconds until it reaches the given duration. -// The duration may be nil, in which case it will wait undefinely. The given ctx is -// used to allow for cancellation, and it is currently used only in tests. -// -// As indicated in the man page for select [1], r, w, e are modified upon completion: -// -// "Upon successful completion, the pselect() or select() function shall modify the objects pointed to by the readfds, -// writefds, and errorfds arguments to indicate which file descriptors are ready for reading, ready for writing, -// or have an error condition pending, respectively, and shall return the total number of ready descriptors in all the output sets" -// -// However, for our purposes, this may be pedantic because currently we do not check the values of r, w, e -// after the invocation of select; thus, this behavior may be subject to change in the future for the sake of simplicity. -// -// [1]: https://linux.die.net/man/3/select -func selectAllHandles(ctx context.Context, r, w, e *platform.FdSet, duration *time.Duration) (n int, errno sys.Errno) { - r2, w2, e2 := r.Copy(), w.Copy(), e.Copy() - n, errno = peekAllHandles(r2, w2, e2) - // Short circuit when there is an error, there is data or the duration is zero. - if errno != 0 || n > 0 || (duration != nil && *duration == time.Duration(0)) { - r.SetAll(r2) - w.SetAll(w2) - e.SetAll(e2) - return - } - - // Ticker that emits at every pollInterval. - tick := time.NewTicker(pollInterval) - tickCh := tick.C - defer tick.Stop() - - // Timer that expires after the given duration. - // Initialize afterCh as nil: the select below will wait forever. - var afterCh <-chan time.Time - if duration != nil { - // If duration is not nil, instantiate the timer. - after := time.NewTimer(*duration) - defer after.Stop() - afterCh = after.C - } - - for { - select { - case <-ctx.Done(): - r.Zero() - w.Zero() - e.Zero() - return - case <-afterCh: - r.Zero() - w.Zero() - e.Zero() - return - case <-tickCh: - r2, w2, e2 = r.Copy(), w.Copy(), e.Copy() - n, errno = peekAllHandles(r2, w2, e2) - if errno != 0 || n > 0 { - r.SetAll(r2) - w.SetAll(w2) - e.SetAll(e2) - return - } - } - } -} - -func peekAllHandles(r, w, e *platform.FdSet) (int, sys.Errno) { - // pipes are not checked on w, e - w.Pipes().Zero() - e.Pipes().Zero() - - // peek pipes only for reading - errno := peekAllPipes(r.Pipes()) - if errno != 0 { - return 0, errno - } - - _, errno = winsock_select(r.Sockets(), w.Sockets(), e.Sockets(), &zeroDuration) - if errno != 0 { - return 0, errno - } - - return r.Count() + w.Count() + e.Count(), 0 -} - -func peekAllPipes(pipeHandles *platform.WinSockFdSet) sys.Errno { - ready := &platform.WinSockFdSet{} - for i := 0; i < pipeHandles.Count(); i++ { - h := pipeHandles.Get(i) - bytes, errno := peekNamedPipe(h) - if bytes > 0 { - ready.Set(int(h)) - } - if errno != 0 { - return sys.UnwrapOSError(errno) - } - } - *pipeHandles = *ready - return 0 -} - -func winsock_select(r, w, e *platform.WinSockFdSet, timeout *time.Duration) (int, sys.Errno) { - if r.Count() == 0 && w.Count() == 0 && e.Count() == 0 { - return 0, 0 - } - - var t *syscall.Timeval - if timeout != nil { - tv := syscall.NsecToTimeval(timeout.Nanoseconds()) - t = &tv - } - - rp := unsafe.Pointer(r) - wp := unsafe.Pointer(w) - ep := unsafe.Pointer(e) - tp := unsafe.Pointer(t) - - r0, _, err := syscall.SyscallN( - procselect.Addr(), - uintptr(0), // the first argument is ignored and exists only for compat with BSD sockets. - uintptr(rp), - uintptr(wp), - uintptr(ep), - uintptr(tp)) - return int(r0), sys.UnwrapOSError(err) -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go index ea59409943..af739a9082 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock.go @@ -5,7 +5,6 @@ import ( "os" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" "github.com/tetratelabs/wazero/sys" ) @@ -18,10 +17,10 @@ func NewTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock { // baseSockFile implements base behavior for all TCPSock, TCPConn files, // regardless the platform. type baseSockFile struct { - fsapi.UnimplementedFile + experimentalsys.UnimplementedFile } -var _ fsapi.File = (*baseSockFile)(nil) +var _ experimentalsys.File = (*baseSockFile)(nil) // IsDir implements the same method as documented on File.IsDir func (*baseSockFile) IsDir() (bool, experimentalsys.Errno) { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go index 2509a17303..3698f560e0 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_unix.go @@ -7,6 +7,7 @@ import ( "syscall" "github.com/tetratelabs/wazero/experimental/sys" + "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" ) @@ -41,8 +42,9 @@ var _ socketapi.TCPSock = (*tcpListenerFile)(nil) type tcpListenerFile struct { baseSockFile - fd uintptr - addr *net.TCPAddr + fd uintptr + addr *net.TCPAddr + nonblock bool } // Accept implements the same method as documented on socketapi.TCPSock @@ -55,12 +57,7 @@ func (f *tcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { return &tcpConnFile{fd: uintptr(nfd)}, 0 } -// SetNonblock implements the same method as documented on fsapi.File -func (f *tcpListenerFile) SetNonblock(enabled bool) sys.Errno { - return sys.UnwrapOSError(setNonblock(f.fd, enabled)) -} - -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *tcpListenerFile) Close() sys.Errno { return sys.UnwrapOSError(syscall.Close(int(f.fd))) } @@ -70,12 +67,29 @@ func (f *tcpListenerFile) Addr() *net.TCPAddr { return f.addr } +// SetNonblock implements the same method as documented on fsapi.File +func (f *tcpListenerFile) SetNonblock(enabled bool) sys.Errno { + f.nonblock = enabled + return sys.UnwrapOSError(setNonblock(f.fd, enabled)) +} + +// IsNonblock implements the same method as documented on fsapi.File +func (f *tcpListenerFile) IsNonblock() bool { + return f.nonblock +} + +// Poll implements the same method as documented on fsapi.File +func (f *tcpListenerFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} + var _ socketapi.TCPConn = (*tcpConnFile)(nil) type tcpConnFile struct { baseSockFile - fd uintptr + fd uintptr + nonblock bool // closed is true when closed was called. This ensures proper sys.EBADF closed bool @@ -89,12 +103,7 @@ func newTcpConn(tc *net.TCPConn) socketapi.TCPConn { return &tcpConnFile{fd: f.Fd()} } -// SetNonblock implements the same method as documented on fsapi.File -func (f *tcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { - return sys.UnwrapOSError(setNonblock(f.fd, enabled)) -} - -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *tcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { n, err := syscall.Read(int(f.fd), buf) if err != nil { @@ -105,7 +114,7 @@ func (f *tcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { return n, errno } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *tcpConnFile) Write(buf []byte) (n int, errno sys.Errno) { n, err := syscall.Write(int(f.fd), buf) if err != nil { @@ -127,7 +136,7 @@ func (f *tcpConnFile) Recvfrom(p []byte, flags int) (n int, errno sys.Errno) { return n, errno } -// Shutdown implements the same method as documented on fsapi.Conn +// Shutdown implements the same method as documented on sys.Conn func (f *tcpConnFile) Shutdown(how int) sys.Errno { var err error switch how { @@ -141,7 +150,7 @@ func (f *tcpConnFile) Shutdown(how int) sys.Errno { return sys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *tcpConnFile) Close() sys.Errno { return f.close() } @@ -153,3 +162,19 @@ func (f *tcpConnFile) close() sys.Errno { f.closed = true return sys.UnwrapOSError(syscall.Shutdown(int(f.fd), syscall.SHUT_RDWR)) } + +// SetNonblock implements the same method as documented on fsapi.File +func (f *tcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { + f.nonblock = enabled + return sys.UnwrapOSError(setNonblock(f.fd, enabled)) +} + +// IsNonblock implements the same method as documented on fsapi.File +func (f *tcpConnFile) IsNonblock() bool { + return f.nonblock +} + +// Poll implements the same method as documented on fsapi.File +func (f *tcpConnFile) Poll(flag fsapi.Pflag, timeoutMillis int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go index 8e0ab92e54..ed275e6290 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sock_windows.go @@ -5,11 +5,10 @@ package sysfs import ( "net" "syscall" - "time" "unsafe" "github.com/tetratelabs/wazero/experimental/sys" - "github.com/tetratelabs/wazero/internal/platform" + "github.com/tetratelabs/wazero/internal/fsapi" socketapi "github.com/tetratelabs/wazero/internal/sock" ) @@ -19,8 +18,6 @@ const ( MSG_PEEK = 0x2 // _FIONBIO is the flag to set the O_NONBLOCK flag on socket handles using ioctlsocket. _FIONBIO = 0x8004667e - // _WASWOULDBLOCK corresponds to syscall.EWOULDBLOCK in WinSock. - _WASWOULDBLOCK = 10035 ) var ( @@ -28,12 +25,8 @@ var ( modws2_32 = syscall.NewLazyDLL("ws2_32.dll") // procrecvfrom exposes recvfrom from WinSock. procrecvfrom = modws2_32.NewProc("recvfrom") - // procaccept exposes accept from WinSock. - procaccept = modws2_32.NewProc("accept") // procioctlsocket exposes ioctlsocket from WinSock. procioctlsocket = modws2_32.NewProc("ioctlsocket") - // procselect exposes select from WinSock. - procselect = modws2_32.NewProc("select") ) // recvfrom exposes the underlying syscall in Windows. @@ -92,6 +85,16 @@ func syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, sys.Errno)) return } +func _pollSock(conn syscall.Conn, flag fsapi.Pflag, timeoutMillis int32) (bool, sys.Errno) { + if flag != fsapi.POLLIN { + return false, sys.ENOTSUP + } + n, errno := syscallConnControl(conn, func(fd uintptr) (int, sys.Errno) { + return _poll([]pollFd{newPollFd(fd, _POLLIN, 0)}, timeoutMillis) + }) + return n > 0, errno +} + // newTCPListenerFile is a constructor for a socketapi.TCPSock. // // Note: currently the Windows implementation of socketapi.TCPSock @@ -101,9 +104,7 @@ func syscallConnControl(conn syscall.Conn, fn func(fd uintptr) (int, sys.Errno)) // standard library, instead of invoke syscalls/Win32 APIs // because they are sensibly different from Unix's. func newTCPListenerFile(tl *net.TCPListener) socketapi.TCPSock { - w := &winTcpListenerFile{tl: tl} - _ = w.SetNonblock(true) - return w + return &winTcpListenerFile{tl: tl} } var _ socketapi.TCPSock = (*winTcpListenerFile)(nil) @@ -118,17 +119,11 @@ type winTcpListenerFile struct { // Accept implements the same method as documented on socketapi.TCPSock func (f *winTcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { - // Ensure we have an incoming connection using winsock_select. - n, errno := syscallConnControl(f.tl, func(fd uintptr) (int, sys.Errno) { - fdSet := platform.WinSockFdSet{} - fdSet.Set(int(fd)) - t := time.Duration(0) - return winsock_select(&fdSet, nil, nil, &t) - }) - - // Otherwise return immediately. - if n == 0 || errno != 0 { - return nil, sys.EAGAIN + // Ensure we have an incoming connection using winsock_select, otherwise return immediately. + if f.nonblock { + if ready, errno := _pollSock(f.tl, fsapi.POLLIN, 0); !ready || errno != 0 { + return nil, sys.EAGAIN + } } // Accept normally blocks goroutines, but we @@ -141,7 +136,20 @@ func (f *winTcpListenerFile) Accept() (socketapi.TCPConn, sys.Errno) { } } -// IsNonblock implements File.IsNonblock +// Close implements the same method as documented on sys.File +func (f *winTcpListenerFile) Close() sys.Errno { + if !f.closed { + return sys.UnwrapOSError(f.tl.Close()) + } + return 0 +} + +// Addr is exposed for testing. +func (f *winTcpListenerFile) Addr() *net.TCPAddr { + return f.tl.Addr().(*net.TCPAddr) +} + +// IsNonblock implements the same method as documented on fsapi.File func (f *winTcpListenerFile) IsNonblock() bool { return f.nonblock } @@ -155,17 +163,9 @@ func (f *winTcpListenerFile) SetNonblock(enabled bool) sys.Errno { return errno } -// Close implements the same method as documented on fsapi.File -func (f *winTcpListenerFile) Close() sys.Errno { - if !f.closed { - return sys.UnwrapOSError(f.tl.Close()) - } - return 0 -} - -// Addr is exposed for testing. -func (f *winTcpListenerFile) Addr() *net.TCPAddr { - return f.tl.Addr().(*net.TCPAddr) +// Poll implements the same method as documented on fsapi.File +func (f *winTcpListenerFile) Poll(fsapi.Pflag, int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS } var _ socketapi.TCPConn = (*winTcpConnFile)(nil) @@ -189,20 +189,7 @@ func newTcpConn(tc *net.TCPConn) socketapi.TCPConn { return &winTcpConnFile{tc: tc} } -// SetNonblock implements the same method as documented on fsapi.File -func (f *winTcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { - _, errno = syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { - return 0, sys.UnwrapOSError(setNonblockSocket(syscall.Handle(fd), enabled)) - }) - return -} - -// IsNonblock implements File.IsNonblock -func (f *winTcpConnFile) IsNonblock() bool { - return f.nonblock -} - -// Read implements the same method as documented on fsapi.File +// Read implements the same method as documented on sys.File func (f *winTcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { if len(buf) == 0 { return 0, 0 // Short-circuit 0-len reads. @@ -221,7 +208,7 @@ func (f *winTcpConnFile) Read(buf []byte) (n int, errno sys.Errno) { return } -// Write implements the same method as documented on fsapi.File +// Write implements the same method as documented on sys.File func (f *winTcpConnFile) Write(buf []byte) (n int, errno sys.Errno) { if nonBlockingFileWriteSupported && f.IsNonblock() { return syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { @@ -248,7 +235,7 @@ func (f *winTcpConnFile) Recvfrom(p []byte, flags int) (n int, errno sys.Errno) }) } -// Shutdown implements the same method as documented on fsapi.Conn +// Shutdown implements the same method as documented on sys.Conn func (f *winTcpConnFile) Shutdown(how int) sys.Errno { // FIXME: can userland shutdown listeners? var err error @@ -265,7 +252,7 @@ func (f *winTcpConnFile) Shutdown(how int) sys.Errno { return sys.UnwrapOSError(err) } -// Close implements the same method as documented on fsapi.File +// Close implements the same method as documented on sys.File func (f *winTcpConnFile) Close() sys.Errno { return f.close() } @@ -277,3 +264,22 @@ func (f *winTcpConnFile) close() sys.Errno { f.closed = true return f.Shutdown(syscall.SHUT_RDWR) } + +// IsNonblock implements the same method as documented on fsapi.File +func (f *winTcpConnFile) IsNonblock() bool { + return f.nonblock +} + +// SetNonblock implements the same method as documented on fsapi.File +func (f *winTcpConnFile) SetNonblock(enabled bool) (errno sys.Errno) { + f.nonblock = true + _, errno = syscallConnControl(f.tc, func(fd uintptr) (int, sys.Errno) { + return 0, sys.UnwrapOSError(setNonblockSocket(syscall.Handle(fd), enabled)) + }) + return +} + +// Poll implements the same method as documented on fsapi.File +func (f *winTcpConnFile) Poll(fsapi.Pflag, int32) (ready bool, errno sys.Errno) { + return false, sys.ENOSYS +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go index aeb7419716..254e204cd9 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_bsd.go @@ -5,7 +5,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -36,14 +35,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - switch v := info.Sys().(type) { - case *sys.Stat_t: - return v.Ino, 0 - case *syscall.Stat_t: - return v.Ino, 0 - default: - return 0, 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go index 426b2850a4..fd289756de 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_linux.go @@ -8,7 +8,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -39,14 +38,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - switch v := info.Sys().(type) { - case *sys.Stat_t: - return v.Ino, 0 - case *syscall.Stat_t: - return v.Ino, 0 - default: - return 0, 0 - } -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go index b220041582..4b05a89772 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_unsupported.go @@ -5,7 +5,6 @@ package sysfs import ( "io/fs" "os" - "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" "github.com/tetratelabs/wazero/sys" @@ -39,10 +38,3 @@ func stat(path string) (sys.Stat_t, experimentalsys.Errno) { func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } - -func inoFromFileInfo(_ string, info fs.FileInfo) (sys.Inode, experimentalsys.Errno) { - if st, ok := info.Sys().(*syscall.Stat_t); ok { - return st.Ino, 0 - } - return 0, 0 -} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go index db28300bf4..4456dd7828 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/stat_windows.go @@ -4,7 +4,6 @@ package sysfs import ( "io/fs" - "path" "syscall" experimentalsys "github.com/tetratelabs/wazero/experimental/sys" @@ -77,22 +76,6 @@ func statFile(f fs.File) (sys.Stat_t, experimentalsys.Errno) { return defaultStatFile(f) } -// inoFromFileInfo uses stat to get the inode information of the file. -func inoFromFileInfo(dirPath string, info fs.FileInfo) (ino sys.Inode, errno experimentalsys.Errno) { - if dirPath == "" { - // This is a fs.File backed implementation which doesn't have access to - // the original file path. - return - } - // Ino is no not in Win32FileAttributeData - inoPath := path.Clean(path.Join(dirPath, info.Name())) - var st sys.Stat_t - if st, errno = lstat(inoPath); errno == 0 { - ino = st.Ino - } - return -} - func statHandle(h syscall.Handle) (sys.Stat_t, experimentalsys.Errno) { winFt, err := syscall.GetFileType(h) if err != nil { diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go index 0f05ba7764..f288eb25bd 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/sync_windows.go @@ -11,7 +11,7 @@ func fsync(f *os.File) sys.Errno { // Coerce error performing stat on a directory to 0, as it won't work // on Windows. switch errno { - case sys.EACCES /* Go 1.20 */, sys.EBADF /* Go 1.18 */ : + case sys.EACCES /* Go 1.20 */, sys.EBADF /* Go 1.19 */ : if st, err := f.Stat(); err == nil && st.IsDir() { errno = 0 } diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go index 4f20b00ea2..4f7dbe3fe7 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink.go @@ -1,4 +1,4 @@ -//go:build !windows +//go:build !windows && !plan9 package sysfs diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go new file mode 100644 index 0000000000..16ed06ab2a --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_plan9.go @@ -0,0 +1,12 @@ +package sysfs + +import ( + "syscall" + + "github.com/tetratelabs/wazero/experimental/sys" +) + +func unlink(name string) sys.Errno { + err := syscall.Remove(name) + return sys.UnwrapOSError(err) +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go index e247809eec..be31c7b911 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go +++ b/vendor/github.com/tetratelabs/wazero/internal/sysfs/unlink_windows.go @@ -1,5 +1,3 @@ -//go:build windows - package sysfs import ( diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go b/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go index b4af415083..701c2aa4f2 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasip1/errno.go @@ -296,6 +296,8 @@ func ToErrno(errno sys.Errno) Errno { return ErrnoNosys case sys.ENOTDIR: return ErrnoNotdir + case sys.ERANGE: + return ErrnoRange case sys.ENOTEMPTY: return ErrnoNotempty case sys.ENOTSOCK: diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go index 0d03243283..3d483807e4 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/engine.go @@ -36,6 +36,9 @@ type Engine interface { // ModuleEngine implements function calls for a given module. type ModuleEngine interface { + // DoneInstantiation is called at the end of the instantiation of the module. + DoneInstantiation() + // NewFunction returns an api.Function for the given function pointed by the given Index. NewFunction(index Index) api.Function @@ -45,8 +48,11 @@ type ModuleEngine interface { // - `importedModuleEngine` is the ModuleEngine for the imported ModuleInstance. ResolveImportedFunction(index, indexInImportedModule Index, importedModuleEngine ModuleEngine) - // LookupFunction returns the api.Function created from the function in the function table at the given offset. - LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) (api.Function, error) + // ResolveImportedMemory is called when this module imports a memory from another module. + ResolveImportedMemory(importedModuleEngine ModuleEngine) + + // LookupFunction returns the FunctionModule and the Index of the function in the returned ModuleInstance at the given offset in the table. + LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) (*ModuleInstance, Index) // FunctionInstanceReference returns Reference for the given Index for a FunctionInstance. The returned values are used by // the initialization via ElementSegment. diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go index ba65e9a2e3..ded246660d 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/instruction.go @@ -35,7 +35,6 @@ const ( // // See https://www.w3.org/TR/2019/REC-wasm-core-1-20191205/#-hrefsyntax-instr-controlmathsfbrl OpcodeBr Opcode = 0x0c - // ^^ TODO: Add a diagram to help explain br l means that branch into AFTER l for non-loop labels OpcodeBrIf Opcode = 0x0d OpcodeBrTable Opcode = 0x0e diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go index 3e2e21dcd9..ea313e1348 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance.go @@ -4,7 +4,6 @@ import ( "context" "errors" "fmt" - "sync/atomic" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/sys" @@ -12,7 +11,7 @@ import ( // FailIfClosed returns a sys.ExitError if CloseWithExitCode was called. func (m *ModuleInstance) FailIfClosed() (err error) { - if closed := atomic.LoadUint64(&m.Closed); closed != 0 { + if closed := m.Closed.Load(); closed != 0 { switch closed & exitCodeFlagMask { case exitCodeFlagResourceClosed: case exitCodeFlagResourceNotClosed: @@ -108,7 +107,7 @@ func (m *ModuleInstance) CloseWithExitCode(ctx context.Context, exitCode uint32) // IsClosed implements the same method as documented on api.Module. func (m *ModuleInstance) IsClosed() bool { - return atomic.LoadUint64(&m.Closed) != 0 + return m.Closed.Load() != 0 } func (m *ModuleInstance) closeWithExitCodeWithoutClosingResource(exitCode uint32) (err error) { @@ -140,15 +139,14 @@ const ( func (m *ModuleInstance) setExitCode(exitCode uint32, flag exitCodeFlag) bool { closed := flag | uint64(exitCode)<<32 // Store exitCode as high-order bits. - return atomic.CompareAndSwapUint64(&m.Closed, 0, closed) + return m.Closed.CompareAndSwap(0, closed) } // ensureResourcesClosed ensures that resources assigned to ModuleInstance is released. // Only one call will happen per module, due to external atomic guards on Closed. func (m *ModuleInstance) ensureResourcesClosed(ctx context.Context) (err error) { if closeNotifier := m.CloseNotifier; closeNotifier != nil { // experimental - closed := atomic.LoadUint64(&m.Closed) - closeNotifier.CloseNotify(ctx, uint32(closed>>32)) + closeNotifier.CloseNotify(ctx, uint32(m.Closed.Load()>>32)) m.CloseNotifier = nil } diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go new file mode 100644 index 0000000000..442d26a224 --- /dev/null +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/module_instance_lookup.go @@ -0,0 +1,73 @@ +package wasm + +import ( + "context" + "fmt" + + "github.com/tetratelabs/wazero/api" + "github.com/tetratelabs/wazero/internal/internalapi" +) + +// LookupFunction looks up the table by the given index, and returns the api.Function implementation if found, +// otherwise this panics according to the same semantics as call_indirect instruction. +// Currently, this is only used by emscripten which needs to do call_indirect-like operation in the host function. +func (m *ModuleInstance) LookupFunction(t *TableInstance, typeId FunctionTypeID, tableOffset Index) api.Function { + fm, index := m.Engine.LookupFunction(t, typeId, tableOffset) + if source := fm.Source; source.IsHostModule { + // This case, the found function is a host function stored in the table. Generally, Engine.NewFunction are only + // responsible for calling Wasm-defined functions (not designed for calling Go functions!). Hence we need to wrap + // the host function as a special case. + def := &source.FunctionDefinitionSection[index] + goF := source.CodeSection[index].GoFunc + switch typed := goF.(type) { + case api.GoFunction: + // GoFunction doesn't need looked up module. + return &lookedUpGoFunction{def: def, g: goFunctionAsGoModuleFunction(typed)} + case api.GoModuleFunction: + return &lookedUpGoFunction{def: def, lookedUpModule: m, g: typed} + default: + panic(fmt.Sprintf("unexpected GoFunc type: %T", goF)) + } + } else { + return fm.Engine.NewFunction(index) + } +} + +// lookedUpGoFunction implements lookedUpGoModuleFunction. +type lookedUpGoFunction struct { + internalapi.WazeroOnly + def *FunctionDefinition + // lookedUpModule is the *ModuleInstance from which this Go function is looked up, i.e. owner of the table. + lookedUpModule *ModuleInstance + g api.GoModuleFunction +} + +// goFunctionAsGoModuleFunction converts api.GoFunction to api.GoModuleFunction which ignores the api.Module argument. +func goFunctionAsGoModuleFunction(g api.GoFunction) api.GoModuleFunction { + return api.GoModuleFunc(func(ctx context.Context, _ api.Module, stack []uint64) { + g.Call(ctx, stack) + }) +} + +// Definition implements api.Function. +func (l *lookedUpGoFunction) Definition() api.FunctionDefinition { return l.def } + +// Call implements api.Function. +func (l *lookedUpGoFunction) Call(ctx context.Context, params ...uint64) ([]uint64, error) { + typ := l.def.Functype + stackSize := typ.ParamNumInUint64 + rn := typ.ResultNumInUint64 + if rn > stackSize { + stackSize = rn + } + stack := make([]uint64, stackSize) + copy(stack, params) + return stack[:rn], l.CallWithStack(ctx, stack) +} + +// CallWithStack implements api.Function. +func (l *lookedUpGoFunction) CallWithStack(ctx context.Context, stack []uint64) error { + // The Go host function always needs to access caller's module, in this case the one holding the table. + l.g.Call(ctx, l.lookedUpModule, stack) + return nil +} diff --git a/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go b/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go index e853d7fa48..d45d1e0c18 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go +++ b/vendor/github.com/tetratelabs/wazero/internal/wasm/store.go @@ -5,6 +5,7 @@ import ( "encoding/binary" "fmt" "sync" + "sync/atomic" "github.com/tetratelabs/wazero/api" "github.com/tetratelabs/wazero/internal/close" @@ -71,17 +72,6 @@ type ( ModuleInstance struct { internalapi.WazeroOnlyType - // Closed is used both to guard moduleEngine.CloseWithExitCode and to store the exit code. - // - // The update value is closedType + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed. - // - // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. - // See /RATIONALE.md - // - // TODO: Retype this to atomic.Unit64 when Go 1.18 is no longer supported. Until then, keep Closed at the top of - // this struct. See PR #1299 for an implementation and discussion. - Closed uint64 - ModuleName string Exports map[string]*Export Globals []*GlobalInstance @@ -116,6 +106,14 @@ type ( // security implications. Sys *internalsys.Context + // Closed is used both to guard moduleEngine.CloseWithExitCode and to store the exit code. + // + // The update value is closedType + exitCode << 32. This ensures an exit code of zero isn't mistaken for never closed. + // + // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. + // See /RATIONALE.md + Closed atomic.Uint64 + // CodeCloser is non-nil when the code should be closed after this module. CodeCloser api.Closer @@ -143,7 +141,6 @@ type ( Val uint64 // ValHi is only used for vector type globals, and holds the higher bits of the vector. ValHi uint64 - // ^^ TODO: this should be guarded with atomics when mutable } // FunctionTypeID is a uniquely assigned integer for a function type. @@ -156,8 +153,14 @@ type ( const maximumFunctionTypes = 1 << 27 // GetFunctionTypeID is used by emscripten. -func (m *ModuleInstance) GetFunctionTypeID(t *FunctionType) (FunctionTypeID, error) { - return m.s.GetFunctionTypeID(t) +func (m *ModuleInstance) GetFunctionTypeID(t *FunctionType) FunctionTypeID { + id, err := m.s.GetFunctionTypeID(t) + if err != nil { + // This is not recoverable in practice since the only error GetFunctionTypeID returns is + // when there's too many function types in the store. + panic(err) + } + return id } func (m *ModuleInstance) buildElementInstances(elements []ElementSegment) { @@ -383,6 +386,8 @@ func (s *Store) instantiate( return nil, fmt.Errorf("start %s failed: %w", module.funcDesc(SectionIDFunction, funcIdx), err) } } + + m.Engine.DoneInstantiation() return } @@ -451,6 +456,7 @@ func (m *ModuleInstance) resolveImports(module *Module) (err error) { return } m.MemoryInstance = importedMemory + m.Engine.ResolveImportedMemory(importedModule.Engine) case ExternTypeGlobal: expected := i.DescGlobal importedGlobal := importedModule.Globals[imported.Index] diff --git a/vendor/github.com/tetratelabs/wazero/runtime.go b/vendor/github.com/tetratelabs/wazero/runtime.go index 70c63cdaa6..c416be71e5 100644 --- a/vendor/github.com/tetratelabs/wazero/runtime.go +++ b/vendor/github.com/tetratelabs/wazero/runtime.go @@ -159,7 +159,6 @@ func NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime { engine = config.newEngine(ctx, config.enabledFeatures, nil) } store := wasm.NewStore(config.enabledFeatures, engine) - zero := uint64(0) return &runtime{ cache: cacheImpl, store: store, @@ -168,7 +167,6 @@ func NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime { memoryCapacityFromMax: config.memoryCapacityFromMax, dwarfDisabled: config.dwarfDisabled, storeCustomSections: config.storeCustomSections, - closed: &zero, ensureTermination: config.ensureTermination, } } @@ -189,7 +187,7 @@ type runtime struct { // // Note: Exclusively reading and updating this with atomics guarantees cross-goroutine observations. // See /RATIONALE.md - closed *uint64 + closed atomic.Uint64 ensureTermination bool } @@ -259,7 +257,7 @@ func buildFunctionListeners(ctx context.Context, internal *wasm.Module) ([]exper // failIfClosed returns an error if CloseWithExitCode was called implicitly (by Close) or explicitly. func (r *runtime) failIfClosed() error { - if closed := atomic.LoadUint64(r.closed); closed != 0 { + if closed := r.closed.Load(); closed != 0 { return fmt.Errorf("runtime closed with exit_code(%d)", uint32(closed>>32)) } return nil @@ -362,7 +360,7 @@ func (r *runtime) Close(ctx context.Context) error { // Note: it also marks the internal `closed` field func (r *runtime) CloseWithExitCode(ctx context.Context, exitCode uint32) error { closed := uint64(1) + uint64(exitCode)<<32 // Store exitCode as high-order bits. - if !atomic.CompareAndSwapUint64(r.closed, 0, closed) { + if !r.closed.CompareAndSwap(0, closed) { return nil } err := r.store.CloseWithExitCode(ctx, exitCode) diff --git a/vendor/golang.org/x/sync/errgroup/go120.go b/vendor/golang.org/x/sync/errgroup/go120.go index 7d419d3760..f93c740b63 100644 --- a/vendor/golang.org/x/sync/errgroup/go120.go +++ b/vendor/golang.org/x/sync/errgroup/go120.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build go1.20 -// +build go1.20 package errgroup diff --git a/vendor/golang.org/x/sync/errgroup/pre_go120.go b/vendor/golang.org/x/sync/errgroup/pre_go120.go index 1795c18ace..88ce33434e 100644 --- a/vendor/golang.org/x/sync/errgroup/pre_go120.go +++ b/vendor/golang.org/x/sync/errgroup/pre_go120.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. //go:build !go1.20 -// +build !go1.20 package errgroup diff --git a/vendor/modules.txt b/vendor/modules.txt index bdf17c1ca5..228f720b69 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -520,14 +520,14 @@ github.com/moloch--/asciicast # github.com/moloch--/memmod v0.0.0-20211120144554-8b37cc654945 ## explicit; go 1.17 github.com/moloch--/memmod -# github.com/ncruces/go-sqlite3 v0.7.2 -## explicit; go 1.19 +# github.com/ncruces/go-sqlite3 v0.11.2 +## explicit; go 1.21 github.com/ncruces/go-sqlite3 github.com/ncruces/go-sqlite3/driver github.com/ncruces/go-sqlite3/embed github.com/ncruces/go-sqlite3/internal/util github.com/ncruces/go-sqlite3/vfs -# github.com/ncruces/julianday v0.1.5 +# github.com/ncruces/julianday v1.0.0 ## explicit; go 1.17 github.com/ncruces/julianday # github.com/pierrec/lz4/v4 v4.1.18 @@ -670,8 +670,8 @@ github.com/tailscale/wireguard-go/tun # github.com/tcnksm/go-httpstat v0.2.0 ## explicit github.com/tcnksm/go-httpstat -# github.com/tetratelabs/wazero v1.3.1 -## explicit; go 1.18 +# github.com/tetratelabs/wazero v1.5.0 +## explicit; go 1.19 github.com/tetratelabs/wazero github.com/tetratelabs/wazero/api github.com/tetratelabs/wazero/experimental @@ -801,8 +801,8 @@ golang.org/x/net/ipv6 golang.org/x/net/proxy golang.org/x/net/route golang.org/x/net/trace -# golang.org/x/sync v0.4.0 -## explicit; go 1.17 +# golang.org/x/sync v0.5.0 +## explicit; go 1.18 golang.org/x/sync/errgroup # golang.org/x/sys v0.15.0 ## explicit; go 1.18