diff options
author | 2023-07-18 02:07:41 -0700 | |
---|---|---|
committer | 2023-07-18 02:07:41 -0700 | |
commit | df0db54c58008d2a61a0c515a8611a231ae1d541 (patch) | |
tree | d98650c81c7b71c3f1b6116319a1d72d513ae3da | |
parent | 0fd493fd781cfaaa704f08751f4239dd36ec5492 (diff) | |
parent | 661355546a4658ea927bfd70698577c1db301243 (diff) | |
download | bun-df0db54c58008d2a61a0c515a8611a231ae1d541.tar.gz bun-df0db54c58008d2a61a0c515a8611a231ae1d541.tar.zst bun-df0db54c58008d2a61a0c515a8611a231ae1d541.zip |
Merge branch 'main' into jarred/brotli
183 files changed, 8124 insertions, 5158 deletions
diff --git a/.github/workflows/zig-fmt.yml b/.github/workflows/zig-fmt.yml index fa904a07e..1f1c95e36 100644 --- a/.github/workflows/zig-fmt.yml +++ b/.github/workflows/zig-fmt.yml @@ -1,7 +1,7 @@ name: zig-fmt env: - ZIG_VERSION: 0.11.0-dev.3737+9eb008717 + ZIG_VERSION: 0.11.0-dev.4006+bf827d0b5 on: pull_request: diff --git a/Dockerfile b/Dockerfile index 43257fd25..21e54dced 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,7 +12,7 @@ ARG TRIPLET=${ARCH}-linux-gnu ARG BUILDARCH=amd64 ARG WEBKIT_TAG=may20-4 ARG ZIG_TAG=jul1 -ARG ZIG_VERSION="0.11.0-dev.3737+9eb008717" +ARG ZIG_VERSION="0.11.0-dev.4006+bf827d0b5" ARG WEBKIT_BASENAME="bun-webkit-linux-$BUILDARCH" ARG ZIG_FOLDERNAME=zig-linux-${BUILD_MACHINE_ARCH}-${ZIG_VERSION} diff --git a/bench/hot-module-reloading/css-stress-test/color-looper.emotion.zig b/bench/hot-module-reloading/css-stress-test/color-looper.emotion.zig index 02ab05c54..bc3b525d0 100644 --- a/bench/hot-module-reloading/css-stress-test/color-looper.emotion.zig +++ b/bench/hot-module-reloading/css-stress-test/color-looper.emotion.zig @@ -43,7 +43,7 @@ pub fn main() anyerror!void { var position = try std.fmt.parseInt(u32, position_str, 10); const filepath = try std.fs.path.resolve(allocator, &.{basepath}); var file = try std.fs.openFileAbsolute(filepath, .{ .write = true }); - var ms = @truncate(u64, (try std.fmt.parseInt(u128, args[args.len - 1], 10)) * std.time.ns_per_ms); + var ms = @as(u64, @truncate((try std.fmt.parseInt(u128, args[args.len - 1], 10)) * std.time.ns_per_ms)); std.debug.assert(ms > 0); // std.debug.assert(std.math.isFinite(position)); var prng = std.rand.DefaultPrng.init(0); @@ -125,30 +125,30 @@ pub fn main() anyerror!void { ); }; - counters[counter].timestamp = @truncate(u64, @intCast(u128, std.time.nanoTimestamp()) / (std.time.ns_per_ms / 10)); + counters[counter].timestamp = @as(u64, @truncate(@as(u128, @intCast(std.time.nanoTimestamp())) / (std.time.ns_per_ms / 10))); counters[counter].rotate = rotate % 360; counters[counter].percent = std.math.mod(f64, std.math.round(((progress_bar + 1.0) / destination_count) * 1000) / 1000, 100) catch 0; - counters[counter].color_values[0] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[1] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[2] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[0] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[1] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[2] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][2] + 1) % 256))) * 0.8))); counters[counter].color_values[3] = (colors[0][0] + 1) % 256; counters[counter].color_values[4] = (colors[0][1] + 1) % 256; counters[counter].color_values[5] = (colors[0][2] + 1) % 256; - counters[counter].color_values[6] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[7] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[8] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[6] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[7] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[8] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][2] + 1) % 256))) * 0.8))); counters[counter].color_values[9] = (colors[1][0] + 1) % 256; counters[counter].color_values[10] = (colors[1][1] + 1) % 256; counters[counter].color_values[11] = (colors[1][2] + 1) % 256; - counters[counter].color_values[12] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[13] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[14] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[12] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[13] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[14] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][2] + 1) % 256))) * 0.8))); counters[counter].color_values[15] = (colors[2][0] + 1) % 256; counters[counter].color_values[16] = (colors[2][1] + 1) % 256; counters[counter].color_values[17] = (colors[2][2] + 1) % 256; - counters[counter].color_values[18] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[19] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[20] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[18] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[19] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[20] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][2] + 1) % 256))) * 0.8))); counters[counter].color_values[21] = (colors[3][0] + 1) % 256; counters[counter].color_values[22] = (colors[3][1] + 1) % 256; counters[counter].color_values[23] = (colors[3][2] + 1) % 256; diff --git a/bench/hot-module-reloading/css-stress-test/color-looper.zig b/bench/hot-module-reloading/css-stress-test/color-looper.zig index 0509a525b..a1483a2f3 100644 --- a/bench/hot-module-reloading/css-stress-test/color-looper.zig +++ b/bench/hot-module-reloading/css-stress-test/color-looper.zig @@ -43,7 +43,7 @@ pub fn main() anyerror!void { var position = try std.fmt.parseInt(u32, position_str, 10); const filepath = try std.fs.path.resolve(allocator, &.{basepath}); var file = try std.fs.openFileAbsolute(filepath, .{ .write = true }); - var ms = @truncate(u64, (try std.fmt.parseInt(u128, args[args.len - 1], 10)) * std.time.ns_per_ms); + var ms = @as(u64, @truncate((try std.fmt.parseInt(u128, args[args.len - 1], 10)) * std.time.ns_per_ms)); std.debug.assert(ms > 0); // std.debug.assert(std.math.isFinite(position)); var prng = std.rand.DefaultPrng.init(0); @@ -112,30 +112,30 @@ pub fn main() anyerror!void { \\ ++ SIMULATE_LONG_FILE; - counters[counter].timestamp = @truncate(u64, @intCast(u128, std.time.nanoTimestamp()) / (std.time.ns_per_ms / 10)); + counters[counter].timestamp = @as(u64, @truncate(@as(u128, @intCast(std.time.nanoTimestamp())) / (std.time.ns_per_ms / 10))); counters[counter].rotate = rotate % 360; counters[counter].percent = std.math.mod(f64, std.math.round(((progress_bar + 1.0) / destination_count) * 1000) / 1000, 100) catch 0; - counters[counter].color_values[0] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[1] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[2] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[0][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[0] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[1] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[2] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[0][2] + 1) % 256))) * 0.8))); counters[counter].color_values[3] = (colors[0][0] + 1) % 256; counters[counter].color_values[4] = (colors[0][1] + 1) % 256; counters[counter].color_values[5] = (colors[0][2] + 1) % 256; - counters[counter].color_values[6] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[7] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[8] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[1][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[6] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[7] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[8] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[1][2] + 1) % 256))) * 0.8))); counters[counter].color_values[9] = (colors[1][0] + 1) % 256; counters[counter].color_values[10] = (colors[1][1] + 1) % 256; counters[counter].color_values[11] = (colors[1][2] + 1) % 256; - counters[counter].color_values[12] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[13] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[14] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[2][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[12] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[13] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[14] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[2][2] + 1) % 256))) * 0.8))); counters[counter].color_values[15] = (colors[2][0] + 1) % 256; counters[counter].color_values[16] = (colors[2][1] + 1) % 256; counters[counter].color_values[17] = (colors[2][2] + 1) % 256; - counters[counter].color_values[18] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][0] + 1) % 256)) * 0.8)); - counters[counter].color_values[19] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][1] + 1) % 256)) * 0.8)); - counters[counter].color_values[20] = @intFromFloat(u32, std.math.round(@floatFromInt(f64, ((colors[3][2] + 1) % 256)) * 0.8)); + counters[counter].color_values[18] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][0] + 1) % 256))) * 0.8))); + counters[counter].color_values[19] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][1] + 1) % 256))) * 0.8))); + counters[counter].color_values[20] = @as(u32, @intFromFloat(std.math.round(@as(f64, @floatFromInt(((colors[3][2] + 1) % 256))) * 0.8))); counters[counter].color_values[21] = (colors[3][0] + 1) % 256; counters[counter].color_values[22] = (colors[3][1] + 1) % 256; counters[counter].color_values[23] = (colors[3][2] + 1) % 256; diff --git a/docs/api/workers.md b/docs/api/workers.md index 79a230714..f68bf9450 100644 --- a/docs/api/workers.md +++ b/docs/api/workers.md @@ -1,15 +1,21 @@ -[`Worker`](https://developer.mozilla.org/en-US/docs/Web/API/Worker) lets you start and communicate with a new JavaScript instance running on a separate thread while sharing I/O resources with the main thread. You can use TypeScript, CommonJS, ESM, JSX, etc in your workers. `Worker` support was added in Bun v0.6.15. +{% callout %} +`Worker` support was added in Bun v0.6.15. +{% /callout %} -Bun implements a minimal version of the [Web Workers API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) with extensions that make it work better for server-side use cases. +[`Worker`](https://developer.mozilla.org/en-US/docs/Web/API/Worker) lets you start and communicate with a new JavaScript instance running on a separate thread while sharing I/O resources with the main thread. -## Usage +Bun implements a minimal version of the [Web Workers API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) with extensions that make it work better for server-side use cases. Like the rest of Bun, `Worker` in Bun support CommonJS, ES Modules, TypeScript, JSX, TSX and more out of the box. No extra build steps are necessary. + +## Creating a `Worker` Like in browsers, [`Worker`](https://developer.mozilla.org/en-US/docs/Web/API/Worker) is a global. Use it to create a new worker thread. -Main thread: +From the main thread: + +```js#Main_thread +const workerURL = new URL("worker.ts", import.meta.url).href; +const worker = new Worker(workerURL); -```js -const worker = new Worker(new URL("worker.ts", import.meta.url).href); worker.postMessage("hello"); worker.onmessage = event => { console.log(event.data); @@ -18,18 +24,37 @@ worker.onmessage = event => { Worker thread: -{% codetabs %} - -```ts#worker.ts +```ts#worker.ts_(Worker_thread) self.onmessage = (event: MessageEvent) => { console.log(event.data); postMessage("world"); }; ``` -{% /codetabs %} +You can use `import`/`export` syntax in your worker code. Unlike in browsers, there's no need to specify `{type: "module"}` to use ES Modules. + +To simplify error handling, the initial script to load is resolved at the time `new Worker(url)` is called. + +```js +const worker = new Worker("/not-found.js"); +// throws an error immediately +``` + +The specifier passed to `Worker` is resolved relative to the project root (like typing `bun ./path/to/file.js`). + +### `"open"` + +The `"open"` event is emitted when a worker is created and ready to receive messages. This can be used to send an initial message to a worker once it's ready. (This event does not exist in browsers.) + +```ts +const worker = new Worker(new URL("worker.ts", import.meta.url).href); + +worker.addEventListener("open", () => { + console.log("worker is ready"); +}); +``` -### Sending & receiving messages with `postMessage` +## Messages with `postMessage` To send messages, use [`worker.postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Worker/postMessage) and [`self.postMessage`](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage). This leverages the [HTML Structured Clone Algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm). @@ -59,7 +84,7 @@ worker.addEventListener("message", = event => { // worker.onmessage = fn ``` -### Terminating a worker +## Terminating a worker A `Worker` instance terminate automatically when Bun's process exits. To terminate a `Worker` sooner, call `worker.terminate()`. @@ -70,16 +95,38 @@ const worker = new Worker(new URL("worker.ts", import.meta.url).href); worker.terminate(); ``` -### Managing lifetime with `worker.ref` and `worker.unref` +### `process.exit()` + +A worker can terminate itself with `process.exit()`. This does not terminate the main process. Like in Node.js, `process.on('beforeExit', callback)` and `process.on('exit', callback)` are emitted on the worker thread (and not on the main thread). + +### `"close"` + +The `"close"` event is emitted when a worker has been terminated. It can take some time for the worker to actually terminate, so this event is emitted when the worker has been marked as terminated. + +```ts +const worker = new Worker(new URL("worker.ts", import.meta.url).href); + +worker.addEventListener("close", () => { + console.log("worker is being closed"); +}); +``` + +This event does not exist in browsers. + +## Managing lifetime + +By default, an active `Worker` will _not_ keep the main (spawning) process alive. Once the main script finishes, the main thread will terminate, shutting down any workers it created. + +### `worker.ref` -By default, a `Worker` will **not** keep the process alive. To keep the process alive until the `Worker` terminates, call `worker.ref()`. +To keep the process alive until the `Worker` terminates, call `worker.ref()`. This couples the lifetime of the worker to the lifetime of the main process. ```ts const worker = new Worker(new URL("worker.ts", import.meta.url).href); worker.ref(); ``` -You can also pass an `options` object to `Worker`: +Alternatively, you can also pass an `options` object to `Worker`: ```ts const worker = new Worker(new URL("worker.ts", import.meta.url).href, { @@ -89,6 +136,8 @@ const worker = new Worker(new URL("worker.ts", import.meta.url).href, { }); ``` +### `worker.unref` + To stop keeping the process alive, call `worker.unref()`. ```ts @@ -100,11 +149,9 @@ worker.unref(); Note: `worker.ref()` and `worker.unref()` do not exist in browsers. -### Memory Usage - -JavaScript instances sometimes use a lot of memory. +## Memory usage with `smol` -Bun's `Worker` supports a `smol` mode that reduces memory usage, at a cost of performance. To enable `smol` mode, pass `smol: true` to the `options` object in the `Worker` constructor. +JavaScript instances can use a lot of memory. Bun's `Worker` supports a `smol` mode that reduces memory usage, at a cost of performance. To enable `smol` mode, pass `smol: true` to the `options` object in the `Worker` constructor. ```js const worker = new Worker("./i-am-smol.ts", { @@ -114,49 +161,6 @@ const worker = new Worker("./i-am-smol.ts", { }); ``` -#### What does `smol` mode actually do? - -It sets ` JSC::HeapSize` to be `Small` instead of the default `Large` - -### Worker supports ES Modules, CommonJS, TypeScript, JSX, etc - -Like the rest of Bun, `Worker` in Bun support CommonJS, ES Modules, TypeScript, JSX, TSX and more out of the box. No extra build steps are necessary. You can use `import` and `export` in your worker code. This is different than browsers, where `"type": "module"` is necessary to use ES Modules. - -To simplify error handling, the initial script to load is resolved at the time `new Worker(url)` is called. - -```js -const worker = new Worker("/not-found.js"); -// throws an error immediately -``` - -The specifier passed to `Worker` is resolved relative to the project root (like typing `bun ./path/to/file.js`). - -### `"open"` event - -The `"open"` event is emitted when a worker is created and ready to receive messages. - -```ts -const worker = new Worker(new URL("worker.ts", import.meta.url).href); -worker.addEventListener("open", () => { - console.log("worker is ready"); -}); -``` - -This event does not exist in browsers. - -### `"close"` event - -The `"close"` event is emitted when a worker has been terminated. It can take some time for the worker to actually terminate, so this event is emitted when the worker has been marked as terminated. - -```ts -const worker = new Worker(new URL("worker.ts", import.meta.url).href); -worker.addEventListener("close", () => { - console.log("worker is ready"); -}); -``` - -This event does not exist in browsers. - -### `process.exit()` inside a worker - -Calling `process.exit()` in a Worker terminates the worker, but does not terminate the main process. Like in Node.js, `process.on('beforeExit', callback)` and `process.on('exit', callback)` are emitted on the worker thread (and not on the main thread). +{% details summary="What does `smol` mode actually do?" %} +Setting `smol: true` sets `JSC::HeapSize` to be `Small` instead of the default `Large`. +{% /details %} diff --git a/docs/project/development.md b/docs/project/development.md index 29bb09f63..4849f1780 100644 --- a/docs/project/development.md +++ b/docs/project/development.md @@ -112,7 +112,7 @@ Zig can be installed either with our npm package [`@oven/zig`](https://www.npmjs ```bash $ bun install -g @oven/zig -$ zigup 0.11.0-dev.3737+9eb008717 +$ zigup 0.11.0-dev.4006+bf827d0b5 ``` ## Building diff --git a/docs/runtime/hot.md b/docs/runtime/hot.md index d68a9ebea..0797187de 100644 --- a/docs/runtime/hot.md +++ b/docs/runtime/hot.md @@ -7,7 +7,6 @@ Bun supports two kinds of automatic reloading via CLI flags: Watch mode can be used with `bun test` or when running TypeScript, JSX, and JavaScript files. - To run a file in `--watch` mode: ```bash @@ -17,7 +16,7 @@ $ bun --watch index.tsx To run your tests in `--watch` mode: ```bash -$ bun --watch test +$ bun --watch test ``` In `--watch` mode, Bun keeps track of all imported files and watches them for changes. When a change is detected, Bun restarts the process, preserving the same set of CLI arguments and environment variables used in the initial run. If Bun crashes, `--watch` will attempt to automatically restart the process. @@ -58,7 +57,7 @@ serve({ Running `bun test` in watch mode and `save-on-keypress` enabled: ```bash -$ bun --watch test +$ bun --watch test ```  diff --git a/docs/runtime/nodejs-apis.md b/docs/runtime/nodejs-apis.md index 79b01ebff..fdb50f180 100644 --- a/docs/runtime/nodejs-apis.md +++ b/docs/runtime/nodejs-apis.md @@ -200,7 +200,7 @@ This page is updated regularly to reflect compatibility status of the latest ver - {% anchor id="node_tls" %} [`node:tls`](https://nodejs.org/api/tls.html) {% /anchor %} - 🟡 -- Missing `tls.createSecurePair` `tls.checkServerIdentity` `tls.rootCertificates` +- Missing `tls.createSecurePair` `tls.rootCertificates` --- diff --git a/docs/test/writing.md b/docs/test/writing.md index 6a29bf81f..e5e3fe1b0 100644 --- a/docs/test/writing.md +++ b/docs/test/writing.md @@ -70,7 +70,7 @@ Optionally specify a per-test timeout in milliseconds by passing a number as the ```ts import { test } from "bun:test"; -test.skip("wat", async () => { +test("wat", async () => { const data = await slowOperation(); expect(data).toBe(42); }, 500); // test must run in <500ms diff --git a/misctools/fetch.zig b/misctools/fetch.zig index 5ac701250..e450ab5d3 100644 --- a/misctools/fetch.zig +++ b/misctools/fetch.zig @@ -91,7 +91,7 @@ pub const Arguments = struct { var raw_args: std.ArrayListUnmanaged(string) = undefined; if (positionals.len > 0) { - raw_args = .{ .capacity = positionals.len, .items = @ptrFromInt([*][]const u8, @intFromPtr(positionals.ptr))[0..positionals.len] }; + raw_args = .{ .capacity = positionals.len, .items = @as([*][]const u8, @ptrFromInt(@intFromPtr(positionals.ptr)))[0..positionals.len] }; } else { raw_args = .{}; } diff --git a/misctools/http_bench.zig b/misctools/http_bench.zig index 5847399a1..1759e630d 100644 --- a/misctools/http_bench.zig +++ b/misctools/http_bench.zig @@ -95,7 +95,7 @@ pub const Arguments = struct { var raw_args: std.ArrayListUnmanaged(string) = undefined; if (positionals.len > 0) { - raw_args = .{ .capacity = positionals.len, .items = @ptrFromInt([*][]const u8, @intFromPtr(positionals.ptr))[0..positionals.len] }; + raw_args = .{ .capacity = positionals.len, .items = @as([*][]const u8, @ptrFromInt(@intFromPtr(positionals.ptr)))[0..positionals.len] }; } else { raw_args = .{}; } @@ -244,7 +244,7 @@ pub fn main() anyerror!void { const http = channel.readItem() catch continue; read_count += 1; - Output.printElapsed(@floatCast(f64, @floatFromInt(f128, http.elapsed) / std.time.ns_per_ms)); + Output.printElapsed(@as(f64, @floatCast(@as(f128, @floatFromInt(http.elapsed)) / std.time.ns_per_ms))); if (http.response) |resp| { if (resp.status_code == 200) { success_count += 1; @@ -270,7 +270,7 @@ pub fn main() anyerror!void { http.client.url.href, http.response_buffer.list.items.len, }); - Output.printElapsed(@floatCast(f64, @floatFromInt(f128, http.gzip_elapsed) / std.time.ns_per_ms)); + Output.printElapsed(@as(f64, @floatCast(@as(f128, @floatFromInt(http.gzip_elapsed)) / std.time.ns_per_ms))); Output.prettyError("<d> gzip)<r>\n", .{}); } else { Output.prettyError(" <d>{s}<r><d> - {s}<r> <d>({d} bytes)<r>\n", .{ @@ -295,7 +295,7 @@ pub fn main() anyerror!void { fail_count, }); - Output.printElapsed(@floatCast(f64, @floatFromInt(f128, timer.read()) / std.time.ns_per_ms)); + Output.printElapsed(@as(f64, @floatCast(@as(f128, @floatFromInt(timer.read())) / std.time.ns_per_ms))); Output.prettyErrorln(" {d} requests", .{ read_count, }); diff --git a/src/ArenaAllocator.zig b/src/ArenaAllocator.zig index 999ea4142..2ccb08d19 100644 --- a/src/ArenaAllocator.zig +++ b/src/ArenaAllocator.zig @@ -49,7 +49,7 @@ pub const ArenaAllocator = struct { // this has to occur before the free because the free frees node const next_it = node.next; const align_bits = std.math.log2_int(usize, @alignOf(BufNode)); - const alloc_buf = @ptrCast([*]u8, node)[0..node.data]; + const alloc_buf = @as([*]u8, @ptrCast(node))[0..node.data]; self.child_allocator.rawFree(alloc_buf, align_bits, @returnAddress()); it = next_it; } @@ -129,7 +129,7 @@ pub const ArenaAllocator = struct { const next_it = node.next; if (next_it == null) break node; - const alloc_buf = @ptrCast([*]u8, node)[0..node.data]; + const alloc_buf = @as([*]u8, @ptrCast(node))[0..node.data]; self.child_allocator.rawFree(alloc_buf, align_bits, @returnAddress()); it = next_it; } else null; @@ -141,7 +141,7 @@ pub const ArenaAllocator = struct { // perfect, no need to invoke the child_allocator if (first_node.data == total_size) return true; - const first_alloc_buf = @ptrCast([*]u8, first_node)[0..first_node.data]; + const first_alloc_buf = @as([*]u8, @ptrCast(first_node))[0..first_node.data]; if (self.child_allocator.rawResize(first_alloc_buf, align_bits, total_size, @returnAddress())) { // successful resize first_node.data = total_size; @@ -152,7 +152,7 @@ pub const ArenaAllocator = struct { return false; }; self.child_allocator.rawFree(first_alloc_buf, align_bits, @returnAddress()); - const node = @ptrCast(*BufNode, @alignCast(@alignOf(BufNode), new_ptr)); + const node = @as(*BufNode, @ptrCast(@alignCast(new_ptr))); node.* = .{ .data = total_size }; self.state.buffer_list.first = node; } @@ -167,7 +167,7 @@ pub const ArenaAllocator = struct { const log2_align = comptime std.math.log2_int(usize, @alignOf(BufNode)); const ptr = self.child_allocator.rawAlloc(len, log2_align, @returnAddress()) orelse return null; - const buf_node = @ptrCast(*BufNode, @alignCast(@alignOf(BufNode), ptr)); + const buf_node = @as(*BufNode, @ptrCast(@alignCast(ptr))); buf_node.* = .{ .data = len }; self.state.buffer_list.prepend(buf_node); self.state.end_index = 0; @@ -175,16 +175,16 @@ pub const ArenaAllocator = struct { } fn alloc(ctx: *anyopaque, n: usize, log2_ptr_align: u8, ra: usize) ?[*]u8 { - const self = @ptrCast(*ArenaAllocator, @alignCast(@alignOf(ArenaAllocator), ctx)); + const self = @as(*ArenaAllocator, @ptrCast(@alignCast(ctx))); _ = ra; - const ptr_align = @as(usize, 1) << @intCast(Allocator.Log2Align, log2_ptr_align); + const ptr_align = @as(usize, 1) << @as(Allocator.Log2Align, @intCast(log2_ptr_align)); var cur_node = if (self.state.buffer_list.first) |first_node| first_node else (self.createNode(0, n + ptr_align) orelse return null); while (true) { - const cur_alloc_buf = @ptrCast([*]u8, cur_node)[0..cur_node.data]; + const cur_alloc_buf = @as([*]u8, @ptrCast(cur_node))[0..cur_node.data]; const cur_buf = cur_alloc_buf[@sizeOf(BufNode)..]; const addr = @intFromPtr(cur_buf.ptr) + self.state.end_index; const adjusted_addr = mem.alignForward(usize, addr, ptr_align); @@ -209,12 +209,12 @@ pub const ArenaAllocator = struct { } fn resize(ctx: *anyopaque, buf: []u8, log2_buf_align: u8, new_len: usize, ret_addr: usize) bool { - const self = @ptrCast(*ArenaAllocator, @alignCast(@alignOf(ArenaAllocator), ctx)); + const self = @as(*ArenaAllocator, @ptrCast(@alignCast(ctx))); _ = log2_buf_align; _ = ret_addr; const cur_node = self.state.buffer_list.first orelse return false; - const cur_buf = @ptrCast([*]u8, cur_node)[@sizeOf(BufNode)..cur_node.data]; + const cur_buf = @as([*]u8, @ptrCast(cur_node))[@sizeOf(BufNode)..cur_node.data]; if (@intFromPtr(cur_buf.ptr) + self.state.end_index != @intFromPtr(buf.ptr) + buf.len) { // It's not the most recent allocation, so it cannot be expanded, // but it's fine if they want to make it smaller. @@ -236,10 +236,10 @@ pub const ArenaAllocator = struct { _ = log2_buf_align; _ = ret_addr; - const self = @ptrCast(*ArenaAllocator, @alignCast(@alignOf(ArenaAllocator), ctx)); + const self = @as(*ArenaAllocator, @ptrCast(@alignCast(ctx))); const cur_node = self.state.buffer_list.first orelse return; - const cur_buf = @ptrCast([*]u8, cur_node)[@sizeOf(BufNode)..cur_node.data]; + const cur_buf = @as([*]u8, @ptrCast(cur_node))[@sizeOf(BufNode)..cur_node.data]; if (@intFromPtr(cur_buf.ptr) + self.state.end_index == @intFromPtr(buf.ptr) + buf.len) { self.state.end_index -= buf.len; diff --git a/src/allocators.zig b/src/allocators.zig index 1d3b30c0b..facab925e 100644 --- a/src/allocators.zig +++ b/src/allocators.zig @@ -13,8 +13,8 @@ pub fn sliceRange(slice: []const u8, buffer: []const u8) ?[2]u32 { return if (@intFromPtr(buffer.ptr) <= @intFromPtr(slice.ptr) and (@intFromPtr(slice.ptr) + slice.len) <= (@intFromPtr(buffer.ptr) + buffer.len)) [2]u32{ - @truncate(u32, @intFromPtr(slice.ptr) - @intFromPtr(buffer.ptr)), - @truncate(u32, slice.len), + @as(u32, @truncate(@intFromPtr(slice.ptr) - @intFromPtr(buffer.ptr))), + @as(u32, @truncate(slice.len)), } else null; @@ -427,7 +427,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type var result = IndexType{ .index = std.math.maxInt(u31), .is_overflow = instance.slice_buf_used > max_index }; if (result.is_overflow) { - result.index = @intCast(u31, self.overflow_list.len()); + result.index = @as(u31, @intCast(self.overflow_list.len())); } else { result.index = instance.slice_buf_used; instance.slice_buf_used += 1; @@ -693,7 +693,7 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, comptime store_ if (!result.index.is_overflow) { instance.key_list_slices[result.index.index] = slice; } else { - if (@intCast(u31, instance.key_list_overflow.items.len) > result.index.index) { + if (@as(u31, @intCast(instance.key_list_overflow.items.len)) > result.index.index) { const existing_slice = instance.key_list_overflow.items[result.index.index]; if (!isKeyStaticallyAllocated(existing_slice)) { self.map.allocator.free(existing_slice); diff --git a/src/analytics/analytics_schema.zig b/src/analytics/analytics_schema.zig index 5332a4837..fbcc26fb0 100644 --- a/src/analytics/analytics_schema.zig +++ b/src/analytics/analytics_schema.zig @@ -93,7 +93,7 @@ pub const Reader = struct { }, .Enum => |type_info| { const enum_values = try this.read(length * @sizeOf(type_info.tag_type)); - return @ptrCast([*]T, enum_values.ptr)[0..length]; + return @as([*]T, @ptrCast(enum_values.ptr))[0..length]; }, else => {}, } @@ -156,7 +156,7 @@ pub const Reader = struct { .Packed => { const sizeof = @sizeOf(T); var slice = try this.read(sizeof); - return @ptrCast(*align(1) T, slice[0..sizeof]).*; + return @as(*align(1) T, @ptrCast(slice[0..sizeof])).*; }, else => {}, } @@ -264,7 +264,7 @@ pub fn Writer(comptime WritableStream: type) type { } pub fn writeArray(this: *Self, comptime T: type, slice: anytype) !void { - try this.writeInt(@truncate(u32, slice.len)); + try this.writeInt(@as(u32, @truncate(slice.len))); switch (T) { u8 => { diff --git a/src/analytics/analytics_thread.zig b/src/analytics/analytics_thread.zig index 998f5cfc2..62e5d8760 100644 --- a/src/analytics/analytics_thread.zig +++ b/src/analytics/analytics_thread.zig @@ -95,7 +95,7 @@ pub const Features = struct { pub const Serializer = struct { inline fn shiftIndex(index: u32) !u32 { - return @intCast(u32, @as(Bitset.MaskInt, 1) << @intCast(Bitset.ShiftInt, index)); + return @as(u32, @intCast(@as(Bitset.MaskInt, 1) << @as(Bitset.ShiftInt, @intCast(index)))); } fn writeField(comptime WriterType: type, writer: WriterType, field_name: string, index: u32) !void { @@ -200,7 +200,7 @@ pub const Event = struct { pub fn init(comptime name: EventName) Event { const millis = std.time.milliTimestamp(); - const timestamp = if (millis < 0) 0 else @intCast(u64, millis); + const timestamp = if (millis < 0) 0 else @as(u64, @intCast(millis)); return Event{ .timestamp = timestamp, .data = @unionInit(Data, @tagName(name), {}) }; } @@ -239,7 +239,7 @@ pub const GenerateHeader = struct { return Analytics.EventListHeader{ .machine_id = GenerateMachineID.forMac() catch Analytics.Uint64{}, .platform = GeneratePlatform.forMac(), - .build_id = comptime @truncate(u32, Global.build_id), + .build_id = comptime @as(u32, @truncate(Global.build_id)), .session_id = random.random().int(u32), .project_id = project_id, }; @@ -249,7 +249,7 @@ pub const GenerateHeader = struct { return Analytics.EventListHeader{ .machine_id = GenerateMachineID.forLinux() catch Analytics.Uint64{}, .platform = GeneratePlatform.forLinux(), - .build_id = comptime @truncate(u32, Global.build_id), + .build_id = comptime @as(u32, @truncate(Global.build_id)), .session_id = random.random().int(u32), .project_id = project_id, }; @@ -380,10 +380,10 @@ fn spawn() !void {} const headers_buf: string = "Content-Type binary/peechy"; const header_entry = Headers.Kv{ - .name = .{ .offset = 0, .length = @intCast(u32, "Content-Type".len) }, + .name = .{ .offset = 0, .length = @as(u32, @intCast("Content-Type".len)) }, .value = .{ .offset = std.mem.indexOf(u8, headers_buf, "binary/peechy").?, - .length = @intCast(u32, "binary/peechy".len), + .length = @as(u32, @intCast("binary/peechy".len)), }, }; @@ -435,7 +435,7 @@ pub const EventList = struct { in_buffer: MutableString, pub fn init() EventList { - random = std.rand.DefaultPrng.init(@intCast(u64, std.time.milliTimestamp())); + random = std.rand.DefaultPrng.init(@as(u64, @intCast(std.time.milliTimestamp()))); return EventList{ .header = GenerateHeader.generate(), .events = std.ArrayList(Event).init(default_allocator), @@ -472,12 +472,12 @@ pub const EventList = struct { 0; const now = std.time.nanoTimestamp(); - this.header.session_length = @truncate(u32, @intCast(u64, (now - start_time)) / std.time.ns_per_ms); + this.header.session_length = @as(u32, @truncate(@as(u64, @intCast((now - start_time))) / std.time.ns_per_ms)); this.header.feature_usage = Features.toInt(); var list = Analytics.EventList{ .header = this.header, - .event_count = @intCast(u32, this.events.items.len), + .event_count = @as(u32, @intCast(this.events.items.len)), }; try list.encode(&analytics_writer); @@ -540,8 +540,8 @@ pub const EventList = struct { } @atomicStore(bool, &is_stuck, retry_remaining == 0, .Release); - stuck_count += @intCast(u8, @intFromBool(retry_remaining == 0)); - stuck_count *= @intCast(u8, @intFromBool(retry_remaining == 0)); + stuck_count += @as(u8, @intCast(@intFromBool(retry_remaining == 0))); + stuck_count *= @as(u8, @intCast(@intFromBool(retry_remaining == 0))); disabled = disabled or stuck_count > 4; this.in_buffer.reset(); diff --git a/src/api/schema.zig b/src/api/schema.zig index ec8efa9f6..94f2d22df 100644 --- a/src/api/schema.zig +++ b/src/api/schema.zig @@ -93,7 +93,7 @@ pub const Reader = struct { }, .Enum => |type_info| { const enum_values = try this.read(length * @sizeOf(type_info.tag_type)); - return @ptrCast([*]T, enum_values.ptr)[0..length]; + return @as([*]T, @ptrCast(enum_values.ptr))[0..length]; }, else => {}, } @@ -156,7 +156,7 @@ pub const Reader = struct { .Packed => { const sizeof = @sizeOf(T); var slice = try this.read(sizeof); - return @ptrCast(*align(1) T, slice[0..sizeof]).*; + return @as(*align(1) T, @ptrCast(slice[0..sizeof])).*; }, else => {}, } @@ -264,7 +264,7 @@ pub fn Writer(comptime WritableStream: type) type { } pub fn writeArray(this: *Self, comptime T: type, slice: anytype) !void { - try this.writeInt(@truncate(u32, slice.len)); + try this.writeInt(@as(u32, @truncate(slice.len))); switch (T) { u8 => { diff --git a/src/ast/base.zig b/src/ast/base.zig index ae544f8be..ab96dab3d 100644 --- a/src/ast/base.zig +++ b/src/ast/base.zig @@ -124,7 +124,7 @@ pub inline fn getBits(comptime TargetType: type, target: anytype, comptime start } } - return @truncate(TargetType, target >> start_bit); + return @as(TargetType, @truncate(target >> start_bit)); } /// In some parts of Bun, we have many different IDs pointing to different things. @@ -149,11 +149,11 @@ pub const Index = packed struct(u32) { pub const Int = u32; pub inline fn source(num: anytype) Index { - return .{ .value = @truncate(Int, num) }; + return .{ .value = @as(Int, @truncate(num)) }; } pub inline fn part(num: anytype) Index { - return .{ .value = @truncate(Int, num) }; + return .{ .value = @as(Int, @truncate(num)) }; } pub fn init(num: anytype) Index { @@ -164,12 +164,12 @@ pub const Index = packed struct(u32) { if (comptime bun.Environment.allow_assert) { return .{ - .value = @intCast(Int, num), + .value = @as(Int, @intCast(num)), }; } return .{ - .value = @intCast(Int, num), + .value = @as(Int, @intCast(num)), }; } @@ -208,7 +208,7 @@ pub const Ref = packed struct(u64) { pub const Int = std.meta.Int(.unsigned, (64 - 2) / 2); pub fn toInt(value: anytype) Int { - return @intCast(Int, value); + return @as(Int, @intCast(value)); } pub fn isSourceIndexNull(this: anytype) bool { @@ -255,7 +255,7 @@ pub const Ref = packed struct(u64) { .inner_index = inner_index, // if we overflow, we want a panic - .source_index = @intCast(Int, source_index), + .source_index = @as(Int, @intCast(source_index)), .tag = if (is_source_contents_slice) .source_contents_slice else .allocated_name, }; @@ -267,15 +267,15 @@ pub const Ref = packed struct(u64) { } pub fn hash(key: Ref) u32 { - return @truncate(u32, key.hash64()); + return @as(u32, @truncate(key.hash64())); } pub inline fn asU64(key: Ref) u64 { - return @bitCast(u64, key); + return @as(u64, @bitCast(key)); } pub inline fn hash64(key: Ref) u64 { - return bun.hash(&@bitCast([8]u8, key.asU64())); + return bun.hash(&@as([8]u8, @bitCast(key.asU64()))); } pub fn eql(ref: Ref, b: Ref) bool { diff --git a/src/baby_list.zig b/src/baby_list.zig index 01ec819ec..5881f2c50 100644 --- a/src/baby_list.zig +++ b/src/baby_list.zig @@ -16,8 +16,8 @@ pub fn BabyList(comptime Type: type) type { pub fn set(this: *@This(), slice_: []Type) void { this.ptr = slice_.ptr; - this.len = @truncate(u32, slice_.len); - this.cap = @truncate(u32, slice_.len); + this.len = @as(u32, @truncate(slice_.len)); + this.cap = @as(u32, @truncate(slice_.len)); } pub fn available(this: *@This()) []Type { @@ -38,8 +38,8 @@ pub fn BabyList(comptime Type: type) type { return ListType{ // Remove the const qualifier from the items .ptr = @constCast(items.ptr), - .len = @truncate(u32, items.len), - .cap = @truncate(u32, items.len), + .len = @as(u32, @truncate(items.len)), + .cap = @as(u32, @truncate(items.len)), }; } @@ -60,8 +60,8 @@ pub fn BabyList(comptime Type: type) type { var copy = try list_.clone(); return ListType{ .ptr = copy.items.ptr, - .len = @truncate(u32, copy.items.len), - .cap = @truncate(u32, copy.capacity), + .len = @as(u32, @truncate(copy.items.len)), + .cap = @as(u32, @truncate(copy.capacity)), }; } @@ -74,7 +74,7 @@ pub fn BabyList(comptime Type: type) type { pub fn writableSlice(this: *@This(), allocator: std.mem.Allocator, cap: usize) ![]Type { var list_ = this.listManaged(allocator); try list_.ensureUnusedCapacity(cap); - var writable = list_.items.ptr[this.len .. this.len + @truncate(u32, cap)]; + var writable = list_.items.ptr[this.len .. this.len + @as(u32, @truncate(cap))]; list_.items.len += cap; this.update(list_); return writable; @@ -82,9 +82,9 @@ pub fn BabyList(comptime Type: type) type { pub fn appendSliceAssumeCapacity(this: *@This(), values: []const Type) void { var tail = this.ptr[this.len .. this.len + values.len]; - std.debug.assert(this.cap >= this.len + @truncate(u32, values.len)); + std.debug.assert(this.cap >= this.len + @as(u32, @truncate(values.len))); bun.copy(Type, tail, values); - this.len += @truncate(u32, values.len); + this.len += @as(u32, @truncate(values.len)); std.debug.assert(this.cap >= this.len); } @@ -96,7 +96,7 @@ pub fn BabyList(comptime Type: type) type { return ListType{ .ptr = buffer.ptr, .len = 0, - .cap = @truncate(u32, buffer.len), + .cap = @as(u32, @truncate(buffer.len)), }; } @@ -104,8 +104,8 @@ pub fn BabyList(comptime Type: type) type { @setRuntimeSafety(false); return ListType{ .ptr = @constCast(items.ptr), - .len = @truncate(u32, items.len), - .cap = @truncate(u32, items.len), + .len = @as(u32, @truncate(items.len)), + .cap = @as(u32, @truncate(items.len)), }; } @@ -124,8 +124,8 @@ pub fn BabyList(comptime Type: type) type { return ListType{ .ptr = list_.items.ptr, - .len = @truncate(u32, list_.items.len), - .cap = @truncate(u32, list_.capacity), + .len = @as(u32, @truncate(list_.items.len)), + .cap = @as(u32, @truncate(list_.capacity)), }; } @@ -135,16 +135,16 @@ pub fn BabyList(comptime Type: type) type { return ListType{ .ptr = allocated.ptr, - .len = @truncate(u32, allocated.len), - .cap = @truncate(u32, allocated.len), + .len = @as(u32, @truncate(allocated.len)), + .cap = @as(u32, @truncate(allocated.len)), }; } pub fn update(this: *ListType, list_: anytype) void { this.* = .{ .ptr = list_.items.ptr, - .len = @truncate(u32, list_.items.len), - .cap = @truncate(u32, list_.capacity), + .len = @as(u32, @truncate(list_.items.len)), + .cap = @as(u32, @truncate(list_.capacity)), }; if (comptime Environment.allow_assert) { @@ -193,7 +193,7 @@ pub fn BabyList(comptime Type: type) type { var items = try allocator.alloc(Type, 1); items[0] = value; return ListType{ - .ptr = @ptrCast([*]Type, items.ptr), + .ptr = @as([*]Type, @ptrCast(items.ptr)), .len = 1, .cap = 1, }; diff --git a/src/base64/base64.zig b/src/base64/base64.zig index 8768b9c7b..e56e15877 100644 --- a/src/base64/base64.zig +++ b/src/base64/base64.zig @@ -28,7 +28,7 @@ const mixed_decoder = brk: { }); for (zig_base64.url_safe_alphabet_chars[62..], 62..) |c, i| { - decoder.decoder.char_to_index[c] = @intCast(u8, i); + decoder.decoder.char_to_index[c] = @as(u8, @intCast(i)); } break :brk decoder; @@ -189,12 +189,12 @@ const zig_base64 = struct { acc_len += 8; while (acc_len >= 6) { acc_len -= 6; - dest[out_idx] = encoder.alphabet_chars[@truncate(u6, (acc >> acc_len))]; + dest[out_idx] = encoder.alphabet_chars[@as(u6, @truncate((acc >> acc_len)))]; out_idx += 1; } } if (acc_len > 0) { - dest[out_idx] = encoder.alphabet_chars[@truncate(u6, (acc << 6 - acc_len))]; + dest[out_idx] = encoder.alphabet_chars[@as(u6, @truncate((acc << 6 - acc_len)))]; out_idx += 1; } if (encoder.pad_char) |pad_char| { @@ -225,7 +225,7 @@ const zig_base64 = struct { assert(!char_in_alphabet[c]); assert(pad_char == null or c != pad_char.?); - result.char_to_index[c] = @intCast(u8, i); + result.char_to_index[c] = @as(u8, @intCast(i)); char_in_alphabet[c] = true; } return result; @@ -277,7 +277,7 @@ const zig_base64 = struct { acc_len += 6; if (acc_len >= 8) { acc_len -= 8; - dest[dest_idx] = @truncate(u8, acc >> acc_len); + dest[dest_idx] = @as(u8, @truncate(acc >> acc_len)); dest_idx += 1; } } @@ -362,7 +362,7 @@ const zig_base64 = struct { if (acc_len >= 8) { if (dest_idx == dest.len) return error.NoSpaceLeft; acc_len -= 8; - dest[dest_idx] = @truncate(u8, acc >> acc_len); + dest[dest_idx] = @as(u8, @truncate(acc >> acc_len)); dest_idx += 1; } } diff --git a/src/bit_set.zig b/src/bit_set.zig index d40794473..36f683ea4 100644 --- a/src/bit_set.zig +++ b/src/bit_set.zig @@ -121,19 +121,19 @@ pub fn IntegerBitSet(comptime size: u16) type { if (range.start == range.end) return; if (MaskInt == u0) return; - const start_bit = @intCast(ShiftInt, range.start); + const start_bit = @as(ShiftInt, @intCast(range.start)); var mask = std.math.boolMask(MaskInt, true) << start_bit; if (range.end != bit_length) { - const end_bit = @intCast(ShiftInt, range.end); - mask &= std.math.boolMask(MaskInt, true) >> @truncate(ShiftInt, @as(usize, @bitSizeOf(MaskInt)) - @as(usize, end_bit)); + const end_bit = @as(ShiftInt, @intCast(range.end)); + mask &= std.math.boolMask(MaskInt, true) >> @as(ShiftInt, @truncate(@as(usize, @bitSizeOf(MaskInt)) - @as(usize, end_bit))); } self.mask &= ~mask; mask = std.math.boolMask(MaskInt, value) << start_bit; if (range.end != bit_length) { - const end_bit = @intCast(ShiftInt, range.end); - mask &= std.math.boolMask(MaskInt, value) >> @truncate(ShiftInt, @as(usize, @bitSizeOf(MaskInt)) - @as(usize, end_bit)); + const end_bit = @as(ShiftInt, @intCast(range.end)); + mask &= std.math.boolMask(MaskInt, value) >> @as(ShiftInt, @truncate(@as(usize, @bitSizeOf(MaskInt)) - @as(usize, end_bit))); } self.mask |= mask; } @@ -294,7 +294,7 @@ pub fn IntegerBitSet(comptime size: u16) type { .reverse => { const leading_zeroes = @clz(self.bits_remain); const top_bit = (@bitSizeOf(MaskInt) - 1) - leading_zeroes; - self.bits_remain &= (@as(MaskInt, 1) << @intCast(ShiftInt, top_bit)) - 1; + self.bits_remain &= (@as(MaskInt, 1) << @as(ShiftInt, @intCast(top_bit))) - 1; return top_bit; }, } @@ -304,11 +304,11 @@ pub fn IntegerBitSet(comptime size: u16) type { fn maskBit(index: usize) MaskInt { if (MaskInt == u0) return 0; - return @as(MaskInt, 1) << @intCast(ShiftInt, index); + return @as(MaskInt, 1) << @as(ShiftInt, @intCast(index)); } fn boolMaskBit(index: usize, value: bool) MaskInt { if (MaskInt == u0) return 0; - return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index); + return @as(MaskInt, @intFromBool(value)) << @as(ShiftInt, @intCast(index)); } }; } @@ -446,10 +446,10 @@ pub fn ArrayBitSet(comptime MaskIntType: type, comptime size: usize) type { if (num_masks == 0) return; const start_mask_index = maskIndex(range.start); - const start_bit = @truncate(ShiftInt, range.start); + const start_bit = @as(ShiftInt, @truncate(range.start)); const end_mask_index = maskIndex(range.end); - const end_bit = @truncate(ShiftInt, range.end); + const end_bit = @as(ShiftInt, @truncate(range.end)); if (start_mask_index == end_mask_index) { var mask1 = std.math.boolMask(MaskInt, true) << start_bit; @@ -647,13 +647,13 @@ pub fn ArrayBitSet(comptime MaskIntType: type, comptime size: usize) type { } inline fn maskBit(index: usize) MaskInt { - return @as(MaskInt, 1) << @truncate(ShiftInt, index); + return @as(MaskInt, 1) << @as(ShiftInt, @truncate(index)); } inline fn maskIndex(index: usize) usize { return index >> @bitSizeOf(ShiftInt); } inline fn boolMaskBit(index: usize, value: bool) MaskInt { - return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index); + return @as(MaskInt, @intFromBool(value)) << @as(ShiftInt, @intCast(index)); } }; } @@ -744,7 +744,7 @@ pub const DynamicBitSetUnmanaged = struct { // set the padding bits in the old last item to 1 if (fill and old_masks > 0) { const old_padding_bits = old_masks * @bitSizeOf(MaskInt) - old_len; - const old_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, old_padding_bits); + const old_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(old_padding_bits)); self.masks[old_masks - 1] |= ~old_mask; } @@ -758,7 +758,7 @@ pub const DynamicBitSetUnmanaged = struct { // Zero out the padding bits if (new_len > 0) { const padding_bits = new_masks * @bitSizeOf(MaskInt) - new_len; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); self.masks[new_masks - 1] &= last_item_mask; } @@ -842,10 +842,10 @@ pub const DynamicBitSetUnmanaged = struct { if (range.start == range.end) return; const start_mask_index = maskIndex(range.start); - const start_bit = @truncate(ShiftInt, range.start); + const start_bit = @as(ShiftInt, @truncate(range.start)); const end_mask_index = maskIndex(range.end); - const end_bit = @truncate(ShiftInt, range.end); + const end_bit = @as(ShiftInt, @truncate(range.end)); if (start_mask_index == end_mask_index) { var mask1 = std.math.boolMask(MaskInt, true) << start_bit; @@ -903,7 +903,7 @@ pub const DynamicBitSetUnmanaged = struct { } const padding_bits = num_masks * @bitSizeOf(MaskInt) - bit_length; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); self.masks[num_masks - 1] &= last_item_mask; } @@ -916,7 +916,7 @@ pub const DynamicBitSetUnmanaged = struct { } const padding_bits = num_masks * @bitSizeOf(MaskInt) - bit_length; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); self.masks[num_masks - 1] &= last_item_mask; } @@ -932,7 +932,7 @@ pub const DynamicBitSetUnmanaged = struct { } const padding_bits = num_masks * @bitSizeOf(MaskInt) - bit_length; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); self.masks[num_masks - 1] &= last_item_mask; } @@ -947,7 +947,7 @@ pub const DynamicBitSetUnmanaged = struct { } const padding_bits = num_masks * @bitSizeOf(MaskInt) - bit_length; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); self.masks[num_masks - 1] &= last_item_mask; } @@ -1073,7 +1073,7 @@ pub const DynamicBitSetUnmanaged = struct { pub fn iterator(self: *const Self, comptime options: IteratorOptions) Iterator(options) { const num_masks = numMasks(self.bit_length); const padding_bits = num_masks * @bitSizeOf(MaskInt) - self.bit_length; - const last_item_mask = (~@as(MaskInt, 0)) >> @intCast(ShiftInt, padding_bits); + const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits)); return Iterator(options).init(self.masks[0..num_masks], last_item_mask); } @@ -1082,13 +1082,13 @@ pub const DynamicBitSetUnmanaged = struct { } fn maskBit(index: usize) MaskInt { - return @as(MaskInt, 1) << @truncate(ShiftInt, index); + return @as(MaskInt, 1) << @as(ShiftInt, @truncate(index)); } fn maskIndex(index: usize) usize { return index >> @bitSizeOf(ShiftInt); } fn boolMaskBit(index: usize, value: bool) MaskInt { - return @as(MaskInt, @intFromBool(value)) << @intCast(ShiftInt, index); + return @as(MaskInt, @intFromBool(value)) << @as(ShiftInt, @intCast(index)); } fn numMasks(bit_length: usize) usize { return (bit_length + (@bitSizeOf(MaskInt) - 1)) / @bitSizeOf(MaskInt); @@ -1436,7 +1436,7 @@ pub fn BitSetIterator(comptime MaskInt: type, comptime options: IteratorOptions) .reverse => { const leading_zeroes = @clz(self.bits_remain); const top_bit = (@bitSizeOf(MaskInt) - 1) - leading_zeroes; - const no_top_bit_mask = (@as(MaskInt, 1) << @intCast(ShiftInt, top_bit)) - 1; + const no_top_bit_mask = (@as(MaskInt, 1) << @as(ShiftInt, @intCast(top_bit))) - 1; self.bits_remain &= no_top_bit_mask; return top_bit + self.bit_offset; }, diff --git a/src/blob.zig b/src/blob.zig index 96a6c7783..0d187bfdd 100644 --- a/src/blob.zig +++ b/src/blob.zig @@ -19,7 +19,7 @@ len: usize, pub const Map = struct { const MapContext = struct { pub fn hash(_: @This(), s: u64) u32 { - return @truncate(u32, s); + return @as(u32, @truncate(s)); } pub fn eql(_: @This(), a: u64, b: u64, _: usize) bool { return a == b; diff --git a/src/boringssl.zig b/src/boringssl.zig index cdcd24577..a12c356d9 100644 --- a/src/boringssl.zig +++ b/src/boringssl.zig @@ -66,7 +66,7 @@ export fn OPENSSL_memory_alloc(size: usize) ?*anyopaque { // BoringSSL always expects memory to be zero'd export fn OPENSSL_memory_free(ptr: *anyopaque) void { const len = bun.Mimalloc.mi_usable_size(ptr); - @memset(@ptrCast([*]u8, ptr)[0..len], 0); + @memset(@as([*]u8, @ptrCast(ptr))[0..len], 0); bun.Mimalloc.mi_free(ptr); } diff --git a/src/bun.js/api/JSBundler.zig b/src/bun.js/api/JSBundler.zig index 44ceaee9d..6a821f447 100644 --- a/src/bun.js/api/JSBundler.zig +++ b/src/bun.js/api/JSBundler.zig @@ -533,7 +533,7 @@ pub const JSBundler = struct { arguments_: []const js.JSValueRef, _: js.ExceptionRef, ) js.JSValueRef { - return build(globalThis, @ptrCast([]const JSC.JSValue, arguments_)).asObjectRef(); + return build(globalThis, @as([]const JSC.JSValue, @ptrCast(arguments_))).asObjectRef(); } pub const Resolve = struct { @@ -844,7 +844,7 @@ pub const JSBundler = struct { this.value = .{ .success = .{ - .loader = @enumFromInt(options.Loader, @intCast(u8, loader_as_int.to(i32))), + .loader = @as(options.Loader, @enumFromInt(@as(u8, @intCast(loader_as_int.to(i32))))), .source_code = source_code, }, }; diff --git a/src/bun.js/api/JSTranspiler.zig b/src/bun.js/api/JSTranspiler.zig index 95b0eeaae..5c5bee171 100644 --- a/src/bun.js/api/JSTranspiler.zig +++ b/src/bun.js/api/JSTranspiler.zig @@ -85,7 +85,7 @@ const TranspilerOptions = struct { // This is going to be hard to not leak pub const TransformTask = struct { input_code: ZigString = ZigString.init(""), - protected_input_value: JSC.JSValue = @enumFromInt(JSC.JSValue, 0), + protected_input_value: JSC.JSValue = @as(JSC.JSValue, @enumFromInt(0)), output_code: ZigString = ZigString.init(""), bundler: Bundler.Bundler = undefined, log: logger.Log, @@ -221,7 +221,7 @@ pub const TransformTask = struct { finish(this.output_code, this.global, promise); if (@intFromEnum(this.protected_input_value) != 0) { - this.protected_input_value = @enumFromInt(JSC.JSValue, 0); + this.protected_input_value = @as(JSC.JSValue, @enumFromInt(0)); } this.deinit(); } @@ -612,7 +612,7 @@ fn transformOptionsFromJSC(globalObject: JSC.C.JSContextRef, temp_allocator: std var length_iter = iter; while (length_iter.next()) |value| { if (value.isString()) { - const length = @truncate(u32, value.getLength(globalThis)); + const length = @as(u32, @truncate(value.getLength(globalThis))); string_count += @as(u32, @intFromBool(length > 0)); total_name_buf_len += length; } @@ -879,7 +879,7 @@ fn getParseResult(this: *Transpiler, allocator: std.mem.Allocator, code: []const for (res.ast.import_records.slice()) |*import| { if (import.kind.isCommonJS()) { import.do_commonjs_transform_in_printer = true; - import.module_id = @truncate(u32, bun.hash(import.path.pretty)); + import.module_id = @as(u32, @truncate(bun.hash(import.path.pretty))); } } } @@ -1218,7 +1218,7 @@ fn namedImportsToJS( array.ensureStillAlive(); const path = JSC.ZigString.init(record.path.text).toValueGC(global); const kind = JSC.ZigString.init(record.kind.label()).toValueGC(global); - array.putIndex(global, @truncate(u32, i), JSC.JSValue.createObject2(global, path_label, kind_label, path, kind)); + array.putIndex(global, @as(u32, @truncate(i)), JSC.JSValue.createObject2(global, path_label, kind_label, path, kind)); } return array; diff --git a/src/bun.js/api/bun.zig b/src/bun.js/api/bun.zig index 97ad056e8..d63765b16 100644 --- a/src/bun.js/api/bun.zig +++ b/src/bun.js/api/bun.zig @@ -105,12 +105,12 @@ pub fn onImportCSS( var writer = css_imports_buf.writer(); const offset = css_imports_buf.items.len; css_imports_list[css_imports_list_tail] = .{ - .offset = @truncate(u32, offset), + .offset = @as(u32, @truncate(offset)), .length = 0, }; getPublicPath(resolve_result.path_pair.primary.text, origin, @TypeOf(writer), writer); const length = css_imports_buf.items.len - offset; - css_imports_list[css_imports_list_tail].length = @truncate(u32, length); + css_imports_list[css_imports_list_tail].length = @as(u32, @truncate(length)); css_imports_list_tail += 1; } @@ -239,7 +239,7 @@ pub fn inspect( ZigConsoleClient.format( .Debug, ctx.ptr(), - @ptrCast([*]const JSValue, arguments.ptr), + @as([*]const JSValue, @ptrCast(arguments.ptr)), arguments.len, Writer, Writer, @@ -303,7 +303,7 @@ pub fn registerMacro( return js.JSValueMakeUndefined(ctx); } // TODO: make this faster - const id = @truncate(i32, @intFromFloat(i64, js.JSValueToNumber(ctx, arguments[0], exception))); + const id = @as(i32, @truncate(@as(i64, @intFromFloat(js.JSValueToNumber(ctx, arguments[0], exception))))); if (id == -1 or id == 0) { JSError(getAllocator(ctx), "Internal error registering macros: invalid id", .{}, ctx, exception); return js.JSValueMakeUndefined(ctx); @@ -882,7 +882,7 @@ pub fn sleepSync( return ret; } - std.time.sleep(@intCast(u64, milliseconds) * std.time.ns_per_ms); + std.time.sleep(@as(u64, @intCast(milliseconds)) * std.time.ns_per_ms); return ret; } @@ -1398,21 +1398,21 @@ pub fn indexOfLine( var offset: usize = 0; if (arguments.len > 1) { - offset = @intCast( + offset = @as( usize, - @max( + @intCast(@max( arguments[1].to(u32), 0, - ), + )), ); } const bytes = buffer.byteSlice(); var current_offset = offset; - const end = @truncate(u32, bytes.len); + const end = @as(u32, @truncate(bytes.len)); while (current_offset < end) { - if (strings.indexOfNewlineOrNonASCII(bytes, @truncate(u32, current_offset))) |i| { + if (strings.indexOfNewlineOrNonASCII(bytes, @as(u32, @truncate(current_offset)))) |i| { const byte = bytes[i]; if (byte > 0x7F) { current_offset += @max(strings.wtf8ByteSequenceLength(byte), 1); @@ -1537,7 +1537,7 @@ pub const Crypto = struct { } pub fn hash(this: *EVP, engine: *BoringSSL.ENGINE, input: []const u8, output: []u8) ?u32 { - var outsize: c_uint = @min(@truncate(u16, output.len), this.size()); + var outsize: c_uint = @min(@as(u16, @truncate(output.len)), this.size()); if (BoringSSL.EVP_Digest(input.ptr, input.len, output.ptr, &outsize, this.md, engine) != 1) { return null; } @@ -1546,7 +1546,7 @@ pub const Crypto = struct { } pub fn final(this: *EVP, engine: *BoringSSL.ENGINE, output: []u8) []const u8 { - var outsize: u32 = @min(@truncate(u16, output.len), this.size()); + var outsize: u32 = @min(@as(u16, @truncate(output.len)), this.size()); if (BoringSSL.EVP_DigestFinal_ex( &this.ctx, output.ptr, @@ -1565,7 +1565,7 @@ pub const Crypto = struct { } pub fn size(this: *EVP) u16 { - return @truncate(u16, BoringSSL.EVP_MD_CTX_size(&this.ctx)); + return @as(u16, @truncate(BoringSSL.EVP_MD_CTX_size(&this.ctx))); } pub fn copy(this: *const EVP, engine: *BoringSSL.ENGINE) error{OutOfMemory}!EVP { @@ -1683,7 +1683,7 @@ pub const Crypto = struct { return null; } - algorithm.bcrypt = @intCast(u6, rounds); + algorithm.bcrypt = @as(u6, @intCast(rounds)); } return algorithm; @@ -1704,7 +1704,7 @@ pub const Crypto = struct { return null; } - argon.time_cost = @intCast(u32, time_cost); + argon.time_cost = @as(u32, @intCast(time_cost)); } if (value.getTruthy(globalObject, "memoryCost")) |memory_value| { @@ -1720,7 +1720,7 @@ pub const Crypto = struct { return null; } - argon.memory_cost = @intCast(u32, memory_cost); + argon.memory_cost = @as(u32, @intCast(memory_cost)); } return @unionInit(Algorithm.Value, @tagName(tag), argon); @@ -2444,7 +2444,7 @@ pub const Crypto = struct { this: *CryptoHasher, _: *JSC.JSGlobalObject, ) callconv(.C) JSC.JSValue { - return JSC.JSValue.jsNumber(@truncate(u16, this.evp.size())); + return JSC.JSValue.jsNumber(@as(u16, @truncate(this.evp.size()))); } pub fn getAlgorithm( @@ -3100,12 +3100,12 @@ pub fn allocUnsafe( ) js.JSValueRef { var args = JSC.Node.ArgumentsSlice.from(ctx.bunVM(), arguments); - const length = @intCast( + const length = @as( usize, - @min( + @intCast(@min( @max(1, (args.nextEat() orelse JSC.JSValue.jsNumber(@as(i32, 1))).toInt32()), std.math.maxInt(i32), - ), + )), ); var bytes = bun.default_allocator.alloc(u8, length) catch { JSC.JSError(bun.default_allocator, "OOM! Out of memory", .{}, ctx, exception); @@ -3152,11 +3152,11 @@ pub fn mmapFile( flags |= @as(u32, if (shared.toBoolean()) std.os.MAP.SHARED else std.os.MAP.PRIVATE); if (opts.get(ctx.ptr(), "size")) |value| { - map_size = @intCast(usize, value.toInt64()); + map_size = @as(usize, @intCast(value.toInt64())); } if (opts.get(ctx.ptr(), "offset")) |value| { - offset = @intCast(usize, value.toInt64()); + offset = @as(usize, @intCast(value.toInt64())); offset = std.mem.alignBackwardAnyAlign(offset, std.mem.page_size); } } else { @@ -3172,11 +3172,11 @@ pub fn mmapFile( }, }; - return JSC.C.JSObjectMakeTypedArrayWithBytesNoCopy(ctx, JSC.C.JSTypedArrayType.kJSTypedArrayTypeUint8Array, @ptrCast(?*anyopaque, map.ptr), map.len, struct { + return JSC.C.JSObjectMakeTypedArrayWithBytesNoCopy(ctx, JSC.C.JSTypedArrayType.kJSTypedArrayTypeUint8Array, @as(?*anyopaque, @ptrCast(map.ptr)), map.len, struct { pub fn x(ptr: ?*anyopaque, size: ?*anyopaque) callconv(.C) void { - _ = JSC.Node.Syscall.munmap(@ptrCast([*]align(std.mem.page_size) u8, @alignCast(std.mem.page_size, ptr))[0..@intFromPtr(size)]); + _ = JSC.Node.Syscall.munmap(@as([*]align(std.mem.page_size) u8, @ptrCast(@alignCast(ptr)))[0..@intFromPtr(size)]); } - }.x, @ptrFromInt(?*anyopaque, map.len), exception); + }.x, @as(?*anyopaque, @ptrFromInt(map.len)), exception); } pub fn getTranspilerConstructor( @@ -3327,17 +3327,17 @@ pub const Hash = struct { } } if (comptime std.meta.trait.isNumber(@TypeOf(function_args[0]))) { - function_args[0] = @intCast(@TypeOf(function_args[0]), seed); + function_args[0] = @as(@TypeOf(function_args[0]), @intCast(seed)); function_args[1] = input; } else { - function_args[1] = @intCast(@TypeOf(function_args[1]), seed); + function_args[1] = @as(@TypeOf(function_args[1]), @intCast(seed)); function_args[0] = input; } const value = @call(.auto, Function, function_args); if (@TypeOf(value) == u32) { - return JSC.JSValue.jsNumber(@bitCast(i32, value)).asObjectRef(); + return JSC.JSValue.jsNumber(@as(i32, @bitCast(value))).asObjectRef(); } return JSC.JSValue.jsNumber(value).asObjectRef(); } @@ -3443,7 +3443,7 @@ pub const Unsafe = struct { switch (array_buffer.typed_array_type) { .Uint16Array, .Int16Array => { var zig_str = ZigString.init(""); - zig_str._unsafe_ptr_do_not_use = @ptrCast([*]const u8, @alignCast(@alignOf([*]align(1) const u16), array_buffer.ptr)); + zig_str._unsafe_ptr_do_not_use = @as([*]const u8, @ptrCast(@alignCast(array_buffer.ptr))); zig_str.len = array_buffer.len; zig_str.markUTF16(); // the deinitializer for string causes segfaults @@ -3766,7 +3766,7 @@ pub const Timer = struct { var arg = args.ptr; var i: u32 = 0; while (i < count) : (i += 1) { - arg[0] = JSC.JSObject.getIndex(arguments, globalThis, @truncate(u32, i)); + arg[0] = JSC.JSObject.getIndex(arguments, globalThis, @as(u32, @truncate(i))); arg += 1; } } @@ -4365,8 +4365,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) u8, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) u8, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn @"u16"( @@ -4374,8 +4374,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) u16, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) u16, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn @"u32"( @@ -4383,8 +4383,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) u32, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) u32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn ptr( @@ -4392,8 +4392,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) u64, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) u64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn @"i8"( @@ -4401,8 +4401,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) i8, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) i8, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn @"i16"( @@ -4410,8 +4410,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) i16, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) i16, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn @"i32"( @@ -4419,8 +4419,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) i32, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) i32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn intptr( @@ -4428,8 +4428,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) i64, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) i64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4438,8 +4438,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) f32, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) f32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4448,8 +4448,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) f64, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) f64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4458,8 +4458,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) i64, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) i64, @ptrFromInt(addr)).*; return JSValue.fromInt64NoTruncate(global, value); } @@ -4468,8 +4468,8 @@ pub const FFI = struct { _: JSValue, arguments: []const JSValue, ) JSValue { - const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @intCast(usize, arguments[1].to(i32)) else @as(usize, 0); - const value = @ptrFromInt(*align(1) u64, addr).*; + const addr = arguments[0].asPtrAddress() + if (arguments.len > 1) @as(usize, @intCast(arguments[1].to(i32))) else @as(usize, 0); + const value = @as(*align(1) u64, @ptrFromInt(addr)).*; return JSValue.fromUInt64NoTruncate(global, value); } @@ -4479,8 +4479,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) u8, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) u8, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn u16WithoutTypeChecks( @@ -4489,8 +4489,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) u16, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) u16, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn u32WithoutTypeChecks( @@ -4499,8 +4499,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) u32, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) u32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn ptrWithoutTypeChecks( @@ -4509,8 +4509,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) u64, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) u64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn i8WithoutTypeChecks( @@ -4519,8 +4519,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) i8, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) i8, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn i16WithoutTypeChecks( @@ -4529,8 +4529,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) i16, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) i16, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn i32WithoutTypeChecks( @@ -4539,8 +4539,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) i32, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) i32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } pub fn intptrWithoutTypeChecks( @@ -4549,8 +4549,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) i64, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) i64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4560,8 +4560,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) f32, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) f32, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4571,8 +4571,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) f64, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) f64, @ptrFromInt(addr)).*; return JSValue.jsNumber(value); } @@ -4582,8 +4582,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) u64, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) u64, @ptrFromInt(addr)).*; return JSValue.fromUInt64NoTruncate(global, value); } @@ -4593,8 +4593,8 @@ pub const FFI = struct { raw_addr: i64, offset: i32, ) callconv(.C) JSValue { - const addr = @intCast(usize, raw_addr) + @intCast(usize, offset); - const value = @ptrFromInt(*align(1) i64, addr).*; + const addr = @as(usize, @intCast(raw_addr)) + @as(usize, @intCast(offset)); + const value = @as(*align(1) i64, @ptrFromInt(addr)).*; return JSValue.fromInt64NoTruncate(global, value); } @@ -4671,9 +4671,9 @@ pub const FFI = struct { const bytei64 = off.toInt64(); if (bytei64 < 0) { - addr -|= @intCast(usize, bytei64 * -1); + addr -|= @as(usize, @intCast(bytei64 * -1)); } else { - addr += @intCast(usize, bytei64); + addr += @as(usize, @intCast(bytei64)); } if (addr > @intFromPtr(array_buffer.ptr) + @as(usize, array_buffer.byte_len)) { @@ -4719,15 +4719,15 @@ pub const FFI = struct { // return .{ .err = JSC.toInvalidArguments("ptr must be a finite number.", .{}, globalThis) }; // } - var addr = @bitCast(usize, num); + var addr = @as(usize, @bitCast(num)); if (byteOffset) |byte_off| { if (byte_off.isNumber()) { const off = byte_off.toInt64(); if (off < 0) { - addr -|= @intCast(usize, off * -1); + addr -|= @as(usize, @intCast(off * -1)); } else { - addr +|= @intCast(usize, off); + addr +|= @as(usize, @intCast(off)); } if (addr == 0) { @@ -4767,12 +4767,12 @@ pub const FFI = struct { return .{ .err = JSC.toInvalidArguments("length exceeds max addressable memory. This usually means a bug in your code.", .{}, globalThis) }; } - const length = @intCast(usize, length_i); - return .{ .slice = @ptrFromInt([*]u8, addr)[0..length] }; + const length = @as(usize, @intCast(length_i)); + return .{ .slice = @as([*]u8, @ptrFromInt(addr))[0..length] }; } } - return .{ .slice = bun.span(@ptrFromInt([*:0]u8, addr)) }; + return .{ .slice = bun.span(@as([*:0]u8, @ptrFromInt(addr))) }; } fn getCPtr(value: JSValue) ?usize { @@ -4781,7 +4781,7 @@ pub const FFI = struct { const addr = value.asPtrAddress(); if (addr > 0) return addr; } else if (value.isBigInt()) { - const addr = @bitCast(u64, value.toUInt64NoTruncate()); + const addr = @as(u64, @bitCast(value.toUInt64NoTruncate())); if (addr > 0) { return addr; } @@ -4807,11 +4807,11 @@ pub const FFI = struct { var ctx: ?*anyopaque = null; if (finalizationCallback) |callback_value| { if (getCPtr(callback_value)) |callback_ptr| { - callback = @ptrFromInt(JSC.C.JSTypedArrayBytesDeallocator, callback_ptr); + callback = @as(JSC.C.JSTypedArrayBytesDeallocator, @ptrFromInt(callback_ptr)); if (finalizationCtxOrPtr) |ctx_value| { if (getCPtr(ctx_value)) |ctx_ptr| { - ctx = @ptrFromInt(*anyopaque, ctx_ptr); + ctx = @as(*anyopaque, @ptrFromInt(ctx_ptr)); } else if (!ctx_value.isUndefinedOrNull()) { return JSC.toInvalidArguments("Expected user data to be a C pointer (number or BigInt)", .{}, globalThis); } @@ -4821,7 +4821,7 @@ pub const FFI = struct { } } else if (finalizationCtxOrPtr) |callback_value| { if (getCPtr(callback_value)) |callback_ptr| { - callback = @ptrFromInt(JSC.C.JSTypedArrayBytesDeallocator, callback_ptr); + callback = @as(JSC.C.JSTypedArrayBytesDeallocator, @ptrFromInt(callback_ptr)); } else if (!callback_value.isEmptyOrUndefinedOrNull()) { return JSC.toInvalidArguments("Expected callback to be a C pointer (number or BigInt)", .{}, globalThis); } @@ -4849,11 +4849,11 @@ pub const FFI = struct { var ctx: ?*anyopaque = null; if (finalizationCallback) |callback_value| { if (getCPtr(callback_value)) |callback_ptr| { - callback = @ptrFromInt(JSC.C.JSTypedArrayBytesDeallocator, callback_ptr); + callback = @as(JSC.C.JSTypedArrayBytesDeallocator, @ptrFromInt(callback_ptr)); if (finalizationCtxOrPtr) |ctx_value| { if (getCPtr(ctx_value)) |ctx_ptr| { - ctx = @ptrFromInt(*anyopaque, ctx_ptr); + ctx = @as(*anyopaque, @ptrFromInt(ctx_ptr)); } else if (!ctx_value.isEmptyOrUndefinedOrNull()) { return JSC.toInvalidArguments("Expected user data to be a C pointer (number or BigInt)", .{}, globalThis); } @@ -4863,7 +4863,7 @@ pub const FFI = struct { } } else if (finalizationCtxOrPtr) |callback_value| { if (getCPtr(callback_value)) |callback_ptr| { - callback = @ptrFromInt(JSC.C.JSTypedArrayBytesDeallocator, callback_ptr); + callback = @as(JSC.C.JSTypedArrayBytesDeallocator, @ptrFromInt(callback_ptr)); } else if (!callback_value.isEmptyOrUndefinedOrNull()) { return JSC.toInvalidArguments("Expected callback to be a C pointer (number or BigInt)", .{}, globalThis); } diff --git a/src/bun.js/api/bun/dns_resolver.zig b/src/bun.js/api/bun/dns_resolver.zig index d0d4f5b7b..4d961b54c 100644 --- a/src/bun.js/api/bun/dns_resolver.zig +++ b/src/bun.js/api/bun/dns_resolver.zig @@ -176,7 +176,7 @@ pub fn addressToString( switch (address.any.family) { std.os.AF.INET => { var self = address.in; - const bytes = @ptrCast(*const [4]u8, &self.sa.addr); + const bytes = @as(*const [4]u8, @ptrCast(&self.sa.addr)); break :brk std.fmt.allocPrint(allocator, "{}.{}.{}.{}", .{ bytes[0], bytes[1], @@ -554,7 +554,7 @@ pub const GetAddrInfo = struct { .list => |list| brk: { var stack = std.heap.stackFallback(2048, globalThis.allocator()); var arena = @import("root").bun.ArenaAllocator.init(stack.get()); - const array = JSC.JSValue.createEmptyArray(globalThis, @truncate(u32, list.items.len)); + const array = JSC.JSValue.createEmptyArray(globalThis, @as(u32, @truncate(list.items.len))); var i: u32 = 0; const items: []const Result = list.items; for (items) |item| { @@ -594,7 +594,7 @@ pub const GetAddrInfo = struct { pub fn fromAddrInfo(addrinfo: *std.c.addrinfo) ?Result { return Result{ - .address = std.net.Address.initPosix(@alignCast(4, addrinfo.addr orelse return null)), + .address = std.net.Address.initPosix(@alignCast(addrinfo.addr orelse return null)), // no TTL in POSIX getaddrinfo() .ttl = 0, }; @@ -650,8 +650,8 @@ pub fn ResolveInfoRequest(comptime cares_type: type, comptime type_name: []const request.cache = @This().CacheConfig{ .pending_cache = true, .entry_cache = false, - .pos_in_pending = @truncate(u5, @field(resolver.?, cache_field).indexOf(cache.new).?), - .name_len = @truncate(u9, name.len), + .pos_in_pending = @as(u5, @truncate(@field(resolver.?, cache_field).indexOf(cache.new).?)), + .name_len = @as(u9, @truncate(name.len)), }; cache.new.lookup = request; } @@ -682,7 +682,7 @@ pub fn ResolveInfoRequest(comptime cares_type: type, comptime type_name: []const const hash = hasher.final(); return PendingCacheKey{ .hash = hash, - .len = @truncate(u16, name.len), + .len = @as(u16, @truncate(name.len)), .lookup = undefined, }; } @@ -751,8 +751,8 @@ pub const GetAddrInfoRequest = struct { request.cache = CacheConfig{ .pending_cache = true, .entry_cache = false, - .pos_in_pending = @truncate(u5, @field(resolver.?, cache_field).indexOf(cache.new).?), - .name_len = @truncate(u9, query.name.len), + .pos_in_pending = @as(u5, @truncate(@field(resolver.?, cache_field).indexOf(cache.new).?)), + .name_len = @as(u9, @truncate(query.name.len)), }; cache.new.lookup = request; } @@ -782,7 +782,7 @@ pub const GetAddrInfoRequest = struct { pub fn init(query: GetAddrInfo) PendingCacheKey { return PendingCacheKey{ .hash = query.hash(), - .len = @truncate(u16, query.name.len), + .len = @as(u16, @truncate(query.name.len)), .lookup = undefined, }; } @@ -793,7 +793,7 @@ pub const GetAddrInfoRequest = struct { addr_info: ?*std.c.addrinfo, arg: ?*anyopaque, ) callconv(.C) void { - const this = @ptrFromInt(*GetAddrInfoRequest, @intFromPtr(arg)); + const this = @as(*GetAddrInfoRequest, @ptrFromInt(@intFromPtr(arg))); log("getAddrInfoAsyncCallback: status={d}", .{status}); if (this.backend == .libinfo) { @@ -1394,13 +1394,13 @@ pub const DNSResolver = struct { poll: *JSC.FilePoll, ) void { var channel = this.channel orelse { - _ = this.polls.orderedRemove(@intCast(i32, poll.fd)); + _ = this.polls.orderedRemove(@as(i32, @intCast(poll.fd))); poll.deinit(); return; }; channel.process( - @intCast(i32, poll.fd), + @as(i32, @intCast(poll.fd)), poll.isReadable(), poll.isWritable(), ); diff --git a/src/bun.js/api/bun/socket.zig b/src/bun.js/api/bun/socket.zig index 1d85c705c..2f35a48a5 100644 --- a/src/bun.js/api/bun/socket.zig +++ b/src/bun.js/api/bun/socket.zig @@ -16,6 +16,8 @@ const Which = @import("../../../which.zig"); const uws = @import("root").bun.uws; const ZigString = JSC.ZigString; const BoringSSL = bun.BoringSSL; +const X509 = @import("./x509.zig"); + // const Corker = struct { // ptr: ?*[16384]u8 = null, // holder: ?*anyopaque = null, @@ -56,6 +58,79 @@ const BoringSSL = bun.BoringSSL; // } // }; +noinline fn getSSLException(globalThis: *JSC.JSGlobalObject, defaultMessage: []const u8) JSValue { + var zig_str: ZigString = ZigString.init(""); + var output_buf: [4096]u8 = undefined; + + output_buf[0] = 0; + var written: usize = 0; + var ssl_error = BoringSSL.ERR_get_error(); + while (ssl_error != 0 and written < output_buf.len) : (ssl_error = BoringSSL.ERR_get_error()) { + if (written > 0) { + output_buf[written] = '\n'; + written += 1; + } + + if (BoringSSL.ERR_reason_error_string( + ssl_error, + )) |reason_ptr| { + const reason = std.mem.span(reason_ptr); + if (reason.len == 0) { + break; + } + @memcpy(output_buf[written..][0..reason.len], reason); + written += reason.len; + } + + if (BoringSSL.ERR_func_error_string( + ssl_error, + )) |reason_ptr| { + const reason = std.mem.span(reason_ptr); + if (reason.len > 0) { + output_buf[written..][0.." via ".len].* = " via ".*; + written += " via ".len; + @memcpy(output_buf[written..][0..reason.len], reason); + written += reason.len; + } + } + + if (BoringSSL.ERR_lib_error_string( + ssl_error, + )) |reason_ptr| { + const reason = std.mem.span(reason_ptr); + if (reason.len > 0) { + output_buf[written..][0] = ' '; + written += 1; + @memcpy(output_buf[written..][0..reason.len], reason); + written += reason.len; + } + } + } + + if (written > 0) { + var message = output_buf[0..written]; + zig_str = ZigString.init(std.fmt.allocPrint(bun.default_allocator, "OpenSSL {s}", .{message}) catch unreachable); + var encoded_str = zig_str.withEncoding(); + encoded_str.mark(); + + // We shouldn't *need* to do this but it's not entirely clear. + BoringSSL.ERR_clear_error(); + } + + if (zig_str.len == 0) { + zig_str = ZigString.init(defaultMessage); + } + + // store the exception in here + // toErrorInstance clones the string + const exception = zig_str.toErrorInstance(globalThis); + + // reference it in stack memory + exception.ensureStillAlive(); + + return exception; +} + fn normalizeHost(input: anytype) @TypeOf(input) { if (input.len == 0) { return "localhost"; @@ -66,7 +141,6 @@ fn normalizeHost(input: anytype) @TypeOf(input) { return input; } - const BinaryType = JSC.BinaryType; const WrappedType = enum { @@ -315,7 +389,7 @@ pub const SocketConfig = struct { if (parsed_url.getPort()) |port_num| { port_value = JSValue.jsNumber(port_num); hostname_or_unix.ptr = parsed_url.hostname.ptr; - hostname_or_unix.len = @truncate(u32, parsed_url.hostname.len); + hostname_or_unix.len = @as(u32, @truncate(parsed_url.hostname.len)); } } @@ -422,10 +496,10 @@ pub const Listener = struct { pub fn deinit(this: UnixOrHost) void { switch (this) { .unix => |u| { - bun.default_allocator.destroy(@ptrFromInt([*]u8, @intFromPtr(u.ptr))); + bun.default_allocator.destroy(@as([*]u8, @ptrFromInt(@intFromPtr(u.ptr)))); }, .host => |h| { - bun.default_allocator.destroy(@ptrFromInt([*]u8, @intFromPtr(h.host.ptr))); + bun.default_allocator.destroy(@as([*]u8, @ptrFromInt(@intFromPtr(h.host.ptr)))); }, } } @@ -583,7 +657,7 @@ pub const Listener = struct { ); // should return the assigned port if (socket) |s| { - connection.host.port = @intCast(u16, s.getLocalPort(ssl_enabled)); + connection.host.port = @as(u16, @intCast(s.getLocalPort(ssl_enabled))); } break :brk socket; }, @@ -963,7 +1037,7 @@ fn selectALPNCallback( return BoringSSL.SSL_TLSEXT_ERR_NOACK; } - const status = BoringSSL.SSL_select_next_proto(bun.cast([*c][*c]u8, out), outlen, protos.ptr, @intCast(c_uint, protos.len), in, inlen); + const status = BoringSSL.SSL_select_next_proto(bun.cast([*c][*c]u8, out), outlen, protos.ptr, @as(c_uint, @intCast(protos.len)), in, inlen); // Previous versions of Node.js returned SSL_TLSEXT_ERR_NOACK if no protocol // match was found. This would neither cause a fatal alert nor would it result @@ -1175,7 +1249,8 @@ fn NewSocket(comptime ssl: bool) type { // Add SNI support for TLS (mongodb and others requires this) if (comptime ssl) { - var ssl_ptr: *BoringSSL.SSL = @ptrCast(*BoringSSL.SSL, socket.getNativeHandle()); + var ssl_ptr = this.socket.ssl(); + if (!ssl_ptr.isInitFinished()) { if (this.server_name) |server_name| { const host = normalizeHost(server_name); @@ -1198,7 +1273,7 @@ fn NewSocket(comptime ssl: bool) type { if (this.handlers.is_server) { BoringSSL.SSL_CTX_set_alpn_select_cb(BoringSSL.SSL_get_SSL_CTX(ssl_ptr), selectALPNCallback, bun.cast(*anyopaque, this)); } else { - _ = BoringSSL.SSL_set_alpn_protos(ssl_ptr, protos.ptr, @intCast(c_uint, protos.len)); + _ = BoringSSL.SSL_set_alpn_protos(ssl_ptr, protos.ptr, @as(c_uint, @intCast(protos.len))); } } } @@ -1483,7 +1558,7 @@ fn NewSocket(comptime ssl: bool) type { return .zero; } - this.socket.timeout(@intCast(c_uint, t)); + this.socket.timeout(@as(c_uint, @intCast(t))); return JSValue.jsUndefined(); } @@ -1566,7 +1641,7 @@ fn NewSocket(comptime ssl: bool) type { var text_buf: [512]u8 = undefined; this.socket.remoteAddress(&buf, &length); - const address_bytes = buf[0..@intCast(usize, length)]; + const address_bytes = buf[0..@as(usize, @intCast(length))]; const address: std.net.Address = switch (length) { 4 => std.net.Address.initIp4(address_bytes[0..4].*, 0), 16 => std.net.Address.initIp6(address_bytes[0..16].*, 0, 0, 0), @@ -1880,6 +1955,107 @@ fn NewSocket(comptime ssl: bool) type { return JSValue.jsUndefined(); } + pub fn getTLSTicket( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + var ssl_ptr = this.socket.ssl(); + const session = BoringSSL.SSL_get_session(ssl_ptr) orelse return JSValue.jsUndefined(); + var ticket: [*c]const u8 = undefined; + var length: usize = 0; + //The pointer is only valid while the connection is in use so we need to copy it + BoringSSL.SSL_SESSION_get0_ticket(session, @as([*c][*c]const u8, @ptrCast(&ticket)), &length); + + if (ticket == null or length == 0) { + return JSValue.jsUndefined(); + } + + return JSC.ArrayBuffer.createBuffer(globalObject, ticket[0..length]); + } + + pub fn setSession( + this: *This, + globalObject: *JSC.JSGlobalObject, + callframe: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const args = callframe.arguments(1); + + if (args.len < 1) { + globalObject.throw("Expected session to be a string, Buffer or TypedArray", .{}); + return .zero; + } + + const session_arg = args.ptr[0]; + var arena: bun.ArenaAllocator = bun.ArenaAllocator.init(bun.default_allocator); + defer arena.deinit(); + + var exception_ref = [_]JSC.C.JSValueRef{null}; + var exception: JSC.C.ExceptionRef = &exception_ref; + if (JSC.Node.StringOrBuffer.fromJS(globalObject, arena.allocator(), session_arg, exception)) |sb| { + var session_slice = sb.slice(); + var ssl_ptr = this.socket.ssl(); + var tmp = @as([*c]const u8, @ptrCast(session_slice.ptr)); + const session = BoringSSL.d2i_SSL_SESSION(null, &tmp, @as(c_long, @intCast(session_slice.len))) orelse return JSValue.jsUndefined(); + if (BoringSSL.SSL_set_session(ssl_ptr, session) != 1) { + globalObject.throwValue(getSSLException(globalObject, "SSL_set_session error")); + return .zero; + } + return JSValue.jsUndefined(); + } else if (exception.* != null) { + globalObject.throwValue(JSC.JSValue.c(exception.*)); + return .zero; + } else { + globalObject.throw("Expected session to be a string, Buffer or TypedArray", .{}); + return .zero; + } + } + + pub fn getSession( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + var ssl_ptr = this.socket.ssl(); + const session = BoringSSL.SSL_get_session(ssl_ptr) orelse return JSValue.jsUndefined(); + const size = BoringSSL.i2d_SSL_SESSION(session, null); + if (size <= 0) { + return JSValue.jsUndefined(); + } + + const buffer_size = @as(usize, @intCast(size)); + var buffer = JSValue.createBufferFromLength(globalObject, buffer_size); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result_size = BoringSSL.i2d_SSL_SESSION(session, &buffer_ptr); + std.debug.assert(result_size == size); + return buffer; + } + pub fn getALPNProtocol( this: *This, globalObject: *JSC.JSGlobalObject, @@ -1895,7 +2071,8 @@ fn NewSocket(comptime ssl: bool) type { var alpn_proto: [*c]const u8 = null; var alpn_proto_len: u32 = 0; - var ssl_ptr: *BoringSSL.SSL = @ptrCast(*BoringSSL.SSL, this.socket.getNativeHandle()); + var ssl_ptr = this.socket.ssl(); + BoringSSL.SSL_get0_alpn_selected(ssl_ptr, &alpn_proto, &alpn_proto_len); if (alpn_proto == null or alpn_proto_len == 0) { return JSValue.jsBoolean(false); @@ -1910,7 +2087,502 @@ fn NewSocket(comptime ssl: bool) type { } return ZigString.fromUTF8(slice).toValueGC(globalObject); } + pub fn exportKeyingMaterial( + this: *This, + globalObject: *JSC.JSGlobalObject, + callframe: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const args = callframe.arguments(3); + if (args.len < 2) { + globalObject.throw("Expected length and label to be provided", .{}); + return .zero; + } + const length_arg = args.ptr[0]; + if (!length_arg.isNumber()) { + globalObject.throw("Expected length to be a number", .{}); + return .zero; + } + + const length = length_arg.coerceToInt64(globalObject); + if (length < 0) { + globalObject.throw("Expected length to be a positive number", .{}); + return .zero; + } + + const label_arg = args.ptr[1]; + if (!label_arg.isString()) { + globalObject.throw("Expected label to be a string", .{}); + return .zero; + } + + var label = label_arg.toSliceOrNull(globalObject) orelse { + globalObject.throw("Expected label to be a string", .{}); + return .zero; + }; + + defer label.deinit(); + const label_slice = label.slice(); + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + + if (args.len > 2) { + const context_arg = args.ptr[2]; + + var arena: bun.ArenaAllocator = bun.ArenaAllocator.init(bun.default_allocator); + defer arena.deinit(); + + var exception_ref = [_]JSC.C.JSValueRef{null}; + var exception: JSC.C.ExceptionRef = &exception_ref; + if (JSC.Node.StringOrBuffer.fromJS(globalObject, arena.allocator(), context_arg, exception)) |sb| { + const context_slice = sb.slice(); + + const buffer_size = @as(usize, @intCast(length)); + var buffer = JSValue.createBufferFromLength(globalObject, buffer_size); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result = BoringSSL.SSL_export_keying_material(ssl_ptr, buffer_ptr, buffer_size, @as([*c]const u8, @ptrCast(label_slice.ptr)), label_slice.len, @as([*c]const u8, @ptrCast(context_slice.ptr)), context_slice.len, 1); + if (result != 1) { + globalObject.throwValue(getSSLException(globalObject, "Failed to export keying material")); + return .zero; + } + return buffer; + } else if (exception.* != null) { + globalObject.throwValue(JSC.JSValue.c(exception.*)); + return .zero; + } else { + globalObject.throw("Expected context to be a string, Buffer or TypedArray", .{}); + return .zero; + } + } else { + const buffer_size = @as(usize, @intCast(length)); + var buffer = JSValue.createBufferFromLength(globalObject, buffer_size); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result = BoringSSL.SSL_export_keying_material(ssl_ptr, buffer_ptr, buffer_size, @as([*c]const u8, @ptrCast(label_slice.ptr)), label_slice.len, null, 0, 0); + if (result != 1) { + globalObject.throwValue(getSSLException(globalObject, "Failed to export keying material")); + return .zero; + } + return buffer; + } + } + + pub fn getEphemeralKeyInfo( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsNull(); + } + + if (this.detached) { + return JSValue.jsNull(); + } + + // only available for clients + if (this.handlers.is_server) { + return JSValue.jsNull(); + } + var result = JSValue.createEmptyObject(globalObject, 3); + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + // TODO: investigate better option or compatible way to get the key + // this implementation follows nodejs but for BoringSSL SSL_get_server_tmp_key will always return 0 + // wich will result in a empty object + // var raw_key: [*c]BoringSSL.EVP_PKEY = undefined; + // if (BoringSSL.SSL_get_server_tmp_key(ssl_ptr, @ptrCast([*c][*c]BoringSSL.EVP_PKEY, &raw_key)) == 0) { + // return result; + // } + var raw_key: [*c]BoringSSL.EVP_PKEY = BoringSSL.SSL_get_privatekey(ssl_ptr); + if (raw_key == null) { + return result; + } + + const kid = BoringSSL.EVP_PKEY_id(raw_key); + const bits = BoringSSL.EVP_PKEY_bits(raw_key); + + switch (kid) { + BoringSSL.EVP_PKEY_DH => { + result.put(globalObject, ZigString.static("type"), ZigString.static("DH").toValue(globalObject)); + result.put(globalObject, ZigString.static("size"), JSValue.jsNumber(bits)); + }, + + BoringSSL.EVP_PKEY_EC, BoringSSL.EVP_PKEY_X25519, BoringSSL.EVP_PKEY_X448 => { + var curve_name: []const u8 = undefined; + if (kid == BoringSSL.EVP_PKEY_EC) { + const ec = BoringSSL.EVP_PKEY_get1_EC_KEY(raw_key); + const nid = BoringSSL.EC_GROUP_get_curve_name(BoringSSL.EC_KEY_get0_group(ec)); + const nid_str = BoringSSL.OBJ_nid2sn(nid); + if (nid_str != null) { + curve_name = nid_str[0..bun.len(nid_str)]; + } else { + curve_name = ""; + } + } else { + const kid_str = BoringSSL.OBJ_nid2sn(kid); + if (kid_str != null) { + curve_name = kid_str[0..bun.len(kid_str)]; + } else { + curve_name = ""; + } + } + result.put(globalObject, ZigString.static("type"), ZigString.static("ECDH").toValue(globalObject)); + result.put(globalObject, ZigString.static("name"), ZigString.fromUTF8(curve_name).toValueGC(globalObject)); + result.put(globalObject, ZigString.static("size"), JSValue.jsNumber(bits)); + }, + else => {}, + } + return result; + } + + pub fn getCipher( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + var result = JSValue.createEmptyObject(globalObject, 3); + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + const cipher = BoringSSL.SSL_get_current_cipher(ssl_ptr); + if (cipher == null) { + result.put(globalObject, ZigString.static("name"), JSValue.jsNull()); + result.put(globalObject, ZigString.static("standardName"), JSValue.jsNull()); + result.put(globalObject, ZigString.static("version"), JSValue.jsNull()); + return result; + } + + const name = BoringSSL.SSL_CIPHER_get_name(cipher); + if (name == null) { + result.put(globalObject, ZigString.static("name"), JSValue.jsNull()); + } else { + result.put(globalObject, ZigString.static("name"), ZigString.fromUTF8(name[0..bun.len(name)]).toValueGC(globalObject)); + } + + const standard_name = BoringSSL.SSL_CIPHER_standard_name(cipher); + if (standard_name == null) { + result.put(globalObject, ZigString.static("standardName"), JSValue.jsNull()); + } else { + result.put(globalObject, ZigString.static("standardName"), ZigString.fromUTF8(standard_name[0..bun.len(standard_name)]).toValueGC(globalObject)); + } + + const version = BoringSSL.SSL_CIPHER_get_version(cipher); + if (version == null) { + result.put(globalObject, ZigString.static("version"), JSValue.jsNull()); + } else { + result.put(globalObject, ZigString.static("version"), ZigString.fromUTF8(version[0..bun.len(version)]).toValueGC(globalObject)); + } + + return result; + } + + pub fn getTLSPeerFinishedMessage( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + // We cannot just pass nullptr to SSL_get_peer_finished() + // because it would further be propagated to memcpy(), + // where the standard requirements as described in ISO/IEC 9899:2011 + // sections 7.21.2.1, 7.21.1.2, and 7.1.4, would be violated. + // Thus, we use a dummy byte. + var dummy: [1]u8 = undefined; + const size = BoringSSL.SSL_get_peer_finished(ssl_ptr, @as(*anyopaque, @ptrCast(&dummy)), @sizeOf(@TypeOf(dummy))); + if (size == 0) return JSValue.jsUndefined(); + + const buffer_size = @as(usize, @intCast(size)); + var buffer = JSValue.createBufferFromLength(globalObject, buffer_size); + var buffer_ptr = @as(*anyopaque, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result_size = BoringSSL.SSL_get_peer_finished(ssl_ptr, buffer_ptr, buffer_size); + std.debug.assert(result_size == size); + return buffer; + } + + pub fn getTLSFinishedMessage( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + // We cannot just pass nullptr to SSL_get_finished() + // because it would further be propagated to memcpy(), + // where the standard requirements as described in ISO/IEC 9899:2011 + // sections 7.21.2.1, 7.21.1.2, and 7.1.4, would be violated. + // Thus, we use a dummy byte. + var dummy: [1]u8 = undefined; + const size = BoringSSL.SSL_get_finished(ssl_ptr, @as(*anyopaque, @ptrCast(&dummy)), @sizeOf(@TypeOf(dummy))); + if (size == 0) return JSValue.jsUndefined(); + + const buffer_size = @as(usize, @intCast(size)); + var buffer = JSValue.createBufferFromLength(globalObject, buffer_size); + var buffer_ptr = @as(*anyopaque, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result_size = BoringSSL.SSL_get_finished(ssl_ptr, buffer_ptr, buffer_size); + std.debug.assert(result_size == size); + return buffer; + } + + pub fn getSharedSigalgs( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + JSC.markBinding(@src()); + if (comptime ssl == false) { + return JSValue.jsNull(); + } + + if (this.detached) { + return JSValue.jsNull(); + } + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + + const nsig = BoringSSL.SSL_get_shared_sigalgs(ssl_ptr, 0, null, null, null, null, null); + + const array = JSC.JSValue.createEmptyArray(globalObject, @as(usize, @intCast(nsig))); + + for (0..@as(usize, @intCast(nsig))) |i| { + var hash_nid: c_int = 0; + var sign_nid: c_int = 0; + var sig_with_md: []const u8 = ""; + + _ = BoringSSL.SSL_get_shared_sigalgs(ssl_ptr, @as(c_int, @intCast(i)), &sign_nid, &hash_nid, null, null, null); + switch (sign_nid) { + BoringSSL.EVP_PKEY_RSA => { + sig_with_md = "RSA"; + }, + BoringSSL.EVP_PKEY_RSA_PSS => { + sig_with_md = "RSA-PSS"; + }, + + BoringSSL.EVP_PKEY_DSA => { + sig_with_md = "DSA"; + }, + + BoringSSL.EVP_PKEY_EC => { + sig_with_md = "ECDSA"; + }, + + BoringSSL.NID_ED25519 => { + sig_with_md = "Ed25519"; + }, + + BoringSSL.NID_ED448 => { + sig_with_md = "Ed448"; + }, + BoringSSL.NID_id_GostR3410_2001 => { + sig_with_md = "gost2001"; + }, + + BoringSSL.NID_id_GostR3410_2012_256 => { + sig_with_md = "gost2012_256"; + }, + BoringSSL.NID_id_GostR3410_2012_512 => { + sig_with_md = "gost2012_512"; + }, + else => { + const sn_str = BoringSSL.OBJ_nid2sn(sign_nid); + if (sn_str != null) { + sig_with_md = sn_str[0..bun.len(sn_str)]; + } else { + sig_with_md = "UNDEF"; + } + }, + } + + const hash_str = BoringSSL.OBJ_nid2sn(hash_nid); + if (hash_str != null) { + const hash_str_len = bun.len(hash_str); + const hash_slice = hash_str[0..hash_str_len]; + const buffer = bun.default_allocator.alloc(u8, sig_with_md.len + hash_str_len + 1) catch unreachable; + defer bun.default_allocator.free(buffer); + + bun.copy(u8, buffer, sig_with_md); + buffer[sig_with_md.len] = '+'; + bun.copy(u8, buffer[sig_with_md.len + 1 ..], hash_slice); + array.putIndex(globalObject, @as(u32, @intCast(i)), JSC.ZigString.fromUTF8(buffer).toValueGC(globalObject)); + } else { + const buffer = bun.default_allocator.alloc(u8, sig_with_md.len + 6) catch unreachable; + defer bun.default_allocator.free(buffer); + + bun.copy(u8, buffer, sig_with_md); + bun.copy(u8, buffer[sig_with_md.len..], "+UNDEF"); + array.putIndex(globalObject, @as(u32, @intCast(i)), JSC.ZigString.fromUTF8(buffer).toValueGC(globalObject)); + } + } + return array; + } + + pub fn getTLSVersion( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + JSC.markBinding(@src()); + if (comptime ssl == false) { + return JSValue.jsNull(); + } + + if (this.detached) { + return JSValue.jsNull(); + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + const version = BoringSSL.SSL_get_version(ssl_ptr); + if (version == null) return JSValue.jsNull(); + const version_len = bun.len(version); + if (version_len == 0) return JSValue.jsNull(); + const slice = version[0..version_len]; + return ZigString.fromUTF8(slice).toValueGC(globalObject); + } + pub fn setMaxSendFragment( + this: *This, + globalObject: *JSC.JSGlobalObject, + callframe: *JSC.CallFrame, + ) callconv(.C) JSValue { + JSC.markBinding(@src()); + if (comptime ssl == false) { + return JSValue.jsBoolean(false); + } + + if (this.detached) { + return JSValue.jsBoolean(false); + } + + const args = callframe.arguments(1); + + if (args.len < 1) { + globalObject.throw("Expected size to be a number", .{}); + return .zero; + } + + const arg = args.ptr[0]; + if (!arg.isNumber()) { + globalObject.throw("Expected size to be a number", .{}); + return .zero; + } + const size = args.ptr[0].coerceToInt64(globalObject); + if (size < 1) { + globalObject.throw("Expected size to be greater than 1", .{}); + return .zero; + } + if (size > 16384) { + globalObject.throw("Expected size to be less than 16385", .{}); + return .zero; + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + return JSValue.jsBoolean(BoringSSL.SSL_set_max_send_fragment(ssl_ptr, @as(usize, @intCast(size))) == 1); + } + pub fn getPeerCertificate( + this: *This, + globalObject: *JSC.JSGlobalObject, + callframe: *JSC.CallFrame, + ) callconv(.C) JSValue { + JSC.markBinding(@src()); + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const args = callframe.arguments(1); + var abbreviated: bool = true; + if (args.len > 0) { + const arg = args.ptr[0]; + if (!arg.isBoolean()) { + globalObject.throw("Expected abbreviated to be a boolean", .{}); + return .zero; + } + abbreviated = arg.toBoolean(); + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + + if (abbreviated) { + if (this.handlers.is_server) { + const cert = BoringSSL.SSL_get_peer_certificate(ssl_ptr); + if (cert) |x509| { + return X509.toJS(x509, globalObject); + } + } + + const cert_chain = BoringSSL.SSL_get_peer_cert_chain(ssl_ptr) orelse return JSValue.jsUndefined(); + const cert = BoringSSL.sk_X509_value(cert_chain, 0) orelse return JSValue.jsUndefined(); + return X509.toJS(cert, globalObject); + } + var cert: ?*BoringSSL.X509 = null; + if (this.handlers.is_server) { + cert = BoringSSL.SSL_get_peer_certificate(ssl_ptr); + } + + const cert_chain = BoringSSL.SSL_get_peer_cert_chain(ssl_ptr); + const first_cert = if (cert) |c| c else if (cert_chain) |cc| BoringSSL.sk_X509_value(cc, 0) else null; + + if (first_cert == null) { + return JSValue.jsUndefined(); + } + + // TODO: we need to support the non abbreviated version of this + return JSValue.jsUndefined(); + } + + pub fn getCertificate( + this: *This, + globalObject: *JSC.JSGlobalObject, + _: *JSC.CallFrame, + ) callconv(.C) JSValue { + if (comptime ssl == false) { + return JSValue.jsUndefined(); + } + + if (this.detached) { + return JSValue.jsUndefined(); + } + + const ssl_ptr = @as(*BoringSSL.SSL, @ptrCast(this.socket.getNativeHandle())); + const cert = BoringSSL.SSL_get_certificate(ssl_ptr); + + if (cert) |x509| { + return X509.toJS(x509, globalObject); + } + return JSValue.jsUndefined(); + } pub fn setServername( this: *This, globalObject: *JSC.JSGlobalObject, @@ -1952,7 +2624,8 @@ fn NewSocket(comptime ssl: bool) type { const host = normalizeHost(@as([]const u8, slice)); if (host.len > 0) { - var ssl_ptr: *BoringSSL.SSL = @ptrCast(*BoringSSL.SSL, this.socket.getNativeHandle()); + var ssl_ptr = this.socket.ssl(); + if (ssl_ptr.isInitFinished()) { // match node.js exceptions globalObject.throw("Already started.", .{}); @@ -2222,6 +2895,7 @@ pub fn NewWrappedHandler(comptime tls: bool) type { if (comptime tls) { TLSSocket.onData(this.tls, socket, data); } else { + // tedius use this TLSSocket.onData(this.tcp, socket, data); } } diff --git a/src/bun.js/api/bun/spawn.zig b/src/bun.js/api/bun/spawn.zig index 5de8c2265..be354c7f0 100644 --- a/src/bun.js/api/bun/spawn.zig +++ b/src/bun.js/api/bun/spawn.zig @@ -62,14 +62,14 @@ pub const PosixSpawn = struct { pub fn get(self: Attr) !u16 { var flags: c_short = undefined; switch (errno(system.posix_spawnattr_getflags(&self.attr, &flags))) { - .SUCCESS => return @bitCast(u16, flags), + .SUCCESS => return @as(u16, @bitCast(flags)), .INVAL => unreachable, else => |err| return unexpectedErrno(err), } } pub fn set(self: *Attr, flags: u16) !void { - switch (errno(system.posix_spawnattr_setflags(&self.attr, @bitCast(c_short, flags)))) { + switch (errno(system.posix_spawnattr_setflags(&self.attr, @as(c_short, @bitCast(flags))))) { .SUCCESS => return, .INVAL => unreachable, else => |err| return unexpectedErrno(err), @@ -107,7 +107,7 @@ pub const PosixSpawn = struct { } pub fn openZ(self: *Actions, fd: fd_t, path: [*:0]const u8, flags: u32, mode: mode_t) !void { - switch (errno(system.posix_spawn_file_actions_addopen(&self.actions, fd, path, @bitCast(c_int, flags), mode))) { + switch (errno(system.posix_spawn_file_actions_addopen(&self.actions, fd, path, @as(c_int, @bitCast(flags)), mode))) { .SUCCESS => return, .BADF => return error.InvalidFileDescriptor, .NOMEM => return error.SystemResources, @@ -283,12 +283,12 @@ pub const PosixSpawn = struct { const Status = c_int; var status: Status = undefined; while (true) { - const rc = system.waitpid(pid, &status, @intCast(c_int, flags)); + const rc = system.waitpid(pid, &status, @as(c_int, @intCast(flags))); switch (errno(rc)) { .SUCCESS => return Maybe(WaitPidResult){ .result = .{ - .pid = @intCast(pid_t, rc), - .status = @bitCast(u32, status), + .pid = @as(pid_t, @intCast(rc)), + .status = @as(u32, @bitCast(status)), }, }, .INTR => continue, diff --git a/src/bun.js/api/bun/subprocess.zig b/src/bun.js/api/bun/subprocess.zig index ba813c463..1bc7f234a 100644 --- a/src/bun.js/api/bun/subprocess.zig +++ b/src/bun.js/api/bun/subprocess.zig @@ -201,7 +201,7 @@ pub const Subprocess = struct { }; }, .path => Readable{ .ignore = {} }, - .blob, .fd => Readable{ .fd = @intCast(bun.FileDescriptor, fd) }, + .blob, .fd => Readable{ .fd = @as(bun.FileDescriptor, @intCast(fd)) }, .array_buffer => Readable{ .pipe = .{ .buffer = BufferedOutput.initWithSlice(fd, stdio.array_buffer.slice()), @@ -360,7 +360,7 @@ pub const Subprocess = struct { } // first appeared in Linux 5.1 - const rc = std.os.linux.pidfd_send_signal(this.pidfd, @intCast(u8, sig), null, 0); + const rc = std.os.linux.pidfd_send_signal(this.pidfd, @as(u8, @intCast(sig)), null, 0); if (rc != 0) { const errno = std.os.linux.getErrno(rc); @@ -628,7 +628,7 @@ pub const Subprocess = struct { }, else => { const slice = result.slice(); - this.internal_buffer.len += @truncate(u32, slice.len); + this.internal_buffer.len += @as(u32, @truncate(slice.len)); if (slice.len > 0) std.debug.assert(this.internal_buffer.contains(slice)); @@ -673,7 +673,7 @@ pub const Subprocess = struct { if (slice.ptr == stack_buf.ptr) { this.internal_buffer.append(auto_sizer.allocator, slice) catch @panic("out of memory"); } else { - this.internal_buffer.len += @truncate(u32, slice.len); + this.internal_buffer.len += @as(u32, @truncate(slice.len)); } if (slice.len < buf_to_use.len) { @@ -706,7 +706,7 @@ pub const Subprocess = struct { return; }, .read => |slice| { - this.internal_buffer.len += @truncate(u32, slice.len); + this.internal_buffer.len += @as(u32, @truncate(slice.len)); if (slice.len < buf_to_use.len) { this.watch(); @@ -881,7 +881,7 @@ pub const Subprocess = struct { return Writable{ .buffered_input = buffered_input }; }, .fd => { - return Writable{ .fd = @intCast(bun.FileDescriptor, fd) }; + return Writable{ .fd = @as(bun.FileDescriptor, @intCast(fd)) }; }, .inherit => { return Writable{ .inherit = {} }; @@ -1303,7 +1303,7 @@ pub const Subprocess = struct { globalThis.throw("out of memory", .{}); return .zero; }; - env = @ptrCast(@TypeOf(env), env_array.items.ptr); + env = @as(@TypeOf(env), @ptrCast(env_array.items.ptr)); } const pid = brk: { @@ -1321,7 +1321,7 @@ pub const Subprocess = struct { } } - break :brk switch (PosixSpawn.spawnZ(argv.items[0].?, actions, attr, @ptrCast([*:null]?[*:0]const u8, argv.items[0..].ptr), env)) { + break :brk switch (PosixSpawn.spawnZ(argv.items[0].?, actions, attr, @as([*:null]?[*:0]const u8, @ptrCast(argv.items[0..].ptr)), env)) { .err => |err| return err.toJSC(globalThis), .result => |pid_| pid_, }; @@ -1329,7 +1329,7 @@ pub const Subprocess = struct { const pidfd: std.os.fd_t = brk: { if (Environment.isMac) { - break :brk @intCast(std.os.fd_t, pid); + break :brk @as(std.os.fd_t, @intCast(pid)); } const kernel = @import("../../../analytics.zig").GenerateHeader.GeneratePlatform.kernelVersion(); @@ -1346,7 +1346,7 @@ pub const Subprocess = struct { ); switch (std.os.linux.getErrno(fd)) { - .SUCCESS => break :brk @intCast(std.os.fd_t, fd), + .SUCCESS => break :brk @as(std.os.fd_t, @intCast(fd)), else => |err| { globalThis.throwValue(JSC.Node.Syscall.Error.fromCode(err, .open).toJSC(globalThis)); var status: u32 = 0; @@ -1484,7 +1484,7 @@ pub const Subprocess = struct { subprocess.finalizeSync(); const sync_value = JSC.JSValue.createEmptyObject(globalThis, 4); - sync_value.put(globalThis, JSC.ZigString.static("exitCode"), JSValue.jsNumber(@intCast(i32, exitCode))); + sync_value.put(globalThis, JSC.ZigString.static("exitCode"), JSValue.jsNumber(@as(i32, @intCast(exitCode)))); sync_value.put(globalThis, JSC.ZigString.static("stdout"), stdout); sync_value.put(globalThis, JSC.ZigString.static("stderr"), stderr); sync_value.put(globalThis, JSC.ZigString.static("success"), JSValue.jsBoolean(exitCode == 0)); @@ -1531,13 +1531,13 @@ pub const Subprocess = struct { }, .result => |result| { if (std.os.W.IFEXITED(result.status)) { - this.exit_code = @truncate(u8, std.os.W.EXITSTATUS(result.status)); + this.exit_code = @as(u8, @truncate(std.os.W.EXITSTATUS(result.status))); } if (std.os.W.IFSIGNALED(result.status)) { - this.signal_code = @enumFromInt(SignalCode, @truncate(u8, std.os.W.TERMSIG(result.status))); + this.signal_code = @as(SignalCode, @enumFromInt(@as(u8, @truncate(std.os.W.TERMSIG(result.status))))); } else if (std.os.W.IFSTOPPED(result.status)) { - this.signal_code = @enumFromInt(SignalCode, @truncate(u8, std.os.W.STOPSIG(result.status))); + this.signal_code = @as(SignalCode, @enumFromInt(@as(u8, @truncate(std.os.W.STOPSIG(result.status))))); } if (!this.hasExited()) { @@ -1688,10 +1688,10 @@ pub const Subprocess = struct { if (blob.needsToReadFile()) { if (blob.store()) |store| { if (store.data.file.pathlike == .fd) { - if (store.data.file.pathlike.fd == @intCast(bun.FileDescriptor, i)) { + if (store.data.file.pathlike.fd == @as(bun.FileDescriptor, @intCast(i))) { stdio_array[i] = Stdio{ .inherit = {} }; } else { - switch (@intCast(std.os.fd_t, i)) { + switch (@as(std.os.fd_t, @intCast(i))) { std.os.STDIN_FILENO => { if (i == std.os.STDERR_FILENO or i == std.os.STDOUT_FILENO) { globalThis.throwInvalidArguments("stdin cannot be used for stdout or stderr", .{}); @@ -1754,9 +1754,9 @@ pub const Subprocess = struct { return false; } - const fd = @intCast(bun.FileDescriptor, fd_); + const fd = @as(bun.FileDescriptor, @intCast(fd_)); - switch (@intCast(std.os.fd_t, i)) { + switch (@as(std.os.fd_t, @intCast(i))) { std.os.STDIN_FILENO => { if (i == std.os.STDERR_FILENO or i == std.os.STDOUT_FILENO) { globalThis.throwInvalidArguments("stdin cannot be used for stdout or stderr", .{}); diff --git a/src/bun.js/api/bun/x509.zig b/src/bun.js/api/bun/x509.zig new file mode 100644 index 000000000..20ab16547 --- /dev/null +++ b/src/bun.js/api/bun/x509.zig @@ -0,0 +1,560 @@ +const BoringSSL = bun.BoringSSL; +const bun = @import("root").bun; +const ZigString = JSC.ZigString; +const std = @import("std"); +const JSC = @import("root").bun.JSC; +const JSValue = JSC.JSValue; +const JSGlobalObject = JSC.JSGlobalObject; + +fn x509GetNameObject(globalObject: *JSGlobalObject, name: ?*BoringSSL.X509_NAME) JSValue { + const cnt = BoringSSL.X509_NAME_entry_count(name); + if (cnt <= 0) { + return JSValue.jsUndefined(); + } + var result = JSValue.createEmptyObject(globalObject, 1); + + for (0..@as(usize, @intCast(cnt))) |i| { + const entry = BoringSSL.X509_NAME_get_entry(name, @as(c_int, @intCast(i))) orelse continue; + // We intentionally ignore the value of X509_NAME_ENTRY_set because the + // representation as an object does not allow grouping entries into sets + // anyway, and multi-value RDNs are rare, i.e., the vast majority of + // Relative Distinguished Names contains a single type-value pair only. + const type_ = BoringSSL.X509_NAME_ENTRY_get_object(entry); + + // If BoringSSL knows the type, use the short name of the type as the key, and + // the numeric representation of the type's OID otherwise. + const type_nid = BoringSSL.OBJ_obj2nid(type_); + var type_buf: [80]u8 = undefined; + var name_slice: []const u8 = undefined; + if (type_nid != BoringSSL.NID_undef) { + const type_str = BoringSSL.OBJ_nid2sn(type_nid); + if (type_str == null) { + continue; + } + name_slice = type_str[0..bun.len(type_str)]; + } else { + const length = BoringSSL.OBJ_obj2txt(&type_buf, @sizeOf(@TypeOf(type_buf)), type_, 1); + if (length <= 0) { + continue; + } + name_slice = type_buf[0..@as(usize, @intCast(length))]; + } + + const value_data = BoringSSL.X509_NAME_ENTRY_get_data(entry); + + var value_str: [*c]u8 = undefined; + const value_str_len = BoringSSL.ASN1_STRING_to_UTF8(&value_str, value_data); + if (value_str_len < 0) { + continue; + } + const value_slice = value_str[0..@as(usize, @intCast(value_str_len))]; + defer BoringSSL.OPENSSL_free(value_str); + // For backward compatibility, we only create arrays if multiple values + // exist for the same key. That is not great but there is not much we can + // change here without breaking things. Note that this creates nested data + // structures, yet still does not allow representing Distinguished Names + // accurately. + if (result.getTruthy(globalObject, name_slice)) |value| { + if (value.jsType().isArray()) { + value.push(globalObject, JSC.ZigString.fromUTF8(value_slice).toValueGC(globalObject)); + } else { + const prop_name = JSC.ZigString.fromUTF8(name_slice); + const array = JSValue.createEmptyArray(globalObject, 2); + array.putIndex(globalObject, 0, value); + array.putIndex(globalObject, 1, JSC.ZigString.fromUTF8(value_slice).toValueGC(globalObject)); + result.put(globalObject, &prop_name, array); + } + } else { + const prop_name = JSC.ZigString.fromUTF8(name_slice); + result.put(globalObject, &prop_name, JSC.ZigString.fromUTF8(value_slice).toValueGC(globalObject)); + } + } + return result; +} + +inline fn isSafeAltName(name: []const u8, utf8: bool) bool { + for (name) |c| { + switch (c) { + '"', + '\\', + // These mess with encoding rules. + // Fall through. + ',', + // Commas make it impossible to split the list of subject alternative + // names unambiguously, which is why we have to escape. + // Fall through. + '\'', + => { + // Single quotes are unlikely to appear in any legitimate values, but they + // could be used to make a value look like it was escaped (i.e., enclosed + // in single/double quotes). + return false; + }, + else => { + if (utf8) { + // In UTF8 strings, we require escaping for any ASCII control character, + // but NOT for non-ASCII characters. Note that all bytes of any code + // point that consists of more than a single byte have their MSB set. + if (c < ' ' or c == '\x7f') { + return false; + } + } else { + // Check if the char is a control character or non-ASCII character. Note + // that char may or may not be a signed type. Regardless, non-ASCII + // values will always be outside of this range. + if (c < ' ' or c > '~') { + return false; + } + } + }, + } + } + return true; +} + +inline fn printAltName(out: *BoringSSL.BIO, name: []const u8, utf8: bool, safe_prefix: ?[*]const u8) void { + if (isSafeAltName(name, utf8)) { + // For backward-compatibility, append "safe" names without any + // modifications. + if (safe_prefix) |prefix| { + _ = BoringSSL.BIO_printf(out, "%s:", prefix); + } + _ = BoringSSL.BIO_write(out, @as([*]const u8, @ptrCast(name.ptr)), @as(c_int, @intCast(name.len))); + } else { + // If a name is not "safe", we cannot embed it without special + // encoding. This does not usually happen, but we don't want to hide + // it from the user either. We use JSON compatible escaping here. + _ = BoringSSL.BIO_write(out, "\"", 1); + if (safe_prefix) |prefix| { + _ = BoringSSL.BIO_printf(out, "%s:", prefix); + } + for (name) |c| { + if (c == '\\') { + _ = BoringSSL.BIO_write(out, "\\\\", 2); + } else if (c == '"') { + _ = BoringSSL.BIO_write(out, "\\\"", 2); + } else if ((c >= ' ' and c != ',' and c <= '~') or (utf8 and (c & 0x80) != 0)) { + // Note that the above condition explicitly excludes commas, which means + // that those are encoded as Unicode escape sequences in the "else" + // block. That is not strictly necessary, and Node.js itself would parse + // it correctly either way. We only do this to account for third-party + // code that might be splitting the string at commas (as Node.js itself + // used to do). + _ = BoringSSL.BIO_write(out, bun.cast([*]const u8, &c), 1); + } else { + // Control character or non-ASCII character. We treat everything as + // Latin-1, which corresponds to the first 255 Unicode code points. + const hex = "0123456789abcdef"; + const u = [_]u8{ '\\', 'u', '0', '0', hex[(c & 0xf0) >> 4], hex[c & 0x0f] }; + _ = BoringSSL.BIO_write(out, &u, @sizeOf(@TypeOf(u))); + } + } + _ = BoringSSL.BIO_write(out, "\"", 1); + } +} + +inline fn printLatin1AltName(out: *BoringSSL.BIO, name: *BoringSSL.ASN1_IA5STRING, safe_prefix: ?[*]const u8) void { + printAltName(out, name.data[0..@as(usize, @intCast(name.length))], false, safe_prefix); +} + +inline fn printUTF8AltName(out: *BoringSSL.BIO, name: *BoringSSL.ASN1_UTF8STRING, safe_prefix: ?[*]const u8) void { + printAltName(out, name.data[0..@as(usize, @intCast(name.length))], true, safe_prefix); +} + +pub const kX509NameFlagsRFC2253WithinUtf8JSON = BoringSSL.XN_FLAG_RFC2253 & ~BoringSSL.ASN1_STRFLGS_ESC_MSB & ~BoringSSL.ASN1_STRFLGS_ESC_CTRL; + +// This function emulates the behavior of i2v_GENERAL_NAME in a safer and less +// ambiguous way. "othername:" entries use the GENERAL_NAME_print format. +fn x509PrintGeneralName(out: *BoringSSL.BIO, name: *BoringSSL.GENERAL_NAME) bool { + if (name.name_type == .GEN_DNS) { + _ = BoringSSL.BIO_write(out, "DNS:", 4); + // Note that the preferred name syntax (see RFCs 5280 and 1034) with + // wildcards is a subset of what we consider "safe", so spec-compliant DNS + // names will never need to be escaped. + printLatin1AltName(out, name.d.dNSName, null); + } else if (name.name_type == .GEN_EMAIL) { + _ = BoringSSL.BIO_write(out, "email:", 6); + printLatin1AltName(out, name.d.rfc822Name, null); + } else if (name.name_type == .GEN_URI) { + _ = BoringSSL.BIO_write(out, "URI:", 4); + // The set of "safe" names was designed to include just about any URI, + // with a few exceptions, most notably URIs that contains commas (see + // RFC 2396). In other words, most legitimate URIs will not require + // escaping. + printLatin1AltName(out, name.d.uniformResourceIdentifier, null); + } else if (name.name_type == .GEN_DIRNAME) { + // Earlier versions of Node.js used X509_NAME_oneline to print the X509_NAME + // object. The format was non standard and should be avoided. The use of + // X509_NAME_oneline is discouraged by OpenSSL but was required for backward + // compatibility. Conveniently, X509_NAME_oneline produced ASCII and the + // output was unlikely to contains commas or other characters that would + // require escaping. However, it SHOULD NOT produce ASCII output since an + // RFC5280 AttributeValue may be a UTF8String. + // Newer versions of Node.js have since switched to X509_NAME_print_ex to + // produce a better format at the cost of backward compatibility. The new + // format may contain Unicode characters and it is likely to contain commas, + // which require escaping. Fortunately, the recently safeguarded function + // printAltName handles all of that safely. + _ = BoringSSL.BIO_printf(out, "DirName:"); + + const tmp = BoringSSL.BIO_new(BoringSSL.BIO_s_mem()) orelse return false; + + if (BoringSSL.X509_NAME_print_ex(tmp, name.d.dirn, 0, kX509NameFlagsRFC2253WithinUtf8JSON) < 0) { + return false; + } + var oline: [*]const u8 = undefined; + const n_bytes = BoringSSL.BIO_get_mem_data(tmp, @as([*c][*c]u8, @ptrCast(&oline))); + if (n_bytes <= 0) return false; + printAltName(out, oline[0..@as(usize, @intCast(n_bytes))], true, null); + } else if (name.name_type == .GEN_OTHERNAME) { + // The format that is used here is based on OpenSSL's implementation of + // GENERAL_NAME_print (as of OpenSSL 3.0.1). Earlier versions of Node.js + // instead produced the same format as i2v_GENERAL_NAME, which was somewhat + // awkward, especially when passed to translatePeerCertificate. + var unicode: bool = true; + var prefix: ?[*]const u8 = null; + + const nid = BoringSSL.OBJ_obj2nid(name.d.otherName.type_id); + switch (nid) { + BoringSSL.NID_id_on_SmtpUTF8Mailbox => { + prefix = "SmtpUTF8Mailbox"; + }, + BoringSSL.NID_XmppAddr => { + prefix = "XmppAddr"; + }, + BoringSSL.NID_SRVName => { + prefix = "SRVName"; + unicode = false; + }, + BoringSSL.NID_ms_upn => { + prefix = "UPN"; + }, + BoringSSL.NID_NAIRealm => { + prefix = "NAIRealm"; + }, + else => { + prefix = null; + }, + } + if (name.d.otherName.value) |v| { + const val_type = v.type; + if (prefix == null or + (unicode and val_type != BoringSSL.V_ASN1_UTF8STRING) or + (!unicode and val_type != BoringSSL.V_ASN1_IA5STRING)) + { + _ = BoringSSL.BIO_printf(out, "othername:<unsupported>"); + } else { + _ = BoringSSL.BIO_printf(out, "othername:"); + if (unicode) { + printUTF8AltName(out, v.value.utf8string, prefix); + } else { + printLatin1AltName(out, v.value.ia5string, prefix); + } + } + } else { + _ = BoringSSL.BIO_printf(out, "othername:<unsupported>"); + } + } else if (name.name_type == .GEN_IPADD) { + _ = BoringSSL.BIO_printf(out, "IP Address:"); + const ip = name.d.ip; + const b = ip.data; + if (ip.length == 4) { + _ = BoringSSL.BIO_printf(out, "%d.%d.%d.%d", b[0], b[1], b[2], b[3]); + } else if (ip.length == 16) { + for (0..8) |j| { + const pair: u16 = (@as(u16, @intCast(b[2 * j])) << 8) | @as(u16, @intCast(b[2 * j + 1])); + _ = BoringSSL.BIO_printf(out, if (j == 0) "%X" else ":%X", pair); + } + } else { + _ = BoringSSL.BIO_printf(out, "<invalid length=%d>", ip.length); + } + } else if (name.name_type == .GEN_RID) { + // Unlike OpenSSL's default implementation, never print the OID as text and + // instead always print its numeric representation. + var oline: [256]u8 = undefined; + _ = BoringSSL.OBJ_obj2txt(&oline, @sizeOf(@TypeOf(oline)), name.d.rid, 1); + _ = BoringSSL.BIO_printf(out, "Registered ID:%s", &oline); + } else if (name.name_type == .GEN_X400) { + _ = BoringSSL.BIO_printf(out, "X400Name:<unsupported>"); + } else if (name.name_type == .GEN_EDIPARTY) { + _ = BoringSSL.BIO_printf(out, "EdiPartyName:<unsupported>"); + } else { + return false; + } + return true; +} + +fn x509InfoAccessPrint(out: *BoringSSL.BIO, ext: *BoringSSL.X509_EXTENSION) bool { + const method = BoringSSL.X509V3_EXT_get(ext); + if (method != BoringSSL.X509V3_EXT_get_nid(BoringSSL.NID_info_access)) { + return false; + } + + if (BoringSSL.X509V3_EXT_d2i(ext)) |descs_| { + const descs: *BoringSSL.AUTHORITY_INFO_ACCESS = bun.cast(*BoringSSL.AUTHORITY_INFO_ACCESS, descs_); + defer BoringSSL.sk_ACCESS_DESCRIPTION_pop_free(descs, BoringSSL.sk_ACCESS_DESCRIPTION_free); + for (0..BoringSSL.sk_ACCESS_DESCRIPTION_num(descs)) |i| { + const gen = BoringSSL.sk_ACCESS_DESCRIPTION_value(descs, i); + if (gen) |desc| { + if (i != 0) { + _ = BoringSSL.BIO_write(out, "\n", 1); + } + var tmp: [80]u8 = undefined; + _ = BoringSSL.i2t_ASN1_OBJECT(&tmp, @sizeOf(@TypeOf(tmp)), desc.method); + _ = BoringSSL.BIO_printf(out, "%s - ", &tmp); + + if (!x509PrintGeneralName(out, desc.location)) { + return false; + } + } + } + return true; + } + return false; +} +fn x509SubjectAltNamePrint(out: *BoringSSL.BIO, ext: *BoringSSL.X509_EXTENSION) bool { + const method = BoringSSL.X509V3_EXT_get(ext); + if (method != BoringSSL.X509V3_EXT_get_nid(BoringSSL.NID_subject_alt_name)) { + return false; + } + + if (BoringSSL.X509V3_EXT_d2i(ext)) |names_| { + const names: *BoringSSL.struct_stack_st_GENERAL_NAME = bun.cast(*BoringSSL.struct_stack_st_GENERAL_NAME, names_); + defer BoringSSL.sk_GENERAL_NAME_pop_free(names, BoringSSL.sk_GENERAL_NAME_free); + for (0..BoringSSL.sk_GENERAL_NAME_num(names)) |i| { + const gen = BoringSSL.sk_GENERAL_NAME_value(names, i); + if (gen) |gen_name| { + if (i != 0) { + _ = BoringSSL.BIO_write(out, ", ", 2); + } + + if (!x509PrintGeneralName(out, gen_name)) { + return false; + } + } + } + + return true; + } + return false; +} + +fn x509GetSubjectAltNameString(globalObject: *JSGlobalObject, bio: *BoringSSL.BIO, cert: *BoringSSL.X509) JSValue { + const index = BoringSSL.X509_get_ext_by_NID(cert, BoringSSL.NID_subject_alt_name, -1); + if (index < 0) + return JSValue.jsUndefined(); + + defer _ = BoringSSL.BIO_reset(bio); + + const ext = BoringSSL.X509_get_ext(cert, index) orelse return JSValue.jsUndefined(); + + if (!x509SubjectAltNamePrint(bio, ext)) { + return JSValue.jsNull(); + } + + return JSC.ZigString.fromUTF8(bio.slice()).toValueGC(globalObject); +} + +fn x509GetInfoAccessString(globalObject: *JSGlobalObject, bio: *BoringSSL.BIO, cert: *BoringSSL.X509) JSValue { + const index = BoringSSL.X509_get_ext_by_NID(cert, BoringSSL.NID_info_access, -1); + if (index < 0) + return JSValue.jsUndefined(); + defer _ = BoringSSL.BIO_reset(bio); + const ext = BoringSSL.X509_get_ext(cert, index) orelse return JSValue.jsUndefined(); + + if (!x509InfoAccessPrint(bio, ext)) { + return JSValue.jsNull(); + } + + return JSC.ZigString.fromUTF8(bio.slice()).toValueGC(globalObject); +} + +fn addFingerprintDigest(md: []const u8, mdSize: c_uint, fingerprint: []u8) usize { + const hex: []const u8 = "0123456789ABCDEF"; + var idx: usize = 0; + + const slice = md[0..@as(usize, @intCast(mdSize))]; + for (slice) |byte| { + fingerprint[idx] = hex[(byte & 0xF0) >> 4]; + fingerprint[idx + 1] = hex[byte & 0x0F]; + fingerprint[idx + 2] = ':'; + idx += 3; + } + const length = if (idx > 0) (idx - 1) else 0; + fingerprint[length] = 0; + return length; +} + +fn getFingerprintDigest(cert: *BoringSSL.X509, method: *const BoringSSL.EVP_MD, globalObject: *JSGlobalObject) JSValue { + var md: [BoringSSL.EVP_MAX_MD_SIZE]u8 = undefined; + var md_size: c_uint = 0; + var fingerprint: [BoringSSL.EVP_MAX_MD_SIZE * 3]u8 = undefined; + + if (BoringSSL.X509_digest(cert, method, @as([*c]u8, @ptrCast(&md)), &md_size) != 0) { + const length = addFingerprintDigest(&md, md_size, &fingerprint); + return JSC.ZigString.fromUTF8(fingerprint[0..length]).toValueGC(globalObject); + } + return JSValue.jsUndefined(); +} + +fn getSerialNumber(cert: *BoringSSL.X509, globalObject: *JSGlobalObject) JSValue { + const serial_number = BoringSSL.X509_get_serialNumber(cert); + if (serial_number != null) { + const bignum = BoringSSL.ASN1_INTEGER_to_BN(serial_number, null); + if (bignum != null) { + const data = BoringSSL.BN_bn2hex(bignum); + if (data != null) { + const slice = data[0..bun.len(data)]; + // BoringSSL prints the hex value of the serialNumber in lower case, but we need upper case + toUpper(slice); + return JSC.ZigString.fromUTF8(slice).toValueGC(globalObject); + } + } + } + return JSValue.jsUndefined(); +} + +fn getRawDERCertificate(cert: *BoringSSL.X509, globalObject: *JSGlobalObject) JSValue { + const size = BoringSSL.i2d_X509(cert, null); + var buffer = JSValue.createBufferFromLength(globalObject, @as(usize, @intCast(size))); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + const result_size = BoringSSL.i2d_X509(cert, &buffer_ptr); + std.debug.assert(result_size == size); + return buffer; +} + +fn toUpper(slice: []u8) void { + for (0..slice.len) |i| { + const c = slice[i]; + if (c >= 'a' and c <= 'z') { + slice[i] &= 223; + } + } +} + +pub fn toJS(cert: *BoringSSL.X509, globalObject: *JSGlobalObject) JSValue { + const bio = BoringSSL.BIO_new(BoringSSL.BIO_s_mem()) orelse { + globalObject.throw("Failed to create BIO", .{}); + return .zero; + }; + defer _ = BoringSSL.BIO_free(bio); + var result = JSValue.createEmptyObject(globalObject, 8); + // X509_check_ca() returns a range of values. Only 1 means "is a CA" + const is_ca = BoringSSL.X509_check_ca(cert) == 1; + const subject = BoringSSL.X509_get_subject_name(cert); + result.put(globalObject, ZigString.static("subject"), x509GetNameObject(globalObject, subject)); + const issuer = BoringSSL.X509_get_issuer_name(cert); + result.put(globalObject, ZigString.static("issuer"), x509GetNameObject(globalObject, issuer)); + result.put(globalObject, ZigString.static("subjectaltname"), x509GetSubjectAltNameString(globalObject, bio, cert)); + result.put(globalObject, ZigString.static("infoAccess"), x509GetInfoAccessString(globalObject, bio, cert)); + result.put(globalObject, ZigString.static("ca"), JSValue.jsBoolean(is_ca)); + + const pkey = BoringSSL.X509_get_pubkey(cert); + + switch (BoringSSL.EVP_PKEY_id(pkey)) { + BoringSSL.EVP_PKEY_RSA => { + const rsa_key = BoringSSL.EVP_PKEY_get1_RSA(pkey); + if (rsa_key) |rsa| { + var n: [*c]const BoringSSL.BIGNUM = undefined; + var e: [*c]const BoringSSL.BIGNUM = undefined; + BoringSSL.RSA_get0_key(rsa, @as([*c][*c]const BoringSSL.BIGNUM, @ptrCast(&n)), @as([*c][*c]const BoringSSL.BIGNUM, @ptrCast(&e)), null); + _ = BoringSSL.BN_print(bio, n); + + var bits = JSValue.jsUndefined(); + + const bits_value = BoringSSL.BN_num_bits(n); + if (bits_value > 0) { + bits = JSValue.jsNumber(bits_value); + } + + result.put(globalObject, ZigString.static("bits"), bits); + const slice = bio.slice(); + // BoringSSL prints the hex value of the modulus in lower case, but we need upper case + toUpper(slice); + const modulus = JSC.ZigString.fromUTF8(slice).toValueGC(globalObject); + _ = BoringSSL.BIO_reset(bio); + result.put(globalObject, ZigString.static("modulus"), modulus); + + const exponent_word = BoringSSL.BN_get_word(e); + _ = BoringSSL.BIO_printf(bio, "0x" ++ BoringSSL.BN_HEX_FMT1, exponent_word); + const exponent = JSC.ZigString.fromUTF8(bio.slice()).toValueGC(globalObject); + _ = BoringSSL.BIO_reset(bio); + result.put(globalObject, ZigString.static("exponent"), exponent); + + const size = BoringSSL.i2d_RSA_PUBKEY(rsa, null); + if (size <= 0) { + globalObject.throw("Failed to get public key length", .{}); + return .zero; + } + + var buffer = JSValue.createBufferFromLength(globalObject, @as(usize, @intCast(size))); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + _ = BoringSSL.i2d_RSA_PUBKEY(rsa, &buffer_ptr); + + result.put(globalObject, ZigString.static("pubkey"), buffer); + } + }, + BoringSSL.EVP_PKEY_EC => { + const ec_key = BoringSSL.EVP_PKEY_get1_EC_KEY(pkey); + if (ec_key) |ec| { + const group = BoringSSL.EC_KEY_get0_group(ec); + var bits = JSValue.jsUndefined(); + if (group) |g| { + const bits_value = BoringSSL.EC_GROUP_order_bits(g); + if (bits_value > 0) { + bits = JSValue.jsNumber(bits_value); + } + } + result.put(globalObject, ZigString.static("bits"), bits); + + const ec_pubkey = BoringSSL.EC_KEY_get0_public_key(ec); + if (ec_pubkey) |point| { + const form = BoringSSL.EC_KEY_get_conv_form(ec); + const size = BoringSSL.EC_POINT_point2oct(group, point, form, null, 0, null); + if (size <= 0) { + globalObject.throw("Failed to get public key length", .{}); + return .zero; + } + + var buffer = JSValue.createBufferFromLength(globalObject, @as(usize, @intCast(size))); + var buffer_ptr = @as([*c]u8, @ptrCast(buffer.asArrayBuffer(globalObject).?.ptr)); + + const result_size = BoringSSL.EC_POINT_point2oct(group, point, form, buffer_ptr, size, null); + std.debug.assert(result_size == size); + result.put(globalObject, ZigString.static("pubkey"), buffer); + } else { + result.put(globalObject, ZigString.static("pubkey"), JSValue.jsUndefined()); + } + const nid = BoringSSL.EC_GROUP_get_curve_name(group); + + if (nid != 0) { + // Curve is well-known, get its OID and NIST nick-name (if it has one). + const asn1Curve_str = BoringSSL.OBJ_nid2sn(nid); + if (asn1Curve_str != null) { + result.put(globalObject, ZigString.static("asn1Curve"), JSC.ZigString.fromUTF8(asn1Curve_str[0..bun.len(asn1Curve_str)]).toValueGC(globalObject)); + } + const nistCurve_str = BoringSSL.EC_curve_nid2nist(nid); + if (nistCurve_str != null) { + result.put(globalObject, ZigString.static("nistCurve"), JSC.ZigString.fromUTF8(nistCurve_str[0..bun.len(nistCurve_str)]).toValueGC(globalObject)); + } + } + } + }, + else => {}, + } + _ = BoringSSL.ASN1_TIME_print(bio, BoringSSL.X509_get0_notBefore(cert)); + result.put(globalObject, ZigString.static("valid_from"), JSC.ZigString.fromUTF8(bio.slice()).toValueGC(globalObject)); + _ = BoringSSL.BIO_reset(bio); + + _ = BoringSSL.ASN1_TIME_print(bio, BoringSSL.X509_get0_notAfter(cert)); + result.put(globalObject, ZigString.static("valid_to"), JSC.ZigString.fromUTF8(bio.slice()).toValueGC(globalObject)); + _ = BoringSSL.BIO_reset(bio); + + result.put(globalObject, ZigString.static("fingerprint"), getFingerprintDigest(cert, BoringSSL.EVP_sha1(), globalObject)); + result.put(globalObject, ZigString.static("fingerprint256"), getFingerprintDigest(cert, BoringSSL.EVP_sha256(), globalObject)); + result.put(globalObject, ZigString.static("fingerprint512"), getFingerprintDigest(cert, BoringSSL.EVP_sha512(), globalObject)); + result.put(globalObject, ZigString.static("serialNumber"), getSerialNumber(cert, globalObject)); + result.put(globalObject, ZigString.static("raw"), getRawDERCertificate(cert, globalObject)); + return result; +} diff --git a/src/bun.js/api/ffi.zig b/src/bun.js/api/ffi.zig index ba31b67ed..1ca44619d 100644 --- a/src/bun.js/api/ffi.zig +++ b/src/bun.js/api/ffi.zig @@ -383,7 +383,7 @@ pub const FFI = struct { const cb = JSC.NewRuntimeFunction( global, &str, - @intCast(u32, function.arg_types.items.len), + @as(u32, @intCast(function.arg_types.items.len)), bun.cast(JSC.JSHostFunctionPtr, compiled.ptr), false, ); @@ -479,7 +479,7 @@ pub const FFI = struct { const cb = JSC.NewRuntimeFunction( global, name, - @intCast(u32, function.arg_types.items.len), + @as(u32, @intCast(function.arg_types.items.len)), bun.cast(JSC.JSHostFunctionPtr, compiled.ptr), false, ); @@ -523,7 +523,7 @@ pub const FFI = struct { const int = val.to(i32); switch (int) { 0...ABIType.max => { - abi_types.appendAssumeCapacity(@enumFromInt(ABIType, int)); + abi_types.appendAssumeCapacity(@as(ABIType, @enumFromInt(int))); continue; }, else => { @@ -560,7 +560,7 @@ pub const FFI = struct { const int = ret_value.toInt32(); switch (int) { 0...ABIType.max => { - return_type = @enumFromInt(ABIType, int); + return_type = @as(ABIType, @enumFromInt(int)); break :brk; }, else => { @@ -594,11 +594,11 @@ pub const FFI = struct { if (ptr.isNumber()) { const num = ptr.asPtrAddress(); if (num > 0) - function.symbol_from_dynamic_library = @ptrFromInt(*anyopaque, num); + function.symbol_from_dynamic_library = @as(*anyopaque, @ptrFromInt(num)); } else { const num = ptr.toUInt64NoTruncate(); if (num > 0) { - function.symbol_from_dynamic_library = @ptrFromInt(*anyopaque, num); + function.symbol_from_dynamic_library = @as(*anyopaque, @ptrFromInt(num)); } } } @@ -831,7 +831,7 @@ pub const FFI = struct { return; } - var bytes: []u8 = try allocator.alloc(u8, @intCast(usize, relocation_size)); + var bytes: []u8 = try allocator.alloc(u8, @as(usize, @intCast(relocation_size))); defer { if (this.step == .failed) { allocator.free(bytes); @@ -1001,7 +1001,7 @@ pub const FFI = struct { return; } - var bytes: []u8 = try allocator.alloc(u8, @intCast(usize, relocation_size)); + var bytes: []u8 = try allocator.alloc(u8, @as(usize, @intCast(relocation_size))); defer { if (this.step == .failed) { allocator.free(bytes); diff --git a/src/bun.js/api/html_rewriter.zig b/src/bun.js/api/html_rewriter.zig index b309e07d7..651db981b 100644 --- a/src/bun.js/api/html_rewriter.zig +++ b/src/bun.js/api/html_rewriter.zig @@ -1874,7 +1874,7 @@ pub const Element = struct { AttributeIterator.getAttributeIteratorJSClass(globalObject).asObjectRef(), null, 1, - @ptrCast([*]JSC.C.JSObjectRef, &attr), + @as([*]JSC.C.JSObjectRef, @ptrCast(&attr)), null, ), ); diff --git a/src/bun.js/api/server.zig b/src/bun.js/api/server.zig index 63e83d9bf..fbf22678b 100644 --- a/src/bun.js/api/server.zig +++ b/src/bun.js/api/server.zig @@ -170,7 +170,7 @@ pub const ServerConfig = struct { pub fn asUSockets(this_: ?SSLConfig) uws.us_bun_socket_context_options_t { var ctx_opts: uws.us_bun_socket_context_options_t = undefined; - @memset(@ptrCast([*]u8, &ctx_opts)[0..@sizeOf(uws.us_bun_socket_context_options_t)], 0); + @memset(@as([*]u8, @ptrCast(&ctx_opts))[0..@sizeOf(uws.us_bun_socket_context_options_t)], 0); if (this_) |ssl_config| { if (ssl_config.key_file_name != null) @@ -714,12 +714,12 @@ pub const ServerConfig = struct { } if (arg.getTruthy(global, "port")) |port_| { - args.port = @intCast( + args.port = @as( u16, - @min( + @intCast(@min( @max(0, port_.coerce(i32, global)), std.math.maxInt(u16), - ), + )), ); } @@ -783,7 +783,7 @@ pub const ServerConfig = struct { if (arg.getTruthy(global, "maxRequestBodySize")) |max_request_body_size| { if (max_request_body_size.isNumber()) { - args.max_request_body_size = @intCast(u64, @max(0, max_request_body_size.toInt64())); + args.max_request_body_size = @as(u64, @intCast(@max(0, max_request_body_size.toInt64()))); } } @@ -1239,7 +1239,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp .reason = .fetch_event_handler, .cwd = VirtualMachine.get().bundler.fs.top_level_dir, .problems = Api.Problems{ - .code = @truncate(u16, @intFromError(err)), + .code = @as(u16, @truncate(@intFromError(err))), .name = @errorName(err), .exceptions = exceptions, .build = log.toAPI(allocator) catch unreachable, @@ -1641,19 +1641,19 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp const adjusted_count_temporary = @min(@as(u64, this.sendfile.remain), @as(u63, std.math.maxInt(u63))); // TODO we should not need this int cast; improve the return type of `@min` - const adjusted_count = @intCast(u63, adjusted_count_temporary); + const adjusted_count = @as(u63, @intCast(adjusted_count_temporary)); if (Environment.isLinux) { - var signed_offset = @intCast(i64, this.sendfile.offset); + var signed_offset = @as(i64, @intCast(this.sendfile.offset)); const start = this.sendfile.offset; const val = // this does the syscall directly, without libc linux.sendfile(this.sendfile.socket_fd, this.sendfile.fd, &signed_offset, this.sendfile.remain); - this.sendfile.offset = @intCast(Blob.SizeType, signed_offset); + this.sendfile.offset = @as(Blob.SizeType, @intCast(signed_offset)); const errcode = linux.getErrno(val); - this.sendfile.remain -|= @intCast(Blob.SizeType, this.sendfile.offset -| start); + this.sendfile.remain -|= @as(Blob.SizeType, @intCast(this.sendfile.offset -| start)); if (errcode != .SUCCESS or this.flags.aborted or this.sendfile.remain == 0 or val == 0) { if (errcode != .AGAIN and errcode != .SUCCESS and errcode != .PIPE) { @@ -1665,7 +1665,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp } } else { var sbytes: std.os.off_t = adjusted_count; - const signed_offset = @bitCast(i64, @as(u64, this.sendfile.offset)); + const signed_offset = @as(i64, @bitCast(@as(u64, this.sendfile.offset))); const errcode = std.c.getErrno(std.c.sendfile( this.sendfile.fd, this.sendfile.socket_fd, @@ -1675,7 +1675,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp null, 0, )); - const wrote = @intCast(Blob.SizeType, sbytes); + const wrote = @as(Blob.SizeType, @intCast(sbytes)); this.sendfile.offset +|= wrote; this.sendfile.remain -|= wrote; if (errcode != .AGAIN or this.flags.aborted or this.sendfile.remain == 0 or sbytes == 0) { @@ -1718,7 +1718,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp pub fn sendWritableBytesForBlob(this: *RequestContext, bytes_: []const u8, write_offset: c_ulong, resp: *App.Response) bool { std.debug.assert(this.resp == resp); - var bytes = bytes_[@min(bytes_.len, @truncate(usize, write_offset))..]; + var bytes = bytes_[@min(bytes_.len, @as(usize, @truncate(write_offset)))..]; if (resp.tryEnd(bytes, bytes_.len, this.shouldCloseConnection())) { this.finalize(); return true; @@ -1732,7 +1732,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp pub fn sendWritableBytesForCompleteResponseBuffer(this: *RequestContext, bytes_: []const u8, write_offset: c_ulong, resp: *App.Response) bool { std.debug.assert(this.resp == resp); - var bytes = bytes_[@min(bytes_.len, @truncate(usize, write_offset))..]; + var bytes = bytes_[@min(bytes_.len, @as(usize, @truncate(write_offset)))..]; if (resp.tryEnd(bytes, bytes_.len, this.shouldCloseConnection())) { this.response_buf_owned.items.len = 0; this.finalize(); @@ -1788,7 +1788,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp } var err = JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, @intFromEnum(std.os.E.INVAL)), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(@intFromEnum(std.os.E.INVAL))), .syscall = .sendfile, }; var sys = err.withPathLike(file.pathlike).toSystemError(); @@ -1807,7 +1807,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp } var err = JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, @intFromEnum(std.os.E.INVAL)), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(@intFromEnum(std.os.E.INVAL))), .syscall = .sendfile, }; var sys = err.withPathLike(file.pathlike).toSystemError(); @@ -1820,7 +1820,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp } const original_size = this.blob.Blob.size; - const stat_size = @intCast(Blob.SizeType, stat.size); + const stat_size = @as(Blob.SizeType, @intCast(stat.size)); this.blob.Blob.size = if (std.os.S.ISREG(stat.mode)) stat_size else @@ -1900,7 +1900,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp this.blob.Blob.resolveSize(); this.doRenderBlob(); } else { - const stat_size = @intCast(Blob.SizeType, result.result.total_size); + const stat_size = @as(Blob.SizeType, @intCast(result.result.total_size)); const original_size = this.blob.Blob.size; this.blob.Blob.size = if (original_size == 0 or original_size == Blob.max_size) @@ -1913,8 +1913,8 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp // this is used by content-range this.sendfile = .{ - .fd = @truncate(i32, bun.invalid_fd), - .remain = @truncate(Blob.SizeType, result.result.buf.len), + .fd = @as(i32, @truncate(bun.invalid_fd)), + .remain = @as(Blob.SizeType, @truncate(result.result.buf.len)), .offset = this.blob.Blob.offset, .auto_close = false, .socket_fd = -999, @@ -1988,7 +1988,7 @@ fn NewRequestContext(comptime ssl_enabled: bool, comptime debug_mode: bool, comp this.server.globalThis, stream.value, response_stream, - @ptrCast(**anyopaque, &signal.ptr), + @as(**anyopaque, @ptrCast(&signal.ptr)), ); assignment_result.ensureStillAlive(); @@ -3228,7 +3228,7 @@ pub const WebSocketServer = struct { globalObject.throwInvalidArguments("websocket expects maxPayloadLength to be an integer", .{}); return null; } - server.maxPayloadLength = @intCast(u32, @max(value.toInt64(), 0)); + server.maxPayloadLength = @as(u32, @intCast(@max(value.toInt64(), 0))); } } @@ -3239,7 +3239,7 @@ pub const WebSocketServer = struct { return null; } - var idleTimeout = @intCast(u16, @truncate(u32, @max(value.toInt64(), 0))); + var idleTimeout = @as(u16, @intCast(@as(u32, @truncate(@max(value.toInt64(), 0))))); if (idleTimeout > 960) { globalObject.throwInvalidArguments("websocket expects idleTimeout to be 960 or less", .{}); return null; @@ -3259,7 +3259,7 @@ pub const WebSocketServer = struct { return null; } - server.backpressureLimit = @intCast(u32, @max(value.toInt64(), 0)); + server.backpressureLimit = @as(u32, @intCast(@max(value.toInt64(), 0))); } } @@ -3683,7 +3683,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -3701,7 +3701,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -3762,7 +3762,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -3823,7 +3823,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -3863,7 +3863,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -3905,7 +3905,7 @@ pub const ServerWebSocket = struct { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - if (result) @intCast(i32, @truncate(u31, buffer.len)) else @as(i32, 0), + if (result) @as(i32, @intCast(@as(u31, @truncate(buffer.len)))) else @as(i32, 0), ); } @@ -4596,7 +4596,7 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - @as(i32, @intFromBool(uws.AnyWebSocket.publishWithOptions(ssl_enabled, app, topic_slice.slice(), buffer.slice(), .binary, compress))) * @intCast(i32, @truncate(u31, buffer.len)), + @as(i32, @intFromBool(uws.AnyWebSocket.publishWithOptions(ssl_enabled, app, topic_slice.slice(), buffer.slice(), .binary, compress))) * @as(i32, @intCast(@as(u31, @truncate(buffer.len)))), ); } @@ -4608,7 +4608,7 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { return JSValue.jsNumber( // if 0, return 0 // else return number of bytes sent - @as(i32, @intFromBool(uws.AnyWebSocket.publishWithOptions(ssl_enabled, app, topic_slice.slice(), buffer, .text, compress))) * @intCast(i32, @truncate(u31, buffer.len)), + @as(i32, @intFromBool(uws.AnyWebSocket.publishWithOptions(ssl_enabled, app, topic_slice.slice(), buffer, .text, compress))) * @as(i32, @intCast(@as(u31, @truncate(buffer.len)))), ); } @@ -4739,7 +4739,7 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { // See https://github.com/oven-sh/bun/issues/1339 // obviously invalid pointer marks it as used - upgrader.upgrade_context = @ptrFromInt(*uws.uws_socket_context_s, std.math.maxInt(usize)); + upgrader.upgrade_context = @as(*uws.uws_socket_context_s, @ptrFromInt(std.math.maxInt(usize))); request.upgrader = null; resp.clearAborted(); @@ -4961,11 +4961,11 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { } pub fn getPendingRequests(this: *ThisServer) JSC.JSValue { - return JSC.JSValue.jsNumber(@intCast(i32, @truncate(u31, this.pending_requests))); + return JSC.JSValue.jsNumber(@as(i32, @intCast(@as(u31, @truncate(this.pending_requests))))); } pub fn getPendingWebSockets(this: *ThisServer) JSC.JSValue { - return JSC.JSValue.jsNumber(@intCast(i32, @truncate(u31, this.activeSocketsCount()))); + return JSC.JSValue.jsNumber(@as(i32, @intCast(@as(u31, @truncate(this.activeSocketsCount()))))); } pub fn getHostname(this: *ThisServer, globalThis: *JSGlobalObject) JSC.JSValue { @@ -5001,7 +5001,7 @@ pub fn NewServer(comptime ssl_enabled_: bool, comptime debug_mode_: bool) type { pub fn activeSocketsCount(this: *const ThisServer) u32 { const websocket = &(this.config.websocket orelse return 0); - return @truncate(u32, websocket.handler.active_connections); + return @as(u32, @truncate(websocket.handler.active_connections)); } pub fn hasActiveWebSockets(this: *const ThisServer) bool { diff --git a/src/bun.js/api/sockets.classes.ts b/src/bun.js/api/sockets.classes.ts index 5bd073b9f..2a17ca39d 100644 --- a/src/bun.js/api/sockets.classes.ts +++ b/src/bun.js/api/sockets.classes.ts @@ -12,6 +12,59 @@ function generate(ssl) { fn: "getAuthorizationError", length: 0, }, + + getTLSFinishedMessage: { + fn: "getTLSFinishedMessage", + length: 0, + }, + getTLSPeerFinishedMessage: { + fn: "getTLSPeerFinishedMessage", + length: 0, + }, + getEphemeralKeyInfo: { + fn: "getEphemeralKeyInfo", + length: 0, + }, + getCipher: { + fn: "getCipher", + length: 0, + }, + getSession: { + fn: "getSession", + length: 0, + }, + setSession: { + fn: "setSession", + length: 0, + }, + getTLSTicket: { + fn: "getTLSTicket", + length: 0, + }, + exportKeyingMaterial: { + fn: "exportKeyingMaterial", + length: 3, + }, + setMaxSendFragment: { + fn: "setMaxSendFragment", + length: 1, + }, + getSharedSigalgs: { + fn: "getSharedSigalgs", + length: 0, + }, + getTLSVersion: { + fn: "getTLSVersion", + length: 0, + }, + getPeerCertificate: { + fn: "getPeerCertificate", + length: 1, + }, + getCertificate: { + fn: "getCertificate", + length: 0, + }, authorized: { getter: "getAuthorized", }, diff --git a/src/bun.js/base.zig b/src/bun.js/base.zig index b9dba8b37..b6623af88 100644 --- a/src/bun.js/base.zig +++ b/src/bun.js/base.zig @@ -272,7 +272,7 @@ pub const To = struct { if (value.len <= prefill) { var array: [prefill]JSC.C.JSValueRef = undefined; var i: u8 = 0; - const len = @min(@intCast(u8, value.len), prefill); + const len = @min(@as(u8, @intCast(value.len)), prefill); while (i < len and exception.* == null) : (i += 1) { array[i] = if (comptime Child == JSC.C.JSValueRef) value[i] @@ -1294,7 +1294,7 @@ pub fn NewClassWithInstanceType( @memset( &props, js.JSStaticValue{ - .name = @ptrFromInt([*c]const u8, 0), + .name = @as([*c]const u8, @ptrFromInt(0)), .getProperty = null, .setProperty = null, .attributes = js.JSPropertyAttributes.kJSPropertyAttributeNone, @@ -1311,7 +1311,7 @@ pub fn NewClassWithInstanceType( .name = lit ++ .{0}, .getProperty = null, .setProperty = null, - .attributes = @enumFromInt(js.JSPropertyAttributes, 0), + .attributes = @as(js.JSPropertyAttributes, @enumFromInt(0)), }; static_prop.getProperty = StaticProperty(i).getter; @@ -1423,7 +1423,7 @@ pub fn NewClassWithInstanceType( PointerType, if (@typeInfo(@TypeOf(ctxfn)) == .Pointer) ctxfn.* else ctxfn, ).rfn, - .attributes = @enumFromInt(js.JSPropertyAttributes, attributes), + .attributes = @as(js.JSPropertyAttributes, @enumFromInt(attributes)), }; count += 1; @@ -1447,7 +1447,7 @@ pub fn NewClassWithInstanceType( if (is_read_only) base |= @intFromEnum(js.JSPropertyAttributes.kJSPropertyAttributeReadOnly); - break :brk @enumFromInt(js.JSPropertyAttributes, base); + break :brk @as(js.JSPropertyAttributes, @enumFromInt(base)); }; __static_functions[count] = js.JSStaticFunction{ @@ -1820,7 +1820,7 @@ pub const ArrayBuffer = extern struct { } pub fn fromBytes(bytes: []u8, typed_array_type: JSC.JSValue.JSType) ArrayBuffer { - return ArrayBuffer{ .offset = 0, .len = @intCast(u32, bytes.len), .byte_len = @intCast(u32, bytes.len), .typed_array_type = typed_array_type, .ptr = bytes.ptr }; + return ArrayBuffer{ .offset = 0, .len = @as(u32, @intCast(bytes.len)), .byte_len = @as(u32, @intCast(bytes.len)), .typed_array_type = typed_array_type, .ptr = bytes.ptr }; } pub fn toJSUnchecked(this: ArrayBuffer, ctx: JSC.C.JSContextRef, exception: JSC.C.ExceptionRef) JSC.JSValue { @@ -1848,7 +1848,7 @@ pub const ArrayBuffer = extern struct { this.ptr, this.byte_len, MarkedArrayBuffer_deallocator, - @ptrFromInt(*anyopaque, @intFromPtr(&bun.default_allocator)), + @as(*anyopaque, @ptrFromInt(@intFromPtr(&bun.default_allocator))), exception, )); } @@ -1859,7 +1859,7 @@ pub const ArrayBuffer = extern struct { this.ptr, this.byte_len, MarkedArrayBuffer_deallocator, - @ptrFromInt(*anyopaque, @intFromPtr(&bun.default_allocator)), + @as(*anyopaque, @ptrFromInt(@intFromPtr(&bun.default_allocator))), exception, )); } @@ -1952,15 +1952,15 @@ pub const ArrayBuffer = extern struct { pub const slice = byteSlice; pub inline fn asU16(this: *const @This()) []u16 { - return std.mem.bytesAsSlice(u16, @alignCast(@alignOf([*]u16), this.ptr[this.offset..this.byte_len])); + return std.mem.bytesAsSlice(u16, @as([*]u16, @alignCast(this.ptr))[this.offset..this.byte_len]); } pub inline fn asU16Unaligned(this: *const @This()) []align(1) u16 { - return std.mem.bytesAsSlice(u16, @alignCast(@alignOf([*]align(1) u16), this.ptr[this.offset..this.byte_len])); + return std.mem.bytesAsSlice(u16, @as([*]align(1) u16, @alignCast(this.ptr))[this.offset..this.byte_len]); } pub inline fn asU32(this: *const @This()) []u32 { - return std.mem.bytesAsSlice(u32, @alignCast(@alignOf([*]u32), this.ptr)[this.offset..this.byte_len]); + return std.mem.bytesAsSlice(u32, @as([*]u32, @alignCast(this.ptr))[this.offset..this.byte_len]); } }; @@ -3373,7 +3373,7 @@ pub const FilePoll = struct { const DNSResolver = JSC.DNS.DNSResolver; const GetAddrInfoRequest = JSC.DNS.GetAddrInfoRequest; const Deactivated = opaque { - pub var owner: Owner = Owner.init(@ptrFromInt(*Deactivated, @as(usize, 0xDEADBEEF))); + pub var owner: Owner = Owner.init(@as(*Deactivated, @ptrFromInt(@as(usize, 0xDEADBEEF)))); }; pub const Owner = bun.TaggedPointerUnion(.{ @@ -3666,7 +3666,7 @@ pub const FilePoll = struct { pub fn initWithOwner(vm: *JSC.VirtualMachine, fd: bun.FileDescriptor, flags: Flags.Struct, owner: Owner) *FilePoll { var poll = vm.rareData().filePolls(vm).get(); - poll.fd = @intCast(u32, fd); + poll.fd = @as(u32, @intCast(fd)); poll.flags = Flags.Set.init(flags); poll.owner = owner; if (KQueueGenerationNumber != u0) { @@ -3711,9 +3711,9 @@ pub const FilePoll = struct { var file_poll = tag.as(FilePoll); if (comptime Environment.isMac) - onKQueueEvent(file_poll, loop, &loop.ready_polls[@intCast(usize, loop.current_ready_poll)]) + onKQueueEvent(file_poll, loop, &loop.ready_polls[@as(usize, @intCast(loop.current_ready_poll))]) else if (comptime Environment.isLinux) - onEpollEvent(file_poll, loop, &loop.ready_polls[@intCast(usize, loop.current_ready_poll)]); + onEpollEvent(file_poll, loop, &loop.ready_polls[@as(usize, @intCast(loop.current_ready_poll))]); } const Pollable = bun.TaggedPointerUnion( @@ -3761,7 +3761,7 @@ pub const FilePoll = struct { const ctl = linux.epoll_ctl( watcher_fd, if (this.isRegistered() or this.flags.contains(.needs_rearm)) linux.EPOLL.CTL_MOD else linux.EPOLL.CTL_ADD, - @intCast(std.os.fd_t, fd), + @as(std.os.fd_t, @intCast(fd)), &event, ); @@ -3773,7 +3773,7 @@ pub const FilePoll = struct { const one_shot_flag: u16 = if (!this.flags.contains(.one_shot)) 0 else std.c.EV_ONESHOT; changelist[0] = switch (flag) { .readable => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_READ, .data = 0, .fflags = 0, @@ -3782,7 +3782,7 @@ pub const FilePoll = struct { .ext = .{ this.generation_number, 0 }, }, .writable => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_WRITE, .data = 0, .fflags = 0, @@ -3791,7 +3791,7 @@ pub const FilePoll = struct { .ext = .{ this.generation_number, 0 }, }, .process => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_PROC, .data = 0, .fflags = std.c.NOTE_EXIT, @@ -3800,7 +3800,7 @@ pub const FilePoll = struct { .ext = .{ this.generation_number, 0 }, }, .machport => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_MACHPORT, .data = 0, .fflags = 0, @@ -3913,7 +3913,7 @@ pub const FilePoll = struct { const ctl = linux.epoll_ctl( watcher_fd, linux.EPOLL.CTL_DEL, - @intCast(std.os.fd_t, fd), + @as(std.os.fd_t, @intCast(fd)), null, ); @@ -3925,7 +3925,7 @@ pub const FilePoll = struct { changelist[0] = switch (flag) { .readable => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_READ, .data = 0, .fflags = 0, @@ -3934,7 +3934,7 @@ pub const FilePoll = struct { .ext = .{ 0, 0 }, }, .machport => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_MACHPORT, .data = 0, .fflags = 0, @@ -3943,7 +3943,7 @@ pub const FilePoll = struct { .ext = .{ 0, 0 }, }, .writable => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_WRITE, .data = 0, .fflags = 0, @@ -3952,7 +3952,7 @@ pub const FilePoll = struct { .ext = .{ 0, 0 }, }, .process => .{ - .ident = @intCast(u64, fd), + .ident = @as(u64, @intCast(fd)), .filter = std.os.system.EVFILT_PROC, .data = 0, .fflags = std.c.NOTE_EXIT, diff --git a/src/bun.js/bindings/FFI.zig b/src/bun.js/bindings/FFI.zig index fde4a8d30..9d16bd78e 100644 --- a/src/bun.js/bindings/FFI.zig +++ b/src/bun.js/bindings/FFI.zig @@ -18,41 +18,41 @@ pub const union_EncodedJSValue = extern union { }; pub const EncodedJSValue = union_EncodedJSValue; pub export var ValueUndefined: EncodedJSValue = EncodedJSValue{ - .asInt64 = @bitCast(i64, @as(c_longlong, @as(c_int, 2) | @as(c_int, 8))), + .asInt64 = @as(i64, @bitCast(@as(c_longlong, @as(c_int, 2) | @as(c_int, 8)))), }; pub export var ValueTrue: EncodedJSValue = EncodedJSValue{ - .asInt64 = @bitCast(i64, @as(c_longlong, (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1))), + .asInt64 = @as(i64, @bitCast(@as(c_longlong, (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1)))), }; pub const JSContext = ?*anyopaque; pub inline fn JSVALUE_IS_CELL(arg_val: EncodedJSValue) bool { const val = arg_val; - return !(((@bitCast(c_ulonglong, val.asInt64) & @as(c_ulonglong, 18446181123756130304)) | @bitCast(c_ulonglong, @as(c_longlong, @as(c_int, 2)))) != 0); + return !(((@as(c_ulonglong, @bitCast(val.asInt64)) & @as(c_ulonglong, 18446181123756130304)) | @as(c_ulonglong, @bitCast(@as(c_longlong, @as(c_int, 2))))) != 0); } pub inline fn JSVALUE_IS_INT32(arg_val: EncodedJSValue) @"bool" { const val = arg_val; - return (@bitCast(c_ulonglong, val.asInt64) & @as(c_ulonglong, 18446181123756130304)) == @as(c_ulonglong, 18446181123756130304); + return (@as(c_ulonglong, @bitCast(val.asInt64)) & @as(c_ulonglong, 18446181123756130304)) == @as(c_ulonglong, 18446181123756130304); } pub inline fn JSVALUE_IS_NUMBER(arg_val: EncodedJSValue) @"bool" { const val = arg_val; - return (@bitCast(c_ulonglong, val.asInt64) & @as(c_ulonglong, 18446181123756130304)) != 0; + return (@as(c_ulonglong, @bitCast(val.asInt64)) & @as(c_ulonglong, 18446181123756130304)) != 0; } pub inline fn JSVALUE_TO_UINT64(arg_value: EncodedJSValue) u64 { var value = arg_value; if (JSVALUE_IS_INT32(value)) { - return @bitCast(u64, @as(c_longlong, JSVALUE_TO_INT32(value))); + return @as(u64, @bitCast(@as(c_longlong, JSVALUE_TO_INT32(value)))); } if (JSVALUE_IS_NUMBER(value)) { - return @intFromFloat(u64, JSVALUE_TO_DOUBLE(value)); + return @as(u64, @intFromFloat(JSVALUE_TO_DOUBLE(value))); } return JSVALUE_TO_UINT64_SLOW(value); } pub inline fn JSVALUE_TO_INT64(arg_value: EncodedJSValue) i64 { const value = arg_value; if (JSVALUE_IS_INT32(value)) { - return @bitCast(i64, @as(c_longlong, JSVALUE_TO_INT32(value))); + return @as(i64, @bitCast(@as(c_longlong, JSVALUE_TO_INT32(value)))); } if (JSVALUE_IS_NUMBER(value)) { - return @intFromFloat(i64, JSVALUE_TO_DOUBLE(value)); + return @as(i64, @intFromFloat(JSVALUE_TO_DOUBLE(value))); } return JSVALUE_TO_INT64_SLOW(value); } @@ -63,69 +63,69 @@ pub const INT64_TO_JSVALUE_SLOW = @import("./bindings.zig").JSValue.fromInt64NoT pub inline fn UINT64_TO_JSVALUE(arg_globalObject: ?*anyopaque, arg_val: u64) EncodedJSValue { var globalObject = arg_globalObject; const val = arg_val; - if (val < @bitCast(c_ulonglong, @as(c_longlong, @as(c_long, 2147483648)))) { - return INT32_TO_JSVALUE(@bitCast(i32, @truncate(c_uint, val))); + if (val < @as(c_ulonglong, @bitCast(@as(c_longlong, @as(c_long, 2147483648))))) { + return INT32_TO_JSVALUE(@as(i32, @bitCast(@as(c_uint, @truncate(val))))); } - if (val < @bitCast(c_ulonglong, @as(c_longlong, @as(c_long, 9007199254740991)))) { - return DOUBLE_TO_JSVALUE(@floatFromInt(f64, val)); + if (val < @as(c_ulonglong, @bitCast(@as(c_longlong, @as(c_long, 9007199254740991))))) { + return DOUBLE_TO_JSVALUE(@as(f64, @floatFromInt(val))); } - return UINT64_TO_JSVALUE_SLOW(@ptrCast(*@import("./bindings.zig").JSGlobalObject, globalObject.?), val).asEncoded(); + return UINT64_TO_JSVALUE_SLOW(@as(*@import("./bindings.zig").JSGlobalObject, @ptrCast(globalObject.?)), val).asEncoded(); } pub inline fn INT64_TO_JSVALUE(arg_globalObject: ?*anyopaque, arg_val: i64) EncodedJSValue { var globalObject = arg_globalObject; var val = arg_val; - if ((val >= @bitCast(c_longlong, @as(c_longlong, -@as(c_long, 2147483648)))) and (val <= @bitCast(c_longlong, @as(c_longlong, @as(c_long, 2147483648))))) { - return INT32_TO_JSVALUE(@bitCast(i32, @truncate(c_int, val))); + if ((val >= @as(c_longlong, @bitCast(@as(c_longlong, -@as(c_long, 2147483648))))) and (val <= @as(c_longlong, @bitCast(@as(c_longlong, @as(c_long, 2147483648)))))) { + return INT32_TO_JSVALUE(@as(i32, @bitCast(@as(c_int, @truncate(val))))); } - if ((val >= @bitCast(c_longlong, @as(c_longlong, -@as(c_long, 9007199254740991)))) and (val <= @bitCast(c_longlong, @as(c_longlong, @as(c_long, 9007199254740991))))) { - return DOUBLE_TO_JSVALUE(@floatFromInt(f64, val)); + if ((val >= @as(c_longlong, @bitCast(@as(c_longlong, -@as(c_long, 9007199254740991))))) and (val <= @as(c_longlong, @bitCast(@as(c_longlong, @as(c_long, 9007199254740991)))))) { + return DOUBLE_TO_JSVALUE(@as(f64, @floatFromInt(val))); } - return INT64_TO_JSVALUE_SLOW(@ptrCast(*@import("./bindings.zig").JSGlobalObject, globalObject.?), val).asEncoded(); + return INT64_TO_JSVALUE_SLOW(@as(*@import("./bindings.zig").JSGlobalObject, @ptrCast(globalObject.?)), val).asEncoded(); } pub inline fn INT32_TO_JSVALUE(arg_val: i32) EncodedJSValue { - return .{ .asInt64 = @bitCast(i64, @as(c_ulonglong, 18446181123756130304) | @bitCast(c_ulonglong, @as(c_ulonglong, @bitCast(u32, arg_val)))) }; + return .{ .asInt64 = @as(i64, @bitCast(@as(c_ulonglong, 18446181123756130304) | @as(c_ulonglong, @bitCast(@as(c_ulonglong, @as(u32, @bitCast(arg_val))))))) }; } pub inline fn DOUBLE_TO_JSVALUE(arg_val: f64) EncodedJSValue { var res: EncodedJSValue = .{ .asDouble = arg_val }; - res.asInt64 += @as(c_longlong, 1) << @intCast(@import("std").math.Log2Int(c_longlong), 49); + res.asInt64 += @as(c_longlong, 1) << @as(@import("std").math.Log2Int(c_longlong), @intCast(49)); return res; } pub inline fn FLOAT_TO_JSVALUE(arg_val: f32) EncodedJSValue { var val = arg_val; - return DOUBLE_TO_JSVALUE(@floatCast(f64, val)); + return DOUBLE_TO_JSVALUE(@as(f64, @floatCast(val))); } pub inline fn BOOLEAN_TO_JSVALUE(arg_val: @"bool") EncodedJSValue { var val = arg_val; var res: EncodedJSValue = undefined; - res.asInt64 = @bitCast(i64, @as(c_longlong, if (@as(c_int, @intFromBool(val)) != 0) (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1) else (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 0))); + res.asInt64 = @as(i64, @bitCast(@as(c_longlong, if (@as(c_int, @intFromBool(val)) != 0) (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1) else (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 0)))); return res; } pub inline fn PTR_TO_JSVALUE(arg_ptr: ?*anyopaque) EncodedJSValue { var ptr = arg_ptr; var val: EncodedJSValue = undefined; - val.asInt64 = @intCast(i64, @intFromPtr(ptr)) + (@as(c_longlong, 1) << @intCast(@import("std").math.Log2Int(c_longlong), 49)); + val.asInt64 = @as(i64, @intCast(@intFromPtr(ptr))) + (@as(c_longlong, 1) << @as(@import("std").math.Log2Int(c_longlong), @intCast(49))); return val; } pub inline fn JSVALUE_TO_PTR(arg_val: EncodedJSValue) ?*anyopaque { var val = arg_val; - return @ptrFromInt(?*anyopaque, val.asInt64 - (@as(c_longlong, 1) << @intCast(@import("std").math.Log2Int(c_longlong), 49))); + return @as(?*anyopaque, @ptrFromInt(val.asInt64 - (@as(c_longlong, 1) << @as(@import("std").math.Log2Int(c_longlong), @intCast(49))))); } pub inline fn JSVALUE_TO_INT32(arg_val: EncodedJSValue) i32 { var val = arg_val; - return @bitCast(i32, @truncate(c_int, val.asInt64)); + return @as(i32, @bitCast(@as(c_int, @truncate(val.asInt64)))); } pub inline fn JSVALUE_TO_FLOAT(arg_val: EncodedJSValue) f32 { var val = arg_val; - return @floatCast(f32, JSVALUE_TO_DOUBLE(val)); + return @as(f32, @floatCast(JSVALUE_TO_DOUBLE(val))); } pub inline fn JSVALUE_TO_DOUBLE(arg_val: EncodedJSValue) f64 { var val = arg_val; - val.asInt64 -= comptime @as(c_longlong, 1) << @intCast(@import("std").math.Log2Int(c_longlong), 49); + val.asInt64 -= comptime @as(c_longlong, 1) << @as(@import("std").math.Log2Int(c_longlong), @intCast(49)); return val.asDouble; } pub inline fn JSVALUE_TO_BOOL(arg_val: EncodedJSValue) @"bool" { var val = arg_val; - return val.asInt64 == @bitCast(c_longlong, @as(c_longlong, (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1))); + return val.asInt64 == @as(c_longlong, @bitCast(@as(c_longlong, (@as(c_int, 2) | @as(c_int, 4)) | @as(c_int, 1)))); } pub extern fn JSFunctionCall(globalObject: ?*anyopaque, callFrame: ?*anyopaque) ?*anyopaque; pub const __block = @compileError("unable to translate macro: undefined identifier `__attribute__`"); // (no file):27:9 diff --git a/src/bun.js/bindings/JSSink.cpp b/src/bun.js/bindings/JSSink.cpp index b360d429b..6da2cbdd2 100644 --- a/src/bun.js/bindings/JSSink.cpp +++ b/src/bun.js/bindings/JSSink.cpp @@ -1,6 +1,6 @@ // AUTO-GENERATED FILE. DO NOT EDIT. -// Generated by 'make generate-sink' at 2023-07-18T03:21:16.951Z +// Generated by 'make generate-sink' at 2023-07-18T09:07:30.319Z // To regenerate this file, run: // // make generate-sink diff --git a/src/bun.js/bindings/JSSink.h b/src/bun.js/bindings/JSSink.h index 09cea950c..7e95b886a 100644 --- a/src/bun.js/bindings/JSSink.h +++ b/src/bun.js/bindings/JSSink.h @@ -1,6 +1,6 @@ // AUTO-GENERATED FILE. DO NOT EDIT. -// Generated by 'make generate-sink' at 2023-07-18T03:21:16.950Z +// Generated by 'make generate-sink' at 2023-07-18T09:07:30.318Z // #pragma once diff --git a/src/bun.js/bindings/Process.cpp b/src/bun.js/bindings/Process.cpp index dd5c41c44..6c58c94dd 100644 --- a/src/bun.js/bindings/Process.cpp +++ b/src/bun.js/bindings/Process.cpp @@ -15,6 +15,9 @@ #include <JavaScriptCore/LazyProperty.h> #include <JavaScriptCore/LazyPropertyInlines.h> #include <JavaScriptCore/VMTrapsInlines.h> +#include <termios.h> +#include <errno.h> +#include <sys/ioctl.h> #pragma mark - Node.js Process @@ -109,7 +112,53 @@ JSC_DEFINE_CUSTOM_SETTER(Process_defaultSetter, return true; } -JSC_DECLARE_HOST_FUNCTION(Process_functionNextTick); +static bool getWindowSize(int fd, size_t* width, size_t* height) +{ + struct winsize ws; + int err; + do + err = ioctl(fd, TIOCGWINSZ, &ws); + while (err == -1 && errno == EINTR); + + if (err == -1) + return false; + + *width = ws.ws_col; + *height = ws.ws_row; + + return true; +} + +JSC_DEFINE_HOST_FUNCTION(Process_functionInternalGetWindowSize, + (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) +{ + JSC::VM& vm = globalObject->vm(); + auto argCount = callFrame->argumentCount(); + auto throwScope = DECLARE_THROW_SCOPE(vm); + if (argCount == 0) { + JSC::throwTypeError(globalObject, throwScope, "getWindowSize requires 2 argument (a file descriptor)"_s); + return JSC::JSValue::encode(JSC::JSValue {}); + } + + int fd = callFrame->uncheckedArgument(0).toInt32(globalObject); + RETURN_IF_EXCEPTION(throwScope, {}); + JSC::JSArray* array = jsDynamicCast<JSC::JSArray*>(callFrame->uncheckedArgument(1)); + if (!array || array->length() < 2) { + JSC::throwTypeError(globalObject, throwScope, "getWindowSize requires 2 argument (an array)"_s); + return JSC::JSValue::encode(JSC::JSValue {}); + } + + size_t width, height; + if (!getWindowSize(fd, &width, &height)) { + return JSC::JSValue::encode(jsBoolean(false)); + } + + array->putDirectIndex(globalObject, 0, jsNumber(width)); + array->putDirectIndex(globalObject, 1, jsNumber(height)); + + return JSC::JSValue::encode(jsBoolean(true)); +} + JSC_DEFINE_HOST_FUNCTION(Process_functionNextTick, (JSC::JSGlobalObject * globalObject, JSC::CallFrame* callFrame)) { @@ -181,23 +230,35 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, auto argCount = callFrame->argumentCount(); if (argCount < 2) { - JSC::throwTypeError(globalObject, scope, "dlopen requires 2 arguments"_s); return JSC::JSValue::encode(JSC::JSValue {}); } JSC::JSValue moduleValue = callFrame->uncheckedArgument(0); - if (!moduleValue.isObject()) { + JSC::JSObject* moduleObject = jsDynamicCast<JSC::JSObject*>(moduleValue); + if (UNLIKELY(!moduleObject)) { JSC::throwTypeError(globalObject, scope, "dlopen requires an object as first argument"_s); return JSC::JSValue::encode(JSC::JSValue {}); } - JSC::Identifier exportsSymbol = JSC::Identifier::fromString(vm, "exports"_s); - JSC::JSObject* exports = moduleValue.getObject()->getIfPropertyExists(globalObject, exportsSymbol).getObject(); + + JSValue exports = moduleObject->getIfPropertyExists(globalObject, builtinNames(vm).exportsPublicName()); + RETURN_IF_EXCEPTION(scope, {}); + + if (UNLIKELY(!exports)) { + JSC::throwTypeError(globalObject, scope, "dlopen requires an object with an exports property"_s); + return JSC::JSValue::encode(JSC::JSValue {}); + } + + globalObject->pendingNapiModule = exports; + if (exports.isCell()) { + vm.writeBarrier(globalObject, exports.asCell()); + } WTF::String filename = callFrame->uncheckedArgument(1).toWTFString(globalObject); + RETURN_IF_EXCEPTION(scope, {}); + CString utf8 = filename.utf8(); - globalObject->pendingNapiModule = exports; void* handle = dlopen(utf8.data(), RTLD_LAZY); if (!handle) { @@ -855,9 +916,13 @@ static JSValue constructStdioWriteStream(JSC::JSGlobalObject* globalObject, int { auto& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); + JSC::JSFunction* getWindowSizeFunction = JSC::JSFunction::create(vm, globalObject, 2, + String("getWindowSize"_s), Process_functionInternalGetWindowSize, ImplementationVisibility::Public); + JSC::JSFunction* getStdioWriteStream = JSC::JSFunction::create(vm, processObjectInternalsGetStdioWriteStreamCodeGenerator(vm), globalObject); JSC::MarkedArgumentBuffer args; args.append(JSC::jsNumber(fd)); + args.append(getWindowSizeFunction); auto clientData = WebCore::clientData(vm); JSC::CallData callData = JSC::getCallData(getStdioWriteStream); diff --git a/src/bun.js/bindings/ZigGeneratedClasses.cpp b/src/bun.js/bindings/ZigGeneratedClasses.cpp index c11766926..245010158 100644 --- a/src/bun.js/bindings/ZigGeneratedClasses.cpp +++ b/src/bun.js/bindings/ZigGeneratedClasses.cpp @@ -17008,12 +17008,45 @@ JSC_DECLARE_CUSTOM_SETTER(TCPSocketPrototype__dataSetterWrap); extern "C" EncodedJSValue TCPSocketPrototype__end(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__endCallback); +extern "C" EncodedJSValue TCPSocketPrototype__exportKeyingMaterial(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__exportKeyingMaterialCallback); + extern "C" EncodedJSValue TCPSocketPrototype__flush(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__flushCallback); extern "C" EncodedJSValue TCPSocketPrototype__getAuthorizationError(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getAuthorizationErrorCallback); +extern "C" EncodedJSValue TCPSocketPrototype__getCertificate(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getCertificateCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getCipher(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getCipherCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getEphemeralKeyInfo(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getEphemeralKeyInfoCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getPeerCertificate(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getPeerCertificateCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getSession(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getSessionCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getSharedSigalgs(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getSharedSigalgsCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getTLSFinishedMessage(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getTLSFinishedMessageCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getTLSPeerFinishedMessage(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getTLSPeerFinishedMessageCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getTLSTicket(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getTLSTicketCallback); + +extern "C" EncodedJSValue TCPSocketPrototype__getTLSVersion(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__getTLSVersionCallback); + extern "C" JSC::EncodedJSValue TCPSocketPrototype__getListener(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject); JSC_DECLARE_CUSTOM_GETTER(TCPSocketPrototype__listenerGetterWrap); @@ -17032,9 +17065,15 @@ JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__reloadCallback); extern "C" JSC::EncodedJSValue TCPSocketPrototype__getRemoteAddress(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject); JSC_DECLARE_CUSTOM_GETTER(TCPSocketPrototype__remoteAddressGetterWrap); +extern "C" EncodedJSValue TCPSocketPrototype__setMaxSendFragment(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__setMaxSendFragmentCallback); + extern "C" EncodedJSValue TCPSocketPrototype__setServername(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__setServernameCallback); +extern "C" EncodedJSValue TCPSocketPrototype__setSession(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__setSessionCallback); + extern "C" EncodedJSValue TCPSocketPrototype__shutdown(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TCPSocketPrototype__shutdownCallback); @@ -17057,15 +17096,28 @@ static const HashTableValue JSTCPSocketPrototypeTableValues[] = { { "authorized"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__authorizedGetterWrap, 0 } }, { "data"_s, static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__dataGetterWrap, TCPSocketPrototype__dataSetterWrap } }, { "end"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__endCallback, 3 } }, + { "exportKeyingMaterial"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__exportKeyingMaterialCallback, 3 } }, { "flush"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__flushCallback, 0 } }, { "getAuthorizationError"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getAuthorizationErrorCallback, 0 } }, + { "getCertificate"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getCertificateCallback, 0 } }, + { "getCipher"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getCipherCallback, 0 } }, + { "getEphemeralKeyInfo"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getEphemeralKeyInfoCallback, 0 } }, + { "getPeerCertificate"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getPeerCertificateCallback, 1 } }, + { "getSession"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getSessionCallback, 0 } }, + { "getSharedSigalgs"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getSharedSigalgsCallback, 0 } }, + { "getTLSFinishedMessage"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getTLSFinishedMessageCallback, 0 } }, + { "getTLSPeerFinishedMessage"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getTLSPeerFinishedMessageCallback, 0 } }, + { "getTLSTicket"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getTLSTicketCallback, 0 } }, + { "getTLSVersion"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__getTLSVersionCallback, 0 } }, { "listener"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__listenerGetterWrap, 0 } }, { "localPort"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__localPortGetterWrap, 0 } }, { "readyState"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__readyStateGetterWrap, 0 } }, { "ref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__refCallback, 0 } }, { "reload"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__reloadCallback, 1 } }, { "remoteAddress"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TCPSocketPrototype__remoteAddressGetterWrap, 0 } }, + { "setMaxSendFragment"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__setMaxSendFragmentCallback, 1 } }, { "setServername"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__setServernameCallback, 1 } }, + { "setSession"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__setSessionCallback, 0 } }, { "shutdown"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__shutdownCallback, 1 } }, { "timeout"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__timeoutCallback, 1 } }, { "unref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TCPSocketPrototype__unrefCallback, 0 } }, @@ -17180,6 +17232,33 @@ JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__endCallback, (JSGlobalObject * lexi return TCPSocketPrototype__end(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__exportKeyingMaterialCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__exportKeyingMaterial(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__flushCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -17234,6 +17313,276 @@ JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getAuthorizationErrorCallback, (JSG return TCPSocketPrototype__getAuthorizationError(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getCertificateCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getCertificate(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getCipherCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getCipher(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getEphemeralKeyInfoCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getEphemeralKeyInfo(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getPeerCertificateCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getPeerCertificate(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getSessionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getSession(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getSharedSigalgsCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getSharedSigalgs(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getTLSFinishedMessageCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getTLSFinishedMessage(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getTLSPeerFinishedMessageCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getTLSPeerFinishedMessage(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getTLSTicketCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getTLSTicket(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__getTLSVersionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__getTLSVersion(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_CUSTOM_GETTER(TCPSocketPrototype__listenerGetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName)) { auto& vm = lexicalGlobalObject->vm(); @@ -17355,6 +17704,33 @@ extern "C" EncodedJSValue TCPSocketPrototype__remoteAddressGetCachedValue(JSC::E return JSValue::encode(thisObject->m_remoteAddress.get()); } +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__setMaxSendFragmentCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__setMaxSendFragment(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__setServernameCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -17382,6 +17758,33 @@ JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__setServernameCallback, (JSGlobalObj return TCPSocketPrototype__setServername(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__setSessionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTCPSocket* thisObject = jsDynamicCast<JSTCPSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TCPSocketPrototype__setSession(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TCPSocketPrototype__shutdownCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -17694,12 +18097,45 @@ JSC_DECLARE_CUSTOM_SETTER(TLSSocketPrototype__dataSetterWrap); extern "C" EncodedJSValue TLSSocketPrototype__end(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__endCallback); +extern "C" EncodedJSValue TLSSocketPrototype__exportKeyingMaterial(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__exportKeyingMaterialCallback); + extern "C" EncodedJSValue TLSSocketPrototype__flush(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__flushCallback); extern "C" EncodedJSValue TLSSocketPrototype__getAuthorizationError(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getAuthorizationErrorCallback); +extern "C" EncodedJSValue TLSSocketPrototype__getCertificate(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getCertificateCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getCipher(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getCipherCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getEphemeralKeyInfo(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getEphemeralKeyInfoCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getPeerCertificate(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getPeerCertificateCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getSession(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getSessionCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getSharedSigalgs(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getSharedSigalgsCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getTLSFinishedMessage(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getTLSFinishedMessageCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getTLSPeerFinishedMessage(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getTLSPeerFinishedMessageCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getTLSTicket(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getTLSTicketCallback); + +extern "C" EncodedJSValue TLSSocketPrototype__getTLSVersion(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__getTLSVersionCallback); + extern "C" JSC::EncodedJSValue TLSSocketPrototype__getListener(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject); JSC_DECLARE_CUSTOM_GETTER(TLSSocketPrototype__listenerGetterWrap); @@ -17718,9 +18154,15 @@ JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__reloadCallback); extern "C" JSC::EncodedJSValue TLSSocketPrototype__getRemoteAddress(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject); JSC_DECLARE_CUSTOM_GETTER(TLSSocketPrototype__remoteAddressGetterWrap); +extern "C" EncodedJSValue TLSSocketPrototype__setMaxSendFragment(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__setMaxSendFragmentCallback); + extern "C" EncodedJSValue TLSSocketPrototype__setServername(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__setServernameCallback); +extern "C" EncodedJSValue TLSSocketPrototype__setSession(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); +JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__setSessionCallback); + extern "C" EncodedJSValue TLSSocketPrototype__shutdown(void* ptr, JSC::JSGlobalObject* lexicalGlobalObject, JSC::CallFrame* callFrame); JSC_DECLARE_HOST_FUNCTION(TLSSocketPrototype__shutdownCallback); @@ -17743,15 +18185,28 @@ static const HashTableValue JSTLSSocketPrototypeTableValues[] = { { "authorized"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__authorizedGetterWrap, 0 } }, { "data"_s, static_cast<unsigned>(JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__dataGetterWrap, TLSSocketPrototype__dataSetterWrap } }, { "end"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__endCallback, 3 } }, + { "exportKeyingMaterial"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__exportKeyingMaterialCallback, 3 } }, { "flush"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__flushCallback, 0 } }, { "getAuthorizationError"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getAuthorizationErrorCallback, 0 } }, + { "getCertificate"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getCertificateCallback, 0 } }, + { "getCipher"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getCipherCallback, 0 } }, + { "getEphemeralKeyInfo"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getEphemeralKeyInfoCallback, 0 } }, + { "getPeerCertificate"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getPeerCertificateCallback, 1 } }, + { "getSession"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getSessionCallback, 0 } }, + { "getSharedSigalgs"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getSharedSigalgsCallback, 0 } }, + { "getTLSFinishedMessage"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getTLSFinishedMessageCallback, 0 } }, + { "getTLSPeerFinishedMessage"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getTLSPeerFinishedMessageCallback, 0 } }, + { "getTLSTicket"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getTLSTicketCallback, 0 } }, + { "getTLSVersion"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__getTLSVersionCallback, 0 } }, { "listener"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__listenerGetterWrap, 0 } }, { "localPort"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__localPortGetterWrap, 0 } }, { "readyState"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__readyStateGetterWrap, 0 } }, { "ref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__refCallback, 0 } }, { "reload"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__reloadCallback, 1 } }, { "remoteAddress"_s, static_cast<unsigned>(JSC::PropertyAttribute::ReadOnly | JSC::PropertyAttribute::CustomAccessor | JSC::PropertyAttribute::DOMAttribute | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::GetterSetterType, TLSSocketPrototype__remoteAddressGetterWrap, 0 } }, + { "setMaxSendFragment"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__setMaxSendFragmentCallback, 1 } }, { "setServername"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__setServernameCallback, 1 } }, + { "setSession"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__setSessionCallback, 0 } }, { "shutdown"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__shutdownCallback, 1 } }, { "timeout"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__timeoutCallback, 1 } }, { "unref"_s, static_cast<unsigned>(JSC::PropertyAttribute::Function | PropertyAttribute::DontDelete), NoIntrinsic, { HashTableValue::NativeFunctionType, TLSSocketPrototype__unrefCallback, 0 } }, @@ -17866,6 +18321,33 @@ JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__endCallback, (JSGlobalObject * lexi return TLSSocketPrototype__end(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__exportKeyingMaterialCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__exportKeyingMaterial(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__flushCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -17920,6 +18402,276 @@ JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getAuthorizationErrorCallback, (JSG return TLSSocketPrototype__getAuthorizationError(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getCertificateCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getCertificate(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getCipherCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getCipher(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getEphemeralKeyInfoCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getEphemeralKeyInfo(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getPeerCertificateCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getPeerCertificate(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getSessionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getSession(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getSharedSigalgsCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getSharedSigalgs(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getTLSFinishedMessageCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getTLSFinishedMessage(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getTLSPeerFinishedMessageCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getTLSPeerFinishedMessage(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getTLSTicketCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getTLSTicket(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__getTLSVersionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__getTLSVersion(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_CUSTOM_GETTER(TLSSocketPrototype__listenerGetterWrap, (JSGlobalObject * lexicalGlobalObject, EncodedJSValue thisValue, PropertyName attributeName)) { auto& vm = lexicalGlobalObject->vm(); @@ -18041,6 +18793,33 @@ extern "C" EncodedJSValue TLSSocketPrototype__remoteAddressGetCachedValue(JSC::E return JSValue::encode(thisObject->m_remoteAddress.get()); } +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__setMaxSendFragmentCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__setMaxSendFragment(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__setServernameCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); @@ -18068,6 +18847,33 @@ JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__setServernameCallback, (JSGlobalObj return TLSSocketPrototype__setServername(thisObject->wrapped(), lexicalGlobalObject, callFrame); } +JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__setSessionCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) +{ + auto& vm = lexicalGlobalObject->vm(); + + JSTLSSocket* thisObject = jsDynamicCast<JSTLSSocket*>(callFrame->thisValue()); + + if (UNLIKELY(!thisObject)) { + auto throwScope = DECLARE_THROW_SCOPE(vm); + return throwVMTypeError(lexicalGlobalObject, throwScope); + } + + JSC::EnsureStillAliveScope thisArg = JSC::EnsureStillAliveScope(thisObject); + +#ifdef BUN_DEBUG + /** View the file name of the JS file that called this function + * from a debugger */ + SourceOrigin sourceOrigin = callFrame->callerSourceOrigin(vm); + const char* fileName = sourceOrigin.string().utf8().data(); + static const char* lastFileName = nullptr; + if (lastFileName != fileName) { + lastFileName = fileName; + } +#endif + + return TLSSocketPrototype__setSession(thisObject->wrapped(), lexicalGlobalObject, callFrame); +} + JSC_DEFINE_HOST_FUNCTION(TLSSocketPrototype__shutdownCallback, (JSGlobalObject * lexicalGlobalObject, CallFrame* callFrame)) { auto& vm = lexicalGlobalObject->vm(); diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp index 552da4009..1c97a57a4 100644 --- a/src/bun.js/bindings/bindings.cpp +++ b/src/bun.js/bindings/bindings.cpp @@ -2190,6 +2190,14 @@ CPP_DECL void JSC__JSValue__putIndex(JSC__JSValue JSValue0, JSC__JSGlobalObject* array->putDirectIndex(arg1, arg2, value2); } +CPP_DECL void JSC__JSValue__push(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, JSC__JSValue JSValue3) +{ + JSC::JSValue value = JSC::JSValue::decode(JSValue0); + JSC::JSValue value2 = JSC::JSValue::decode(JSValue3); + JSC::JSArray* array = JSC::jsCast<JSC::JSArray*>(value); + array->push(arg1, value2); +} + JSC__JSValue JSC__JSValue__createStringArray(JSC__JSGlobalObject* globalObject, const ZigString* arg1, size_t arg2, bool clone) { diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index 670c44808..3386de9b2 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -48,7 +48,7 @@ pub const JSObject = extern struct { pub fn Initializer(comptime Ctx: type, comptime func: fn (*Ctx, obj: *JSObject, global: *JSGlobalObject) void) type { return struct { pub fn call(this: ?*anyopaque, obj: [*c]JSObject, global: [*c]JSGlobalObject) callconv(.C) void { - @call(.always_inline, func, .{ @ptrCast(*Ctx, @alignCast(@alignOf(*Ctx), this.?)), obj.?, global.? }); + @call(.always_inline, func, .{ @as(*Ctx, @ptrCast(@alignCast(this.?))), obj.?, global.? }); } }; } @@ -166,7 +166,7 @@ pub const ZigString = extern struct { return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = out.ptr, - .len = @truncate(u32, out.len), + .len = @as(u32, @truncate(out.len)), }; } @@ -180,9 +180,9 @@ pub const ZigString = extern struct { pub fn charAt(this: ZigString, offset: usize) u8 { if (this.is16Bit()) { - return @truncate(u8, this.utf16SliceAligned()[offset]); + return @as(u8, @truncate(this.utf16SliceAligned()[offset])); } else { - return @truncate(u8, this.slice()[offset]); + return @as(u8, @truncate(this.slice()[offset])); } } @@ -390,7 +390,7 @@ pub const ZigString = extern struct { } pub fn markStatic(this: *ZigString) void { - this.ptr = @ptrFromInt([*]const u8, @intFromPtr(this.ptr) | (1 << 60)); + this.ptr = @as([*]const u8, @ptrFromInt(@intFromPtr(this.ptr) | (1 << 60))); } pub fn isStatic(this: *const ZigString) bool { @@ -405,7 +405,7 @@ pub const ZigString = extern struct { pub fn init(allocator: std.mem.Allocator, input: []const u8) Slice { return .{ .ptr = input.ptr, - .len = @truncate(u32, input.len), + .len = @as(u32, @truncate(input.len)), .allocator = NullableAllocator.init(allocator), }; } @@ -425,7 +425,7 @@ pub const ZigString = extern struct { pub fn from(input: []u8, allocator: std.mem.Allocator) Slice { return .{ .ptr = input.ptr, - .len = @truncate(u32, input.len), + .len = @as(u32, @truncate(input.len)), .allocator = NullableAllocator.init(allocator), }; } @@ -433,7 +433,7 @@ pub const ZigString = extern struct { pub fn fromUTF8NeverFree(input: []const u8) Slice { return .{ .ptr = input.ptr, - .len = @truncate(u32, input.len), + .len = @as(u32, @truncate(input.len)), .allocator = .{}, }; } @@ -464,7 +464,7 @@ pub const ZigString = extern struct { pub fn cloneWithTrailingSlash(this: Slice, allocator: std.mem.Allocator) !Slice { var buf = try strings.cloneNormalizingSeparators(allocator, this.slice()); - return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = buf.ptr, .len = @truncate(u32, buf.len) }; + return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = buf.ptr, .len = @as(u32, @truncate(buf.len)) }; } pub fn cloneZ(this: Slice, allocator: std.mem.Allocator) !Slice { @@ -503,7 +503,7 @@ pub const ZigString = extern struct { } pub fn mut(this: Slice) []u8 { - return @ptrFromInt([*]u8, @intFromPtr(this.ptr))[0..this.len]; + return @as([*]u8, @ptrFromInt(@intFromPtr(this.ptr)))[0..this.len]; } /// Does nothing if the slice is not allocated @@ -534,7 +534,7 @@ pub const ZigString = extern struct { } } - return @ptrCast([*]align(1) const u16, untagged(this._unsafe_ptr_do_not_use))[0..this.len]; + return @as([*]align(1) const u16, @ptrCast(untagged(this._unsafe_ptr_do_not_use)))[0..this.len]; } pub inline fn utf16SliceAligned(this: *const ZigString) []const u16 { @@ -544,7 +544,7 @@ pub const ZigString = extern struct { } } - return @ptrCast([*]const u16, @alignCast(@alignOf(u16), untagged(this._unsafe_ptr_do_not_use)))[0..this.len]; + return @as([*]const u16, @ptrCast(@alignCast(untagged(this._unsafe_ptr_do_not_use))))[0..this.len]; } pub inline fn isEmpty(this: *const ZigString) bool { @@ -634,7 +634,7 @@ pub const ZigString = extern struct { /// Globally-allocated memory only pub fn from16(slice_: [*]const u16, len: usize) ZigString { - var str = init(@ptrCast([*]const u8, slice_)[0..len]); + var str = init(@as([*]const u8, @ptrCast(slice_))[0..len]); str.markUTF16(); str.mark(); str.assertGlobal(); @@ -665,11 +665,11 @@ pub const ZigString = extern struct { } pub fn markUTF8(this: *ZigString) void { - this._unsafe_ptr_do_not_use = @ptrFromInt([*]const u8, @intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 61)); + this._unsafe_ptr_do_not_use = @as([*]const u8, @ptrFromInt(@intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 61))); } pub fn markUTF16(this: *ZigString) void { - this._unsafe_ptr_do_not_use = @ptrFromInt([*]const u8, @intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 63)); + this._unsafe_ptr_do_not_use = @as([*]const u8, @ptrFromInt(@intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 63))); } pub fn setOutputEncoding(this: *ZigString) void { @@ -688,7 +688,7 @@ pub const ZigString = extern struct { pub const mark = markGlobal; pub inline fn markGlobal(this: *ZigString) void { - this._unsafe_ptr_do_not_use = @ptrFromInt([*]const u8, @intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 62)); + this._unsafe_ptr_do_not_use = @as([*]const u8, @ptrFromInt(@intFromPtr(this._unsafe_ptr_do_not_use) | (1 << 62))); } pub fn format(self: ZigString, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { @@ -714,7 +714,7 @@ pub const ZigString = extern struct { inline fn untagged(ptr: [*]const u8) [*]const u8 { // this can be null ptr, so long as it's also a 0 length string @setRuntimeSafety(false); - return @ptrFromInt([*]const u8, @truncate(u53, @intFromPtr(ptr))); + return @as([*]const u8, @ptrFromInt(@as(u53, @truncate(@intFromPtr(ptr))))); } pub fn slice(this: *const ZigString) []const u8 { @@ -738,14 +738,14 @@ pub const ZigString = extern struct { var buffer = this.toOwnedSlice(allocator) catch unreachable; return Slice{ .ptr = buffer.ptr, - .len = @truncate(u32, buffer.len), + .len = @as(u32, @truncate(buffer.len)), .allocator = NullableAllocator.init(allocator), }; } return Slice{ .ptr = untagged(this._unsafe_ptr_do_not_use), - .len = @truncate(u32, this.len), + .len = @as(u32, @truncate(this.len)), }; } @@ -759,7 +759,7 @@ pub const ZigString = extern struct { return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = buffer.ptr, - .len = @truncate(u32, buffer.len), + .len = @as(u32, @truncate(buffer.len)), }; } @@ -768,13 +768,13 @@ pub const ZigString = extern struct { return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = buffer.ptr, - .len = @truncate(u32, buffer.len), + .len = @as(u32, @truncate(buffer.len)), }; } return Slice{ .ptr = untagged(this._unsafe_ptr_do_not_use), - .len = @truncate(u32, this.len), + .len = @as(u32, @truncate(this.len)), }; } @@ -785,7 +785,7 @@ pub const ZigString = extern struct { return Slice{ .allocator = NullableAllocator.init(allocator), .ptr = buffer.ptr, - .len = @truncate(u32, buffer.len), + .len = @as(u32, @truncate(buffer.len)), }; } @@ -797,14 +797,14 @@ pub const ZigString = extern struct { var buffer = this.toOwnedSliceZ(allocator) catch unreachable; return Slice{ .ptr = buffer.ptr, - .len = @truncate(u32, buffer.len), + .len = @as(u32, @truncate(buffer.len)), .allocator = NullableAllocator.init(allocator), }; } return Slice{ .ptr = untagged(this._unsafe_ptr_do_not_use), - .len = @truncate(u32, this.len), + .len = @as(u32, @truncate(this.len)), }; } @@ -892,7 +892,7 @@ pub const ZigString = extern struct { } return if (this.is16Bit()) - C_API.JSStringCreateWithCharactersNoCopy(@ptrCast([*]const u16, @alignCast(@alignOf([*]const u16), untagged(this._unsafe_ptr_do_not_use))), this.len) + C_API.JSStringCreateWithCharactersNoCopy(@as([*]const u16, @ptrCast(@alignCast(untagged(this._unsafe_ptr_do_not_use)))), this.len) else C_API.JSStringCreateStatic(untagged(this._unsafe_ptr_do_not_use), this.len); } @@ -1019,7 +1019,7 @@ pub const DOMFormData = opaque { const Wrapper = struct { const cb = callback; pub fn run(c: *anyopaque, str: *ZigString) callconv(.C) void { - cb(@ptrCast(Ctx, c), str.*); + cb(@as(Ctx, @ptrCast(c)), str.*); } }; @@ -1631,11 +1631,11 @@ pub const Sizes = @import("../bindings/sizes.zig"); pub const JSUint8Array = opaque { pub const name = "Uint8Array_alias"; pub fn ptr(this: *JSUint8Array) [*]u8 { - return @ptrFromInt(*[*]u8, @intFromPtr(this) + Sizes.Bun_FFI_PointerOffsetToTypedArrayVector).*; + return @as(*[*]u8, @ptrFromInt(@intFromPtr(this) + Sizes.Bun_FFI_PointerOffsetToTypedArrayVector)).*; } pub fn len(this: *JSUint8Array) usize { - return @ptrFromInt(*usize, @intFromPtr(this) + Sizes.Bun_FFI_PointerOffsetToTypedArrayLength).*; + return @as(*usize, @ptrFromInt(@intFromPtr(this) + Sizes.Bun_FFI_PointerOffsetToTypedArrayLength)).*; } pub fn slice(this: *JSUint8Array) []u8 { @@ -1876,7 +1876,7 @@ pub fn PromiseCallback(comptime Type: type, comptime CallbackFunction: fn (*Type arguments: [*]const JSValue, arguments_len: usize, ) callconv(.C) JSValue { - return CallbackFunction(@ptrCast(*Type, @alignCast(@alignOf(*Type), ctx.?)), globalThis, arguments[0..arguments_len]) catch |err| brk: { + return CallbackFunction(@as(*Type, @ptrCast(@alignCast(ctx.?))), globalThis, arguments[0..arguments_len]) catch |err| brk: { break :brk ZigString.init(bun.asByteSlice(@errorName(err))).toErrorInstance(globalThis); }; } @@ -1907,7 +1907,7 @@ pub const AbortSignal = extern opaque { } }; - return this.addListener(@ptrCast(?*anyopaque, ctx), Wrapper.callback); + return this.addListener(@as(?*anyopaque, @ptrCast(ctx)), Wrapper.callback); } pub fn addListener( @@ -2824,7 +2824,7 @@ pub const JSGlobalObject = extern struct { const cppFn = shim.cppFn; pub fn ref(this: *JSGlobalObject) C_API.JSContextRef { - return @ptrCast(C_API.JSContextRef, this); + return @as(C_API.JSContextRef, @ptrCast(this)); } pub const ctx = ref; @@ -2866,16 +2866,16 @@ pub const JSGlobalObject = extern struct { // you most likely need to run // make clean-jsc-bindings // make bindings -j10 - const assertion = this.bunVM_() == @ptrCast(*anyopaque, JSC.VirtualMachine.get()); + const assertion = this.bunVM_() == @as(*anyopaque, @ptrCast(JSC.VirtualMachine.get())); if (!assertion) @breakpoint(); std.debug.assert(assertion); } - return @ptrCast(*JSC.VirtualMachine, @alignCast(std.meta.alignment(JSC.VirtualMachine), this.bunVM_())); + return @as(*JSC.VirtualMachine, @ptrCast(@alignCast(this.bunVM_()))); } /// We can't do the threadlocal check when queued from another thread pub fn bunVMConcurrently(this: *JSGlobalObject) *JSC.VirtualMachine { - return @ptrCast(*JSC.VirtualMachine, @alignCast(@alignOf(JSC.VirtualMachine), this.bunVM_())); + return @as(*JSC.VirtualMachine, @ptrCast(@alignCast(this.bunVM_()))); } pub fn handleRejectedPromises(this: *JSGlobalObject) void { @@ -2943,7 +2943,7 @@ pub const JSArrayIterator = struct { return .{ .array = value, .global = global, - .len = @truncate(u32, value.getLength(global)), + .len = @as(u32, @truncate(value.getLength(global))), }; } @@ -3014,10 +3014,10 @@ pub const JSMap = opaque { pub const JSValueReprInt = i64; pub const JSValue = enum(JSValueReprInt) { zero = 0, - undefined = @bitCast(JSValueReprInt, @as(i64, 0xa)), - null = @bitCast(JSValueReprInt, @as(i64, 0x2)), - true = @bitCast(JSValueReprInt, @as(i64, 0x4)), - false = @bitCast(JSValueReprInt, @as(i64, 0x6)), + undefined = @as(JSValueReprInt, @bitCast(@as(i64, 0xa))), + null = @as(JSValueReprInt, @bitCast(@as(i64, 0x2))), + true = @as(JSValueReprInt, @bitCast(@as(i64, 0x4))), + false = @as(JSValueReprInt, @bitCast(@as(i64, 0x6))), _, pub const Type = JSValueReprInt; @@ -3361,7 +3361,7 @@ pub const JSValue = enum(JSValueReprInt) { }; pub inline fn cast(ptr: anytype) JSValue { - return @enumFromInt(JSValue, @bitCast(i64, @intFromPtr(ptr))); + return @as(JSValue, @enumFromInt(@as(i64, @bitCast(@intFromPtr(ptr))))); } pub fn coerceToInt32(this: JSValue, globalThis: *JSC.JSGlobalObject) i32 { @@ -3426,7 +3426,7 @@ pub const JSValue = enum(JSValueReprInt) { } if (this.isNumber()) { - return @truncate(i32, this.coerceDoubleTruncatingIntoInt64()); + return @as(i32, @truncate(this.coerceDoubleTruncatingIntoInt64())); } return this.coerceToInt32(globalThis); @@ -3441,16 +3441,16 @@ pub const JSValue = enum(JSValueReprInt) { return switch (comptime T) { u32 => toU32(this), u16 => toU16(this), - c_uint => @intCast(c_uint, toU32(this)), - c_int => @intCast(c_int, toInt32(this)), + c_uint => @as(c_uint, @intCast(toU32(this))), + c_int => @as(c_int, @intCast(toInt32(this))), ?AnyPromise => asAnyPromise(this), - u52 => @truncate(u52, @intCast(u64, @max(this.toInt64(), 0))), - i52 => @truncate(i52, @intCast(i52, this.toInt64())), + u52 => @as(u52, @truncate(@as(u64, @intCast(@max(this.toInt64(), 0))))), + i52 => @as(i52, @truncate(@as(i52, @intCast(this.toInt64())))), u64 => toUInt64NoTruncate(this), - u8 => @truncate(u8, toU32(this)), - i16 => @truncate(i16, toInt32(this)), - i8 => @truncate(i8, toInt32(this)), - i32 => @truncate(i32, toInt32(this)), + u8 => @as(u8, @truncate(toU32(this))), + i16 => @as(i16, @truncate(toInt32(this))), + i8 => @as(i8, @truncate(toInt32(this))), + i32 => @as(i32, @truncate(toInt32(this))), i64 => this.toInt64(), bool => this.toBoolean(), else => @compileError("Not implemented yet"), @@ -3473,9 +3473,9 @@ pub const JSValue = enum(JSValueReprInt) { return JSC.C.JSObjectCallAsFunctionReturnValue( globalThis, this.asObjectRef(), - @ptrCast(JSC.C.JSValueRef, globalThis), + @as(JSC.C.JSValueRef, @ptrCast(globalThis)), args.len, - @ptrCast(?[*]const JSC.C.JSValueRef, args.ptr), + @as(?[*]const JSC.C.JSValueRef, @ptrCast(args.ptr)), ); } @@ -3484,9 +3484,9 @@ pub const JSValue = enum(JSValueReprInt) { return JSC.C.JSObjectCallAsFunctionReturnValue( globalThis, this.asObjectRef(), - @ptrCast(JSC.C.JSValueRef, thisValue.asNullableVoid()), + @as(JSC.C.JSValueRef, @ptrCast(thisValue.asNullableVoid())), args.len, - @ptrCast(?[*]const JSC.C.JSValueRef, args.ptr), + @as(?[*]const JSC.C.JSValueRef, @ptrCast(args.ptr)), ); } @@ -3527,6 +3527,10 @@ pub const JSValue = enum(JSValueReprInt) { cppFn("putIndex", .{ value, globalObject, i, out }); } + pub fn push(value: JSValue, globalObject: *JSGlobalObject, out: JSValue) void { + cppFn("push", .{ value, globalObject, out }); + } + pub fn as(value: JSValue, comptime ZigType: type) ?*ZigType { if (value.isEmptyOrUndefinedOrNull()) return null; @@ -3621,7 +3625,7 @@ pub const JSValue = enum(JSValueReprInt) { pub fn createBufferFromLength(globalObject: *JSGlobalObject, len: usize) JSValue { JSC.markBinding(@src()); - return JSBuffer__bufferFromLength(globalObject, @intCast(i64, len)); + return JSBuffer__bufferFromLength(globalObject, @as(i64, @intCast(len))); } pub fn jestSnapshotPrettyFormat(this: JSValue, out: *MutableString, globalObject: *JSGlobalObject) !void { @@ -3639,7 +3643,7 @@ pub const JSValue = enum(JSValueReprInt) { JestPrettyFormat.format( .Debug, globalObject, - @ptrCast([*]const JSValue, &this), + @as([*]const JSValue, @ptrCast(&this)), 1, Writer, Writer, @@ -3700,7 +3704,7 @@ pub const JSValue = enum(JSValueReprInt) { JSC.ZigConsoleClient.format( .Debug, globalObject, - @ptrCast([*]const JSValue, &this), + @as([*]const JSValue, @ptrCast(&this)), 1, Writer, Writer, @@ -3741,12 +3745,12 @@ pub const JSValue = enum(JSValueReprInt) { return switch (comptime Number) { JSValue => number, f32, f64 => jsNumberFromDouble(@as(f64, number)), - c_ushort, u8, i16, i32, c_int, i8, u16 => jsNumberFromInt32(@intCast(i32, number)), - u32, u52, c_uint, i64 => jsNumberFromInt64(@intCast(i64, number)), - usize, u64 => jsNumberFromUint64(@intCast(u64, number)), + c_ushort, u8, i16, i32, c_int, i8, u16 => jsNumberFromInt32(@as(i32, @intCast(number))), + u32, u52, c_uint, i64 => jsNumberFromInt64(@as(i64, @intCast(number))), + usize, u64 => jsNumberFromUint64(@as(u64, @intCast(number))), comptime_int => switch (number) { - 0...std.math.maxInt(i32) => jsNumberFromInt32(@intCast(i32, number)), - else => jsNumberFromInt64(@intCast(i64, number)), + 0...std.math.maxInt(i32) => jsNumberFromInt32(@as(i32, @intCast(number))), + else => jsNumberFromInt64(@as(i64, @intCast(number))), }, else => @compileError("Type transformation missing for number of type: " ++ @typeName(Number)), }; @@ -3856,10 +3860,10 @@ pub const JSValue = enum(JSValueReprInt) { pub fn jsNumberFromInt64(i: i64) JSValue { if (i <= std.math.maxInt(i32)) { - return jsNumberFromInt32(@intCast(i32, i)); + return jsNumberFromInt32(@as(i32, @intCast(i))); } - return jsNumberFromDouble(@floatFromInt(f64, @truncate(i52, i))); + return jsNumberFromDouble(@as(f64, @floatFromInt(@as(i52, @truncate(i))))); } pub inline fn toJS(this: JSValue, _: *const JSGlobalObject) JSValue { @@ -3868,10 +3872,10 @@ pub const JSValue = enum(JSValueReprInt) { pub fn jsNumberFromUint64(i: u64) JSValue { if (i <= std.math.maxInt(i32)) { - return jsNumberFromInt32(@intCast(i32, i)); + return jsNumberFromInt32(@as(i32, @intCast(i))); } - return jsNumberFromDouble(@floatFromInt(f64, @intCast(i52, @truncate(u51, i)))); + return jsNumberFromDouble(@as(f64, @floatFromInt(@as(i52, @intCast(@as(u51, @truncate(i))))))); } pub fn coerceDoubleTruncatingIntoInt64(this: JSValue) i64 { @@ -3885,9 +3889,9 @@ pub const JSValue = enum(JSValueReprInt) { return if (double_value < 0) @as(i64, std.math.minInt(i64)) else @as(i64, std.math.maxInt(i64)); } - return @intFromFloat( + return @as( i64, - double_value, + @intFromFloat(double_value), ); } @@ -4067,7 +4071,7 @@ pub const JSValue = enum(JSValueReprInt) { pub inline fn isCell(this: JSValue) bool { return switch (this) { .zero, .undefined, .null, .true, .false => false, - else => (@bitCast(u64, @intFromEnum(this)) & FFI.NotCellMask) == 0, + else => (@as(u64, @bitCast(@intFromEnum(this))) & FFI.NotCellMask) == 0, }; } @@ -4293,7 +4297,7 @@ pub const JSValue = enum(JSValueReprInt) { } pub fn get(this: JSValue, global: *JSGlobalObject, property: []const u8) ?JSValue { - const value = getIfPropertyExistsImpl(this, global, property.ptr, @intCast(u32, property.len)); + const value = getIfPropertyExistsImpl(this, global, property.ptr, @as(u32, @intCast(property.len))); return if (@intFromEnum(value) != 0) value else return null; } @@ -4551,7 +4555,7 @@ pub const JSValue = enum(JSValueReprInt) { pub fn asNumber(this: JSValue) f64 { if (this.isInt32()) { - return @floatFromInt(f64, this.asInt32()); + return @as(f64, @floatFromInt(this.asInt32())); } if (isNumber(this)) { @@ -4574,15 +4578,15 @@ pub const JSValue = enum(JSValueReprInt) { } pub fn asPtr(this: JSValue, comptime Pointer: type) *Pointer { - return @ptrFromInt(*Pointer, this.asPtrAddress()); + return @as(*Pointer, @ptrFromInt(this.asPtrAddress())); } pub fn fromPtrAddress(addr: anytype) JSValue { - return jsNumber(@floatFromInt(f64, @bitCast(usize, @as(usize, addr)))); + return jsNumber(@as(f64, @floatFromInt(@as(usize, @bitCast(@as(usize, addr)))))); } pub fn asPtrAddress(this: JSValue) usize { - return @bitCast(usize, @intFromFloat(usize, this.asDouble())); + return @as(usize, @bitCast(@as(usize, @intFromFloat(this.asDouble())))); } pub fn fromPtr(addr: anytype) JSValue { @@ -4609,7 +4613,7 @@ pub const JSValue = enum(JSValueReprInt) { if (comptime bun.Environment.allow_assert) { std.debug.assert(this.isNumber()); } - return @intFromFloat(i64, @max(@min(this.asDouble(), std.math.maxInt(i52)), std.math.minInt(i52))); + return @as(i64, @intFromFloat(@max(@min(this.asDouble(), std.math.maxInt(i52)), std.math.minInt(i52)))); } pub fn toInt32(this: JSValue) i32 { @@ -4618,7 +4622,7 @@ pub const JSValue = enum(JSValueReprInt) { } if (this.isNumber()) { - return @truncate(i32, this.asInt52()); + return @as(i32, @truncate(this.asInt52())); } if (comptime bun.Environment.allow_assert) { @@ -4636,11 +4640,11 @@ pub const JSValue = enum(JSValueReprInt) { } pub inline fn toU16(this: JSValue) u16 { - return @truncate(u16, @max(this.toInt32(), 0)); + return @as(u16, @truncate(@max(this.toInt32(), 0))); } pub inline fn toU32(this: JSValue) u32 { - return @intCast(u32, @min(@max(this.toInt64(), 0), std.math.maxInt(u32))); + return @as(u32, @intCast(@min(@max(this.toInt64(), 0), std.math.maxInt(u32)))); } /// This function supports: @@ -4661,7 +4665,7 @@ pub const JSValue = enum(JSValueReprInt) { return 0; } - return @intFromFloat(u64, @max(@min(len, std.math.maxInt(i52)), 0)); + return @as(u64, @intFromFloat(@max(@min(len, std.math.maxInt(i52)), 0))); } /// This function supports: @@ -4682,7 +4686,7 @@ pub const JSValue = enum(JSValueReprInt) { return null; } - return @intFromFloat(u64, @max(@min(len, std.math.maxInt(i52)), 0)); + return @as(u64, @intFromFloat(@max(@min(len, std.math.maxInt(i52)), 0))); } /// Do not use this directly! @@ -4727,19 +4731,19 @@ pub const JSValue = enum(JSValueReprInt) { } pub inline fn asRef(this: JSValue) C_API.JSValueRef { - return @ptrFromInt(C_API.JSValueRef, @bitCast(usize, @intFromEnum(this))); + return @as(C_API.JSValueRef, @ptrFromInt(@as(usize, @bitCast(@intFromEnum(this))))); } pub inline fn c(this: C_API.JSValueRef) JSValue { - return @enumFromInt(JSValue, @bitCast(JSValue.Type, @intFromPtr(this))); + return @as(JSValue, @enumFromInt(@as(JSValue.Type, @bitCast(@intFromPtr(this))))); } pub inline fn fromRef(this: C_API.JSValueRef) JSValue { - return @enumFromInt(JSValue, @bitCast(JSValue.Type, @intFromPtr(this))); + return @as(JSValue, @enumFromInt(@as(JSValue.Type, @bitCast(@intFromPtr(this))))); } pub inline fn asObjectRef(this: JSValue) C_API.JSObjectRef { - return @ptrCast(C_API.JSObjectRef, this.asVoid()); + return @as(C_API.JSObjectRef, @ptrCast(this.asVoid())); } /// When the GC sees a JSValue referenced in the stack @@ -4747,11 +4751,11 @@ pub const JSValue = enum(JSValueReprInt) { /// This mimicks the implementation in JavaScriptCore's C++ pub inline fn ensureStillAlive(this: JSValue) void { if (this.isEmpty() or this.isNumber() or this.isBoolean() or this.isUndefinedOrNull()) return; - std.mem.doNotOptimizeAway(@ptrCast(C_API.JSObjectRef, this.asVoid())); + std.mem.doNotOptimizeAway(@as(C_API.JSObjectRef, @ptrCast(this.asVoid()))); } pub inline fn asNullableVoid(this: JSValue) ?*anyopaque { - return @ptrFromInt(?*anyopaque, @bitCast(usize, @intFromEnum(this))); + return @as(?*anyopaque, @ptrFromInt(@as(usize, @bitCast(@intFromEnum(this))))); } pub inline fn asVoid(this: JSValue) *anyopaque { @@ -4851,6 +4855,7 @@ pub const JSValue = enum(JSValueReprInt) { "put", "putDirect", "putIndex", + "push", "putRecord", "strictDeepEquals", "symbolFor", @@ -4995,7 +5000,7 @@ pub const VM = extern struct { const callback_ = callback; const Wrapper = struct { pub fn run(ptr_: *anyopaque) callconv(.C) void { - var ptr__ = @ptrCast(*Ptr, @alignCast(@alignOf(Ptr), ptr_)); + var ptr__ = @as(*Ptr, @ptrCast(@alignCast(ptr_))); callback_(ptr__); } }; @@ -5193,11 +5198,11 @@ pub const CallFrame = opaque { pub const name = "JSC::CallFrame"; pub fn argumentsPtr(self: *const CallFrame) [*]const JSC.JSValue { - return @ptrCast([*]const JSC.JSValue, @alignCast(alignment, self)) + Sizes.Bun_CallFrame__firstArgument; + return @as([*]align(alignment) const JSC.JSValue, @ptrCast(@alignCast(self))) + Sizes.Bun_CallFrame__firstArgument; } pub fn callee(self: *const CallFrame) JSC.JSValue { - return (@ptrCast([*]const JSC.JSValue, @alignCast(alignment, self)) + Sizes.Bun_CallFrame__callee)[0]; + return (@as([*]align(alignment) const JSC.JSValue, @ptrCast(@alignCast(self))) + Sizes.Bun_CallFrame__callee)[0]; } fn Arguments(comptime max: usize) type { @@ -5242,11 +5247,11 @@ pub const CallFrame = opaque { } pub fn this(self: *const CallFrame) JSC.JSValue { - return (@ptrCast([*]const JSC.JSValue, @alignCast(alignment, self)) + Sizes.Bun_CallFrame__thisArgument)[0]; + return (@as([*]align(alignment) const JSC.JSValue, @ptrCast(@alignCast(self))) + Sizes.Bun_CallFrame__thisArgument)[0]; } pub fn argumentsCount(self: *const CallFrame) usize { - return @intCast(usize, (@ptrCast([*]const JSC.JSValue, @alignCast(alignment, self)) + Sizes.Bun_CallFrame__argumentCountIncludingThis)[0].asInt32() - 1); + return @as(usize, @intCast((@as([*]align(alignment) const JSC.JSValue, @ptrCast(@alignCast(self))) + Sizes.Bun_CallFrame__argumentCountIncludingThis)[0].asInt32() - 1)); } }; @@ -5289,7 +5294,7 @@ const DeinitFunction = *const fn (ctx: *anyopaque, buffer: [*]u8, len: usize) ca pub const JSArray = struct { pub fn from(globalThis: *JSGlobalObject, arguments: []const JSC.JSValue) JSValue { - return JSC.JSValue.c(JSC.C.JSObjectMakeArray(globalThis, arguments.len, @ptrCast(?[*]const JSC.C.JSObjectRef, arguments.ptr), null)); + return JSC.JSValue.c(JSC.C.JSObjectMakeArray(globalThis, arguments.len, @as(?[*]const JSC.C.JSObjectRef, @ptrCast(arguments.ptr)), null)); } }; @@ -5329,7 +5334,7 @@ const private = struct { pub fn NewFunctionPtr(globalObject: *JSGlobalObject, symbolName: ?*const ZigString, argCount: u32, comptime functionPointer: anytype, strong: bool) *anyopaque { JSC.markBinding(@src()); - return private.Bun__CreateFFIFunction(globalObject, symbolName, argCount, @ptrCast(*const anyopaque, &functionPointer), strong); + return private.Bun__CreateFFIFunction(globalObject, symbolName, argCount, @as(*const anyopaque, @ptrCast(&functionPointer)), strong); } pub fn NewFunction( @@ -5376,7 +5381,7 @@ pub fn NewFunctionWithData( globalObject, symbolName, argCount, - @ptrCast(*const anyopaque, &functionPointer), + @as(*const anyopaque, @ptrCast(&functionPointer)), strong, data, ); @@ -5479,7 +5484,7 @@ pub fn Thenable(comptime name: []const u8, comptime Then: type, comptime onResol ) callconv(.C) void { @setRuntimeSafety(false); const args_list = callframe.?.arguments(8); - onResolve(@ptrCast(*Then, @alignCast(std.meta.alignment(Then), args_list.ptr[args_list.len - 1].asEncoded().asPtr)), globalThis, args_list.ptr[0]); + onResolve(@as(*Then, @ptrCast(@alignCast(args_list.ptr[args_list.len - 1].asEncoded().asPtr))), globalThis, args_list.ptr[0]); } pub fn reject( @@ -5488,7 +5493,7 @@ pub fn Thenable(comptime name: []const u8, comptime Then: type, comptime onResol ) callconv(.C) void { @setRuntimeSafety(false); const args_list = callframe.?.arguments(8); - onReject(@ptrCast(*Then, @alignCast(std.meta.alignment(Then), args_list.ptr[args_list.len - 1].asEncoded().asPtr)), globalThis, args_list.ptr[0]); + onReject(@as(*Then, @ptrCast(@alignCast(args_list.ptr[args_list.len - 1].asEncoded().asPtr))), globalThis, args_list.ptr[0]); } pub fn then(ctx: *Then, this: JSValue, globalThis: *JSGlobalObject) void { @@ -5535,7 +5540,7 @@ pub fn JSPropertyIterator(comptime options: JSPropertyIteratorOptions) type { const array_ref = JSC.C.JSObjectCopyPropertyNames(global, object); return .{ .array_ref = array_ref, - .len = @truncate(u32, JSC.C.JSPropertyNameArrayGetCount(array_ref)), + .len = @as(u32, @truncate(JSC.C.JSPropertyNameArrayGetCount(array_ref))), .object = if (comptime options.include_value) object else .{}, .global = if (comptime options.include_value) global else .{}, .value = undefined, diff --git a/src/bun.js/bindings/exports.zig b/src/bun.js/bindings/exports.zig index 40ee4ff57..b569fe68c 100644 --- a/src/bun.js/bindings/exports.zig +++ b/src/bun.js/bindings/exports.zig @@ -119,7 +119,7 @@ pub const ErrorCode = enum(ErrorCodeInt) { _, pub inline fn from(code: anyerror) ErrorCode { - return @enumFromInt(ErrorCode, @intFromError(code)); + return @as(ErrorCode, @enumFromInt(@intFromError(code))); } pub const ParserError = @intFromEnum(ErrorCode.from(error.ParserError)); @@ -243,7 +243,7 @@ pub const ResolvedSource = extern struct { const Mimalloc = @import("../../allocators/mimalloc.zig"); export fn ZigString__free(raw: [*]const u8, len: usize, allocator_: ?*anyopaque) void { - var allocator: std.mem.Allocator = @ptrCast(*std.mem.Allocator, @alignCast(@alignOf(*std.mem.Allocator), allocator_ orelse return)).*; + var allocator: std.mem.Allocator = @as(*std.mem.Allocator, @ptrCast(@alignCast(allocator_ orelse return))).*; var ptr = ZigString.init(raw[0..len]).slice().ptr; if (comptime Environment.allow_assert) { std.debug.assert(Mimalloc.mi_is_in_heap_region(ptr)); @@ -254,7 +254,7 @@ export fn ZigString__free(raw: [*]const u8, len: usize, allocator_: ?*anyopaque) } export fn ZigString__free_global(ptr: [*]const u8, len: usize) void { - var untagged = @ptrFromInt(*anyopaque, @intFromPtr(ZigString.init(ptr[0..len]).slice().ptr)); + var untagged = @as(*anyopaque, @ptrFromInt(@intFromPtr(ZigString.init(ptr[0..len]).slice().ptr))); if (comptime Environment.allow_assert) { std.debug.assert(Mimalloc.mi_is_in_heap_region(ptr)); } @@ -468,7 +468,7 @@ pub const ZigStackTrace = extern struct { var source_line_len = source_lines_iter.getLength(); if (source_line_len > 0) { - var source_lines = try allocator.alloc(Api.SourceLine, @intCast(usize, @max(source_lines_iter.i + 1, 0))); + var source_lines = try allocator.alloc(Api.SourceLine, @as(usize, @intCast(@max(source_lines_iter.i + 1, 0)))); var source_line_buf = try allocator.alloc(u8, source_line_len); source_lines_iter = this.sourceLineIterator(); var remain_buf = source_line_buf[0..]; @@ -523,7 +523,7 @@ pub const ZigStackTrace = extern struct { pub fn getLength(this: *SourceLineIterator) usize { var count: usize = 0; - for (this.trace.source_lines_ptr[0..@intCast(usize, this.i + 1)]) |*line| { + for (this.trace.source_lines_ptr[0..@as(usize, @intCast(this.i + 1))]) |*line| { count += line.length(); } @@ -538,9 +538,9 @@ pub const ZigStackTrace = extern struct { pub fn next(this: *SourceLineIterator) ?SourceLine { if (this.i < 0) return null; - const source_line = this.trace.source_lines_ptr[@intCast(usize, this.i)]; + const source_line = this.trace.source_lines_ptr[@as(usize, @intCast(this.i))]; const result = SourceLine{ - .line = this.trace.source_lines_numbers[@intCast(usize, this.i)], + .line = this.trace.source_lines_numbers[@as(usize, @intCast(this.i))], .text = source_line.toUTF8(bun.default_allocator), }; this.i -= 1; @@ -555,7 +555,7 @@ pub const ZigStackTrace = extern struct { i = j; } } - return SourceLineIterator{ .trace = this, .i = @intCast(i16, i) }; + return SourceLineIterator{ .trace = this, .i = @as(i16, @intCast(i)) }; } }; @@ -596,7 +596,7 @@ pub const ZigStackFrame = extern struct { frame.position.column_stop = this.position.column_stop; frame.position.expression_start = this.position.expression_start; frame.position.expression_stop = this.position.expression_stop; - frame.scope = @enumFromInt(Api.StackFrameScope, @intFromEnum(this.code_type)); + frame.scope = @as(Api.StackFrameScope, @enumFromInt(@intFromEnum(this.code_type))); return frame; } @@ -846,7 +846,7 @@ pub const ZigException = extern struct { pub fn zigException(this: *Holder) *ZigException { if (!this.loaded) { this.zig_exception = ZigException{ - .code = @enumFromInt(JSErrorCode, 255), + .code = @as(JSErrorCode, @enumFromInt(255)), .runtime_type = JSRuntimeType.Nothing, .name = String.empty, .message = String.empty, @@ -1581,7 +1581,7 @@ pub const ZigConsoleClient = struct { var writer = WrappedWriter(Writer){ .ctx = writer_ }; var slice = slice_; var i: u32 = 0; - var len: u32 = @truncate(u32, slice.len); + var len: u32 = @as(u32, @truncate(slice.len)); var any_non_ascii = false; while (i < len) : (i += 1) { switch (slice[i]) { @@ -1608,7 +1608,7 @@ pub const ZigConsoleClient = struct { any_non_ascii = false; slice = slice[@min(slice.len, i + 1)..]; i = 0; - len = @truncate(u32, slice.len); + len = @as(u32, @truncate(slice.len)); const next_value = this.remaining_values[0]; this.remaining_values = this.remaining_values[1..]; switch (token) { @@ -2025,7 +2025,7 @@ pub const ZigConsoleClient = struct { i = -i; } const digits = if (i != 0) - bun.fmt.fastDigitCount(@intCast(usize, i)) + @as(usize, @intFromBool(is_negative)) + bun.fmt.fastDigitCount(@as(usize, @intCast(i))) + @as(usize, @intFromBool(is_negative)) else 1; this.addForNewLine(digits); @@ -2136,7 +2136,7 @@ pub const ZigConsoleClient = struct { writer.print(comptime Output.prettyFmt("<cyan>[Getter]<r>", enable_ansi_colors), .{}); }, .Array => { - const len = @truncate(u32, value.getLength(this.globalThis)); + const len = @as(u32, @truncate(value.getLength(this.globalThis))); if (len == 0) { writer.writeAll("[]"); this.addForNewLine(2); @@ -2267,9 +2267,9 @@ pub const ZigConsoleClient = struct { // this case should never happen return this.printAs(.Undefined, Writer, writer_, .undefined, .Cell, enable_ansi_colors); } else if (value.as(JSC.API.Bun.Timer.TimerObject)) |timer| { - this.addForNewLine("Timeout(# ) ".len + bun.fmt.fastDigitCount(@intCast(u64, @max(timer.id, 0)))); + this.addForNewLine("Timeout(# ) ".len + bun.fmt.fastDigitCount(@as(u64, @intCast(@max(timer.id, 0))))); if (timer.kind == .setInterval) { - this.addForNewLine("repeats ".len + bun.fmt.fastDigitCount(@intCast(u64, @max(timer.id, 0)))); + this.addForNewLine("repeats ".len + bun.fmt.fastDigitCount(@as(u64, @intCast(@max(timer.id, 0))))); writer.print(comptime Output.prettyFmt("<r><blue>Timeout<r> <d>(#<yellow>{d}<r><d>, repeats)<r>", enable_ansi_colors), .{ timer.id, }); @@ -2344,7 +2344,7 @@ pub const ZigConsoleClient = struct { writer.writeAll("Promise { " ++ comptime Output.prettyFmt("<r><cyan>", enable_ansi_colors)); - switch (JSPromise.status(@ptrCast(*JSPromise, value.asObjectRef().?), this.globalThis.vm())) { + switch (JSPromise.status(@as(*JSPromise, @ptrCast(value.asObjectRef().?)), this.globalThis.vm())) { JSPromise.Status.Pending => { writer.writeAll("<pending>"); }, @@ -2753,7 +2753,7 @@ pub const ZigConsoleClient = struct { var j: usize = 0; while (j < length) : (j += 1) { - const child = JSC.JSObject.getIndex(children, this.globalThis, @intCast(u32, j)); + const child = JSC.JSObject.getIndex(children, this.globalThis, @as(u32, @intCast(j))); this.format(Tag.getAdvanced(child, this.globalThis, .{ .hide_global = true }), Writer, writer_, child, this.globalThis, enable_ansi_colors); if (j + 1 < length) { writer.writeAll("\n"); @@ -2883,56 +2883,56 @@ pub const ZigConsoleClient = struct { *@TypeOf(writer), &writer, i8, - @alignCast(std.meta.alignment([]i8), std.mem.bytesAsSlice(i8, slice)), + @as([]align(std.meta.alignment([]i8)) i8, @alignCast(std.mem.bytesAsSlice(i8, slice))), enable_ansi_colors, ), .Int16Array => this.writeTypedArray( *@TypeOf(writer), &writer, i16, - @alignCast(std.meta.alignment([]i16), std.mem.bytesAsSlice(i16, slice)), + @as([]align(std.meta.alignment([]i16)) i16, @alignCast(std.mem.bytesAsSlice(i16, slice))), enable_ansi_colors, ), .Uint16Array => this.writeTypedArray( *@TypeOf(writer), &writer, u16, - @alignCast(std.meta.alignment([]u16), std.mem.bytesAsSlice(u16, slice)), + @as([]align(std.meta.alignment([]u16)) u16, @alignCast(std.mem.bytesAsSlice(u16, slice))), enable_ansi_colors, ), .Int32Array => this.writeTypedArray( *@TypeOf(writer), &writer, i32, - @alignCast(std.meta.alignment([]i32), std.mem.bytesAsSlice(i32, slice)), + @as([]align(std.meta.alignment([]i32)) i32, @alignCast(std.mem.bytesAsSlice(i32, slice))), enable_ansi_colors, ), .Uint32Array => this.writeTypedArray( *@TypeOf(writer), &writer, u32, - @alignCast(std.meta.alignment([]u32), std.mem.bytesAsSlice(u32, slice)), + @as([]align(std.meta.alignment([]u32)) u32, @alignCast(std.mem.bytesAsSlice(u32, slice))), enable_ansi_colors, ), .Float32Array => this.writeTypedArray( *@TypeOf(writer), &writer, f32, - @alignCast(std.meta.alignment([]f32), std.mem.bytesAsSlice(f32, slice)), + @as([]align(std.meta.alignment([]f32)) f32, @alignCast(std.mem.bytesAsSlice(f32, slice))), enable_ansi_colors, ), .Float64Array => this.writeTypedArray( *@TypeOf(writer), &writer, f64, - @alignCast(std.meta.alignment([]f64), std.mem.bytesAsSlice(f64, slice)), + @as([]align(std.meta.alignment([]f64)) f64, @alignCast(std.mem.bytesAsSlice(f64, slice))), enable_ansi_colors, ), .BigInt64Array => this.writeTypedArray( *@TypeOf(writer), &writer, i64, - @alignCast(std.meta.alignment([]i64), std.mem.bytesAsSlice(i64, slice)), + @as([]align(std.meta.alignment([]i64)) i64, @alignCast(std.mem.bytesAsSlice(i64, slice))), enable_ansi_colors, ), .BigUint64Array => { @@ -2940,7 +2940,7 @@ pub const ZigConsoleClient = struct { *@TypeOf(writer), &writer, u64, - @alignCast(std.meta.alignment([]u64), std.mem.bytesAsSlice(u64, slice)), + @as([]align(std.meta.alignment([]u64)) u64, @alignCast(std.mem.bytesAsSlice(u64, slice))), enable_ansi_colors, ); }, @@ -3115,7 +3115,7 @@ pub const ZigConsoleClient = struct { var value: std.time.Timer = result.value orelse return; // get the duration in microseconds // then display it in milliseconds - Output.printElapsed(@floatFromInt(f64, value.read() / std.time.ns_per_us) / std.time.us_per_ms); + Output.printElapsed(@as(f64, @floatFromInt(value.read() / std.time.ns_per_us)) / std.time.us_per_ms); switch (len) { 0 => Output.printErrorln("\n", .{}), else => Output.printErrorln(" {s}", .{chars[0..len]}), @@ -3144,7 +3144,7 @@ pub const ZigConsoleClient = struct { var value: std.time.Timer = (pending_time_logs.get(id) orelse return) orelse return; // get the duration in microseconds // then display it in milliseconds - Output.printElapsed(@floatFromInt(f64, value.read() / std.time.ns_per_us) / std.time.us_per_ms); + Output.printElapsed(@as(f64, @floatFromInt(value.read() / std.time.ns_per_us)) / std.time.us_per_ms); switch (len) { 0 => Output.printErrorln("\n", .{}), else => Output.printErrorln(" {s}", .{chars[0..len]}), @@ -3369,7 +3369,7 @@ pub const ZigConsoleClient = struct { // }; pub inline fn toGlobalContextRef(ptr: *JSGlobalObject) CAPI.JSGlobalContextRef { - return @ptrCast(CAPI.JSGlobalContextRef, ptr); + return @as(CAPI.JSGlobalContextRef, @ptrCast(ptr)); } comptime { diff --git a/src/bun.js/bindings/generated_classes.zig b/src/bun.js/bindings/generated_classes.zig index 10aec1865..947be7a51 100644 --- a/src/bun.js/bindings/generated_classes.zig +++ b/src/bun.js/bindings/generated_classes.zig @@ -4458,10 +4458,32 @@ pub const JSTCPSocket = struct { @compileLog("Expected TCPSocket.setData to be a setter"); if (@TypeOf(TCPSocket.end) != CallbackType) @compileLog("Expected TCPSocket.end to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.end))); + if (@TypeOf(TCPSocket.exportKeyingMaterial) != CallbackType) + @compileLog("Expected TCPSocket.exportKeyingMaterial to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.exportKeyingMaterial))); if (@TypeOf(TCPSocket.flush) != CallbackType) @compileLog("Expected TCPSocket.flush to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.flush))); if (@TypeOf(TCPSocket.getAuthorizationError) != CallbackType) @compileLog("Expected TCPSocket.getAuthorizationError to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getAuthorizationError))); + if (@TypeOf(TCPSocket.getCertificate) != CallbackType) + @compileLog("Expected TCPSocket.getCertificate to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getCertificate))); + if (@TypeOf(TCPSocket.getCipher) != CallbackType) + @compileLog("Expected TCPSocket.getCipher to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getCipher))); + if (@TypeOf(TCPSocket.getEphemeralKeyInfo) != CallbackType) + @compileLog("Expected TCPSocket.getEphemeralKeyInfo to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getEphemeralKeyInfo))); + if (@TypeOf(TCPSocket.getPeerCertificate) != CallbackType) + @compileLog("Expected TCPSocket.getPeerCertificate to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getPeerCertificate))); + if (@TypeOf(TCPSocket.getSession) != CallbackType) + @compileLog("Expected TCPSocket.getSession to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getSession))); + if (@TypeOf(TCPSocket.getSharedSigalgs) != CallbackType) + @compileLog("Expected TCPSocket.getSharedSigalgs to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getSharedSigalgs))); + if (@TypeOf(TCPSocket.getTLSFinishedMessage) != CallbackType) + @compileLog("Expected TCPSocket.getTLSFinishedMessage to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getTLSFinishedMessage))); + if (@TypeOf(TCPSocket.getTLSPeerFinishedMessage) != CallbackType) + @compileLog("Expected TCPSocket.getTLSPeerFinishedMessage to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getTLSPeerFinishedMessage))); + if (@TypeOf(TCPSocket.getTLSTicket) != CallbackType) + @compileLog("Expected TCPSocket.getTLSTicket to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getTLSTicket))); + if (@TypeOf(TCPSocket.getTLSVersion) != CallbackType) + @compileLog("Expected TCPSocket.getTLSVersion to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.getTLSVersion))); if (@TypeOf(TCPSocket.getListener) != GetterType) @compileLog("Expected TCPSocket.getListener to be a getter"); @@ -4478,8 +4500,12 @@ pub const JSTCPSocket = struct { if (@TypeOf(TCPSocket.getRemoteAddress) != GetterType) @compileLog("Expected TCPSocket.getRemoteAddress to be a getter"); + if (@TypeOf(TCPSocket.setMaxSendFragment) != CallbackType) + @compileLog("Expected TCPSocket.setMaxSendFragment to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.setMaxSendFragment))); if (@TypeOf(TCPSocket.setServername) != CallbackType) @compileLog("Expected TCPSocket.setServername to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.setServername))); + if (@TypeOf(TCPSocket.setSession) != CallbackType) + @compileLog("Expected TCPSocket.setSession to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.setSession))); if (@TypeOf(TCPSocket.shutdown) != CallbackType) @compileLog("Expected TCPSocket.shutdown to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.shutdown))); if (@TypeOf(TCPSocket.timeout) != CallbackType) @@ -4492,21 +4518,34 @@ pub const JSTCPSocket = struct { @compileLog("Expected TCPSocket.write to be a callback but received " ++ @typeName(@TypeOf(TCPSocket.write))); if (!JSC.is_bindgen) { @export(TCPSocket.end, .{ .name = "TCPSocketPrototype__end" }); + @export(TCPSocket.exportKeyingMaterial, .{ .name = "TCPSocketPrototype__exportKeyingMaterial" }); @export(TCPSocket.finalize, .{ .name = "TCPSocketClass__finalize" }); @export(TCPSocket.flush, .{ .name = "TCPSocketPrototype__flush" }); @export(TCPSocket.getALPNProtocol, .{ .name = "TCPSocketPrototype__getALPNProtocol" }); @export(TCPSocket.getAuthorizationError, .{ .name = "TCPSocketPrototype__getAuthorizationError" }); @export(TCPSocket.getAuthorized, .{ .name = "TCPSocketPrototype__getAuthorized" }); + @export(TCPSocket.getCertificate, .{ .name = "TCPSocketPrototype__getCertificate" }); + @export(TCPSocket.getCipher, .{ .name = "TCPSocketPrototype__getCipher" }); @export(TCPSocket.getData, .{ .name = "TCPSocketPrototype__getData" }); + @export(TCPSocket.getEphemeralKeyInfo, .{ .name = "TCPSocketPrototype__getEphemeralKeyInfo" }); @export(TCPSocket.getListener, .{ .name = "TCPSocketPrototype__getListener" }); @export(TCPSocket.getLocalPort, .{ .name = "TCPSocketPrototype__getLocalPort" }); + @export(TCPSocket.getPeerCertificate, .{ .name = "TCPSocketPrototype__getPeerCertificate" }); @export(TCPSocket.getReadyState, .{ .name = "TCPSocketPrototype__getReadyState" }); @export(TCPSocket.getRemoteAddress, .{ .name = "TCPSocketPrototype__getRemoteAddress" }); + @export(TCPSocket.getSession, .{ .name = "TCPSocketPrototype__getSession" }); + @export(TCPSocket.getSharedSigalgs, .{ .name = "TCPSocketPrototype__getSharedSigalgs" }); + @export(TCPSocket.getTLSFinishedMessage, .{ .name = "TCPSocketPrototype__getTLSFinishedMessage" }); + @export(TCPSocket.getTLSPeerFinishedMessage, .{ .name = "TCPSocketPrototype__getTLSPeerFinishedMessage" }); + @export(TCPSocket.getTLSTicket, .{ .name = "TCPSocketPrototype__getTLSTicket" }); + @export(TCPSocket.getTLSVersion, .{ .name = "TCPSocketPrototype__getTLSVersion" }); @export(TCPSocket.hasPendingActivity, .{ .name = "TCPSocket__hasPendingActivity" }); @export(TCPSocket.ref, .{ .name = "TCPSocketPrototype__ref" }); @export(TCPSocket.reload, .{ .name = "TCPSocketPrototype__reload" }); @export(TCPSocket.setData, .{ .name = "TCPSocketPrototype__setData" }); + @export(TCPSocket.setMaxSendFragment, .{ .name = "TCPSocketPrototype__setMaxSendFragment" }); @export(TCPSocket.setServername, .{ .name = "TCPSocketPrototype__setServername" }); + @export(TCPSocket.setSession, .{ .name = "TCPSocketPrototype__setSession" }); @export(TCPSocket.shutdown, .{ .name = "TCPSocketPrototype__shutdown" }); @export(TCPSocket.timeout, .{ .name = "TCPSocketPrototype__timeout" }); @export(TCPSocket.unref, .{ .name = "TCPSocketPrototype__unref" }); @@ -4623,10 +4662,32 @@ pub const JSTLSSocket = struct { @compileLog("Expected TLSSocket.setData to be a setter"); if (@TypeOf(TLSSocket.end) != CallbackType) @compileLog("Expected TLSSocket.end to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.end))); + if (@TypeOf(TLSSocket.exportKeyingMaterial) != CallbackType) + @compileLog("Expected TLSSocket.exportKeyingMaterial to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.exportKeyingMaterial))); if (@TypeOf(TLSSocket.flush) != CallbackType) @compileLog("Expected TLSSocket.flush to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.flush))); if (@TypeOf(TLSSocket.getAuthorizationError) != CallbackType) @compileLog("Expected TLSSocket.getAuthorizationError to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getAuthorizationError))); + if (@TypeOf(TLSSocket.getCertificate) != CallbackType) + @compileLog("Expected TLSSocket.getCertificate to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getCertificate))); + if (@TypeOf(TLSSocket.getCipher) != CallbackType) + @compileLog("Expected TLSSocket.getCipher to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getCipher))); + if (@TypeOf(TLSSocket.getEphemeralKeyInfo) != CallbackType) + @compileLog("Expected TLSSocket.getEphemeralKeyInfo to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getEphemeralKeyInfo))); + if (@TypeOf(TLSSocket.getPeerCertificate) != CallbackType) + @compileLog("Expected TLSSocket.getPeerCertificate to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getPeerCertificate))); + if (@TypeOf(TLSSocket.getSession) != CallbackType) + @compileLog("Expected TLSSocket.getSession to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getSession))); + if (@TypeOf(TLSSocket.getSharedSigalgs) != CallbackType) + @compileLog("Expected TLSSocket.getSharedSigalgs to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getSharedSigalgs))); + if (@TypeOf(TLSSocket.getTLSFinishedMessage) != CallbackType) + @compileLog("Expected TLSSocket.getTLSFinishedMessage to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getTLSFinishedMessage))); + if (@TypeOf(TLSSocket.getTLSPeerFinishedMessage) != CallbackType) + @compileLog("Expected TLSSocket.getTLSPeerFinishedMessage to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getTLSPeerFinishedMessage))); + if (@TypeOf(TLSSocket.getTLSTicket) != CallbackType) + @compileLog("Expected TLSSocket.getTLSTicket to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getTLSTicket))); + if (@TypeOf(TLSSocket.getTLSVersion) != CallbackType) + @compileLog("Expected TLSSocket.getTLSVersion to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.getTLSVersion))); if (@TypeOf(TLSSocket.getListener) != GetterType) @compileLog("Expected TLSSocket.getListener to be a getter"); @@ -4643,8 +4704,12 @@ pub const JSTLSSocket = struct { if (@TypeOf(TLSSocket.getRemoteAddress) != GetterType) @compileLog("Expected TLSSocket.getRemoteAddress to be a getter"); + if (@TypeOf(TLSSocket.setMaxSendFragment) != CallbackType) + @compileLog("Expected TLSSocket.setMaxSendFragment to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.setMaxSendFragment))); if (@TypeOf(TLSSocket.setServername) != CallbackType) @compileLog("Expected TLSSocket.setServername to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.setServername))); + if (@TypeOf(TLSSocket.setSession) != CallbackType) + @compileLog("Expected TLSSocket.setSession to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.setSession))); if (@TypeOf(TLSSocket.shutdown) != CallbackType) @compileLog("Expected TLSSocket.shutdown to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.shutdown))); if (@TypeOf(TLSSocket.timeout) != CallbackType) @@ -4657,21 +4722,34 @@ pub const JSTLSSocket = struct { @compileLog("Expected TLSSocket.write to be a callback but received " ++ @typeName(@TypeOf(TLSSocket.write))); if (!JSC.is_bindgen) { @export(TLSSocket.end, .{ .name = "TLSSocketPrototype__end" }); + @export(TLSSocket.exportKeyingMaterial, .{ .name = "TLSSocketPrototype__exportKeyingMaterial" }); @export(TLSSocket.finalize, .{ .name = "TLSSocketClass__finalize" }); @export(TLSSocket.flush, .{ .name = "TLSSocketPrototype__flush" }); @export(TLSSocket.getALPNProtocol, .{ .name = "TLSSocketPrototype__getALPNProtocol" }); @export(TLSSocket.getAuthorizationError, .{ .name = "TLSSocketPrototype__getAuthorizationError" }); @export(TLSSocket.getAuthorized, .{ .name = "TLSSocketPrototype__getAuthorized" }); + @export(TLSSocket.getCertificate, .{ .name = "TLSSocketPrototype__getCertificate" }); + @export(TLSSocket.getCipher, .{ .name = "TLSSocketPrototype__getCipher" }); @export(TLSSocket.getData, .{ .name = "TLSSocketPrototype__getData" }); + @export(TLSSocket.getEphemeralKeyInfo, .{ .name = "TLSSocketPrototype__getEphemeralKeyInfo" }); @export(TLSSocket.getListener, .{ .name = "TLSSocketPrototype__getListener" }); @export(TLSSocket.getLocalPort, .{ .name = "TLSSocketPrototype__getLocalPort" }); + @export(TLSSocket.getPeerCertificate, .{ .name = "TLSSocketPrototype__getPeerCertificate" }); @export(TLSSocket.getReadyState, .{ .name = "TLSSocketPrototype__getReadyState" }); @export(TLSSocket.getRemoteAddress, .{ .name = "TLSSocketPrototype__getRemoteAddress" }); + @export(TLSSocket.getSession, .{ .name = "TLSSocketPrototype__getSession" }); + @export(TLSSocket.getSharedSigalgs, .{ .name = "TLSSocketPrototype__getSharedSigalgs" }); + @export(TLSSocket.getTLSFinishedMessage, .{ .name = "TLSSocketPrototype__getTLSFinishedMessage" }); + @export(TLSSocket.getTLSPeerFinishedMessage, .{ .name = "TLSSocketPrototype__getTLSPeerFinishedMessage" }); + @export(TLSSocket.getTLSTicket, .{ .name = "TLSSocketPrototype__getTLSTicket" }); + @export(TLSSocket.getTLSVersion, .{ .name = "TLSSocketPrototype__getTLSVersion" }); @export(TLSSocket.hasPendingActivity, .{ .name = "TLSSocket__hasPendingActivity" }); @export(TLSSocket.ref, .{ .name = "TLSSocketPrototype__ref" }); @export(TLSSocket.reload, .{ .name = "TLSSocketPrototype__reload" }); @export(TLSSocket.setData, .{ .name = "TLSSocketPrototype__setData" }); + @export(TLSSocket.setMaxSendFragment, .{ .name = "TLSSocketPrototype__setMaxSendFragment" }); @export(TLSSocket.setServername, .{ .name = "TLSSocketPrototype__setServername" }); + @export(TLSSocket.setSession, .{ .name = "TLSSocketPrototype__setSession" }); @export(TLSSocket.shutdown, .{ .name = "TLSSocketPrototype__shutdown" }); @export(TLSSocket.timeout, .{ .name = "TLSSocketPrototype__timeout" }); @export(TLSSocket.unref, .{ .name = "TLSSocketPrototype__unref" }); diff --git a/src/bun.js/bindings/headers.h b/src/bun.js/bindings/headers.h index 02631d749..c03b621c1 100644 --- a/src/bun.js/bindings/headers.h +++ b/src/bun.js/bindings/headers.h @@ -383,6 +383,7 @@ CPP_DECL unsigned char JSC__JSValue__jsType(JSC__JSValue JSValue0); CPP_DECL JSC__JSValue JSC__JSValue__jsUndefined(); CPP_DECL JSC__JSValue JSC__JSValue__makeWithNameAndPrototype(JSC__JSGlobalObject* arg0, void* arg1, void* arg2, const ZigString* arg3); CPP_DECL JSC__JSValue JSC__JSValue__parseJSON(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1); +CPP_DECL void JSC__JSValue__push(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, JSC__JSValue JSValue2); CPP_DECL void JSC__JSValue__put(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, const ZigString* arg2, JSC__JSValue JSValue3); CPP_DECL void JSC__JSValue__putIndex(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, uint32_t arg2, JSC__JSValue JSValue3); CPP_DECL void JSC__JSValue__putRecord(JSC__JSValue JSValue0, JSC__JSGlobalObject* arg1, ZigString* arg2, ZigString* arg3, size_t arg4); diff --git a/src/bun.js/bindings/headers.zig b/src/bun.js/bindings/headers.zig index 0b71d6918..b1e19557c 100644 --- a/src/bun.js/bindings/headers.zig +++ b/src/bun.js/bindings/headers.zig @@ -283,6 +283,7 @@ pub extern fn JSC__JSValue__jsType(JSValue0: JSC__JSValue) u8; pub extern fn JSC__JSValue__jsUndefined(...) JSC__JSValue; pub extern fn JSC__JSValue__makeWithNameAndPrototype(arg0: *bindings.JSGlobalObject, arg1: ?*anyopaque, arg2: ?*anyopaque, arg3: [*c]const ZigString) JSC__JSValue; pub extern fn JSC__JSValue__parseJSON(JSValue0: JSC__JSValue, arg1: *bindings.JSGlobalObject) JSC__JSValue; +pub extern fn JSC__JSValue__push(JSValue0: JSC__JSValue, arg1: *bindings.JSGlobalObject, JSValue2: JSC__JSValue) void; pub extern fn JSC__JSValue__put(JSValue0: JSC__JSValue, arg1: *bindings.JSGlobalObject, arg2: [*c]const ZigString, JSValue3: JSC__JSValue) void; pub extern fn JSC__JSValue__putIndex(JSValue0: JSC__JSValue, arg1: *bindings.JSGlobalObject, arg2: u32, JSValue3: JSC__JSValue) void; pub extern fn JSC__JSValue__putRecord(JSValue0: JSC__JSValue, arg1: *bindings.JSGlobalObject, arg2: [*c]ZigString, arg3: [*c]ZigString, arg4: usize) void; diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp index c4bf7fc32..6e47db8c4 100644 --- a/src/bun.js/bindings/napi.cpp +++ b/src/bun.js/bindings/napi.cpp @@ -496,7 +496,10 @@ extern "C" void napi_module_register(napi_module* mod) auto* globalObject = Bun__getDefaultGlobal(); JSC::VM& vm = globalObject->vm(); globalObject->napiModuleRegisterCallCount++; - JSC::JSObject* object = globalObject->pendingNapiModule.getObject(); + JSValue pendingNapiModule = globalObject->pendingNapiModule; + JSObject* object = (pendingNapiModule && pendingNapiModule.isObject()) ? pendingNapiModule.getObject() + : nullptr; + if (!object) { object = JSC::constructEmptyObject(globalObject); } else { @@ -504,20 +507,23 @@ extern "C" void napi_module_register(napi_module* mod) } EnsureStillAliveScope ensureAlive(object); - auto result = reinterpret_cast<JSC::EncodedJSValue>( - mod->nm_register_func(reinterpret_cast<napi_env>(globalObject), reinterpret_cast<napi_value>(JSC::JSValue::encode(JSC::JSValue(object))))); + auto resultValue = toJS( + mod->nm_register_func(toNapi(globalObject), toNapi(object))); auto keyStr = WTF::String::fromUTF8(mod->nm_modname); - JSC::JSValue resultValue = JSC::JSValue::decode(result); EnsureStillAliveScope ensureAlive2(resultValue); if (resultValue.isEmpty()) { - globalObject->pendingNapiModule = createError(globalObject, makeString("Node-API module \""_s, keyStr, "\" returned an error"_s)); + JSValue errorInstance = createError(globalObject, makeString("Node-API module \""_s, keyStr, "\" returned an error"_s)); + globalObject->pendingNapiModule = errorInstance; + vm.writeBarrier(globalObject, errorInstance); EnsureStillAliveScope ensureAlive(globalObject->pendingNapiModule); return; } if (!resultValue.isObject()) { - globalObject->pendingNapiModule = createError(globalObject, makeString("Expected Node-API module \""_s, keyStr, "\" to return an exports object"_s)); + JSValue errorInstance = createError(globalObject, makeString("Expected Node-API module \""_s, keyStr, "\" to return an exports object"_s)); + globalObject->pendingNapiModule = errorInstance; + vm.writeBarrier(globalObject, errorInstance); EnsureStillAliveScope ensureAlive(globalObject->pendingNapiModule); return; } @@ -532,7 +538,9 @@ extern "C" void napi_module_register(napi_module* mod) // Add it to the ESM registry globalObject->moduleLoader()->provideFetch(globalObject, JSC::jsString(vm, WTFMove(keyStr)), WTFMove(source)); + globalObject->pendingNapiModule = object; + vm.writeBarrier(globalObject, object); } extern "C" napi_status napi_wrap(napi_env env, diff --git a/src/bun.js/bindings/shimmer.zig b/src/bun.js/bindings/shimmer.zig index 3a6242000..29d12c1db 100644 --- a/src/bun.js/bindings/shimmer.zig +++ b/src/bun.js/bindings/shimmer.zig @@ -163,7 +163,7 @@ pub fn Shimmer(comptime _namespace: []const u8, comptime _name: []const u8, comp if (comptime isNullableType(ExpectedReturnType) != isNullableType(ExternReturnType)) { return value.?; } else if (comptime (@typeInfo(ExpectedReturnType) == .Enum) and (@typeInfo(ExternReturnType) != .Enum)) { - return @enumFromInt(ExpectedReturnType, value); + return @as(ExpectedReturnType, @enumFromInt(value)); } else { return value; } diff --git a/src/bun.js/event_loop.zig b/src/bun.js/event_loop.zig index d9befef8e..2dbe88d47 100644 --- a/src/bun.js/event_loop.zig +++ b/src/bun.js/event_loop.zig @@ -173,7 +173,7 @@ pub const AnyTask = struct { } pub fn wrap(this: ?*anyopaque) void { - @call(.always_inline, Callback, .{@ptrCast(*Type, @alignCast(@alignOf(Type), this.?))}); + @call(.always_inline, Callback, .{@as(*Type, @ptrCast(@alignCast(this.?)))}); } }; } @@ -205,8 +205,8 @@ pub const AnyTaskWithExtraContext = struct { .always_inline, Callback, .{ - @ptrCast(*Type, @alignCast(@alignOf(Type), this.?)), - @ptrCast(*ContextType, @alignCast(@alignOf(ContextType), extra.?)), + @as(*Type, @ptrCast(@alignCast(this.?))), + @as(*ContextType, @ptrCast(@alignCast(extra.?))), }, ); } @@ -503,7 +503,7 @@ pub const EventLoop = struct { } this.tasks.head = if (this.tasks.count == 0) 0 else this.tasks.head; - return @truncate(u32, counter); + return @as(u32, @truncate(counter)); } pub fn tickConcurrent(this: *EventLoop) void { diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig index 2e6d61952..fb855e047 100644 --- a/src/bun.js/javascript.zig +++ b/src/bun.js/javascript.zig @@ -119,7 +119,7 @@ pub const OpaqueCallback = *const fn (current: ?*anyopaque) callconv(.C) void; pub fn OpaqueWrap(comptime Context: type, comptime Function: fn (this: *Context) void) OpaqueCallback { return struct { pub fn callback(ctx: ?*anyopaque) callconv(.C) void { - var context: *Context = @ptrCast(*Context, @alignCast(@alignOf(Context), ctx.?)); + var context: *Context = @as(*Context, @ptrCast(@alignCast(ctx.?))); @call(.auto, Function, .{context}); } }.callback; @@ -142,7 +142,7 @@ pub const SavedSourceMap = struct { } pub inline fn len(this: SavedMappings) usize { - return @bitCast(u64, this.data[0..8].*); + return @as(u64, @bitCast(this.data[0..8].*)); } pub fn deinit(this: SavedMappings) void { @@ -153,7 +153,7 @@ pub const SavedSourceMap = struct { const result = SourceMap.Mapping.parse( allocator, this.data[16..this.len()], - @bitCast(usize, this.data[8..16].*), + @as(usize, @bitCast(this.data[8..16].*)), 1, ); switch (result) { @@ -203,7 +203,7 @@ pub const SavedSourceMap = struct { var source_map: *MappingList = source_map_; source_map.deinit(default_allocator); } else if (value.get(SavedMappings)) |saved_mappings| { - var saved = SavedMappings{ .data = @ptrCast([*]u8, saved_mappings) }; + var saved = SavedMappings{ .data = @as([*]u8, @ptrCast(saved_mappings)) }; saved.deinit(); } @@ -219,7 +219,7 @@ pub const SavedSourceMap = struct { return Value.from(mapping.value_ptr.*).as(MappingList).*; }, Value.Tag.SavedMappings => { - var saved = SavedMappings{ .data = @ptrCast([*]u8, Value.from(mapping.value_ptr.*).as(MappingList)) }; + var saved = SavedMappings{ .data = @as([*]u8, @ptrCast(Value.from(mapping.value_ptr.*).as(MappingList))) }; defer saved.deinit(); var result = default_allocator.create(MappingList) catch unreachable; result.* = saved.toMapping(default_allocator, path) catch { @@ -264,7 +264,7 @@ export fn Bun__readOriginTimer(vm: *JSC.VirtualMachine) u64 { export fn Bun__readOriginTimerStart(vm: *JSC.VirtualMachine) f64 { // timespce to milliseconds - return @floatCast(f64, (@floatFromInt(f64, vm.origin_timestamp) + JSC.VirtualMachine.origin_relative_epoch) / 1_000_000.0); + return @as(f64, @floatCast((@as(f64, @floatFromInt(vm.origin_timestamp)) + JSC.VirtualMachine.origin_relative_epoch) / 1_000_000.0)); } // comptime { @@ -794,16 +794,16 @@ pub const VirtualMachine = struct { /// We subtract the timestamp from Jan 1, 2000 (Y2K) pub const origin_relative_epoch = 946684800 * std.time.ns_per_s; fn getOriginTimestamp() u64 { - return @truncate( + return @as( u64, - @intCast( + @truncate(@as( u128, // handle if they set their system clock to be before epoch - @max( + @intCast(@max( std.time.nanoTimestamp(), origin_relative_epoch, - ), - ) - origin_relative_epoch, + )), + ) - origin_relative_epoch), ); } @@ -883,7 +883,7 @@ pub const VirtualMachine = struct { } vm.global = ZigGlobalObject.create( &global_classes, - @intCast(i32, global_classes.len), + @as(i32, @intCast(global_classes.len)), vm.console, -1, false, @@ -985,7 +985,7 @@ pub const VirtualMachine = struct { } vm.global = ZigGlobalObject.create( &global_classes, - @intCast(i32, global_classes.len), + @as(i32, @intCast(global_classes.len)), vm.console, -1, smol, @@ -1087,9 +1087,9 @@ pub const VirtualMachine = struct { } vm.global = ZigGlobalObject.create( &global_classes, - @intCast(i32, global_classes.len), + @as(i32, @intCast(global_classes.len)), vm.console, - @intCast(i32, worker.execution_context_id), + @as(i32, @intCast(worker.execution_context_id)), worker.mini, ); vm.regular_event_loop.global = vm.global; @@ -1402,7 +1402,7 @@ pub const VirtualMachine = struct { var vm_ = globalObject.bunVM(); if (vm_.global == globalObject) { - vm_.enqueueTask(Task.init(@ptrCast(*JSC.MicrotaskForDefaultGlobalObject, microtask))); + vm_.enqueueTask(Task.init(@as(*JSC.MicrotaskForDefaultGlobalObject, @ptrCast(microtask)))); } else { vm_.enqueueTask(Task.init(microtask)); } @@ -1685,7 +1685,7 @@ pub const VirtualMachine = struct { err, globalThis.createAggregateError( errors.ptr, - @intCast(u16, errors.len), + @as(u16, @intCast(errors.len)), &ZigString.init( std.fmt.allocPrint(globalThis.allocator(), "{d} errors building \"{}\"", .{ errors.len, @@ -1730,7 +1730,7 @@ pub const VirtualMachine = struct { this.last_reported_error_for_dedupe = result; if (result.isException(this.global.vm())) { - var exception = @ptrCast(*Exception, result.asVoid()); + var exception = @as(*Exception, @ptrCast(result.asVoid())); this.printException( exception, @@ -2001,7 +2001,7 @@ pub const VirtualMachine = struct { iterator(_vm, globalObject, nextValue, ctx.?, false); } inline fn iterator(_: [*c]VM, _: [*c]JSGlobalObject, nextValue: JSValue, ctx: ?*anyopaque, comptime color: bool) void { - var this_ = @ptrFromInt(*@This(), @intFromPtr(ctx)); + var this_ = @as(*@This(), @ptrFromInt(@intFromPtr(ctx))); VirtualMachine.get().printErrorlikeObject(nextValue, null, this_.current_exception_list, Writer, this_.writer, color, allow_side_effects); } }; @@ -2099,7 +2099,7 @@ pub const VirtualMachine = struct { const dir = vm.bundler.fs.top_level_dir; while (i < stack.len) : (i += 1) { - const frame = stack[@intCast(usize, i)]; + const frame = stack[@as(usize, @intCast(i))]; const file_slice = frame.source_url.toUTF8(bun.default_allocator); defer file_slice.deinit(); const func_slice = frame.function_name.toUTF8(bun.default_allocator); @@ -2215,7 +2215,7 @@ pub const VirtualMachine = struct { frames[j] = frame; j += 1; } - exception.stack.frames_len = @truncate(u8, j); + exception.stack.frames_len = @as(u8, @truncate(j)); frames.len = j; } } @@ -2249,7 +2249,7 @@ pub const VirtualMachine = struct { if (strings.getLinesInText( code.slice(), - @intCast(u32, top.position.line), + @as(u32, @intCast(top.position.line)), JSC.ZigException.Holder.source_lines_count, )) |lines| { var source_lines = exception.stack.source_lines_ptr[0..JSC.ZigException.Holder.source_lines_count]; @@ -2260,12 +2260,12 @@ pub const VirtualMachine = struct { var lines_ = lines[0..@min(lines.len, source_lines.len)]; for (lines_, 0..) |line, j| { source_lines[(lines_.len - 1) - j] = String.init(line); - source_line_numbers[j] = top.position.line - @intCast(i32, j) + 1; + source_line_numbers[j] = top.position.line - @as(i32, @intCast(j)) + 1; } - exception.stack.source_lines_len = @intCast(u8, lines_.len); + exception.stack.source_lines_len = @as(u8, @intCast(lines_.len)); - top.position.column_stop = @intCast(i32, source_lines[lines_.len - 1].length()); + top.position.column_stop = @as(i32, @intCast(source_lines[lines_.len - 1].length())); top.position.line_stop = top.position.column_stop; // This expression range is no longer accurate @@ -2372,11 +2372,11 @@ pub const VirtualMachine = struct { ); if (!top.position.isInvalid()) { - var first_non_whitespace = @intCast(u32, top.position.column_start); + var first_non_whitespace = @as(u32, @intCast(top.position.column_start)); while (first_non_whitespace < text.len and text[first_non_whitespace] == ' ') { first_non_whitespace += 1; } - const indent = @intCast(usize, pad) + " | ".len + first_non_whitespace; + const indent = @as(usize, @intCast(pad)) + " | ".len + first_non_whitespace; try writer.writeByteNTimes(' ', indent); try writer.print(comptime Output.prettyFmt( @@ -2572,7 +2572,7 @@ pub const EventListenerMixin = struct { const FetchEventRejectionHandler = struct { pub fn onRejection(_ctx: *anyopaque, err: anyerror, fetch_event: *FetchEvent, value: JSValue) void { onError( - @ptrFromInt(*CtxType, @intFromPtr(_ctx)), + @as(*CtxType, @ptrFromInt(@intFromPtr(_ctx))), err, value, fetch_event.request_context.?, @@ -2940,7 +2940,7 @@ pub fn NewHotReloader(comptime Ctx: type, comptime EventLoopType: type, comptime var path_string: bun.PathString = undefined; var file_hash: @This().Watcher.HashType = last_file_hash; const abs_path: string = brk: { - if (dir_ent.entries.get(@ptrCast([]const u8, changed_name))) |file_ent| { + if (dir_ent.entries.get(@as([]const u8, @ptrCast(changed_name)))) |file_ent| { // reset the file descriptor file_ent.entry.cache.fd = 0; file_ent.entry.need_stat = true; @@ -2950,9 +2950,9 @@ pub fn NewHotReloader(comptime Ctx: type, comptime EventLoopType: type, comptime if (hash == file_hash) { if (file_descriptors[entry_id] != 0) { if (prev_entry_id != entry_id) { - current_task.append(@truncate(u32, entry_id)); + current_task.append(@as(u32, @truncate(entry_id))); ctx.removeAtIndex( - @truncate(u16, entry_id), + @as(u16, @truncate(entry_id)), 0, &.{}, .file, diff --git a/src/bun.js/javascript_core_c_api.zig b/src/bun.js/javascript_core_c_api.zig index aba143a81..367b4e279 100644 --- a/src/bun.js/javascript_core_c_api.zig +++ b/src/bun.js/javascript_core_c_api.zig @@ -9,7 +9,7 @@ const std = @import("std"); const cpp = @import("./bindings/bindings.zig"); const generic = opaque { pub fn value(this: *const @This()) cpp.JSValue { - return @enumFromInt(cpp.JSValue, @bitCast(cpp.JSValue.Type, @intFromPtr(this))); + return @as(cpp.JSValue, @enumFromInt(@as(cpp.JSValue.Type, @bitCast(@intFromPtr(this))))); } pub inline fn bunVM(this: *@This()) *@import("root").bun.JSC.VirtualMachine { diff --git a/src/bun.js/module_loader.zig b/src/bun.js/module_loader.zig index e7e4d700e..07e25282f 100644 --- a/src/bun.js/module_loader.zig +++ b/src/bun.js/module_loader.zig @@ -826,7 +826,7 @@ pub const ModuleLoader = struct { else null; resolved_source.commonjs_exports_len = if (commonjs_exports.len > 0) - @truncate(u32, commonjs_exports.len) + @as(u32, @truncate(commonjs_exports.len)) else if (parse_result.ast.exports_kind == .cjs) std.math.maxInt(u32) else @@ -845,7 +845,7 @@ pub const ModuleLoader = struct { else null, .commonjs_exports_len = if (commonjs_exports.len > 0) - @truncate(u32, commonjs_exports.len) + @as(u32, @truncate(commonjs_exports.len)) else if (parse_result.ast.exports_kind == .cjs) std.math.maxInt(u32) else @@ -1228,7 +1228,7 @@ pub const ModuleLoader = struct { else null; resolved_source.commonjs_exports_len = if (commonjs_exports.len > 0) - @truncate(u32, commonjs_exports.len) + @as(u32, @truncate(commonjs_exports.len)) else if (parse_result.ast.exports_kind == .cjs) std.math.maxInt(u32) else @@ -1265,7 +1265,7 @@ pub const ModuleLoader = struct { else null, .commonjs_exports_len = if (commonjs_exports.len > 0) - @truncate(u32, commonjs_exports.len) + @as(u32, @truncate(commonjs_exports.len)) else if (parse_result.ast.exports_kind == .cjs) std.math.maxInt(u32) else @@ -1330,7 +1330,7 @@ pub const ModuleLoader = struct { var encoded = JSC.EncodedJSValue{ .asPtr = globalThis, }; - const globalValue = @enumFromInt(JSC.JSValue, encoded.asInt64); + const globalValue = @as(JSC.JSValue, @enumFromInt(encoded.asInt64)); globalValue.put( globalThis, JSC.ZigString.static("wasmSourceBytes"), @@ -2204,9 +2204,11 @@ pub const HardcodedModule = enum { .{ "path/win32", .{ .path = "node:path/win32" } }, .{ "perf_hooks", .{ .path = "node:perf_hooks" } }, .{ "process", .{ .path = "node:process" } }, - .{ "readable-stream", .{ .path = "node:stream" } }, - .{ "readable-stream/consumer", .{ .path = "node:stream/consumers" } }, - .{ "readable-stream/web", .{ .path = "node:stream/web" } }, + // Older versions of `readable-stream` is incompatible with latest + // version of Node.js Stream API, which `bun` implements + // .{ "readable-stream", .{ .path = "node:stream" } }, + // .{ "readable-stream/consumer", .{ .path = "node:stream/consumers" } }, + // .{ "readable-stream/web", .{ .path = "node:stream/web" } }, .{ "readline", .{ .path = "node:readline" } }, .{ "readline/promises", .{ .path = "node:readline/promises" } }, .{ "stream", .{ .path = "node:stream" } }, diff --git a/src/bun.js/node/dir_iterator.zig b/src/bun.js/node/dir_iterator.zig index dac78e5e2..968fde001 100644 --- a/src/bun.js/node/dir_iterator.zig +++ b/src/bun.js/node/dir_iterator.zig @@ -65,13 +65,13 @@ pub const Iterator = switch (builtin.os.tag) { } self.index = 0; - self.end_index = @intCast(usize, rc); + self.end_index = @as(usize, @intCast(rc)); } - const darwin_entry = @ptrCast(*align(1) os.system.dirent, &self.buf[self.index]); + const darwin_entry = @as(*align(1) os.system.dirent, @ptrCast(&self.buf[self.index])); const next_index = self.index + darwin_entry.reclen(); self.index = next_index; - const name = @ptrCast([*]u8, &darwin_entry.d_name)[0..darwin_entry.d_namlen]; + const name = @as([*]u8, @ptrCast(&darwin_entry.d_name))[0..darwin_entry.d_namlen]; if (strings.eqlComptime(name, ".") or strings.eqlComptime(name, "..") or (darwin_entry.d_ino == 0)) { continue :start_over; @@ -122,11 +122,11 @@ pub const Iterator = switch (builtin.os.tag) { self.index = 0; self.end_index = rc; } - const linux_entry = @ptrCast(*align(1) linux.dirent64, &self.buf[self.index]); + const linux_entry = @as(*align(1) linux.dirent64, @ptrCast(&self.buf[self.index])); const next_index = self.index + linux_entry.reclen(); self.index = next_index; - const name = mem.sliceTo(@ptrCast([*:0]u8, &linux_entry.d_name), 0); + const name = mem.sliceTo(@as([*:0]u8, @ptrCast(&linux_entry.d_name)), 0); // skip . and .. entries if (strings.eqlComptime(name, ".") or strings.eqlComptime(name, "..")) { @@ -196,15 +196,14 @@ pub const Iterator = switch (builtin.os.tag) { } } - const aligned_ptr = @alignCast(@alignOf(w.FILE_BOTH_DIR_INFORMATION), &self.buf[self.index]); - const dir_info = @ptrCast(*w.FILE_BOTH_DIR_INFORMATION, aligned_ptr); + const dir_info: *w.FILE_BOTH_DIR_INFORMATION = @ptrCast(@alignCast(&self.buf[self.index])); if (dir_info.NextEntryOffset != 0) { self.index += dir_info.NextEntryOffset; } else { self.index = self.buf.len; } - const name_utf16le = @ptrCast([*]u16, &dir_info.FileName)[0 .. dir_info.FileNameLength / 2]; + const name_utf16le = @as([*]u16, @ptrCast(&dir_info.FileName))[0 .. dir_info.FileNameLength / 2]; if (mem.eql(u16, name_utf16le, &[_]u16{'.'}) or mem.eql(u16, name_utf16le, &[_]u16{ '.', '.' })) continue; @@ -260,7 +259,7 @@ pub const Iterator = switch (builtin.os.tag) { self.index = 0; self.end_index = bufused; } - const entry = @ptrCast(*align(1) w.dirent_t, &self.buf[self.index]); + const entry = @as(*align(1) w.dirent_t, @ptrCast(&self.buf[self.index])); const entry_size = @sizeOf(w.dirent_t); const name_index = self.index + entry_size; const name = mem.span(self.buf[name_index .. name_index + entry.d_namlen]); diff --git a/src/bun.js/node/fs_events.zig b/src/bun.js/node/fs_events.zig index a3fba5441..54c969d0f 100644 --- a/src/bun.js/node/fs_events.zig +++ b/src/bun.js/node/fs_events.zig @@ -254,7 +254,7 @@ pub const FSEventsLoop = struct { } pub fn wrap(this: ?*anyopaque) void { - @call(.always_inline, Callback, .{@ptrCast(*Type, @alignCast(@alignOf(Type), this.?))}); + @call(.always_inline, Callback, .{@as(*Type, @ptrCast(@alignCast(this.?)))}); } }; } diff --git a/src/bun.js/node/node_fs.zig b/src/bun.js/node/node_fs.zig index 3f298c5c7..8fb769fac 100644 --- a/src/bun.js/node/node_fs.zig +++ b/src/bun.js/node/node_fs.zig @@ -368,7 +368,7 @@ pub const Arguments = struct { }; arguments.eat(); - break :brk @intCast(uid_t, uid_value.toInt32()); + break :brk @as(uid_t, @intCast(uid_value.toInt32())); }; const gid: gid_t = brk: { @@ -385,7 +385,7 @@ pub const Arguments = struct { }; arguments.eat(); - break :brk @intCast(gid_t, gid_value.toInt32()); + break :brk @as(gid_t, @intCast(gid_value.toInt32())); }; return Chown{ .path = path, .uid = uid, .gid = gid }; @@ -438,7 +438,7 @@ pub const Arguments = struct { }; arguments.eat(); - break :brk @intCast(uid_t, uid_value.toInt32()); + break :brk @as(uid_t, @intCast(uid_value.toInt32())); }; const gid: gid_t = brk: { @@ -455,7 +455,7 @@ pub const Arguments = struct { }; arguments.eat(); - break :brk @intCast(gid_t, gid_value.toInt32()); + break :brk @as(gid_t, @intCast(gid_value.toInt32())); }; return Fchown{ .fd = fd, .uid = uid, .gid = gid }; @@ -1672,7 +1672,7 @@ pub const Arguments = struct { } if (arguments.remaining[1].isNumber() or arguments.remaining[1].isBigInt()) - args.position = @intCast(ReadPosition, arguments.remaining[1].to(i52)); + args.position = @as(ReadPosition, @intCast(arguments.remaining[1].to(i52))); arguments.remaining = arguments.remaining[2..]; } else if (current.isObject()) { @@ -1798,7 +1798,7 @@ pub const Arguments = struct { mode: Mode = 0o666, file: PathOrFileDescriptor, data: StringOrBuffer, - dirfd: FileDescriptor = @intCast(FileDescriptor, std.fs.cwd().fd), + dirfd: FileDescriptor = @as(FileDescriptor, @intCast(std.fs.cwd().fd)), pub fn deinit(self: WriteFile) void { self.file.deinit(); @@ -2424,7 +2424,7 @@ pub const Arguments = struct { return CopyFile{ .src = src, .dest = dest, - .mode = @enumFromInt(Constants.Copyfile, mode), + .mode = @as(Constants.Copyfile, @enumFromInt(mode)), }; } }; @@ -2568,7 +2568,7 @@ const Return = struct { ctx.ptr(), &fields.bytesRead, &fields.buffer, - JSC.JSValue.jsNumberFromUint64(@intCast(u52, @min(std.math.maxInt(u52), this.bytes_read))), + JSC.JSValue.jsNumberFromUint64(@as(u52, @intCast(@min(std.math.maxInt(u52), this.bytes_read)))), this.buffer_val, ).asObjectRef(); } @@ -2592,7 +2592,7 @@ const Return = struct { ctx.ptr(), &fields.bytesWritten, &fields.buffer, - JSC.JSValue.jsNumberFromUint64(@intCast(u52, @min(std.math.maxInt(u52), this.bytes_written))), + JSC.JSValue.jsNumberFromUint64(@as(u52, @intCast(@min(std.math.maxInt(u52), this.bytes_written)))), if (this.buffer == .buffer) this.buffer_val else @@ -2805,7 +2805,7 @@ pub const NodeFS = struct { .err => |err| return Maybe(Return.CopyFile){ .err = err }, }; defer { - _ = std.c.ftruncate(dest_fd, @intCast(std.c.off_t, @truncate(u63, wrote))); + _ = std.c.ftruncate(dest_fd, @as(std.c.off_t, @intCast(@as(u63, @truncate(wrote))))); _ = Syscall.close(dest_fd); } @@ -2815,7 +2815,7 @@ pub const NodeFS = struct { // 16 KB is high end of what is okay to use for stack space // good thing we ask for absurdly large stack sizes var buf: [16384]u8 = undefined; - var remain = @intCast(u64, @max(stat_.size, 0)); + var remain = @as(u64, @intCast(@max(stat_.size, 0))); toplevel: while (remain > 0) { const amt = switch (Syscall.read(src_fd, buf[0..@min(buf.len, remain)])) { .result => |result| result, @@ -2913,15 +2913,15 @@ pub const NodeFS = struct { .err => |err| return Maybe(Return.CopyFile){ .err = err }, }; - var size = @intCast(usize, @max(stat_.size, 0)); + var size = @as(usize, @intCast(@max(stat_.size, 0))); defer { - _ = linux.ftruncate(dest_fd, @intCast(i64, @truncate(u63, wrote))); + _ = linux.ftruncate(dest_fd, @as(i64, @intCast(@as(u63, @truncate(wrote))))); _ = Syscall.close(dest_fd); } - var off_in_copy = @bitCast(i64, @as(u64, 0)); - var off_out_copy = @bitCast(i64, @as(u64, 0)); + var off_in_copy = @as(i64, @bitCast(@as(u64, 0))); + var off_out_copy = @as(i64, @bitCast(@as(u64, 0))); if (size == 0) { // copy until EOF @@ -3199,7 +3199,7 @@ pub const NodeFS = struct { .sync => { var buf: [bun.MAX_PATH_BYTES]u8 = undefined; const path = args.path.sliceZWithForceCopy(&buf, true); - const len = @truncate(u16, path.len); + const len = @as(u16, @truncate(path.len)); // First, attempt to create the desired directory // If that fails, then walk back up the path until we have a match @@ -3349,8 +3349,8 @@ pub const NodeFS = struct { }; } // std.c.getErrno(rc) returns SUCCESS if rc is null so we call std.c._errno() directly - const errno = @enumFromInt(std.c.E, std.c._errno().*); - return .{ .err = Syscall.Error{ .errno = @truncate(Syscall.Error.Int, @intFromEnum(errno)), .syscall = .mkdtemp } }; + const errno = @as(std.c.E, @enumFromInt(std.c._errno().*)); + return .{ .err = Syscall.Error{ .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(errno))), .syscall = .mkdtemp } }; } pub fn open(this: *NodeFS, args: Arguments.Open, comptime flavor: Flavor) Maybe(Return.Open) { switch (comptime flavor) { @@ -3389,7 +3389,7 @@ pub const NodeFS = struct { }, .result => |amt| .{ .result = .{ - .bytes_read = @truncate(u52, amt), + .bytes_read = @as(u52, @truncate(amt)), }, }, }; @@ -3413,7 +3413,7 @@ pub const NodeFS = struct { }, .result => |amt| .{ .result = .{ - .bytes_read = @truncate(u52, amt), + .bytes_read = @as(u52, @truncate(amt)), }, }, }; @@ -3461,7 +3461,7 @@ pub const NodeFS = struct { }, .result => |amt| .{ .result = .{ - .bytes_written = @truncate(u52, amt), + .bytes_written = @as(u52, @truncate(amt)), }, }, }; @@ -3486,7 +3486,7 @@ pub const NodeFS = struct { .err = err, }, .result => |amt| .{ .result = .{ - .bytes_written = @truncate(u52, amt), + .bytes_written = @as(u52, @truncate(amt)), } }, }; }, @@ -3506,7 +3506,7 @@ pub const NodeFS = struct { .err = err, }, .result => |amt| .{ .result = .{ - .bytes_read = @truncate(u52, amt), + .bytes_read = @as(u52, @truncate(amt)), } }, }; }, @@ -3524,7 +3524,7 @@ pub const NodeFS = struct { .err = err, }, .result => |amt| .{ .result = .{ - .bytes_read = @truncate(u52, amt), + .bytes_read = @as(u52, @truncate(amt)), } }, }; }, @@ -3544,7 +3544,7 @@ pub const NodeFS = struct { .err = err, }, .result => |amt| .{ .result = .{ - .bytes_written = @truncate(u52, amt), + .bytes_written = @as(u52, @truncate(amt)), } }, }; }, @@ -3562,7 +3562,7 @@ pub const NodeFS = struct { .err = err, }, .result => |amt| .{ .result = .{ - .bytes_written = @truncate(u52, amt), + .bytes_written = @as(u52, @truncate(amt)), } }, }; }, @@ -3775,21 +3775,21 @@ pub const NodeFS = struct { } // For certain files, the size might be 0 but the file might still have contents. - const size = @intCast( + const size = @as( u64, - @max( + @intCast(@max( @min( stat_.size, - @intCast( + @as( @TypeOf(stat_.size), // Only used in DOMFormData - args.max_size orelse std.math.maxInt( + @intCast(args.max_size orelse std.math.maxInt( JSC.WebCore.Blob.SizeType, - ), + )), ), ), 0, - ), + )), ) + if (comptime string_type == .null_terminated) 1 else 0; var buf = std.ArrayList(u8).init(bun.default_allocator); @@ -3937,20 +3937,20 @@ pub const NodeFS = struct { // on linux, it's absolutely positioned const pos = JSC.Node.Syscall.system.lseek( fd, - @intCast(std.os.off_t, 0), + @as(std.os.off_t, @intCast(0)), std.os.linux.SEEK.CUR, ); switch (JSC.Node.Syscall.getErrno(pos)) { - .SUCCESS => break :brk @intCast(usize, pos), + .SUCCESS => break :brk @as(usize, @intCast(pos)), else => break :preallocate, } }; bun.C.preallocate_file( fd, - @intCast(std.os.off_t, offset), - @intCast(std.os.off_t, buf.len), + @as(std.os.off_t, @intCast(offset)), + @as(std.os.off_t, @intCast(buf.len)), ) catch {}; } } @@ -3973,7 +3973,7 @@ pub const NodeFS = struct { // https://github.com/oven-sh/bun/issues/2931 if ((@intFromEnum(args.flag) & std.os.O.APPEND) == 0) { - _ = ftruncateSync(.{ .fd = fd, .len = @truncate(JSC.WebCore.Blob.SizeType, written) }); + _ = ftruncateSync(.{ .fd = fd, .len = @as(JSC.WebCore.Blob.SizeType, @truncate(written)) }); } return Maybe(Return.WriteFile).success; @@ -4119,7 +4119,7 @@ pub const NodeFS = struct { while (true) { if (Maybe(Return.Rmdir).errnoSys(bun.C.darwin.removefileat(std.os.AT.FDCWD, dest, null, flags), .rmdir)) |errno| { - switch (@enumFromInt(os.E, errno.err.errno)) { + switch (@as(os.E, @enumFromInt(errno.err.errno))) { .AGAIN, .INTR => continue, .NOENT => return Maybe(Return.Rmdir).success, .MLINK => { @@ -4206,7 +4206,7 @@ pub const NodeFS = struct { } if (Maybe(Return.Rm).errnoSys(bun.C.darwin.removefileat(std.os.AT.FDCWD, dest, null, flags), .unlink)) |errno| { - switch (@enumFromInt(os.E, errno.err.errno)) { + switch (@as(os.E, @enumFromInt(errno.err.errno))) { .AGAIN, .INTR => continue, .NOENT => { if (args.force) { diff --git a/src/bun.js/node/node_os.zig b/src/bun.js/node/node_os.zig index 483acb3e2..5710b5c21 100644 --- a/src/bun.js/node/node_os.zig +++ b/src/bun.js/node/node_os.zig @@ -207,7 +207,7 @@ pub const Os = struct { var num_cpus: c.natural_t = 0; var info: [*]local_bindings.processor_cpu_load_info = undefined; var info_size: std.c.mach_msg_type_number_t = 0; - if (local_bindings.host_processor_info(std.c.mach_host_self(), local_bindings.PROCESSOR_CPU_LOAD_INFO, &num_cpus, @ptrCast(*local_bindings.processor_info_array_t, &info), &info_size) != .SUCCESS) { + if (local_bindings.host_processor_info(std.c.mach_host_self(), local_bindings.PROCESSOR_CPU_LOAD_INFO, &num_cpus, @as(*local_bindings.processor_info_array_t, @ptrCast(&info)), &info_size) != .SUCCESS) { return error.no_processor_info; } defer _ = std.c.vm_deallocate(std.c.mach_task_self(), @intFromPtr(info), info_size); @@ -247,10 +247,10 @@ pub const Os = struct { @cInclude("unistd.h"); }); const ticks: i64 = unistd.sysconf(unistd._SC_CLK_TCK); - const multiplier = 1000 / @intCast(u64, ticks); + const multiplier = 1000 / @as(u64, @intCast(ticks)); // Set up each CPU value in the return - const values = JSC.JSValue.createEmptyArray(globalThis, @intCast(u32, num_cpus)); + const values = JSC.JSValue.createEmptyArray(globalThis, @as(u32, @intCast(num_cpus))); var cpu_index: u32 = 0; while (cpu_index < num_cpus) : (cpu_index += 1) { const times = CPUTimes{ @@ -436,8 +436,8 @@ pub const Os = struct { if (helpers.skip(iface) or helpers.isLinkLayer(iface)) continue; const interface_name = std.mem.sliceTo(iface.ifa_name, 0); - const addr = std.net.Address.initPosix(@alignCast(4, @ptrCast(*std.os.sockaddr, iface.ifa_addr))); - const netmask = std.net.Address.initPosix(@alignCast(4, @ptrCast(*std.os.sockaddr, iface.ifa_netmask))); + const addr = std.net.Address.initPosix(@alignCast(@as(*std.os.sockaddr, @ptrCast(iface.ifa_addr)))); + const netmask = std.net.Address.initPosix(@alignCast(@as(*std.os.sockaddr, @ptrCast(iface.ifa_netmask)))); var interface = JSC.JSValue.createEmptyObject(globalThis, 7); @@ -448,7 +448,7 @@ pub const Os = struct { // be converted to a CIDR suffix const maybe_suffix: ?u8 = switch (addr.any.family) { std.os.AF.INET => netmaskToCIDRSuffix(netmask.in.sa.addr), - std.os.AF.INET6 => netmaskToCIDRSuffix(@bitCast(u128, netmask.in6.sa.addr)), + std.os.AF.INET6 => netmaskToCIDRSuffix(@as(u128, @bitCast(netmask.in6.sa.addr))), else => null, }; @@ -500,9 +500,9 @@ pub const Os = struct { // This is the correct link-layer interface entry for the current interface, // cast to a link-layer socket address if (comptime Environment.isLinux) { - break @ptrCast(?*std.os.sockaddr.ll, @alignCast(4, ll_iface.ifa_addr)); + break @as(?*std.os.sockaddr.ll, @ptrCast(@alignCast(ll_iface.ifa_addr))); } else if (comptime Environment.isMac) { - break @ptrCast(?*C.sockaddr_dl, @alignCast(2, ll_iface.ifa_addr)); + break @as(?*C.sockaddr_dl, @ptrCast(@alignCast(ll_iface.ifa_addr))); } else unreachable; } else null; @@ -530,7 +530,7 @@ pub const Os = struct { // Does this entry already exist? if (ret.get(globalThis, interface_name)) |array| { // Add this interface entry to the existing array - const next_index = @intCast(u32, array.getLength(globalThis)); + const next_index = @as(u32, @intCast(array.getLength(globalThis))); array.putIndex(globalThis, next_index, interface); } else { // Add it as an array with this interface as an element @@ -750,7 +750,7 @@ test "netmaskToCIDRSuffix" { }; inline for (ipv6_tests) |t| { const addr = try std.net.Address.parseIp6(t[0], 0); - const bits = @bitCast(u128, addr.in6.sa.addr); + const bits = @as(u128, @bitCast(addr.in6.sa.addr)); try std.testing.expectEqual(@as(?u8, t[1]), netmaskToCIDRSuffix(bits)); } } diff --git a/src/bun.js/node/syscall.zig b/src/bun.js/node/syscall.zig index 5ff0b2f44..4dbb23f0d 100644 --- a/src/bun.js/node/syscall.zig +++ b/src/bun.js/node/syscall.zig @@ -182,7 +182,7 @@ pub fn mkdir(file_path: [:0]const u8, flags: JSC.Node.Mode) Maybe(void) { pub fn fcntl(fd: bun.FileDescriptor, cmd: i32, arg: usize) Maybe(usize) { const result = fcntl_symbol(fd, cmd, arg); if (Maybe(usize).errnoSys(result, .fcntl)) |err| return err; - return .{ .result = @intCast(usize, result) }; + return .{ .result = @as(usize, @intCast(result)) }; } pub fn getErrno(rc: anytype) std.os.E { @@ -191,7 +191,7 @@ pub fn getErrno(rc: anytype) std.os.E { return switch (Type) { comptime_int, usize => std.os.linux.getErrno(@as(usize, rc)), - i32, c_int, isize => std.os.linux.getErrno(@bitCast(usize, @as(isize, rc))), + i32, c_int, isize => std.os.linux.getErrno(@as(usize, @bitCast(@as(isize, rc)))), else => @compileError("Not implemented yet for type " ++ @typeName(Type)), }; } @@ -199,14 +199,14 @@ pub fn getErrno(rc: anytype) std.os.E { pub fn openat(dirfd: bun.FileDescriptor, file_path: [:0]const u8, flags: JSC.Node.Mode, perm: JSC.Node.Mode) Maybe(bun.FileDescriptor) { if (comptime Environment.isMac) { // https://opensource.apple.com/source/xnu/xnu-7195.81.3/libsyscall/wrappers/open-base.c - const rc = bun.AsyncIO.darwin.@"openat$NOCANCEL"(dirfd, file_path.ptr, @intCast(c_uint, flags), @intCast(c_int, perm)); + const rc = bun.AsyncIO.darwin.@"openat$NOCANCEL"(dirfd, file_path.ptr, @as(c_uint, @intCast(flags)), @as(c_int, @intCast(perm))); log("openat({d}, {s}) = {d}", .{ dirfd, file_path, rc }); return switch (Syscall.getErrno(rc)) { - .SUCCESS => .{ .result = @intCast(bun.FileDescriptor, rc) }, + .SUCCESS => .{ .result = @as(bun.FileDescriptor, @intCast(rc)) }, else => |err| .{ .err = .{ - .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)), + .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))), .syscall = .open, }, }, @@ -214,15 +214,15 @@ pub fn openat(dirfd: bun.FileDescriptor, file_path: [:0]const u8, flags: JSC.Nod } while (true) { - const rc = Syscall.system.openat(@intCast(Syscall.system.fd_t, dirfd), file_path, flags, perm); + const rc = Syscall.system.openat(@as(Syscall.system.fd_t, @intCast(dirfd)), file_path, flags, perm); log("openat({d}, {s}) = {d}", .{ dirfd, file_path, rc }); return switch (Syscall.getErrno(rc)) { - .SUCCESS => .{ .result = @intCast(bun.FileDescriptor, rc) }, + .SUCCESS => .{ .result = @as(bun.FileDescriptor, @intCast(rc)) }, .INTR => continue, else => |err| { return Maybe(std.os.fd_t){ .err = .{ - .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)), + .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))), .syscall = .open, }, }; @@ -235,7 +235,7 @@ pub fn openat(dirfd: bun.FileDescriptor, file_path: [:0]const u8, flags: JSC.Nod pub fn open(file_path: [:0]const u8, flags: JSC.Node.Mode, perm: JSC.Node.Mode) Maybe(bun.FileDescriptor) { // this is what open() does anyway. - return openat(@intCast(bun.FileDescriptor, std.fs.cwd().fd), file_path, flags, perm); + return openat(@as(bun.FileDescriptor, @intCast(std.fs.cwd().fd)), file_path, flags, perm); } /// This function will prevent stdout and stderr from being closed. @@ -289,7 +289,7 @@ pub fn write(fd: os.fd_t, bytes: []const u8) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = sys.write(fd, bytes.ptr, adjusted_len); @@ -300,7 +300,7 @@ pub fn write(fd: os.fd_t, bytes: []const u8) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -316,7 +316,7 @@ fn veclen(buffers: anytype) usize { pub fn writev(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { if (comptime Environment.isMac) { - const rc = writev_sym(fd, @ptrCast([*]std.os.iovec_const, buffers.ptr), @intCast(i32, buffers.len)); + const rc = writev_sym(fd, @as([*]std.os.iovec_const, @ptrCast(buffers.ptr)), @as(i32, @intCast(buffers.len))); if (comptime Environment.allow_assert) log("writev({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -324,10 +324,10 @@ pub fn writev(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { - const rc = writev_sym(fd, @ptrCast([*]std.os.iovec_const, buffers.ptr), buffers.len); + const rc = writev_sym(fd, @as([*]std.os.iovec_const, @ptrCast(buffers.ptr)), buffers.len); if (comptime Environment.allow_assert) log("writev({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -336,7 +336,7 @@ pub fn writev(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -344,7 +344,7 @@ pub fn writev(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { pub fn pwritev(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usize) { if (comptime Environment.isMac) { - const rc = pwritev_sym(fd, @ptrCast([*]std.os.iovec_const, buffers.ptr), @intCast(i32, buffers.len), position); + const rc = pwritev_sym(fd, @as([*]std.os.iovec_const, @ptrCast(buffers.ptr)), @as(i32, @intCast(buffers.len)), position); if (comptime Environment.allow_assert) log("pwritev({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -352,10 +352,10 @@ pub fn pwritev(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usiz return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { - const rc = pwritev_sym(fd, @ptrCast([*]std.os.iovec_const, buffers.ptr), buffers.len, position); + const rc = pwritev_sym(fd, @as([*]std.os.iovec_const, @ptrCast(buffers.ptr)), buffers.len, position); if (comptime Environment.allow_assert) log("pwritev({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -364,7 +364,7 @@ pub fn pwritev(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usiz return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -372,7 +372,7 @@ pub fn pwritev(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usiz pub fn readv(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { if (comptime Environment.isMac) { - const rc = readv_sym(fd, buffers.ptr, @intCast(i32, buffers.len)); + const rc = readv_sym(fd, buffers.ptr, @as(i32, @intCast(buffers.len))); if (comptime Environment.allow_assert) log("readv({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -380,7 +380,7 @@ pub fn readv(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = readv_sym(fd, buffers.ptr, buffers.len); @@ -392,7 +392,7 @@ pub fn readv(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -400,7 +400,7 @@ pub fn readv(fd: os.fd_t, buffers: []std.os.iovec) Maybe(usize) { pub fn preadv(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usize) { if (comptime Environment.isMac) { - const rc = preadv_sym(fd, buffers.ptr, @intCast(i32, buffers.len), position); + const rc = preadv_sym(fd, buffers.ptr, @as(i32, @intCast(buffers.len)), position); if (comptime Environment.allow_assert) log("preadv({d}, {d}) = {d}", .{ fd, veclen(buffers), rc }); @@ -408,7 +408,7 @@ pub fn preadv(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usize return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = preadv_sym(fd, buffers.ptr, buffers.len, position); @@ -420,7 +420,7 @@ pub fn preadv(fd: os.fd_t, buffers: []std.os.iovec, position: isize) Maybe(usize return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -465,14 +465,14 @@ const fcntl_symbol = system.fcntl; pub fn pread(fd: os.fd_t, buf: []u8, offset: i64) Maybe(usize) { const adjusted_len = @min(buf.len, max_count); - const ioffset = @bitCast(i64, offset); // the OS treats this as unsigned + const ioffset = @as(i64, @bitCast(offset)); // the OS treats this as unsigned while (true) { const rc = pread_sym(fd, buf.ptr, adjusted_len, ioffset); if (Maybe(usize).errnoSys(rc, .pread)) |err| { if (err.getErrno() == .INTR) continue; return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -485,7 +485,7 @@ else pub fn pwrite(fd: os.fd_t, bytes: []const u8, offset: i64) Maybe(usize) { const adjusted_len = @min(bytes.len, max_count); - const ioffset = @bitCast(i64, offset); // the OS treats this as unsigned + const ioffset = @as(i64, @bitCast(offset)); // the OS treats this as unsigned while (true) { const rc = pwrite_sym(fd, bytes.ptr, adjusted_len, ioffset); return if (Maybe(usize).errnoSysFd(rc, .pwrite, fd)) |err| { @@ -493,7 +493,7 @@ pub fn pwrite(fd: os.fd_t, bytes: []const u8, offset: i64) Maybe(usize) { .INTR => continue, else => return err, } - } else Maybe(usize){ .result = @intCast(usize, rc) }; + } else Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; @@ -510,7 +510,7 @@ pub fn read(fd: os.fd_t, buf: []u8) Maybe(usize) { if (Maybe(usize).errnoSys(rc, .read)) |err| { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = sys.read(fd, buf.ptr, adjusted_len); @@ -520,7 +520,7 @@ pub fn read(fd: os.fd_t, buf: []u8) Maybe(usize) { if (err.getErrno() == .INTR) continue; return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } } unreachable; @@ -537,7 +537,7 @@ pub fn recv(fd: os.fd_t, buf: []u8, flag: u32) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = linux.recvfrom(fd, buf.ptr, adjusted_len, flag | os.SOCK.CLOEXEC | linux.MSG.CMSG_CLOEXEC, null, null); @@ -547,7 +547,7 @@ pub fn recv(fd: os.fd_t, buf: []u8, flag: u32) Maybe(usize) { if (err.getErrno() == .INTR) continue; return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } } unreachable; @@ -559,7 +559,7 @@ pub fn send(fd: os.fd_t, buf: []const u8, flag: u32) Maybe(usize) { if (Maybe(usize).errnoSys(rc, .send)) |err| { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } else { while (true) { const rc = linux.sendto(fd, buf.ptr, buf.len, flag | os.SOCK.CLOEXEC | os.MSG.NOSIGNAL, null, 0); @@ -569,7 +569,7 @@ pub fn send(fd: os.fd_t, buf: []const u8, flag: u32) Maybe(usize) { return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } } unreachable; @@ -583,7 +583,7 @@ pub fn readlink(in: [:0]const u8, buf: []u8) Maybe(usize) { if (err.getErrno() == .INTR) continue; return err; } - return Maybe(usize){ .result = @intCast(usize, rc) }; + return Maybe(usize){ .result = @as(usize, @intCast(rc)) }; } unreachable; } @@ -741,16 +741,16 @@ fn mmap( fd: os.fd_t, offset: u64, ) Maybe([]align(mem.page_size) u8) { - const ioffset = @bitCast(i64, offset); // the OS treats this as unsigned + const ioffset = @as(i64, @bitCast(offset)); // the OS treats this as unsigned const rc = std.c.mmap(ptr, length, prot, flags, fd, ioffset); const fail = std.c.MAP.FAILED; if (rc == fail) { return Maybe([]align(mem.page_size) u8){ - .err = .{ .errno = @truncate(Syscall.Error.Int, @intFromEnum(std.c.getErrno(@bitCast(i64, @intFromPtr(fail))))), .syscall = .mmap }, + .err = .{ .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(std.c.getErrno(@as(i64, @bitCast(@intFromPtr(fail))))))), .syscall = .mmap }, }; } - return Maybe([]align(mem.page_size) u8){ .result = @ptrCast([*]align(mem.page_size) u8, @alignCast(mem.page_size, rc))[0..length] }; + return Maybe([]align(mem.page_size) u8){ .result = @as([*]align(mem.page_size) u8, @ptrCast(@alignCast(rc)))[0..length] }; } pub fn mmapFile(path: [:0]const u8, flags: u32, wanted_size: ?usize, offset: usize) Maybe([]align(mem.page_size) u8) { @@ -759,13 +759,13 @@ pub fn mmapFile(path: [:0]const u8, flags: u32, wanted_size: ?usize, offset: usi .err => |err| return .{ .err = err }, }; - var size = std.math.sub(usize, @intCast(usize, switch (fstat(fd)) { + var size = std.math.sub(usize, @as(usize, @intCast(switch (fstat(fd)) { .result => |result| result.size, .err => |err| { _ = close(fd); return .{ .err = err }; }, - }), offset) catch 0; + })), offset) catch 0; if (wanted_size) |size_| size = @min(size, size_); @@ -804,7 +804,7 @@ pub const Error = struct { pub const Int: type = std.math.IntFittingRange(0, max_errno_value + 5); errno: Int, - syscall: Syscall.Tag = @enumFromInt(Syscall.Tag, 0), + syscall: Syscall.Tag = @as(Syscall.Tag, @enumFromInt(0)), path: []const u8 = "", fd: i32 = -1, @@ -813,7 +813,7 @@ pub const Error = struct { } pub fn fromCode(errno: os.E, syscall: Syscall.Tag) Error { - return .{ .errno = @truncate(Int, @intFromEnum(errno)), .syscall = syscall }; + return .{ .errno = @as(Int, @truncate(@intFromEnum(errno))), .syscall = syscall }; } pub fn format(self: Error, comptime fmt: []const u8, opts: std.fmt.FormatOptions, writer: anytype) !void { @@ -824,16 +824,16 @@ pub const Error = struct { pub const retry = Error{ .errno = if (Environment.isLinux) - @intCast(Int, @intFromEnum(os.E.AGAIN)) + @as(Int, @intCast(@intFromEnum(os.E.AGAIN))) else if (Environment.isMac) - @intCast(Int, @intFromEnum(os.E.WOULDBLOCK)) + @as(Int, @intCast(@intFromEnum(os.E.WOULDBLOCK))) else - @intCast(Int, @intFromEnum(os.E.INTR)), + @as(Int, @intCast(@intFromEnum(os.E.INTR))), .syscall = .retry, }; pub inline fn getErrno(this: Error) os.E { - return @enumFromInt(os.E, this.errno); + return @as(os.E, @enumFromInt(this.errno)); } pub inline fn withPath(this: Error, path: anytype) Error { @@ -848,7 +848,7 @@ pub const Error = struct { return Error{ .errno = this.errno, .syscall = this.syscall, - .fd = @intCast(i32, fd), + .fd = @as(i32, @intCast(fd)), }; } @@ -878,7 +878,7 @@ pub const Error = struct { // errno label if (this.errno > 0 and this.errno < C.SystemErrno.max) { - const system_errno = @enumFromInt(C.SystemErrno, this.errno); + const system_errno = @as(C.SystemErrno, @enumFromInt(this.errno)); err.code = bun.String.static(@tagName(system_errno)); if (C.SystemErrno.labels.get(system_errno)) |label| { err.message = bun.String.static(label); @@ -935,9 +935,9 @@ pub fn setPipeCapacityOnLinux(fd: bun.FileDescriptor, capacity: usize) Maybe(usi } pub fn getMaxPipeSizeOnLinux() usize { - return @intCast( + return @as( usize, - bun.once(struct { + @intCast(bun.once(struct { fn once() c_int { const strings = bun.strings; const default_out_size = 512 * 1024; @@ -963,8 +963,8 @@ pub fn getMaxPipeSizeOnLinux() usize { // we set the absolute max to 8 MB because honestly that's a huge pipe // my current linux machine only goes up to 1 MB, so that's very unlikely to be hit - return @min(@truncate(c_int, max_pipe_size -| 32), 1024 * 1024 * 8); + return @min(@as(c_int, @truncate(max_pipe_size -| 32)), 1024 * 1024 * 8); } - }.once, c_int), + }.once, c_int)), ); } diff --git a/src/bun.js/node/types.zig b/src/bun.js/node/types.zig index 0b19c7fcc..975a281e5 100644 --- a/src/bun.js/node/types.zig +++ b/src/bun.js/node/types.zig @@ -139,7 +139,7 @@ pub fn Maybe(comptime ResultType: type) type { pub inline fn getErrno(this: @This()) os.E { return switch (this) { .result => os.E.SUCCESS, - .err => |err| @enumFromInt(os.E, err.errno), + .err => |err| @as(os.E, @enumFromInt(err.errno)), }; } @@ -148,7 +148,7 @@ pub fn Maybe(comptime ResultType: type) type { .SUCCESS => null, else => |err| @This(){ // always truncate - .err = .{ .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)) }, + .err = .{ .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))) }, }, }; } @@ -158,7 +158,7 @@ pub fn Maybe(comptime ResultType: type) type { .SUCCESS => null, else => |err| @This(){ // always truncate - .err = .{ .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)), .syscall = syscall }, + .err = .{ .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))), .syscall = syscall }, }, }; } @@ -169,9 +169,9 @@ pub fn Maybe(comptime ResultType: type) type { else => |err| @This(){ // always truncate .err = .{ - .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)), + .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))), .syscall = syscall, - .fd = @intCast(i32, fd), + .fd = @as(i32, @intCast(fd)), }, }, }; @@ -182,7 +182,7 @@ pub fn Maybe(comptime ResultType: type) type { .SUCCESS => null, else => |err| @This(){ // always truncate - .err = .{ .errno = @truncate(Syscall.Error.Int, @intFromEnum(err)), .syscall = syscall, .path = bun.asByteSlice(path) }, + .err = .{ .errno = @as(Syscall.Error.Int, @truncate(@intFromEnum(err))), .syscall = syscall, .path = bun.asByteSlice(path) }, }, }; } @@ -203,7 +203,7 @@ pub const StringOrBuffer = union(Tag) { } pub export fn external_string_finalizer(_: ?*anyopaque, _: JSC.C.JSStringRef, buffer: *anyopaque, byteLength: usize) void { - bun.default_allocator.free(@ptrCast([*]const u8, buffer)[0..byteLength]); + bun.default_allocator.free(@as([*]const u8, @ptrCast(buffer))[0..byteLength]); } pub fn toJS(this: StringOrBuffer, ctx: JSC.C.JSContextRef, exception: JSC.C.ExceptionRef) JSC.C.JSValueRef { @@ -846,7 +846,7 @@ pub const VectorArrayBuffer = struct { bufferlist.ensureTotalCapacityPrecise(len) catch @panic("Failed to allocate memory for ArrayBuffer[]"); while (i < len) { - const element = val.getIndex(globalObject, @truncate(u32, i)); + const element = val.getIndex(globalObject, @as(u32, @truncate(i))); if (!element.isCell()) { JSC.throwInvalidArguments("Expected ArrayBufferView[]", .{}, globalObject, exception); @@ -906,7 +906,7 @@ pub const ArgumentsSlice = struct { } pub fn from(vm: *JSC.VirtualMachine, arguments: []const JSC.JSValueRef) ArgumentsSlice { - return init(vm, @ptrCast([*]const JSC.JSValue, arguments.ptr)[0..arguments.len]); + return init(vm, @as([*]const JSC.JSValue, @ptrCast(arguments.ptr))[0..arguments.len]); } pub fn init(vm: *JSC.VirtualMachine, arguments: []const JSC.JSValue) ArgumentsSlice { return ArgumentsSlice{ @@ -918,7 +918,7 @@ pub const ArgumentsSlice = struct { } pub inline fn len(this: *const ArgumentsSlice) u16 { - return @truncate(u16, this.remaining.len); + return @as(u16, @truncate(this.remaining.len)); } pub fn eat(this: *ArgumentsSlice) void { if (this.remaining.len == 0) { @@ -952,7 +952,7 @@ pub fn fileDescriptorFromJS(ctx: JSC.C.JSContextRef, value: JSC.JSValue, excepti return null; } - return @truncate(bun.FileDescriptor, fd); + return @as(bun.FileDescriptor, @truncate(fd)); } // Node.js docs: @@ -965,7 +965,7 @@ pub fn timeLikeFromJS(globalThis: *JSC.JSGlobalObject, value: JSC.JSValue, _: JS return null; } - return @truncate(TimeLike, @intFromFloat(i64, milliseconds / @as(f64, std.time.ms_per_s))); + return @as(TimeLike, @truncate(@as(i64, @intFromFloat(milliseconds / @as(f64, std.time.ms_per_s))))); } if (!value.isNumber() and !value.isString()) { @@ -977,12 +977,12 @@ pub fn timeLikeFromJS(globalThis: *JSC.JSGlobalObject, value: JSC.JSValue, _: JS return null; } - return @truncate(TimeLike, @intFromFloat(i64, seconds)); + return @as(TimeLike, @truncate(@as(i64, @intFromFloat(seconds)))); } pub fn modeFromJS(ctx: JSC.C.JSContextRef, value: JSC.JSValue, exception: JSC.C.ExceptionRef) ?Mode { const mode_int = if (value.isNumber()) - @truncate(Mode, value.to(Mode)) + @as(Mode, @truncate(value.to(Mode))) else brk: { if (value.isUndefinedOrNull()) return null; @@ -1062,7 +1062,7 @@ pub const PathOrFileDescriptor = union(Tag) { pub fn toJS(this: JSC.Node.PathOrFileDescriptor, ctx: JSC.C.JSContextRef, exception: JSC.C.ExceptionRef) JSC.C.JSValueRef { return switch (this) { .path => this.path.toJS(ctx, exception), - .fd => JSC.JSValue.jsNumberFromInt32(@intCast(i32, this.fd)).asRef(), + .fd => JSC.JSValue.jsNumberFromInt32(@as(i32, @intCast(this.fd))).asRef(), }; } }; @@ -1167,7 +1167,7 @@ pub const FileSystemFlags = enum(Mode) { pub fn fromJS(ctx: JSC.C.JSContextRef, val: JSC.JSValue, exception: JSC.C.ExceptionRef) ?FileSystemFlags { if (val.isNumber()) { const number = val.coerce(i32, ctx); - return @enumFromInt(FileSystemFlags, @intCast(Mode, @max(number, 0))); + return @as(FileSystemFlags, @enumFromInt(@as(Mode, @intCast(@max(number, 0))))); } const jsType = val.jsType(); @@ -1198,7 +1198,7 @@ pub const FileSystemFlags = enum(Mode) { inline else => |is_16bit| { const chars = if (is_16bit) str.utf16SliceAligned() else str.slice(); - if (std.ascii.isDigit(@truncate(u8, chars[0]))) { + if (std.ascii.isDigit(@as(u8, @truncate(chars[0])))) { // node allows "0o644" as a string :( if (is_16bit) { const slice = str.toSlice(bun.default_allocator); @@ -1223,7 +1223,7 @@ pub const FileSystemFlags = enum(Mode) { return null; }; - return @enumFromInt(FileSystemFlags, @intCast(Mode, flags)); + return @as(FileSystemFlags, @enumFromInt(@as(Mode, @intCast(flags)))); } return null; @@ -1235,7 +1235,7 @@ pub const Date = enum(u64) { _, pub fn toJS(this: Date, ctx: JSC.C.JSContextRef, exception: JSC.C.ExceptionRef) JSC.C.JSValueRef { - const seconds = @floatCast(f64, @floatFromInt(f64, @intFromEnum(this)) * 1000.0); + const seconds = @as(f64, @floatCast(@as(f64, @floatFromInt(@intFromEnum(this))) * 1000.0)); const unix_timestamp = JSC.JSValue.jsNumber(seconds); const array: [1]JSC.C.JSValueRef = .{unix_timestamp.asObjectRef()}; const obj = JSC.C.JSObjectMakeDate(ctx, 1, &array, exception); @@ -1272,34 +1272,34 @@ fn StatsDataType(comptime T: type) type { const ctime = stat_.ctime(); return @This(){ - .dev = @truncate(T, @intCast(i64, stat_.dev)), - .ino = @truncate(T, @intCast(i64, stat_.ino)), - .mode = @truncate(T, @intCast(i64, stat_.mode)), - .nlink = @truncate(T, @intCast(i64, stat_.nlink)), - .uid = @truncate(T, @intCast(i64, stat_.uid)), - .gid = @truncate(T, @intCast(i64, stat_.gid)), - .rdev = @truncate(T, @intCast(i64, stat_.rdev)), - .size = @truncate(T, @intCast(i64, stat_.size)), - .blksize = @truncate(T, @intCast(i64, stat_.blksize)), - .blocks = @truncate(T, @intCast(i64, stat_.blocks)), - .atime_ms = (@floatFromInt(f64, @max(atime.tv_sec, 0)) * std.time.ms_per_s) + (@floatFromInt(f64, @intCast(usize, @max(atime.tv_nsec, 0))) / std.time.ns_per_ms), - .mtime_ms = (@floatFromInt(f64, @max(mtime.tv_sec, 0)) * std.time.ms_per_s) + (@floatFromInt(f64, @intCast(usize, @max(mtime.tv_nsec, 0))) / std.time.ns_per_ms), - .ctime_ms = (@floatFromInt(f64, @max(ctime.tv_sec, 0)) * std.time.ms_per_s) + (@floatFromInt(f64, @intCast(usize, @max(ctime.tv_nsec, 0))) / std.time.ns_per_ms), - .atime = @enumFromInt(Date, @intCast(u64, @max(atime.tv_sec, 0))), - .mtime = @enumFromInt(Date, @intCast(u64, @max(mtime.tv_sec, 0))), - .ctime = @enumFromInt(Date, @intCast(u64, @max(ctime.tv_sec, 0))), + .dev = @as(T, @truncate(@as(i64, @intCast(stat_.dev)))), + .ino = @as(T, @truncate(@as(i64, @intCast(stat_.ino)))), + .mode = @as(T, @truncate(@as(i64, @intCast(stat_.mode)))), + .nlink = @as(T, @truncate(@as(i64, @intCast(stat_.nlink)))), + .uid = @as(T, @truncate(@as(i64, @intCast(stat_.uid)))), + .gid = @as(T, @truncate(@as(i64, @intCast(stat_.gid)))), + .rdev = @as(T, @truncate(@as(i64, @intCast(stat_.rdev)))), + .size = @as(T, @truncate(@as(i64, @intCast(stat_.size)))), + .blksize = @as(T, @truncate(@as(i64, @intCast(stat_.blksize)))), + .blocks = @as(T, @truncate(@as(i64, @intCast(stat_.blocks)))), + .atime_ms = (@as(f64, @floatFromInt(@max(atime.tv_sec, 0))) * std.time.ms_per_s) + (@as(f64, @floatFromInt(@as(usize, @intCast(@max(atime.tv_nsec, 0))))) / std.time.ns_per_ms), + .mtime_ms = (@as(f64, @floatFromInt(@max(mtime.tv_sec, 0))) * std.time.ms_per_s) + (@as(f64, @floatFromInt(@as(usize, @intCast(@max(mtime.tv_nsec, 0))))) / std.time.ns_per_ms), + .ctime_ms = (@as(f64, @floatFromInt(@max(ctime.tv_sec, 0))) * std.time.ms_per_s) + (@as(f64, @floatFromInt(@as(usize, @intCast(@max(ctime.tv_nsec, 0))))) / std.time.ns_per_ms), + .atime = @as(Date, @enumFromInt(@as(u64, @intCast(@max(atime.tv_sec, 0))))), + .mtime = @as(Date, @enumFromInt(@as(u64, @intCast(@max(mtime.tv_sec, 0))))), + .ctime = @as(Date, @enumFromInt(@as(u64, @intCast(@max(ctime.tv_sec, 0))))), // Linux doesn't include this info in stat // maybe it does in statx, but do you really need birthtime? If you do please file an issue. .birthtime_ms = if (Environment.isLinux) 0 else - @truncate(T, @intCast(i64, if (stat_.birthtime().tv_nsec > 0) (@intCast(usize, stat_.birthtime().tv_nsec) / std.time.ns_per_ms) else 0)), + @as(T, @truncate(@as(i64, @intCast(if (stat_.birthtime().tv_nsec > 0) (@as(usize, @intCast(stat_.birthtime().tv_nsec)) / std.time.ns_per_ms) else 0)))), .birthtime = if (Environment.isLinux) - @enumFromInt(Date, 0) + @as(Date, @enumFromInt(0)) else - @enumFromInt(Date, @intCast(u64, @max(stat_.birthtime().tv_sec, 0))), + @as(Date, @enumFromInt(@as(u64, @intCast(@max(stat_.birthtime().tv_sec, 0))))), }; } }; @@ -1375,33 +1375,33 @@ pub const Stats = union(enum) { fn modeInternal(this: *This) i32 { return switch (this.*) { - .big => @truncate(i32, this.big.mode), + .big => @as(i32, @truncate(this.big.mode)), .small => this.small.mode, }; } pub fn isBlockDevice(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISBLK(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISBLK(@as(Mode, @intCast(this.modeInternal())))); } pub fn isCharacterDevice(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISCHR(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISCHR(@as(Mode, @intCast(this.modeInternal())))); } pub fn isDirectory(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISDIR(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISDIR(@as(Mode, @intCast(this.modeInternal())))); } pub fn isFIFO(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISFIFO(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISFIFO(@as(Mode, @intCast(this.modeInternal())))); } pub fn isFile(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISREG(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISREG(@as(Mode, @intCast(this.modeInternal())))); } pub fn isSocket(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISSOCK(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISSOCK(@as(Mode, @intCast(this.modeInternal())))); } // Node.js says this method is only valid on the result of lstat() @@ -1410,7 +1410,7 @@ pub const Stats = union(enum) { // // See https://nodejs.org/api/fs.html#statsissymboliclink pub fn isSymbolicLink(this: *This) JSC.JSValue { - return JSC.JSValue.jsBoolean(os.S.ISLNK(@intCast(Mode, this.modeInternal()))); + return JSC.JSValue.jsBoolean(os.S.ISLNK(@as(Mode, @intCast(this.modeInternal())))); } pub fn finalize(this: *This) callconv(.C) void { @@ -2204,7 +2204,7 @@ pub const Process = struct { // However, this might be called many times in a row, so we use a pre-allocated buffer // that way we don't have to worry about garbage collector JSC.VirtualMachine.get().bundler.fs.top_level_dir = std.os.getcwd(&JSC.VirtualMachine.get().bundler.fs.top_level_dir_buf) catch { - _ = Syscall.chdir(@ptrCast([:0]const u8, JSC.VirtualMachine.get().bundler.fs.top_level_dir)); + _ = Syscall.chdir(@as([:0]const u8, @ptrCast(JSC.VirtualMachine.get().bundler.fs.top_level_dir))); return JSC.toInvalidArguments("Invalid path", .{}, globalObject.ref()); }; @@ -2220,13 +2220,13 @@ pub const Process = struct { pub fn exit(globalObject: *JSC.JSGlobalObject, code: i32) callconv(.C) void { var vm = globalObject.bunVM(); if (vm.worker) |worker| { - vm.exit_handler.exit_code = @truncate(u8, @max(code, 0)); + vm.exit_handler.exit_code = @as(u8, @truncate(@max(code, 0))); worker.terminate(); return; } vm.onExit(); - std.os.exit(@truncate(u8, @intCast(u32, @max(code, 0)))); + std.os.exit(@as(u8, @truncate(@as(u32, @intCast(@max(code, 0)))))); } pub export const Bun__version: [*:0]const u8 = "v" ++ bun.Global.package_json_version; diff --git a/src/bun.js/test/diff_format.zig b/src/bun.js/test/diff_format.zig index 4558a5f39..46afa8d0b 100644 --- a/src/bun.js/test/diff_format.zig +++ b/src/bun.js/test/diff_format.zig @@ -104,7 +104,7 @@ pub const DiffFormatter = struct { ZigConsoleClient.format( .Debug, this.globalObject, - @ptrCast([*]const JSValue, &received), + @as([*]const JSValue, @ptrCast(&received)), 1, Writer, Writer, @@ -118,7 +118,7 @@ pub const DiffFormatter = struct { ZigConsoleClient.format( .Debug, this.globalObject, - @ptrCast([*]const JSValue, &this.expected), + @as([*]const JSValue, @ptrCast(&this.expected)), 1, Writer, Writer, diff --git a/src/bun.js/test/expect.zig b/src/bun.js/test/expect.zig index 12f7011fb..e7209e683 100644 --- a/src/bun.js/test/expect.zig +++ b/src/bun.js/test/expect.zig @@ -117,7 +117,7 @@ pub const Expect = struct { const now = std.time.Instant.now() catch unreachable; const pending_test = Jest.runner.?.pending_test.?; const elapsed = @divFloor(now.since(pending_test.started_at), std.time.ns_per_ms); - const remaining = @truncate(u32, Jest.runner.?.last_test_timeout_timer_duration -| elapsed); + const remaining = @as(u32, @truncate(Jest.runner.?.last_test_timeout_timer_duration -| elapsed)); if (!globalThis.bunVM().waitForPromiseWithTimeout(promise, remaining)) { pending_test.timeout(); @@ -2139,7 +2139,7 @@ pub const Expect = struct { active_test_expectation_counter.actual += 1; const not = this.flags.not; - var pass = value.jsType().isArray() and @intCast(i32, value.getLength(globalThis)) == size.toInt32(); + var pass = value.jsType().isArray() and @as(i32, @intCast(value.getLength(globalThis))) == size.toInt32(); if (not) pass = !pass; if (pass) return thisValue; @@ -3003,7 +3003,7 @@ pub const Expect = struct { const times = arguments[0].coerce(i32, globalObject); - var pass = @intCast(i32, calls.getLength(globalObject)) == times; + var pass = @as(i32, @intCast(calls.getLength(globalObject))) == times; const not = this.flags.not; if (not) pass = !pass; diff --git a/src/bun.js/test/jest.zig b/src/bun.js/test/jest.zig index 4c97b5c77..429b79bcc 100644 --- a/src/bun.js/test/jest.zig +++ b/src/bun.js/test/jest.zig @@ -127,7 +127,7 @@ pub const TestRunner = struct { if (this.last_test_timeout_timer_duration != milliseconds) { this.last_test_timeout_timer_duration = milliseconds; - this.test_timeout_timer.?.set(this, onTestTimeout, @intCast(i32, milliseconds), @intCast(i32, milliseconds)); + this.test_timeout_timer.?.set(this, onTestTimeout, @as(i32, @intCast(milliseconds)), @as(i32, @intCast(milliseconds))); } } } @@ -209,7 +209,7 @@ pub const TestRunner = struct { pub fn addTestCount(this: *TestRunner, count: u32) u32 { this.tests.ensureUnusedCapacity(this.allocator, count) catch unreachable; - const start = @truncate(Test.ID, this.tests.len); + const start = @as(Test.ID, @truncate(this.tests.len)); this.tests.len += count; var statuses = this.tests.items(.status)[start..][0..count]; @memset(statuses, Test.Status.pending); @@ -218,15 +218,15 @@ pub const TestRunner = struct { } pub fn getOrPutFile(this: *TestRunner, file_path: string) *DescribeScope { - var entry = this.index.getOrPut(this.allocator, @truncate(u32, bun.hash(file_path))) catch unreachable; + var entry = this.index.getOrPut(this.allocator, @as(u32, @truncate(bun.hash(file_path)))) catch unreachable; if (entry.found_existing) { return this.files.items(.module_scope)[entry.value_ptr.*]; } var scope = this.allocator.create(DescribeScope) catch unreachable; - const file_id = @truncate(File.ID, this.files.len); + const file_id = @as(File.ID, @truncate(this.files.len)); scope.* = DescribeScope{ .file_id = file_id, - .test_id_start = @truncate(Test.ID, this.tests.len), + .test_id_start = @as(Test.ID, @truncate(this.tests.len)), }; this.files.append(this.allocator, .{ .module_scope = scope, .source = logger.Source.initEmptyFile(file_path) }) catch unreachable; entry.value_ptr.* = file_id; @@ -502,7 +502,7 @@ pub const Jest = struct { JSError(getAllocator(ctx), "Run \"bun test\" to run a test", .{}, ctx, exception); return js.JSValueMakeUndefined(ctx); }; - const arguments = @ptrCast([]const JSC.JSValue, arguments_); + const arguments = @as([]const JSC.JSValue, @ptrCast(arguments_)); if (arguments.len < 1 or !arguments[0].isString()) { JSError(getAllocator(ctx), "Bun.jest() expects a string filename", .{}, ctx, exception); @@ -1077,7 +1077,7 @@ pub const DescribeScope = struct { const file = this.file_id; const allocator = getAllocator(globalObject); var tests: []TestScope = this.tests.items; - const end = @truncate(TestRunner.Test.ID, tests.len); + const end = @as(TestRunner.Test.ID, @truncate(tests.len)); this.pending_tests = std.DynamicBitSetUnmanaged.initFull(allocator, end) catch unreachable; if (end == 0) { @@ -1384,7 +1384,7 @@ pub const TestRunnerTask = struct { fn deinit(this: *TestRunnerTask) void { var vm = JSC.VirtualMachine.get(); if (vm.onUnhandledRejectionCtx) |ctx| { - if (ctx == @ptrCast(*anyopaque, this)) { + if (ctx == @as(*anyopaque, @ptrCast(this))) { vm.onUnhandledRejectionCtx = null; } } @@ -1457,14 +1457,14 @@ inline fn createScope( var timeout_ms: u32 = Jest.runner.?.default_timeout_ms; if (options.isNumber()) { - timeout_ms = @intCast(u32, @max(args[2].coerce(i32, globalThis), 0)); + timeout_ms = @as(u32, @intCast(@max(args[2].coerce(i32, globalThis), 0))); } else if (options.isObject()) { if (options.get(globalThis, "timeout")) |timeout| { if (!timeout.isNumber()) { globalThis.throwPretty("{s} expects timeout to be a number", .{signature}); return .zero; } - timeout_ms = @intCast(u32, @max(timeout.coerce(i32, globalThis), 0)); + timeout_ms = @as(u32, @intCast(@max(timeout.coerce(i32, globalThis), 0))); } if (options.get(globalThis, "retry")) |retries| { if (!retries.isNumber()) { @@ -1642,7 +1642,7 @@ pub fn printGithubAnnotation(exception: *JSC.ZigException) void { var i: i16 = 0; while (i < frames.len) : (i += 1) { - const frame = frames[@intCast(usize, i)]; + const frame = frames[@as(usize, @intCast(i))]; const source_url = frame.source_url.toUTF8(allocator); defer source_url.deinit(); const file = bun.path.relative(dir, source_url.slice()); diff --git a/src/bun.js/test/pretty_format.zig b/src/bun.js/test/pretty_format.zig index e907dd711..7d334d8e7 100644 --- a/src/bun.js/test/pretty_format.zig +++ b/src/bun.js/test/pretty_format.zig @@ -549,7 +549,7 @@ pub const JestPrettyFormat = struct { var writer = WrappedWriter(Writer){ .ctx = writer_ }; var slice = slice_; var i: u32 = 0; - var len: u32 = @truncate(u32, slice.len); + var len: u32 = @as(u32, @truncate(slice.len)); var any_non_ascii = false; while (i < len) : (i += 1) { switch (slice[i]) { @@ -576,7 +576,7 @@ pub const JestPrettyFormat = struct { any_non_ascii = false; slice = slice[@min(slice.len, i + 1)..]; i = 0; - len = @truncate(u32, slice.len); + len = @as(u32, @truncate(slice.len)); const next_value = this.remaining_values[0]; this.remaining_values = this.remaining_values[1..]; switch (token) { @@ -1047,7 +1047,7 @@ pub const JestPrettyFormat = struct { i = -i; } const digits = if (i != 0) - bun.fmt.fastDigitCount(@intCast(usize, i)) + @as(usize, @intFromBool(is_negative)) + bun.fmt.fastDigitCount(@as(usize, @intCast(i))) + @as(usize, @intFromBool(is_negative)) else 1; this.addForNewLine(digits); @@ -1139,7 +1139,7 @@ pub const JestPrettyFormat = struct { } }, .Array => { - const len = @truncate(u32, value.getLength(this.globalThis)); + const len = @as(u32, @truncate(value.getLength(this.globalThis))); if (len == 0) { writer.writeAll("[]"); this.addForNewLine(2); @@ -1250,9 +1250,9 @@ pub const JestPrettyFormat = struct { enable_ansi_colors, ); } else if (value.as(JSC.API.Bun.Timer.TimerObject)) |timer| { - this.addForNewLine("Timeout(# ) ".len + bun.fmt.fastDigitCount(@intCast(u64, @max(timer.id, 0)))); + this.addForNewLine("Timeout(# ) ".len + bun.fmt.fastDigitCount(@as(u64, @intCast(@max(timer.id, 0))))); if (timer.kind == .setInterval) { - this.addForNewLine("repeats ".len + bun.fmt.fastDigitCount(@intCast(u64, @max(timer.id, 0)))); + this.addForNewLine("repeats ".len + bun.fmt.fastDigitCount(@as(u64, @intCast(@max(timer.id, 0))))); writer.print(comptime Output.prettyFmt("<r><blue>Timeout<r> <d>(#<yellow>{d}<r><d>, repeats)<r>", enable_ansi_colors), .{ timer.id, }); @@ -1670,7 +1670,7 @@ pub const JestPrettyFormat = struct { var j: usize = 0; while (j < length) : (j += 1) { - const child = JSC.JSObject.getIndex(children, this.globalThis, @intCast(u32, j)); + const child = JSC.JSObject.getIndex(children, this.globalThis, @as(u32, @intCast(j))); this.format(Tag.get(child, this.globalThis), Writer, writer_, child, this.globalThis, enable_ansi_colors); if (j + 1 < length) { writer.writeAll("\n"); @@ -1827,7 +1827,7 @@ pub const JestPrettyFormat = struct { if (slice.len > 0) { switch (jsType) { .Int8Array => { - const slice_with_type = @alignCast(std.meta.alignment([]i8), std.mem.bytesAsSlice(i8, slice)); + const slice_with_type: []align(std.meta.alignment([]i8)) i8 = @alignCast(std.mem.bytesAsSlice(i8, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1837,7 +1837,7 @@ pub const JestPrettyFormat = struct { } }, .Int16Array => { - const slice_with_type = @alignCast(std.meta.alignment([]i16), std.mem.bytesAsSlice(i16, slice)); + const slice_with_type: []align(std.meta.alignment([]i16)) i16 = @alignCast(std.mem.bytesAsSlice(i16, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1847,7 +1847,7 @@ pub const JestPrettyFormat = struct { } }, .Uint16Array => { - const slice_with_type = @alignCast(std.meta.alignment([]u16), std.mem.bytesAsSlice(u16, slice)); + const slice_with_type: []align(std.meta.alignment([]u16)) u16 = @alignCast(std.mem.bytesAsSlice(u16, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1857,7 +1857,7 @@ pub const JestPrettyFormat = struct { } }, .Int32Array => { - const slice_with_type = @alignCast(std.meta.alignment([]i32), std.mem.bytesAsSlice(i32, slice)); + const slice_with_type: []align(std.meta.alignment([]i32)) i32 = @alignCast(std.mem.bytesAsSlice(i32, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1867,7 +1867,7 @@ pub const JestPrettyFormat = struct { } }, .Uint32Array => { - const slice_with_type = @alignCast(std.meta.alignment([]u32), std.mem.bytesAsSlice(u32, slice)); + const slice_with_type: []align(std.meta.alignment([]u32)) u32 = @alignCast(std.mem.bytesAsSlice(u32, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1877,7 +1877,7 @@ pub const JestPrettyFormat = struct { } }, .Float32Array => { - const slice_with_type = @alignCast(std.meta.alignment([]f32), std.mem.bytesAsSlice(f32, slice)); + const slice_with_type: []align(std.meta.alignment([]f32)) f32 = @alignCast(std.mem.bytesAsSlice(f32, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1887,7 +1887,7 @@ pub const JestPrettyFormat = struct { } }, .Float64Array => { - const slice_with_type = @alignCast(std.meta.alignment([]f64), std.mem.bytesAsSlice(f64, slice)); + const slice_with_type: []align(std.meta.alignment([]f64)) f64 = @alignCast(std.mem.bytesAsSlice(f64, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1897,7 +1897,7 @@ pub const JestPrettyFormat = struct { } }, .BigInt64Array => { - const slice_with_type = @alignCast(std.meta.alignment([]i64), std.mem.bytesAsSlice(i64, slice)); + const slice_with_type: []align(std.meta.alignment([]i64)) i64 = @alignCast(std.mem.bytesAsSlice(i64, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1907,7 +1907,7 @@ pub const JestPrettyFormat = struct { } }, .BigUint64Array => { - const slice_with_type = @alignCast(std.meta.alignment([]u64), std.mem.bytesAsSlice(u64, slice)); + const slice_with_type: []align(std.meta.alignment([]u64)) u64 = @alignCast(std.mem.bytesAsSlice(u64, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { @@ -1919,7 +1919,7 @@ pub const JestPrettyFormat = struct { // Uint8Array, Uint8ClampedArray, DataView, ArrayBuffer else => { - var slice_with_type = @alignCast(std.meta.alignment([]u8), std.mem.bytesAsSlice(u8, slice)); + var slice_with_type: []align(std.meta.alignment([]u8)) u8 = @alignCast(std.mem.bytesAsSlice(u8, slice)); this.indent += 1; defer this.indent -|= 1; for (slice_with_type) |el| { diff --git a/src/bun.js/webcore.zig b/src/bun.js/webcore.zig index 8cb9ec80a..5fdc64c82 100644 --- a/src/bun.js/webcore.zig +++ b/src/bun.js/webcore.zig @@ -419,7 +419,7 @@ pub const Crypto = struct { var cost: ?usize = null; var parallelization: ?usize = null; var maxmem: usize = 32 * 1024 * 1024; - const keylen = @intCast(u32, @truncate(i33, keylen_int)); + const keylen = @as(u32, @intCast(@as(i33, @truncate(keylen_int)))); if (options) |options_value| outer: { if (options_value.isUndefined() or options_value == .zero) @@ -441,7 +441,7 @@ pub const Crypto = struct { .{}, ); } else if (N_int != 0) { - cost = @intCast(usize, N_int); + cost = @as(usize, @intCast(N_int)); } } @@ -456,7 +456,7 @@ pub const Crypto = struct { .{}, ); } else if (r_int != 0) { - blockSize = @intCast(usize, r_int); + blockSize = @as(usize, @intCast(r_int)); } } @@ -471,7 +471,7 @@ pub const Crypto = struct { .{}, ); } else if (p_int != 0) { - parallelization = @intCast(usize, p_int); + parallelization = @as(usize, @intCast(p_int)); } } @@ -485,7 +485,7 @@ pub const Crypto = struct { .{}, ); } else if (p_int != 0) { - maxmem = @intCast(usize, p_int); + maxmem = @as(usize, @intCast(p_int)); } } } @@ -664,7 +664,7 @@ pub const Crypto = struct { ) callconv(.C) JSC.JSValue { var slice = array.slice(); randomData(globalThis, slice.ptr, slice.len); - return @enumFromInt(JSC.JSValue, @bitCast(i64, @intFromPtr(array))); + return @as(JSC.JSValue, @enumFromInt(@as(i64, @bitCast(@intFromPtr(array))))); } fn randomData( diff --git a/src/bun.js/webcore/blob.zig b/src/bun.js/webcore/blob.zig index 7e0b7f24b..f2332a764 100644 --- a/src/bun.js/webcore/blob.zig +++ b/src/bun.js/webcore/blob.zig @@ -217,7 +217,7 @@ pub const Blob = struct { pub const WriteError = error{}; pub fn write(this: StructuredCloneWriter, bytes: []const u8) WriteError!usize { - this.impl(this.ctx, bytes.ptr, @truncate(u32, bytes.len)); + this.impl(this.ctx, bytes.ptr, @as(u32, @truncate(bytes.len))); return bytes.len; } }; @@ -229,9 +229,9 @@ pub const Blob = struct { ) !void { try writer.writeIntNative(u8, serialization_version); - try writer.writeIntNative(u64, @intCast(u64, this.offset)); + try writer.writeIntNative(u64, @as(u64, @intCast(this.offset))); - try writer.writeIntNative(u32, @truncate(u32, this.content_type.len)); + try writer.writeIntNative(u32, @as(u32, @truncate(this.content_type.len))); _ = try writer.write(this.content_type); try writer.writeIntNative(u8, @intFromBool(this.content_type_was_set)); @@ -329,7 +329,7 @@ pub const Blob = struct { switch (pathlike_tag) { .fd => { - const fd = @intCast(i32, try reader.readIntNative(u32)); + const fd = @as(i32, @intCast(try reader.readIntNative(u32))); var blob = try allocator.create(Blob); blob.* = Blob.findOrCreateFileFromPath( @@ -369,7 +369,7 @@ pub const Blob = struct { }, }; blob.allocator = allocator; - blob.offset = @intCast(u52, offset); + blob.offset = @as(u52, @intCast(offset)); if (content_type.len > 0) { blob.content_type = content_type; blob.content_type_allocated = true; @@ -736,9 +736,9 @@ pub const Blob = struct { return JSPromise.resolvedPromiseValue(ctx.ptr(), cloned.toJS(ctx)).asObjectRef(); } else if (destination_type == .bytes and source_type == .file) { var fake_call_frame: [8]JSC.JSValue = undefined; - @memset(@ptrCast([*]u8, &fake_call_frame)[0..@sizeOf(@TypeOf(fake_call_frame))], 0); + @memset(@as([*]u8, @ptrCast(&fake_call_frame))[0..@sizeOf(@TypeOf(fake_call_frame))], 0); const blob_value = - source_blob.getSlice(ctx, @ptrCast(*JSC.CallFrame, &fake_call_frame)); + source_blob.getSlice(ctx, @as(*JSC.CallFrame, @ptrCast(&fake_call_frame))); return JSPromise.resolvedPromiseValue( ctx.ptr(), @@ -1010,7 +1010,7 @@ pub const Blob = struct { // we only truncate if it's a path // if it's a file descriptor, we assume they want manual control over that behavior if (truncate) { - _ = JSC.Node.Syscall.system.ftruncate(fd, @intCast(i64, written)); + _ = JSC.Node.Syscall.system.ftruncate(fd, @as(i64, @intCast(written))); } if (needs_open) { @@ -1076,7 +1076,7 @@ pub const Blob = struct { var written: usize = 0; defer { if (truncate) { - _ = JSC.Node.Syscall.system.ftruncate(fd, @intCast(i64, written)); + _ = JSC.Node.Syscall.system.ftruncate(fd, @as(i64, @intCast(written))); } if (needs_open) { @@ -1298,18 +1298,18 @@ pub const Blob = struct { switch (file.pathlike) { .fd => |fd| { - try writer.writeIntNative(u32, @intCast(u32, fd)); + try writer.writeIntNative(u32, @as(u32, @intCast(fd))); }, .path => |path| { const path_slice = path.slice(); - try writer.writeIntNative(u32, @truncate(u32, path_slice.len)); + try writer.writeIntNative(u32, @as(u32, @truncate(path_slice.len))); _ = try writer.write(path_slice); }, } }, .bytes => |bytes| { const slice = bytes.slice(); - try writer.writeIntNative(u32, @truncate(u32, slice.len)); + try writer.writeIntNative(u32, @as(u32, @truncate(slice.len))); _ = try writer.write(slice); }, } @@ -1409,7 +1409,7 @@ pub const Blob = struct { this.file_blob.store.?.data.file.pathlike.path; this.system_error = (JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, -completion.result), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(-completion.result)), .path = path_string.slice(), .syscall = .open, }).toSystemError(); @@ -1544,7 +1544,7 @@ pub const Blob = struct { } }; - return try ReadFile.createWithCtx(allocator, store, @ptrCast(*anyopaque, context), Handler.run, off, max_len); + return try ReadFile.createWithCtx(allocator, store, @as(*anyopaque, @ptrCast(context)), Handler.run, off, max_len); } pub fn doRead(this: *ReadFile) void { @@ -1605,11 +1605,11 @@ pub const Blob = struct { pub fn onRead(this: *ReadFile, completion: *HTTPClient.NetworkThread.Completion, result: AsyncIO.ReadError!usize) void { defer this.doReadLoop(); - this.read_len = @truncate(SizeType, result catch |err| { + this.read_len = @as(SizeType, @truncate(result catch |err| { if (@hasField(HTTPClient.NetworkThread.Completion, "result")) { this.errno = AsyncIO.asError(-completion.result); this.system_error = (JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, -completion.result), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(-completion.result)), .syscall = .read, }).toSystemError(); } else { @@ -1627,7 +1627,7 @@ pub const Blob = struct { this.read_len = 0; return; - }); + })); } fn runAsync(this: *ReadFile, task: *ReadFileTask) void { @@ -1689,7 +1689,7 @@ pub const Blob = struct { if (stat.size > 0 and std.os.S.ISREG(stat.mode)) { this.size = @min( - @truncate(SizeType, @intCast(SizeType, @max(@intCast(i64, stat.size), 0))), + @as(SizeType, @truncate(@as(SizeType, @intCast(@max(@as(i64, @intCast(stat.size)), 0))))), this.max_length, ); // read up to 4k at a time if @@ -1730,7 +1730,7 @@ pub const Blob = struct { fn doReadLoop(this: *ReadFile) void { this.read_off += this.read_len; - var remain = this.buffer[@min(this.read_off, @truncate(Blob.SizeType, this.buffer.len))..]; + var remain = this.buffer[@min(this.read_off, @as(Blob.SizeType, @truncate(this.buffer.len)))..]; if (remain.len > 0 and this.errno == null) { this.doRead(); @@ -1805,7 +1805,7 @@ pub const Blob = struct { allocator, file_blob, bytes_blob, - @ptrCast(*anyopaque, context), + @as(*anyopaque, @ptrCast(context)), Handler.run, ); } @@ -1849,7 +1849,7 @@ pub const Blob = struct { const wrote = this.wrote; bun.default_allocator.destroy(this); - cb(cb_ctx, .{ .result = @truncate(SizeType, wrote) }); + cb(cb_ctx, .{ .result = @as(SizeType, @truncate(wrote)) }); } pub fn run(this: *WriteFile, task: *WriteFileTask) void { this.io_task = task; @@ -1858,7 +1858,7 @@ pub const Blob = struct { pub fn onWrite(this: *WriteFile, _: *HTTPClient.NetworkThread.Completion, result: AsyncIO.WriteError!usize) void { defer this.doWriteLoop(); - this.wrote += @truncate(SizeType, result catch |errno| { + this.wrote += @as(SizeType, @truncate(result catch |errno| { this.errno = errno; this.system_error = this.system_error orelse JSC.SystemError{ .code = bun.String.static(bun.asByteSlice(@errorName(errno))), @@ -1867,7 +1867,7 @@ pub const Blob = struct { this.wrote = 0; return; - }); + })); } fn runAsync(this: *WriteFile) void { @@ -1920,12 +1920,12 @@ pub const Blob = struct { }; const unsupported_directory_error = SystemError{ - .errno = @intCast(c_int, @intFromEnum(bun.C.SystemErrno.EISDIR)), + .errno = @as(c_int, @intCast(@intFromEnum(bun.C.SystemErrno.EISDIR))), .message = bun.String.static("That doesn't work on folders"), .syscall = bun.String.static("fstat"), }; const unsupported_non_regular_file_error = SystemError{ - .errno = @intCast(c_int, @intFromEnum(bun.C.SystemErrno.ENOTSUP)), + .errno = @as(c_int, @intCast(@intFromEnum(bun.C.SystemErrno.ENOTSUP))), .message = bun.String.static("Non-regular files aren't supported yet"), .syscall = bun.String.static("fstat"), }; @@ -2127,7 +2127,7 @@ pub const Blob = struct { const dest_fd = this.destination_fd; defer { - this.read_len = @truncate(SizeType, total_written); + this.read_len = @as(SizeType, @truncate(total_written)); } var has_unset_append = false; @@ -2158,14 +2158,14 @@ pub const Blob = struct { } this.system_error = (JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, @intFromEnum(linux.E.INVAL)), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(@intFromEnum(linux.E.INVAL))), .syscall = TryWith.tag.get(use).?, }).toSystemError(); return AsyncIO.asError(linux.E.INVAL); }, else => |errno| { this.system_error = (JSC.Node.Syscall.Error{ - .errno = @intCast(JSC.Node.Syscall.Error.Int, @intFromEnum(errno)), + .errno = @as(JSC.Node.Syscall.Error.Int, @intCast(@intFromEnum(errno))), .syscall = TryWith.tag.get(use).?, }).toSystemError(); return AsyncIO.asError(errno); @@ -2252,15 +2252,15 @@ pub const Blob = struct { } if (this.doClonefile()) { - if (this.max_length != Blob.max_size and this.max_length < @intCast(SizeType, stat_.?.size)) { + if (this.max_length != Blob.max_size and this.max_length < @as(SizeType, @intCast(stat_.?.size))) { // If this fails...well, there's not much we can do about it. _ = bun.C.truncate( this.destination_file_store.pathlike.path.sliceZAssume(), - @intCast(std.os.off_t, this.max_length), + @as(std.os.off_t, @intCast(this.max_length)), ); - this.read_len = @intCast(SizeType, this.max_length); + this.read_len = @as(SizeType, @intCast(this.max_length)); } else { - this.read_len = @intCast(SizeType, stat_.?.size); + this.read_len = @as(SizeType, @intCast(stat_.?.size)); } return; } else |_| { @@ -2313,7 +2313,7 @@ pub const Blob = struct { } if (stat.size != 0) { - this.max_length = @max(@min(@intCast(SizeType, stat.size), this.max_length), this.offset) - this.offset; + this.max_length = @max(@min(@as(SizeType, @intCast(stat.size)), this.max_length), this.offset) - this.offset; if (this.max_length == 0) { this.doClose(); return; @@ -2375,8 +2375,8 @@ pub const Blob = struct { return; }; - if (stat.size != 0 and @intCast(SizeType, stat.size) > this.max_length) { - _ = darwin.ftruncate(this.destination_fd, @intCast(std.os.off_t, this.max_length)); + if (stat.size != 0 and @as(SizeType, @intCast(stat.size)) > this.max_length) { + _ = darwin.ftruncate(this.destination_fd, @as(std.os.off_t, @intCast(this.max_length))); } this.doClose(); @@ -2426,8 +2426,8 @@ pub const Blob = struct { pub fn init(bytes: []u8, allocator: std.mem.Allocator) ByteStore { return .{ .ptr = bytes.ptr, - .len = @truncate(SizeType, bytes.len), - .cap = @truncate(SizeType, bytes.len), + .len = @as(SizeType, @truncate(bytes.len)), + .cap = @as(SizeType, @truncate(bytes.len)), .allocator = allocator, }; } @@ -2470,7 +2470,7 @@ pub const Blob = struct { return JSValue.jsUndefined(); } - recommended_chunk_size = @intCast(SizeType, @max(0, @truncate(i52, arguments[0].toInt64()))); + recommended_chunk_size = @as(SizeType, @intCast(@max(0, @as(i52, @truncate(arguments[0].toInt64()))))); } return JSC.WebCore.ReadableStream.fromBlob( globalThis, @@ -2665,7 +2665,7 @@ pub const Blob = struct { var relativeStart: i64 = 0; // If the optional end parameter is not used as a parameter when making this call, let relativeEnd be size. - var relativeEnd: i64 = @intCast(i64, this.size); + var relativeEnd: i64 = @as(i64, @intCast(this.size)); if (args.ptr[0].isString()) { args.ptr[2] = args.ptr[0]; @@ -2684,10 +2684,10 @@ pub const Blob = struct { const start = start_.toInt64(); if (start < 0) { // If the optional start parameter is negative, let relativeStart be start + size. - relativeStart = @intCast(i64, @max(start +% @intCast(i64, this.size), 0)); + relativeStart = @as(i64, @intCast(@max(start +% @as(i64, @intCast(this.size)), 0))); } else { // Otherwise, let relativeStart be start. - relativeStart = @min(@intCast(i64, start), @intCast(i64, this.size)); + relativeStart = @min(@as(i64, @intCast(start)), @as(i64, @intCast(this.size))); } } } @@ -2698,10 +2698,10 @@ pub const Blob = struct { // If end is negative, let relativeEnd be max((size + end), 0). if (end < 0) { // If the optional start parameter is negative, let relativeStart be start + size. - relativeEnd = @intCast(i64, @max(end +% @intCast(i64, this.size), 0)); + relativeEnd = @as(i64, @intCast(@max(end +% @as(i64, @intCast(this.size)), 0))); } else { // Otherwise, let relativeStart be start. - relativeEnd = @min(@intCast(i64, end), @intCast(i64, this.size)); + relativeEnd = @min(@as(i64, @intCast(end)), @as(i64, @intCast(this.size))); } } } @@ -2731,12 +2731,12 @@ pub const Blob = struct { } } - const len = @intCast(SizeType, @max(relativeEnd -| relativeStart, 0)); + const len = @as(SizeType, @intCast(@max(relativeEnd -| relativeStart, 0))); // This copies over the is_all_ascii flag // which is okay because this will only be a <= slice var blob = this.dupe(); - blob.offset = @intCast(SizeType, relativeStart); + blob.offset = @as(SizeType, @intCast(relativeStart)); blob.size = len; // infer the content type if it was not specified @@ -2909,8 +2909,8 @@ pub const Blob = struct { } fn toJSTime(sec: isize, nsec: isize) JSTimeType { - const millisec = @intCast(u64, @divTrunc(nsec, std.time.ns_per_ms)); - return @truncate(JSTimeType, @intCast(u64, sec * std.time.ms_per_s) + millisec); + const millisec = @as(u64, @intCast(@divTrunc(nsec, std.time.ns_per_ms))); + return @as(JSTimeType, @truncate(@as(u64, @intCast(sec * std.time.ms_per_s)) + millisec)); } /// resolve file stat like size, last_modified @@ -2920,7 +2920,7 @@ pub const Blob = struct { switch (JSC.Node.Syscall.stat(store.data.file.pathlike.path.sliceZ(&buffer))) { .result => |stat| { store.data.file.max_size = if (std.os.S.ISREG(stat.mode) or stat.size > 0) - @truncate(SizeType, @intCast(u64, @max(stat.size, 0))) + @as(SizeType, @truncate(@as(u64, @intCast(@max(stat.size, 0))))) else Blob.max_size; store.data.file.mode = stat.mode; @@ -2934,7 +2934,7 @@ pub const Blob = struct { switch (JSC.Node.Syscall.fstat(store.data.file.pathlike.fd)) { .result => |stat| { store.data.file.max_size = if (std.os.S.ISREG(stat.mode) or stat.size > 0) - @truncate(SizeType, @intCast(u64, @max(stat.size, 0))) + @as(SizeType, @truncate(@as(u64, @intCast(@max(stat.size, 0))))) else Blob.max_size; store.data.file.mode = stat.mode; @@ -3027,7 +3027,7 @@ pub const Blob = struct { store.?.is_all_ascii = is_all_ascii; } return Blob{ - .size = @truncate(SizeType, bytes.len), + .size = @as(SizeType, @truncate(bytes.len)), .store = store, .allocator = null, .content_type = "", @@ -3038,7 +3038,7 @@ pub const Blob = struct { pub fn init(bytes: []u8, allocator: std.mem.Allocator, globalThis: *JSGlobalObject) Blob { return Blob{ - .size = @truncate(SizeType, bytes.len), + .size = @as(SizeType, @truncate(bytes.len)), .store = if (bytes.len > 0) Blob.Store.init(bytes, allocator) catch unreachable else @@ -3057,7 +3057,7 @@ pub const Blob = struct { ) Blob { var bytes = allocator.dupe(u8, bytes_) catch @panic("Out of memory"); return Blob{ - .size = @truncate(SizeType, bytes_.len), + .size = @as(SizeType, @truncate(bytes_.len)), .store = if (bytes.len > 0) Blob.Store.init(bytes, allocator) catch unreachable else @@ -3183,7 +3183,7 @@ pub const Blob = struct { .result => |result| { const bytes = result.buf; if (blob.size > 0) - blob.size = @min(@truncate(u32, bytes.len), blob.size); + blob.size = @min(@as(u32, @truncate(bytes.len)), blob.size); const value = Function(&blob, globalThis, bytes, .temporary); // invalid JSON needs to be rejected @@ -3537,7 +3537,7 @@ pub const Blob = struct { var sliced = top_value.toSlice(global, bun.default_allocator); const is_all_ascii = !sliced.isAllocated(); if (!sliced.isAllocated() and sliced.len > 0) { - sliced.ptr = @ptrCast([*]const u8, (try bun.default_allocator.dupe(u8, sliced.slice())).ptr); + sliced.ptr = @as([*]const u8, @ptrCast((try bun.default_allocator.dupe(u8, sliced.slice())).ptr)); sliced.allocator = NullableAllocator.init(bun.default_allocator); } @@ -3750,8 +3750,8 @@ pub const AnyBlob = union(enum) { pub inline fn fastSize(this: *const AnyBlob) Blob.SizeType { return switch (this.*) { .Blob => this.Blob.size, - .WTFStringImpl => @truncate(Blob.SizeType, this.WTFStringImpl.byteLength()), - else => @truncate(Blob.SizeType, this.slice().len), + .WTFStringImpl => @as(Blob.SizeType, @truncate(this.WTFStringImpl.byteLength())), + else => @as(Blob.SizeType, @truncate(this.slice().len)), }; } @@ -3884,8 +3884,8 @@ pub const AnyBlob = union(enum) { pub inline fn size(this: *const AnyBlob) Blob.SizeType { return switch (this.*) { .Blob => this.Blob.size, - .WTFStringImpl => @truncate(Blob.SizeType, this.WTFStringImpl.utf8ByteLength()), - else => @truncate(Blob.SizeType, this.slice().len), + .WTFStringImpl => @as(Blob.SizeType, @truncate(this.WTFStringImpl.utf8ByteLength())), + else => @as(Blob.SizeType, @truncate(this.slice().len)), }; } @@ -4054,7 +4054,7 @@ pub const InlineBlob = extern struct { if (second.len > 0) @memcpy(bytes_slice[first.len..][0..second.len], second); - inline_blob.len = @truncate(@TypeOf(inline_blob.len), total); + inline_blob.len = @as(@TypeOf(inline_blob.len), @truncate(total)); return inline_blob; } @@ -4062,7 +4062,7 @@ pub const InlineBlob = extern struct { std.debug.assert(data.len <= available_bytes); var blob = InlineBlob{ - .len = @intCast(IntSize, data.len), + .len = @as(IntSize, @intCast(data.len)), .was_string = was_string, }; diff --git a/src/bun.js/webcore/body.zig b/src/bun.js/webcore/body.zig index 028b104b2..169ac8fa4 100644 --- a/src/bun.js/webcore/body.zig +++ b/src/bun.js/webcore/body.zig @@ -176,7 +176,7 @@ pub const Body = struct { if (response_init.fastGet(ctx, .status)) |status_value| { const number = status_value.coerceToInt64(ctx); if ((200 <= number and number < 600) or number == 101) { - result.status_code = @truncate(u16, @intCast(u32, number)); + result.status_code = @as(u16, @truncate(@as(u32, @intCast(number)))); } else { const err = ctx.createRangeErrorInstance("The status provided ({d}) must be 101 or in the range of [200, 599]", .{number}); ctx.throwValue(err); @@ -365,8 +365,8 @@ pub const Body = struct { pub fn size(this: *const Value) Blob.SizeType { return switch (this.*) { .Blob => this.Blob.size, - .InternalBlob => @truncate(Blob.SizeType, this.InternalBlob.sliceConst().len), - .WTFStringImpl => @truncate(Blob.SizeType, this.WTFStringImpl.utf8ByteLength()), + .InternalBlob => @as(Blob.SizeType, @truncate(this.InternalBlob.sliceConst().len)), + .WTFStringImpl => @as(Blob.SizeType, @truncate(this.WTFStringImpl.utf8ByteLength())), // .InlineBlob => @truncate(Blob.SizeType, this.InlineBlob.sliceConst().len), else => 0, }; @@ -375,8 +375,8 @@ pub const Body = struct { pub fn fastSize(this: *const Value) Blob.SizeType { return switch (this.*) { .Blob => this.Blob.size, - .InternalBlob => @truncate(Blob.SizeType, this.InternalBlob.sliceConst().len), - .WTFStringImpl => @truncate(Blob.SizeType, this.WTFStringImpl.byteSlice().len), + .InternalBlob => @as(Blob.SizeType, @truncate(this.InternalBlob.sliceConst().len)), + .WTFStringImpl => @as(Blob.SizeType, @truncate(this.WTFStringImpl.byteSlice().len)), // .InlineBlob => @truncate(Blob.SizeType, this.InlineBlob.sliceConst().len), else => 0, }; @@ -481,11 +481,11 @@ pub const Body = struct { reader.context.setup(); if (drain_result == .estimated_size) { - reader.context.highWaterMark = @truncate(Blob.SizeType, drain_result.estimated_size); - reader.context.size_hint = @truncate(Blob.SizeType, drain_result.estimated_size); + reader.context.highWaterMark = @as(Blob.SizeType, @truncate(drain_result.estimated_size)); + reader.context.size_hint = @as(Blob.SizeType, @truncate(drain_result.estimated_size)); } else if (drain_result == .owned) { reader.context.buffer = drain_result.owned.list; - reader.context.size_hint = @truncate(Blob.SizeType, drain_result.owned.size_hint); + reader.context.size_hint = @as(Blob.SizeType, @truncate(drain_result.owned.size_hint)); } locked.readable = .{ diff --git a/src/bun.js/webcore/encoding.zig b/src/bun.js/webcore/encoding.zig index dd47ccc29..42256a9ca 100644 --- a/src/bun.js/webcore/encoding.zig +++ b/src/bun.js/webcore/encoding.zig @@ -229,7 +229,7 @@ pub const TextEncoder = struct { result.written = 3; } const sized: [2]u32 = .{ result.read, result.written }; - return @bitCast(u64, sized); + return @as(u64, @bitCast(sized)); } pub export fn TextEncoder__encodeInto8( @@ -243,7 +243,7 @@ pub const TextEncoder = struct { const result: strings.EncodeIntoResult = strings.copyLatin1IntoUTF8(output, []const u8, input); const sized: [2]u32 = .{ result.read, result.written }; - return @bitCast(u64, sized); + return @as(u64, @bitCast(sized)); } }; @@ -462,7 +462,7 @@ pub const TextDecoder = struct { return ZigString.init(EncodingLabel.label.get(this.encoding).?).toValue(globalThis); } const Vector16 = std.meta.Vector(16, u16); - const max_16_ascii: Vector16 = @splat(16, @as(u16, 127)); + const max_16_ascii: Vector16 = @splat(@as(u16, 127)); fn decodeUTF16WithAlignment( _: *TextDecoder, @@ -477,12 +477,12 @@ pub const TextDecoder = struct { const vec: strings.AsciiU16Vector = slice[i..][0..strings.ascii_u16_vector_size].*; if ((@reduce( .Or, - @bitCast( + @as( strings.AsciiVectorU16U1, - vec > strings.max_u16_ascii, - ) | @bitCast( + @bitCast(vec > strings.max_u16_ascii), + ) | @as( strings.AsciiVectorU16U1, - vec < strings.min_u16_ascii, + @bitCast(vec < strings.min_u16_ascii), ), ) == 0)) { break; @@ -502,7 +502,7 @@ pub const TextDecoder = struct { return ZigString.init16(slice).toValueGC(ctx); } else { var str = ZigString.init(""); - str._unsafe_ptr_do_not_use = @ptrCast([*]const u8, slice.ptr); + str._unsafe_ptr_do_not_use = @as([*]const u8, @ptrCast(slice.ptr)); str.len = slice.len; str.markUTF16(); return str.toValueGC(ctx.ptr()); @@ -575,7 +575,7 @@ pub const TextDecoder = struct { var full = buffer.toOwnedSlice(allocator) catch @panic("TODO"); var out = ZigString.init(""); - out._unsafe_ptr_do_not_use = @ptrCast([*]u8, full.ptr); + out._unsafe_ptr_do_not_use = @as([*]u8, @ptrCast(full.ptr)); out.len = full.len; out.markUTF16(); return out.toValueGC(ctx.ptr()); @@ -660,7 +660,7 @@ pub const TextDecoder = struct { EncodingLabel.@"UTF-16LE" => { if (std.mem.isAligned(@intFromPtr(buffer_slice.ptr), @alignOf([*]const u16))) { - return this.decodeUTF16WithAlignment([]const u16, @alignCast(2, std.mem.bytesAsSlice(u16, buffer_slice)), globalThis); + return this.decodeUTF16WithAlignment([]align(2) const u16, @as([]align(2) const u16, @alignCast(std.mem.bytesAsSlice(u16, buffer_slice))), globalThis); } return this.decodeUTF16WithAlignment([]align(1) const u16, std.mem.bytesAsSlice(u16, buffer_slice), globalThis); @@ -701,7 +701,7 @@ pub const TextDecoder = struct { pub const Encoder = struct { export fn Bun__encoding__writeLatin1(input: [*]const u8, len: usize, to: [*]u8, to_len: usize, encoding: u8) usize { - return switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .utf8 => writeU8(input, len, to, to_len, .utf8), .latin1 => writeU8(input, len, to, to_len, .ascii), .ascii => writeU8(input, len, to, to_len, .ascii), @@ -714,7 +714,7 @@ pub const Encoder = struct { } catch 0; } export fn Bun__encoding__writeUTF16(input: [*]const u16, len: usize, to: [*]u8, to_len: usize, encoding: u8) usize { - return switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .utf8 => writeU16(input, len, to, to_len, .utf8, false), .latin1 => writeU16(input, len, to, to_len, .ascii, false), .ascii => writeU16(input, len, to, to_len, .ascii, false), @@ -727,7 +727,7 @@ pub const Encoder = struct { } catch 0; } export fn Bun__encoding__byteLengthLatin1(input: [*]const u8, len: usize, encoding: u8) usize { - return switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .utf8 => byteLengthU8(input, len, .utf8), .latin1 => byteLengthU8(input, len, .ascii), .ascii => byteLengthU8(input, len, .ascii), @@ -740,7 +740,7 @@ pub const Encoder = struct { }; } export fn Bun__encoding__byteLengthUTF16(input: [*]const u16, len: usize, encoding: u8) usize { - return switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .utf8 => byteLengthU16(input, len, .utf8), .latin1 => byteLengthU16(input, len, .ascii), .ascii => byteLengthU16(input, len, .ascii), @@ -753,7 +753,7 @@ pub const Encoder = struct { }; } export fn Bun__encoding__constructFromLatin1(globalObject: *JSGlobalObject, input: [*]const u8, len: usize, encoding: u8) JSValue { - var slice = switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + var slice = switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .hex => constructFromU8(input, len, .hex), .ascii => constructFromU8(input, len, .ascii), .base64url => constructFromU8(input, len, .base64url), @@ -766,7 +766,7 @@ pub const Encoder = struct { return JSC.JSValue.createBuffer(globalObject, slice, globalObject.bunVM().allocator); } export fn Bun__encoding__constructFromUTF16(globalObject: *JSGlobalObject, input: [*]const u16, len: usize, encoding: u8) JSValue { - var slice = switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + var slice = switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .base64 => constructFromU16(input, len, .base64), .hex => constructFromU16(input, len, .hex), .base64url => constructFromU16(input, len, .base64url), @@ -785,7 +785,7 @@ pub const Encoder = struct { } export fn Bun__encoding__toString(input: [*]const u8, len: usize, globalObject: *JSC.JSGlobalObject, encoding: u8) JSValue { - return switch (@enumFromInt(JSC.Node.Encoding, encoding)) { + return switch (@as(JSC.Node.Encoding, @enumFromInt(encoding))) { .ucs2 => toString(input, len, globalObject, .utf16le), .utf16le => toString(input, len, globalObject, .utf16le), .utf8 => toString(input, len, globalObject, .utf8), @@ -931,12 +931,12 @@ pub const Encoder = struct { if (std.mem.isAligned(@intFromPtr(to_ptr), @alignOf([*]u16))) { var buf = input[0..len]; - var output = @ptrCast([*]u16, @alignCast(@alignOf(u16), to_ptr))[0 .. to_len / 2]; + var output = @as([*]u16, @ptrCast(@alignCast(to_ptr)))[0 .. to_len / 2]; var written = strings.copyLatin1IntoUTF16([]u16, output, []const u8, buf).written; return written * 2; } else { var buf = input[0..len]; - var output = @ptrCast([*]align(1) u16, to_ptr)[0 .. to_len / 2]; + var output = @as([*]align(1) u16, @ptrCast(to_ptr))[0 .. to_len / 2]; var written = strings.copyLatin1IntoUTF16([]align(1) u16, output, []const u8, buf).written; return written * 2; @@ -1007,7 +1007,7 @@ pub const Encoder = struct { if (allow_partial_write) { const bytes_input_len = len * 2; const written = @min(bytes_input_len, to_len); - const input_u8 = @ptrCast([*]const u8, input); + const input_u8 = @as([*]const u8, @ptrCast(input)); strings.copyU16IntoU8(to[0..written], []const u8, input_u8[0..written]); return written; } else { @@ -1016,7 +1016,7 @@ pub const Encoder = struct { if (written < 2) return 0; const fixed_len = (written / 2) * 2; - const input_u8 = @ptrCast([*]const u8, input); + const input_u8 = @as([*]const u8, @ptrCast(input)); strings.copyU16IntoU8(to[0..written], []const u8, input_u8[0..fixed_len]); return fixed_len; } @@ -1140,7 +1140,7 @@ pub const Encoder = struct { var input_bytes = std.mem.sliceAsBytes(input[0..len]); @memcpy(to[0..input_bytes.len], input_bytes); for (to[0..len], 0..) |c, i| { - to[i] = @as(u8, @truncate(u7, c)); + to[i] = @as(u8, @as(u7, @truncate(c))); } return to; diff --git a/src/bun.js/webcore/request.zig b/src/bun.js/webcore/request.zig index cff2ef2f3..75d4e63cd 100644 --- a/src/bun.js/webcore/request.zig +++ b/src/bun.js/webcore/request.zig @@ -120,7 +120,7 @@ pub const Request = struct { pub fn estimatedSize(this: *Request) callconv(.C) usize { return this.reported_estimated_size orelse brk: { - this.reported_estimated_size = @truncate(u63, this.body.value.estimatedSize() + this.sizeOfURL() + @sizeOf(Request)); + this.reported_estimated_size = @as(u63, @truncate(this.body.value.estimatedSize() + this.sizeOfURL() + @sizeOf(Request))); break :brk this.reported_estimated_size.?; }; } diff --git a/src/bun.js/webcore/response.zig b/src/bun.js/webcore/response.zig index f27e7f9aa..5987f749b 100644 --- a/src/bun.js/webcore/response.zig +++ b/src/bun.js/webcore/response.zig @@ -83,9 +83,9 @@ pub const Response = struct { pub fn estimatedSize(this: *Response) callconv(.C) usize { return this.reported_estimated_size orelse brk: { - this.reported_estimated_size = @intCast( + this.reported_estimated_size = @as( u63, - this.body.value.estimatedSize() + this.url.len + this.status_text.len + @sizeOf(Response), + @intCast(this.body.value.estimatedSize() + this.url.len + this.status_text.len + @sizeOf(Response)), ); break :brk this.reported_estimated_size.?; }; @@ -411,7 +411,7 @@ pub const Response = struct { if (args.nextEat()) |init| { if (init.isUndefinedOrNull()) {} else if (init.isNumber()) { - response.body.init.status_code = @intCast(u16, @min(@max(0, init.toInt32()), std.math.maxInt(u16))); + response.body.init.status_code = @as(u16, @intCast(@min(@max(0, init.toInt32()), std.math.maxInt(u16)))); } else { if (Body.Init.init(getAllocator(globalThis), globalThis, init) catch null) |_init| { response.body.init = _init; @@ -457,7 +457,7 @@ pub const Response = struct { if (args.nextEat()) |init| { if (init.isUndefinedOrNull()) {} else if (init.isNumber()) { - response.body.init.status_code = @intCast(u16, @min(@max(0, init.toInt32()), std.math.maxInt(u16))); + response.body.init.status_code = @as(u16, @intCast(@min(@max(0, init.toInt32()), std.math.maxInt(u16)))); } else { if (Body.Init.init(getAllocator(globalThis), globalThis, init) catch null) |_init| { response.body.init = _init; @@ -827,7 +827,7 @@ pub const Fetch = struct { .body = .{ .init = .{ .headers = FetchHeaders.createFromPicoHeaders(http_response.headers), - .status_code = @truncate(u16, http_response.status_code), + .status_code = @as(u16, @truncate(http_response.status_code)), }, .value = this.toBodyValue(), }, @@ -838,7 +838,7 @@ pub const Fetch = struct { const allocator = bun.default_allocator; var response = allocator.create(Response) catch unreachable; response.* = this.toResponse(allocator); - return Response.makeMaybePooled(@ptrCast(js.JSContextRef, this.global_this), response); + return Response.makeMaybePooled(@as(js.JSContextRef, @ptrCast(this.global_this)), response); } pub fn get( @@ -1375,7 +1375,7 @@ pub const Fetch = struct { } const original_size = body.Blob.size; - const stat_size = @intCast(Blob.SizeType, stat.size); + const stat_size = @as(Blob.SizeType, @intCast(stat.size)); const blob_size = if (std.os.S.ISREG(stat.mode)) stat_size else @@ -1509,7 +1509,7 @@ pub const Headers = struct { if (options.body) |body| { if (body.hasContentTypeFromUser() and (fetch_headers_ref == null or !fetch_headers_ref.?.fastHas(.ContentType))) { header_count += 1; - buf_len += @truncate(u32, body.contentType().len + "Content-Type".len); + buf_len += @as(u32, @truncate(body.contentType().len + "Content-Type".len)); break :brk true; } } @@ -1536,7 +1536,7 @@ pub const Headers = struct { bun.copy(u8, headers.buf.items[buf_len_before_content_type + "Content-Type".len ..], options.body.?.contentType()); values[header_count - 1] = .{ .offset = buf_len_before_content_type + @as(u32, "Content-Type".len), - .length = @truncate(u32, options.body.?.contentType().len), + .length = @as(u32, @truncate(options.body.?.contentType().len)), }; } @@ -1696,7 +1696,7 @@ pub const FetchEvent = struct { defer { if (!VirtualMachine.get().had_errors) { - Output.printElapsed(@floatFromInt(f64, (request_context.timer.lap())) / std.time.ns_per_ms); + Output.printElapsed(@as(f64, @floatFromInt((request_context.timer.lap()))) / std.time.ns_per_ms); Output.prettyError( " <b>{s}<r><d> - <b>{d}<r> <d>transpiled, <d><b>{d}<r> <d>imports<r>\n", diff --git a/src/bun.js/webcore/streams.zig b/src/bun.js/webcore/streams.zig index 66e38b973..32aa67a28 100644 --- a/src/bun.js/webcore/streams.zig +++ b/src/bun.js/webcore/streams.zig @@ -326,20 +326,20 @@ pub const ReadableStream = struct { pub fn init(filedes: bun.FileDescriptor) StreamTag { var bytes = [8]u8{ 1, 0, 0, 0, 0, 0, 0, 0 }; - const filedes_ = @bitCast([8]u8, @as(usize, @truncate(u56, @intCast(usize, filedes)))); + const filedes_ = @as([8]u8, @bitCast(@as(usize, @as(u56, @truncate(@as(usize, @intCast(filedes))))))); bytes[1..8].* = filedes_[0..7].*; - return @enumFromInt(StreamTag, @bitCast(u64, bytes)); + return @as(StreamTag, @enumFromInt(@as(u64, @bitCast(bytes)))); } pub fn fd(this: StreamTag) bun.FileDescriptor { - var bytes = @bitCast([8]u8, @intFromEnum(this)); + var bytes = @as([8]u8, @bitCast(@intFromEnum(this))); if (bytes[0] != 1) { return bun.invalid_fd; } var out: u64 = 0; - @bitCast([8]u8, out)[0..7].* = bytes[1..8].*; - return @intCast(bun.FileDescriptor, out); + @as([8]u8, @bitCast(out))[0..7].* = bytes[1..8].*; + return @as(bun.FileDescriptor, @intCast(out)); } }; }; @@ -381,7 +381,7 @@ pub const StreamStart = union(Tag) { return JSC.JSValue.jsUndefined(); }, .chunk_size => |chunk| { - return JSC.JSValue.jsNumber(@intCast(Blob.SizeType, chunk)); + return JSC.JSValue.jsNumber(@as(Blob.SizeType, @intCast(chunk))); }, .err => |err| { globalThis.vm().throwError(globalThis, err.toJSC(globalThis)); @@ -400,7 +400,7 @@ pub const StreamStart = union(Tag) { if (value.get(globalThis, "chunkSize")) |chunkSize| { if (chunkSize.isNumber()) - return .{ .chunk_size = @intCast(Blob.SizeType, @truncate(i52, chunkSize.toInt64())) }; + return .{ .chunk_size = @as(Blob.SizeType, @intCast(@as(i52, @truncate(chunkSize.toInt64())))) }; } return .{ .empty = {} }; @@ -435,7 +435,7 @@ pub const StreamStart = union(Tag) { if (value.get(globalThis, "highWaterMark")) |chunkSize| { if (chunkSize.isNumber()) { empty = false; - chunk_size = @intCast(JSC.WebCore.Blob.SizeType, @max(0, @truncate(i51, chunkSize.toInt64()))); + chunk_size = @as(JSC.WebCore.Blob.SizeType, @intCast(@max(0, @as(i51, @truncate(chunkSize.toInt64()))))); } } @@ -454,7 +454,7 @@ pub const StreamStart = union(Tag) { if (value.get(globalThis, "highWaterMark")) |chunkSize| { if (chunkSize.isNumber()) - chunk_size = @intCast(JSC.WebCore.Blob.SizeType, @max(0, @truncate(i51, chunkSize.toInt64()))); + chunk_size = @as(JSC.WebCore.Blob.SizeType, @intCast(@max(0, @as(i51, @truncate(chunkSize.toInt64()))))); } if (value.get(globalThis, "path")) |path| { @@ -491,7 +491,7 @@ pub const StreamStart = union(Tag) { if (value.get(globalThis, "highWaterMark")) |chunkSize| { if (chunkSize.isNumber()) { empty = false; - chunk_size = @intCast(JSC.WebCore.Blob.SizeType, @max(256, @truncate(i51, chunkSize.toInt64()))); + chunk_size = @as(JSC.WebCore.Blob.SizeType, @intCast(@max(256, @as(i51, @truncate(chunkSize.toInt64()))))); } } @@ -845,7 +845,7 @@ pub const Signal = struct { ptr: *anyopaque = dead, vtable: VTable = VTable.Dead, - pub const dead = @ptrFromInt(*anyopaque, 0xaaaaaaaa); + pub const dead = @as(*anyopaque, @ptrFromInt(0xaaaaaaaa)); pub fn clear(this: *Signal) void { this.ptr = dead; @@ -913,21 +913,21 @@ pub const Signal = struct { const Functions = struct { fn onClose(this: *anyopaque, err: ?Syscall.Error) void { if (comptime !@hasDecl(Wrapped, "onClose")) - Wrapped.close(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), err) + Wrapped.close(@as(*Wrapped, @ptrCast(@alignCast(this))), err) else - Wrapped.onClose(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), err); + Wrapped.onClose(@as(*Wrapped, @ptrCast(@alignCast(this))), err); } fn onReady(this: *anyopaque, amount: ?Blob.SizeType, offset: ?Blob.SizeType) void { if (comptime !@hasDecl(Wrapped, "onReady")) - Wrapped.ready(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), amount, offset) + Wrapped.ready(@as(*Wrapped, @ptrCast(@alignCast(this))), amount, offset) else - Wrapped.onReady(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), amount, offset); + Wrapped.onReady(@as(*Wrapped, @ptrCast(@alignCast(this))), amount, offset); } fn onStart(this: *anyopaque) void { if (comptime !@hasDecl(Wrapped, "onStart")) - Wrapped.start(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this))) + Wrapped.start(@as(*Wrapped, @ptrCast(@alignCast(this)))) else - Wrapped.onStart(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this))); + Wrapped.onStart(@as(*Wrapped, @ptrCast(@alignCast(this)))); } }; @@ -947,7 +947,7 @@ pub const Sink = struct { used: bool = false, pub const pending = Sink{ - .ptr = @ptrFromInt(*anyopaque, 0xaaaaaaaa), + .ptr = @as(*anyopaque, @ptrFromInt(0xaaaaaaaa)), .vtable = undefined, }; @@ -1059,19 +1059,19 @@ pub const Sink = struct { ) VTable { const Functions = struct { pub fn onWrite(this: *anyopaque, data: StreamResult) StreamResult.Writable { - return Wrapped.write(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), data); + return Wrapped.write(@as(*Wrapped, @ptrCast(@alignCast(this))), data); } pub fn onConnect(this: *anyopaque, signal: Signal) JSC.Node.Maybe(void) { - return Wrapped.connect(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), signal); + return Wrapped.connect(@as(*Wrapped, @ptrCast(@alignCast(this))), signal); } pub fn onWriteLatin1(this: *anyopaque, data: StreamResult) StreamResult.Writable { - return Wrapped.writeLatin1(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), data); + return Wrapped.writeLatin1(@as(*Wrapped, @ptrCast(@alignCast(this))), data); } pub fn onWriteUTF16(this: *anyopaque, data: StreamResult) StreamResult.Writable { - return Wrapped.writeUTF16(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), data); + return Wrapped.writeUTF16(@as(*Wrapped, @ptrCast(@alignCast(this))), data); } pub fn onEnd(this: *anyopaque, err: ?Syscall.Error) JSC.Node.Maybe(void) { - return Wrapped.end(@ptrCast(*Wrapped, @alignCast(std.meta.alignment(Wrapped), this)), err); + return Wrapped.end(@as(*Wrapped, @ptrCast(@alignCast(this))), err); } }; @@ -1386,13 +1386,13 @@ pub const FileSink = struct { }, .PIPE => { this.cleanup(); - this.pending.consumed = @truncate(Blob.SizeType, total - initial); + this.pending.consumed = @as(Blob.SizeType, @truncate(total - initial)); return .{ .done = {} }; }, else => {}, } this.pending.result = .{ .err = res.err }; - this.pending.consumed = @truncate(Blob.SizeType, total - initial); + this.pending.consumed = @as(Blob.SizeType, @truncate(total - initial)); return .{ .err = res.err }; } @@ -1429,7 +1429,7 @@ pub const FileSink = struct { poll.flags.remove(.writable); std.debug.assert(poll.flags.contains(.poll_writable)); } - this.pending.consumed = @truncate(Blob.SizeType, total - initial); + this.pending.consumed = @as(Blob.SizeType, @truncate(total - initial)); return .{ .pending = &this.pending, @@ -1453,9 +1453,9 @@ pub const FileSink = struct { } this.pending.result = .{ - .owned = @truncate(Blob.SizeType, total), + .owned = @as(Blob.SizeType, @truncate(total)), }; - this.pending.consumed = @truncate(Blob.SizeType, total - initial); + this.pending.consumed = @as(Blob.SizeType, @truncate(total - initial)); if (is_fifo and remain.len == 0 and this.isWatching()) { this.unwatch(fd); @@ -1477,7 +1477,7 @@ pub const FileSink = struct { } } this.pending.run(); - return .{ .owned = @truncate(Blob.SizeType, total - initial) }; + return .{ .owned = @as(Blob.SizeType, @truncate(total - initial)) }; } pub fn flushFromJS(this: *FileSink, globalThis: *JSGlobalObject, _: bool) JSC.Node.Maybe(JSValue) { @@ -1571,7 +1571,7 @@ pub const FileSink = struct { } if (comptime Environment.isMac) { - _ = this.flushMaybePollWithSizeAndBuffer(this.buffer.slice(), @intCast(usize, @max(writable, 0))); + _ = this.flushMaybePollWithSizeAndBuffer(this.buffer.slice(), @as(usize, @intCast(@max(writable, 0)))); } else { _ = this.flushMaybePollWithSizeAndBuffer(this.buffer.slice(), std.math.maxInt(usize)); } @@ -1643,7 +1643,7 @@ pub const FileSink = struct { if (this.next) |*next| { return next.writeUTF16(data); } - const len = this.buffer.writeUTF16(this.allocator, @ptrCast([*]const u16, @alignCast(@alignOf(u16), data.slice().ptr))[0..std.mem.bytesAsSlice(u16, data.slice()).len]) catch { + const len = this.buffer.writeUTF16(this.allocator, @as([*]const u16, @ptrCast(@alignCast(data.slice().ptr)))[0..std.mem.bytesAsSlice(u16, data.slice()).len]) catch { return .{ .err = Syscall.Error.oom }; }; @@ -1859,7 +1859,7 @@ pub const ArrayBufferSink = struct { if (this.next) |*next| { return next.writeUTF16(data); } - const len = this.bytes.writeUTF16(this.allocator, @ptrCast([*]const u16, @alignCast(@alignOf(u16), data.slice().ptr))[0..std.mem.bytesAsSlice(u16, data.slice()).len]) catch { + const len = this.bytes.writeUTF16(this.allocator, @as([*]const u16, @ptrCast(@alignCast(data.slice().ptr)))[0..std.mem.bytesAsSlice(u16, data.slice()).len]) catch { return .{ .err = Syscall.Error.oom }; }; this.signal.ready(null, null); @@ -2313,15 +2313,15 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { pub fn init(cpp: JSValue) Signal { // this one can be null @setRuntimeSafety(false); - return Signal.initWithType(SinkSignal, @ptrFromInt(*SinkSignal, @bitCast(usize, @intFromEnum(cpp)))); + return Signal.initWithType(SinkSignal, @as(*SinkSignal, @ptrFromInt(@as(usize, @bitCast(@intFromEnum(cpp)))))); } pub fn close(this: *@This(), _: ?Syscall.Error) void { - onClose(@bitCast(SinkSignal, @intFromPtr(this)).cpp, JSValue.jsUndefined()); + onClose(@as(SinkSignal, @bitCast(@intFromPtr(this))).cpp, JSValue.jsUndefined()); } pub fn ready(this: *@This(), _: ?Blob.SizeType, _: ?Blob.SizeType) void { - onReady(@bitCast(SinkSignal, @intFromPtr(this)).cpp, JSValue.jsUndefined(), JSValue.jsUndefined()); + onReady(@as(SinkSignal, @bitCast(@intFromPtr(this))).cpp, JSValue.jsUndefined(), JSValue.jsUndefined()); } pub fn start(_: *@This()) void {} @@ -2384,7 +2384,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { } pub fn finalize(ptr: *anyopaque) callconv(.C) void { - var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), ptr)); + var this = @as(*ThisSink, @ptrCast(@alignCast(ptr))); this.sink.finalize(); } @@ -2397,7 +2397,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { if (this.sink.signal.isDead()) return; this.sink.signal.clear(); - const value = @enumFromInt(JSValue, @bitCast(JSC.JSValueReprInt, @intFromPtr(ptr))); + const value = @as(JSValue, @enumFromInt(@as(JSC.JSValueReprInt, @bitCast(@intFromPtr(ptr))))); value.unprotect(); detachPtr(value); } @@ -2407,15 +2407,14 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { } fn getThis(globalThis: *JSGlobalObject, callframe: *const JSC.CallFrame) ?*ThisSink { - return @ptrCast( + return @as( *ThisSink, - @alignCast( - std.meta.alignment(ThisSink), + @ptrCast(@alignCast( fromJS( globalThis, callframe.this(), ) orelse return null, - ), + )), ); } @@ -2535,7 +2534,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { pub fn close(globalThis: *JSGlobalObject, sink_ptr: ?*anyopaque) callconv(.C) JSValue { JSC.markBinding(@src()); - var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), sink_ptr orelse return invalidThis(globalThis))); + var this = @as(*ThisSink, @ptrCast(@alignCast(sink_ptr orelse return invalidThis(globalThis)))); if (comptime @hasDecl(SinkType, "getPendingError")) { if (this.sink.getPendingError()) |err| { @@ -2634,7 +2633,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { pub fn endWithSink(ptr: *anyopaque, globalThis: *JSGlobalObject) callconv(.C) JSValue { JSC.markBinding(@src()); - var this = @ptrCast(*ThisSink, @alignCast(std.meta.alignment(ThisSink), ptr)); + var this = @as(*ThisSink, @ptrCast(@alignCast(ptr))); if (comptime @hasDecl(SinkType, "getPendingError")) { if (this.sink.getPendingError()) |err| { @@ -2697,7 +2696,7 @@ pub fn NewJSSink(comptime SinkType: type, comptime name_: []const u8) type { // pub fn connect(globalThis: *JSGlobalObject, callframe: *JSC.CallFrame) callconv(.C) JSValue { // JSC.markBinding(@src()); -// var this = @ptrCast(*ThisSocket, @alignCast(std.meta.alignment(ThisSocket), fromJS(globalThis, callframe.this()) orelse { +// var this = @ptrCast(*ThisSocket, @alignCast( fromJS(globalThis, callframe.this()) orelse { // const err = JSC.toTypeError(JSC.Node.ErrorCode.ERR_INVALID_THIS, "Expected Socket", .{}, globalThis); // globalThis.vm().throwError(globalThis, err); // return JSC.JSValue.jsUndefined(); @@ -2747,10 +2746,10 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { } fn handleWrote(this: *@This(), amount1: usize) void { - const amount = @truncate(Blob.SizeType, amount1); + const amount = @as(Blob.SizeType, @truncate(amount1)); this.offset += amount; this.wrote += amount; - this.buffer.len -|= @truncate(u32, amount); + this.buffer.len -|= @as(u32, @truncate(amount)); if (this.offset >= this.buffer.len) { this.offset = 0; @@ -2806,7 +2805,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { // do not write more than available // if we do, it will cause this to be delayed until the next call, each time - const to_write = @min(@truncate(Blob.SizeType, write_offset), @as(Blob.SizeType, this.buffer.len)); + const to_write = @min(@as(Blob.SizeType, @truncate(write_offset)), @as(Blob.SizeType, this.buffer.len)); // figure out how much data exactly to write const readable = this.readableSlice()[0..to_write]; @@ -2816,7 +2815,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { return true; } - this.handleWrote(@truncate(Blob.SizeType, readable.len)); + this.handleWrote(@as(Blob.SizeType, @truncate(readable.len))); const initial_wrote = this.wrote; if (this.buffer.len > 0 and !this.done) { @@ -2830,7 +2829,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { // pending_flush or callback could have caused another send() // so we check again if we should report readiness if (!this.done and !this.requested_end and !this.hasBackpressure()) { - const pending = @truncate(Blob.SizeType, write_offset) -| to_write; + const pending = @as(Blob.SizeType, @truncate(write_offset)) -| to_write; const written_after_flush = this.wrote - initial_wrote; const to_report = pending - @min(written_after_flush, pending); @@ -2900,7 +2899,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { const success = this.send(slice); if (success) { - this.handleWrote(@truncate(Blob.SizeType, slice.len)); + this.handleWrote(@as(Blob.SizeType, @truncate(slice.len))); return .{ .result = JSValue.jsNumber(slice.len) }; } @@ -2926,7 +2925,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { assert(slice.len > 0); const success = this.send(slice); if (success) { - this.handleWrote(@truncate(Blob.SizeType, slice.len)); + this.handleWrote(@as(Blob.SizeType, @truncate(slice.len))); return .{ .result = JSC.JSPromise.resolvedPromiseValue(globalThis, JSValue.jsNumber(slice.len)) }; } @@ -2961,7 +2960,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { } const bytes = data.slice(); - const len = @truncate(Blob.SizeType, bytes.len); + const len = @as(Blob.SizeType, @truncate(bytes.len)); log("write({d})", .{bytes.len}); if (this.buffer.len == 0 and len >= this.highWaterMark) { @@ -3013,7 +3012,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { } const bytes = data.slice(); - const len = @truncate(Blob.SizeType, bytes.len); + const len = @as(Blob.SizeType, @truncate(bytes.len)); log("writeLatin1({d})", .{bytes.len}); if (this.buffer.len == 0 and len >= this.highWaterMark) { @@ -3080,7 +3079,7 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { // we must always buffer UTF-16 // we assume the case of all-ascii UTF-16 string is pretty uncommon - const written = this.buffer.writeUTF16(this.allocator, @alignCast(2, std.mem.bytesAsSlice(u16, bytes))) catch { + const written = this.buffer.writeUTF16(this.allocator, @alignCast(std.mem.bytesAsSlice(u16, bytes))) catch { return .{ .err = Syscall.Error.fromCode(.NOMEM, .write) }; }; @@ -3089,13 +3088,13 @@ pub fn HTTPServerWritable(comptime ssl: bool) type { if (readable.len >= this.highWaterMark or this.hasBackpressure()) { if (this.send(readable)) { this.handleWrote(readable.len); - return .{ .owned = @intCast(Blob.SizeType, written) }; + return .{ .owned = @as(Blob.SizeType, @intCast(written)) }; } this.res.onWritable(*@This(), onWritable, this); } - return .{ .owned = @intCast(Blob.SizeType, written) }; + return .{ .owned = @as(Blob.SizeType, @intCast(written)) }; } // In this case, it's always an error @@ -3527,7 +3526,7 @@ pub const ByteBlobLoader = struct { return .{ .done = {} }; } - const copied = @intCast(Blob.SizeType, temporary.len); + const copied = @as(Blob.SizeType, @intCast(temporary.len)); this.remain -|= copied; this.offset +|= copied; @@ -3557,8 +3556,8 @@ pub const ByteBlobLoader = struct { temporary = temporary[0..@min(16384, @min(temporary.len, this.remain))]; var cloned = bun.ByteList.init(temporary).listManaged(bun.default_allocator).clone() catch @panic("Out of memory"); - this.offset +|= @truncate(Blob.SizeType, cloned.items.len); - this.remain -|= @truncate(Blob.SizeType, cloned.items.len); + this.offset +|= @as(Blob.SizeType, @truncate(cloned.items.len)); + this.remain -|= @as(Blob.SizeType, @truncate(cloned.items.len)); return bun.ByteList.fromList(cloned); } @@ -3593,7 +3592,7 @@ pub const Pipe = struct { pub fn New(comptime Type: type, comptime Function: anytype) type { return struct { pub fn pipe(self: *anyopaque, stream: StreamResult, allocator: std.mem.Allocator) void { - Function(@ptrCast(*Type, @alignCast(@alignOf(Type), self)), stream, allocator); + Function(@as(*Type, @ptrCast(@alignCast(self))), stream, allocator); } pub fn init(self: *Type) Pipe { @@ -3707,14 +3706,14 @@ pub const ByteStream = struct { this.pending.result = .{ .into_array_and_done = .{ .value = this.value(), - .len = @truncate(Blob.SizeType, to_copy.len), + .len = @as(Blob.SizeType, @truncate(to_copy.len)), }, }; } else { this.pending.result = .{ .into_array = .{ .value = this.value(), - .len = @truncate(Blob.SizeType, to_copy.len), + .len = @as(Blob.SizeType, @truncate(to_copy.len)), }, }; } @@ -3803,7 +3802,7 @@ pub const ByteStream = struct { return .{ .into_array_and_done = .{ .value = view, - .len = @truncate(Blob.SizeType, to_write), + .len = @as(Blob.SizeType, @truncate(to_write)), }, }; } @@ -3811,7 +3810,7 @@ pub const ByteStream = struct { return .{ .into_array = .{ .value = view, - .len = @truncate(Blob.SizeType, to_write), + .len = @as(Blob.SizeType, @truncate(to_write)), }, }; } @@ -3902,9 +3901,9 @@ pub const ReadResult = union(enum) { else if (owned) StreamResult{ .owned = bun.ByteList.init(slice) } else if (done) - StreamResult{ .into_array_and_done = .{ .len = @truncate(Blob.SizeType, slice.len), .value = view } } + StreamResult{ .into_array_and_done = .{ .len = @as(Blob.SizeType, @truncate(slice.len)), .value = view } } else - StreamResult{ .into_array = .{ .len = @truncate(Blob.SizeType, slice.len), .value = view } }; + StreamResult{ .into_array = .{ .len = @as(Blob.SizeType, @truncate(slice.len)), .value = view } }; }, }; } @@ -4005,7 +4004,7 @@ pub const FIFO = struct { return @as(u32, 0); } - return @intCast(u32, @max(len, 0)); + return @as(u32, @intCast(@max(len, 0))); } pub fn adjustPipeCapacityOnLinux(this: *FIFO, current: usize, max: usize) void { @@ -4036,7 +4035,7 @@ pub const FIFO = struct { if (!is_readable and (this.close_on_empty_read or poll.isHUP())) { // it might be readable actually this.close_on_empty_read = true; - switch (bun.isReadable(@intCast(std.os.fd_t, poll.fd))) { + switch (bun.isReadable(@as(std.os.fd_t, @intCast(poll.fd)))) { .ready => { this.close_on_empty_read = false; return null; @@ -4059,7 +4058,7 @@ pub const FIFO = struct { // this happens if we've registered a watcher but we haven't // ticked the event loop since registering it - switch (bun.isReadable(@intCast(std.os.fd_t, poll.fd))) { + switch (bun.isReadable(@as(std.os.fd_t, @intCast(poll.fd)))) { .ready => { poll.flags.insert(.readable); return null; @@ -4102,7 +4101,7 @@ pub const FIFO = struct { } if (size_or_offset != std.math.maxInt(@TypeOf(size_or_offset))) - this.to_read = @intCast(u32, @max(size_or_offset, 0)); + this.to_read = @as(u32, @intCast(@max(size_or_offset, 0))); return this.to_read; } @@ -4128,7 +4127,7 @@ pub const FIFO = struct { var auto_sizer = this.auto_sizer orelse return; if (comptime Environment.isMac) { if (sizeOrOffset > 0) { - this.buf = auto_sizer.resize(@intCast(usize, sizeOrOffset)) catch return; + this.buf = auto_sizer.resize(@as(usize, @intCast(sizeOrOffset))) catch return; } else { this.buf = auto_sizer.resize(8096) catch return; } @@ -4140,14 +4139,14 @@ pub const FIFO = struct { // On Linux, we end up calling ioctl() twice if we don't do this if (comptime Environment.isMac) // i33 holds the same amount of unsigned space as a u32, so we truncate it there before casting - @intCast(u32, @truncate(i33, sizeOrOffset)) + @as(u32, @intCast(@as(i33, @truncate(sizeOrOffset)))) else null, ); if (read_result == .read) { if (this.to_read) |*to_read| { - to_read.* = to_read.* -| @truncate(u32, read_result.read.len); + to_read.* = to_read.* -| @as(u32, @truncate(read_result.read.len)); } } @@ -4182,7 +4181,7 @@ pub const FIFO = struct { if (read_result == .read) { if (this.to_read) |*to_read| { - to_read.* = to_read.* -| @truncate(u32, read_result.read.len); + to_read.* = to_read.* -| @as(u32, @truncate(read_result.read.len)); } } @@ -4205,7 +4204,7 @@ pub const FIFO = struct { ) ReadResult { const available_to_read = this.getAvailableToRead( if (kqueue_read_amt != null) - @intCast(i64, kqueue_read_amt.?) + @as(i64, @intCast(kqueue_read_amt.?)) else std.math.maxInt(i64), ); @@ -4382,7 +4381,7 @@ pub const File = struct { if ((flags & std.os.O.NONBLOCK) == 0) { auto_close = true; fd = switch (Syscall.fcntl(fd, std.os.F.DUPFD, 0)) { - .result => |_fd| @intCast(@TypeOf(fd), _fd), + .result => |_fd| @as(@TypeOf(fd), @intCast(_fd)), .err => |err| return .{ .err = err }, }; @@ -4419,14 +4418,14 @@ pub const File = struct { return .{ .err = Syscall.Error.fromCode(.INVAL, .fstat) }; } - file.mode = @intCast(JSC.Node.Mode, stat.mode); + file.mode = @as(JSC.Node.Mode, @intCast(stat.mode)); this.mode = file.mode; this.seekable = std.os.S.ISREG(stat.mode); file.seekable = this.seekable; if (this.seekable) { - this.remaining_bytes = @intCast(Blob.SizeType, stat.size); + this.remaining_bytes = @as(Blob.SizeType, @intCast(stat.size)); file.max_size = this.remaining_bytes; if (this.remaining_bytes == 0) { @@ -4464,11 +4463,11 @@ pub const File = struct { } pub fn onRead(this: *File, completion: *HTTPClient.NetworkThread.Completion, result: AsyncIO.ReadError!usize) void { - this.concurrent.read = @truncate(Blob.SizeType, result catch |err| { + this.concurrent.read = @as(Blob.SizeType, @truncate(result catch |err| { if (@hasField(HTTPClient.NetworkThread.Completion, "result")) { this.pending.result = .{ .err = Syscall.Error{ - .errno = @intCast(Syscall.Error.Int, -completion.result), + .errno = @as(Syscall.Error.Int, @intCast(-completion.result)), .syscall = .read, }, }; @@ -4476,7 +4475,7 @@ pub const File = struct { this.pending.result = .{ .err = Syscall.Error{ // this is too hacky - .errno = @truncate(Syscall.Error.Int, @intCast(u16, @max(1, @intFromError(err)))), + .errno = @as(Syscall.Error.Int, @truncate(@as(u16, @intCast(@max(1, @intFromError(err)))))), .syscall = .read, }, }; @@ -4484,7 +4483,7 @@ pub const File = struct { this.concurrent.read = 0; scheduleMainThreadTask(this); return; - }); + })); scheduleMainThreadTask(this); } @@ -4509,7 +4508,7 @@ pub const File = struct { return; }, .result => |result| { - this.concurrent.read += @intCast(Blob.SizeType, result); + this.concurrent.read += @as(Blob.SizeType, @intCast(result)); remaining = remaining[result..]; if (result == 0) { @@ -4556,7 +4555,7 @@ pub const File = struct { this.pending.result = .{ .into_array = .{ .value = view, - .len = @truncate(Blob.SizeType, this.concurrent.read), + .len = @as(Blob.SizeType, @truncate(this.concurrent.read)), }, }; } else { @@ -4615,7 +4614,7 @@ pub const File = struct { if (this.scheduled_count == 0) { this.buf = buf; this.view.set(globalThis, view); - this.scheduleAsync(@truncate(Blob.SizeType, buf.len), globalThis); + this.scheduleAsync(@as(Blob.SizeType, @truncate(buf.len)), globalThis); } return .{ .pending = &this.pending }; }, @@ -4641,7 +4640,7 @@ pub const File = struct { } }, .result => |result| { - this.remaining_bytes -|= @truncate(@TypeOf(this.remaining_bytes), result); + this.remaining_bytes -|= @as(@TypeOf(this.remaining_bytes), @truncate(result)); if (result == 0) { return .{ .done = {} }; @@ -4869,7 +4868,7 @@ pub const FileReader = struct { if (this.readable().* == .File) { const chunk_size = this.readable().File.calculateChunkSize(std.math.maxInt(usize)); - return .{ .chunk_size = @truncate(Blob.SizeType, chunk_size) }; + return .{ .chunk_size = @as(Blob.SizeType, @truncate(chunk_size)) }; } return .{ .chunk_size = if (this.user_chunk_size == 0) default_fifo_chunk_size else this.user_chunk_size }; @@ -4997,8 +4996,8 @@ pub fn NewReadyWatcher( } pub fn unwatch(this: *Context, fd_: anytype) void { - const fd = @intCast(c_int, fd_); - std.debug.assert(@intCast(c_int, this.poll_ref.?.fd) == fd); + const fd = @as(c_int, @intCast(fd_)); + std.debug.assert(@as(c_int, @intCast(this.poll_ref.?.fd)) == fd); std.debug.assert( this.poll_ref.?.unregister(JSC.VirtualMachine.get().uws_event_loop.?) == .result, ); @@ -5026,7 +5025,7 @@ pub fn NewReadyWatcher( } pub fn watch(this: *Context, fd_: anytype) void { - const fd = @intCast(c_int, fd_); + const fd = @as(c_int, @intCast(fd_)); var poll_ref: *JSC.FilePoll = this.poll_ref orelse brk: { this.poll_ref = JSC.FilePoll.init( JSC.VirtualMachine.get(), diff --git a/src/bun.zig b/src/bun.zig index 2e6917f42..7e8ccdfa7 100644 --- a/src/bun.zig +++ b/src/bun.zig @@ -176,9 +176,9 @@ pub const fmt = struct { pub fn size(value: anytype) SizeFormatter { return switch (@TypeOf(value)) { f64, f32, f128 => SizeFormatter{ - .value = @intFromFloat(u64, value), + .value = @as(u64, @intFromFloat(value)), }, - else => SizeFormatter{ .value = @intCast(u64, value) }, + else => SizeFormatter{ .value = @as(u64, @intCast(value)) }, }; } @@ -231,7 +231,7 @@ pub const fmt = struct { comptime var i: usize = 0; inline while (i < buf.len) : (i += 1) { // value relative to the current nibble - buf[i] = table[@as(u8, @truncate(u4, value >> comptime ((buf.len - i - 1) * 4))) & 0xF]; + buf[i] = table[@as(u8, @as(u4, @truncate(value >> comptime ((buf.len - i - 1) * 4)))) & 0xF]; } return buf; @@ -288,12 +288,12 @@ pub const MAX_PATH_BYTES: usize = if (Environment.isWasm) 1024 else std.fs.MAX_P pub inline fn cast(comptime To: type, value: anytype) To { if (comptime std.meta.trait.isIntegral(@TypeOf(value))) { - return @ptrFromInt(To, @bitCast(usize, value)); + return @as(To, @ptrFromInt(@as(usize, @bitCast(value)))); } // TODO: file issue about why std.meta.Child only is necessary on Linux aarch64 // it should be necessary on all targets - return @ptrCast(To, @alignCast(@alignOf(std.meta.Child(To)), value)); + return @ptrCast(@alignCast(value)); } extern fn strlen(ptr: [*c]const u8) usize; @@ -327,7 +327,7 @@ pub fn len(value: anytype) usize { .Many => { const sentinel_ptr = info.sentinel orelse @compileError("length of pointer with no sentinel"); - const sentinel = @ptrCast(*align(1) const info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const info.child, @ptrCast(sentinel_ptr)).*; return indexOfSentinel(info.child, sentinel, value); }, @@ -406,7 +406,7 @@ pub fn span(ptr: anytype) Span(@TypeOf(ptr)) { const l = len(ptr); const ptr_info = @typeInfo(Result).Pointer; if (ptr_info.sentinel) |s_ptr| { - const s = @ptrCast(*align(1) const ptr_info.child, s_ptr).*; + const s = @as(*align(1) const ptr_info.child, @ptrCast(s_ptr)).*; return ptr[0..l :s]; } else { return ptr[0..l]; @@ -572,7 +572,7 @@ pub fn hashWithSeed(seed: u64, content: []const u8) u64 { pub fn hash32(content: []const u8) u32 { const res = hash(content); - return @truncate(u32, res); + return @as(u32, @truncate(res)); } pub const HiveArray = @import("./hive_array.zig").HiveArray; @@ -688,8 +688,8 @@ pub inline fn isSliceInBuffer(slice: []const u8, buffer: []const u8) bool { pub fn rangeOfSliceInBuffer(slice: []const u8, buffer: []const u8) ?[2]u32 { if (!isSliceInBuffer(slice, buffer)) return null; const r = [_]u32{ - @truncate(u32, @intFromPtr(slice.ptr) -| @intFromPtr(buffer.ptr)), - @truncate(u32, slice.len), + @as(u32, @truncate(@intFromPtr(slice.ptr) -| @intFromPtr(buffer.ptr))), + @as(u32, @truncate(slice.len)), }; if (comptime Environment.allow_assert) std.debug.assert(strings.eqlLong(slice, buffer[r[0]..][0..r[1]], false)); @@ -732,7 +732,7 @@ pub fn getenvZ(path_: [:0]const u8) ?[]const u8 { // These wrappers exist to use our strings.eqlLong function pub const StringArrayHashMapContext = struct { pub fn hash(_: @This(), s: []const u8) u32 { - return @truncate(u32, std.hash.Wyhash.hash(0, s)); + return @as(u32, @truncate(std.hash.Wyhash.hash(0, s))); } pub fn eql(_: @This(), a: []const u8, b: []const u8, _: usize) bool { return strings.eqlLong(a, b, true); @@ -751,7 +751,7 @@ pub const StringArrayHashMapContext = struct { pub fn hash(this: @This(), s: []const u8) u32 { if (s.ptr == this.input.ptr and s.len == this.input.len) return this.value; - return @truncate(u32, std.hash.Wyhash.hash(0, s)); + return @as(u32, @truncate(std.hash.Wyhash.hash(0, s))); } pub fn eql(_: @This(), a: []const u8, b: []const u8) bool { @@ -882,7 +882,7 @@ pub const SignalCode = enum(u8) { } pub fn from(value: anytype) SignalCode { - return @enumFromInt(SignalCode, @truncate(u7, std.mem.asBytes(&value)[0])); + return @as(SignalCode, @enumFromInt(@as(u7, @truncate(std.mem.asBytes(&value)[0])))); } pub fn format(self: SignalCode, comptime _: []const u8, _: fmt.FormatOptions, writer: anytype) !void { @@ -965,8 +965,8 @@ pub fn ComptimeEnumMap(comptime T: type) type { /// Ignores default struct values. pub fn zero(comptime Type: type) Type { var out: [@sizeOf(Type)]u8 align(@alignOf(Type)) = undefined; - @memset(@ptrCast([*]u8, &out)[0..out.len], 0); - return @bitCast(Type, out); + @memset(@as([*]u8, @ptrCast(&out))[0..out.len], 0); + return @as(Type, @bitCast(out)); } pub const c_ares = @import("./deps/c_ares.zig"); pub const URL = @import("./url.zig").URL; @@ -1016,7 +1016,7 @@ fn lenSliceTo(ptr: anytype, comptime end: meta.Elem(@TypeOf(ptr))) usize { .One => switch (@typeInfo(ptr_info.child)) { .Array => |array_info| { if (array_info.sentinel) |sentinel_ptr| { - const sentinel = @ptrCast(*align(1) const array_info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const array_info.child, @ptrCast(sentinel_ptr)).*; if (sentinel == end) { return indexOfSentinel(array_info.child, end, ptr); } @@ -1026,7 +1026,7 @@ fn lenSliceTo(ptr: anytype, comptime end: meta.Elem(@TypeOf(ptr))) usize { else => {}, }, .Many => if (ptr_info.sentinel) |sentinel_ptr| { - const sentinel = @ptrCast(*align(1) const ptr_info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const ptr_info.child, @ptrCast(sentinel_ptr)).*; // We may be looking for something other than the sentinel, // but iterating past the sentinel would be a bug so we need // to check for both. @@ -1040,7 +1040,7 @@ fn lenSliceTo(ptr: anytype, comptime end: meta.Elem(@TypeOf(ptr))) usize { }, .Slice => { if (ptr_info.sentinel) |sentinel_ptr| { - const sentinel = @ptrCast(*align(1) const ptr_info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const ptr_info.child, @ptrCast(sentinel_ptr)).*; if (sentinel == end) { return indexOfSentinel(ptr_info.child, sentinel, ptr); } @@ -1070,7 +1070,7 @@ fn SliceTo(comptime T: type, comptime end: meta.Elem(T)) type { // to find the value searched for, which is only the case if it matches // the sentinel of the type passed. if (array_info.sentinel) |sentinel_ptr| { - const sentinel = @ptrCast(*align(1) const array_info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const array_info.child, @ptrCast(sentinel_ptr)).*; if (end == sentinel) { new_ptr_info.sentinel = &end; } else { @@ -1085,7 +1085,7 @@ fn SliceTo(comptime T: type, comptime end: meta.Elem(T)) type { // to find the value searched for, which is only the case if it matches // the sentinel of the type passed. if (ptr_info.sentinel) |sentinel_ptr| { - const sentinel = @ptrCast(*align(1) const ptr_info.child, sentinel_ptr).*; + const sentinel = @as(*align(1) const ptr_info.child, @ptrCast(sentinel_ptr)).*; if (end == sentinel) { new_ptr_info.sentinel = &end; } else { @@ -1123,7 +1123,7 @@ pub fn sliceTo(ptr: anytype, comptime end: meta.Elem(@TypeOf(ptr))) SliceTo(@Typ const length = lenSliceTo(ptr, end); const ptr_info = @typeInfo(Result).Pointer; if (ptr_info.sentinel) |s_ptr| { - const s = @ptrCast(*align(1) const ptr_info.child, s_ptr).*; + const s = @as(*align(1) const ptr_info.child, @ptrCast(s_ptr)).*; return ptr[0..length :s]; } else { return ptr[0..length]; @@ -1139,7 +1139,7 @@ pub fn cstring(input: []const u8) [:0]const u8 { input.ptr[input.len] == 0, ); } - return @ptrCast([*:0]const u8, input.ptr)[0..input.len :0]; + return @as([*:0]const u8, @ptrCast(input.ptr))[0..input.len :0]; } pub const Semver = @import("./install/semver.zig"); @@ -1267,10 +1267,10 @@ pub fn reloadProcess( const exec_path = (allocator.dupeZ(u8, std.fs.selfExePathAlloc(allocator) catch unreachable) catch unreachable).ptr; // we clone argv so that the memory address isn't the same as the libc one - const argv = @ptrCast([*:null]?[*:0]const u8, dupe_argv.ptr); + const argv = @as([*:null]?[*:0]const u8, @ptrCast(dupe_argv.ptr)); // we clone envp so that the memory address of environment variables isn't the same as the libc one - const envp = @ptrCast([*:null]?[*:0]const u8, environ.ptr); + const envp = @as([*:null]?[*:0]const u8, @ptrCast(environ.ptr)); // Clear the terminal if (clear_terminal) { @@ -1295,7 +1295,7 @@ pub fn reloadProcess( C.POSIX_SPAWN_SETEXEC | C.POSIX_SPAWN_SETSIGDEF | C.POSIX_SPAWN_SETSIGMASK, ) catch unreachable; - switch (PosixSpawn.spawnZ(exec_path, actions, attrs, @ptrCast([*:null]?[*:0]const u8, argv), @ptrCast([*:null]?[*:0]const u8, envp))) { + switch (PosixSpawn.spawnZ(exec_path, actions, attrs, @as([*:null]?[*:0]const u8, @ptrCast(argv)), @as([*:null]?[*:0]const u8, @ptrCast(envp)))) { .err => |err| { Output.panic("Unexpected error while reloading: {d} {s}", .{ err.errno, @tagName(err.getErrno()) }); }, diff --git a/src/bundler/bundle_v2.zig b/src/bundler/bundle_v2.zig index 1fd77f5f2..b70bac229 100644 --- a/src/bundler/bundle_v2.zig +++ b/src/bundler/bundle_v2.zig @@ -150,7 +150,7 @@ pub const ThreadPool = struct { if (existing_thread_pool) |pool| { this.pool = pool; } else { - var cpu_count = @truncate(u32, @max(std.Thread.getCpuCount() catch 2, 2)); + var cpu_count = @as(u32, @truncate(@max(std.Thread.getCpuCount() catch 2, 2))); if (v2.bundler.env.map.get("GOMAXPROCS")) |max_procs| { if (std.fmt.parseInt(u32, max_procs, 10)) |cpu_count_| { @@ -158,7 +158,7 @@ pub const ThreadPool = struct { } else |_| {} } - cpu_count = @max(@min(cpu_count, @truncate(u32, 128 - 1)), 2); + cpu_count = @max(@min(cpu_count, @as(u32, @truncate(128 - 1))), 2); this.pool = try v2.graph.allocator.create(ThreadPoolLib); this.pool.* = ThreadPoolLib.init(.{ .max_threads = cpu_count, @@ -584,7 +584,7 @@ pub const BundleV2 = struct { path.* = path.dupeAlloc(this.graph.allocator) catch @panic("Ran out of memory"); // We need to parse this - const source_index = Index.init(@intCast(u32, this.graph.ast.len)); + const source_index = Index.init(@as(u32, @intCast(this.graph.ast.len))); entry.value_ptr.* = source_index.get(); out_source_index = source_index; this.graph.ast.append(bun.default_allocator, JSAst.empty) catch unreachable; @@ -795,7 +795,7 @@ pub const BundleV2 = struct { const entry_points = try router.getEntryPoints(); try this.graph.entry_points.ensureUnusedCapacity(this.graph.allocator, entry_points.len); try this.graph.input_files.ensureUnusedCapacity(this.graph.allocator, entry_points.len); - try this.graph.path_to_source_index_map.ensureUnusedCapacity(this.graph.allocator, @truncate(u32, entry_points.len)); + try this.graph.path_to_source_index_map.ensureUnusedCapacity(this.graph.allocator, @as(u32, @truncate(entry_points.len))); for (entry_points) |entry_point| { const resolved = this.bundler.resolveEntryPoint(entry_point) catch continue; @@ -809,7 +809,7 @@ pub const BundleV2 = struct { // Setup entry points try this.graph.entry_points.ensureUnusedCapacity(this.graph.allocator, user_entry_points.len); try this.graph.input_files.ensureUnusedCapacity(this.graph.allocator, user_entry_points.len); - try this.graph.path_to_source_index_map.ensureUnusedCapacity(this.graph.allocator, @truncate(u32, user_entry_points.len)); + try this.graph.path_to_source_index_map.ensureUnusedCapacity(this.graph.allocator, @as(u32, @truncate(user_entry_points.len))); for (user_entry_points) |entry_point| { const resolved = this.bundler.resolveEntryPoint(entry_point) catch continue; @@ -915,7 +915,7 @@ pub const BundleV2 = struct { all_imported_files.setIntersection(react_client_component_boundary); if (all_imported_files.findFirstSet() == null) continue; - const source_index = Index.init(@intCast(u32, this.graph.ast.len)); + const source_index = Index.init(@as(u32, @intCast(this.graph.ast.len))); var shadow = ShadowEntryPoint{ .from_source_index = entry_point_source_index.get(), @@ -944,7 +944,7 @@ pub const BundleV2 = struct { ); if (this.graph.shadow_entry_point_range.loc.start < 0) { - this.graph.shadow_entry_point_range.loc.start = @intCast(i32, source_index.get()); + this.graph.shadow_entry_point_range.loc.start = @as(i32, @intCast(source_index.get())); } this.graph.ast.append(bun.default_allocator, JSAst.empty) catch unreachable; @@ -1015,7 +1015,7 @@ pub const BundleV2 = struct { this.waitForParse(); - minify_duration.* = @intCast(u64, @divTrunc(@truncate(i64, std.time.nanoTimestamp()) - @truncate(i64, bun.CLI.start_time), @as(i64, std.time.ns_per_ms))); + minify_duration.* = @as(u64, @intCast(@divTrunc(@as(i64, @truncate(std.time.nanoTimestamp())) - @as(i64, @truncate(bun.CLI.start_time)), @as(i64, std.time.ns_per_ms)))); source_code_size.* = this.source_code_length; if (this.graph.use_directive_entry_points.len > 0) { @@ -1108,7 +1108,7 @@ pub const BundleV2 = struct { ), ) catch unreachable; additional_files[index].push(this.graph.allocator, AdditionalFile{ - .output_file = @truncate(u32, additional_output_files.items.len - 1), + .output_file = @as(u32, @truncate(additional_output_files.items.len - 1)), }) catch unreachable; } } @@ -1279,7 +1279,7 @@ pub const BundleV2 = struct { to_assign_on_sourcemap = result; } - output_files_js.putIndex(globalThis, @intCast(u32, i), result); + output_files_js.putIndex(globalThis, @as(u32, @intCast(i)), result); } root_obj.put(globalThis, JSC.ZigString.static("outputs"), output_files_js); @@ -1444,7 +1444,7 @@ pub const BundleV2 = struct { this.free_list.appendSlice(&.{ result.namespace, result.path }) catch {}; // We need to parse this - const source_index = Index.init(@intCast(u32, this.graph.ast.len)); + const source_index = Index.init(@as(u32, @intCast(this.graph.ast.len))); existing.value_ptr.* = source_index.get(); out_source_index = source_index; this.graph.ast.append(bun.default_allocator, JSAst.empty) catch unreachable; @@ -1643,7 +1643,7 @@ pub const BundleV2 = struct { } defer { - if (this.graph.pool.pool.threadpool_context == @ptrCast(?*anyopaque, this.graph.pool)) { + if (this.graph.pool.pool.threadpool_context == @as(?*anyopaque, @ptrCast(this.graph.pool))) { this.graph.pool.pool.threadpool_context = null; } @@ -1892,7 +1892,7 @@ pub const BundleV2 = struct { } } - if (this.enqueueOnResolvePluginIfNeeded(source.index.get(), import_record, source.path.text, @truncate(u32, i), ast.target)) { + if (this.enqueueOnResolvePluginIfNeeded(source.index.get(), import_record, source.path.text, @as(u32, @truncate(i)), ast.target)) { continue; } @@ -2052,9 +2052,9 @@ pub const BundleV2 = struct { defer { if (diff > 0) - _ = @atomicRmw(usize, &graph.parse_pending, .Add, @intCast(usize, diff), .Monotonic) + _ = @atomicRmw(usize, &graph.parse_pending, .Add, @as(usize, @intCast(diff)), .Monotonic) else - _ = @atomicRmw(usize, &graph.parse_pending, .Sub, @intCast(usize, -diff), .Monotonic); + _ = @atomicRmw(usize, &graph.parse_pending, .Sub, @as(usize, @intCast(-diff)), .Monotonic); } var resolve_queue = ResolveQueue.init(this.graph.allocator); @@ -2212,7 +2212,7 @@ pub const BundleV2 = struct { record.source_index.value = source_index; if (getRedirectId(result.ast.redirect_import_record_index)) |compare| { - if (compare == @truncate(u32, i)) { + if (compare == @as(u32, @truncate(i))) { graph.path_to_source_index_map.put( graph.allocator, result.source.path.hashKey(), @@ -3083,8 +3083,8 @@ const LinkerGraph = struct { var source_symbols = &this.symbols.symbols_for_source.slice()[source_index]; var ref = Ref.init( - @truncate(Ref.Int, source_symbols.len), - @truncate(Ref.Int, source_index), + @as(Ref.Int, @truncate(source_symbols.len)), + @as(Ref.Int, @truncate(source_index)), false, ); ref.tag = .symbol; @@ -3127,7 +3127,7 @@ const LinkerGraph = struct { part: js_ast.Part, ) !u32 { var parts: *js_ast.Part.List = &graph.ast.items(.parts)[id]; - const part_id = @truncate(u32, parts.len); + const part_id = @as(u32, @truncate(parts.len)); try parts.push(graph.allocator, part); var top_level_symbol_to_parts_overlay: ?*TopLevelSymbolToParts = null; @@ -3239,7 +3239,7 @@ const LinkerGraph = struct { for (part_ids, new_dependencies) |part_id, *dependency| { dependency.* = .{ .source_index = source_index_to_import_from, - .part_index = @truncate(u32, part_id), + .part_index = @as(u32, @truncate(part_id)), }; } } @@ -3345,7 +3345,7 @@ const LinkerGraph = struct { // Loop #2: For each import in the entire module graph for (this.reachable_files) |source_id| { const use_directive = this.useDirectiveBoundary(source_id.get()); - const source_i32 = @intCast(i32, source_id.get()); + const source_i32 = @as(i32, @intCast(source_id.get())); const is_shadow_entrypoint = shadow_entry_point_range.contains(source_i32); // If the reachable file has a "use client"; at the top @@ -3421,7 +3421,7 @@ const LinkerGraph = struct { files.items(.distance_from_entry_point), file.distance_from_entry_point, ); - this.stable_source_indices = @ptrCast([]const u32, stable_source_indices); + this.stable_source_indices = @as([]const u32, @ptrCast(stable_source_indices)); } { @@ -3442,7 +3442,7 @@ const LinkerGraph = struct { } if (count > 0) { - try const_values.ensureTotalCapacity(this.allocator, @truncate(u32, count)); + try const_values.ensureTotalCapacity(this.allocator, @as(u32, @truncate(count))); for (this.ast.items(.const_values)) |const_value| { for (const_value.keys(), const_value.values()) |key, value| { const_values.putAssumeCapacityNoClobber(key, value); @@ -3612,7 +3612,7 @@ const LinkerContext = struct { source.contents, // We don't support sourcemaps for source files with more than 2^31 lines - @intCast(i32, @truncate(u31, approximate_line_count)), + @as(i32, @intCast(@as(u31, @truncate(approximate_line_count)))), ); } @@ -3695,8 +3695,8 @@ const LinkerContext = struct { ) void { this.source_maps.line_offset_wait_group.init(); this.source_maps.quoted_contents_wait_group.init(); - this.source_maps.line_offset_wait_group.counter = @truncate(u32, reachable.len); - this.source_maps.quoted_contents_wait_group.counter = @truncate(u32, reachable.len); + this.source_maps.line_offset_wait_group.counter = @as(u32, @truncate(reachable.len)); + this.source_maps.quoted_contents_wait_group.counter = @as(u32, @truncate(reachable.len)); this.source_maps.line_offset_tasks = this.allocator.alloc(SourceMapData.Task, reachable.len) catch unreachable; this.source_maps.quoted_contents_tasks = this.allocator.alloc(SourceMapData.Task, reachable.len) catch unreachable; @@ -3724,7 +3724,7 @@ const LinkerContext = struct { } pub fn scheduleTasks(this: *LinkerContext, batch: ThreadPoolLib.Batch) void { - _ = this.pending_task_count.fetchAdd(@truncate(u32, batch.len), .Monotonic); + _ = this.pending_task_count.fetchAdd(@as(u32, @truncate(batch.len)), .Monotonic); this.parse_graph.pool.pool.schedule(batch); } @@ -3748,7 +3748,7 @@ const LinkerContext = struct { ); if (this.options.source_maps != .none) { - this.computeDataForSourceMap(@ptrCast([]Index.Int, reachable)); + this.computeDataForSourceMap(@as([]Index.Int, @ptrCast(reachable))); } if (comptime FeatureFlags.help_catch_memory_issues) { @@ -3815,7 +3815,7 @@ const LinkerContext = struct { // Create chunks for entry points for (entry_source_indices, 0..) |source_index, entry_id_| { - const entry_bit = @truncate(Chunk.EntryPoint.ID, entry_id_); + const entry_bit = @as(Chunk.EntryPoint.ID, @truncate(entry_id_)); var entry_bits = &this.graph.files.items(.entry_bits)[source_index]; entry_bits.set(entry_bit); @@ -3844,7 +3844,7 @@ const LinkerContext = struct { allocator: std.mem.Allocator, source_id: u32, pub fn next(c: *@This(), chunk_id: usize) void { - _ = c.chunks[chunk_id].files_with_parts_in_chunk.getOrPut(c.allocator, @truncate(u32, c.source_id)) catch unreachable; + _ = c.chunks[chunk_id].files_with_parts_in_chunk.getOrPut(c.allocator, @as(u32, @truncate(c.source_id))) catch unreachable; } }; @@ -3871,7 +3871,7 @@ const LinkerContext = struct { }; } - _ = js_chunk_entry.value_ptr.files_with_parts_in_chunk.getOrPut(this.allocator, @truncate(u32, source_index.get())) catch unreachable; + _ = js_chunk_entry.value_ptr.files_with_parts_in_chunk.getOrPut(this.allocator, @as(u32, @truncate(source_index.get()))) catch unreachable; } else { var handler = Handler{ .chunks = js_chunks.values(), @@ -3893,7 +3893,7 @@ const LinkerContext = struct { // to look up the path for this chunk to use with the import. for (chunks, 0..) |*chunk, chunk_id| { if (chunk.entry_point.is_entry_point) { - entry_point_chunk_indices[chunk.entry_point.source_index] = @truncate(u32, chunk_id); + entry_point_chunk_indices[chunk.entry_point.source_index] = @as(u32, @truncate(chunk_id)); } } @@ -4068,7 +4068,7 @@ const LinkerContext = struct { const records = v.import_records[source_index].slice(); for (parts, 0..) |part, part_index_| { - const part_index = @truncate(u32, part_index_); + const part_index = @as(u32, @truncate(part_index_)); const is_part_in_this_chunk = is_file_in_chunk and part.is_live; for (part.import_record_indices.slice()) |record_id| { const record: *const ImportRecord = &records[record_id]; @@ -4109,7 +4109,7 @@ const LinkerContext = struct { .{ .source_index = Index.init(source_index), .part_index_begin = 0, - .part_index_end = @truncate(u32, parts.len), + .part_index_end = @as(u32, @truncate(parts.len)), }, ) catch unreachable; } @@ -4994,7 +4994,7 @@ const LinkerContext = struct { continue; } - std.debug.assert(@intCast(usize, other_id) < this.graph.meta.len); + std.debug.assert(@as(usize, @intCast(other_id)) < this.graph.meta.len); const other_flags = flags[other_id]; const other_export_kind = exports_kind[other_id]; const other_source_index = other_id; @@ -5004,7 +5004,7 @@ const LinkerContext = struct { const wrapper_ref = wrapper_refs[other_id]; this.graph.generateSymbolImportAndUse( source_index, - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), wrapper_ref, 1, Index.source(other_source_index), @@ -5025,7 +5025,7 @@ const LinkerContext = struct { if (other_flags.wrap == .esm and kind != .stmt) { this.graph.generateSymbolImportAndUse( source_index, - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), this.graph.ast.items(.exports_ref)[other_id], 1, Index.source(other_source_index), @@ -5053,7 +5053,7 @@ const LinkerContext = struct { // dynamic export fallback object doesn't end up being needed. this.graph.generateSymbolImportAndUse( source_index, - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), this.graph.ast.items(.exports_ref)[other_id], 1, Index.source(other_source_index), @@ -5102,7 +5102,7 @@ const LinkerContext = struct { if (record.source_index.isValid()) { var other_source_index = record.source_index.get(); const other_id = other_source_index; - std.debug.assert(@intCast(usize, other_id) < this.graph.meta.len); + std.debug.assert(@as(usize, @intCast(other_id)) < this.graph.meta.len); const other_export_kind = exports_kind[other_id]; if (other_source_index != source_index and other_export_kind.isDynamic()) { happens_at_runtime = true; @@ -5115,7 +5115,7 @@ const LinkerContext = struct { // in a different chunk than this export star. this.graph.generateSymbolImportAndUse( source_index, - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), this.graph.ast.items(.exports_ref)[other_id], 1, Index.source(other_source_index), @@ -5127,7 +5127,7 @@ const LinkerContext = struct { // Depend on this file's "exports" object for the first argument to "__reExport" this.graph.generateSymbolImportAndUse( source_index, - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), this.graph.ast.items(.exports_ref)[id], 1, Index.source(source_index), @@ -5523,9 +5523,9 @@ const LinkerContext = struct { const other_parts = c.topLevelSymbolsToParts(id, ref); for (other_parts) |other_part_index| { - var local = local_dependencies.getOrPut(@intCast(u32, other_part_index)) catch unreachable; + var local = local_dependencies.getOrPut(@as(u32, @intCast(other_part_index))) catch unreachable; if (!local.found_existing or local.value_ptr.* != part_index) { - local.value_ptr.* = @intCast(u32, part_index); + local.value_ptr.* = @as(u32, @intCast(part_index)); // note: if we crash on append, it is due to threadlocal heaps in mimalloc part.dependencies.push( allocator_, @@ -5539,7 +5539,7 @@ const LinkerContext = struct { // Also map from imports to parts that use them if (named_imports.getPtr(ref)) |existing| { - existing.local_parts_with_uses.push(allocator_, @intCast(u32, part_index)) catch unreachable; + existing.local_parts_with_uses.push(allocator_, @as(u32, @intCast(part_index))) catch unreachable; } } } @@ -5706,7 +5706,7 @@ const LinkerContext = struct { // the same name should already be marked as all being in a single // chunk. In that case this will overwrite the same value below which // is fine. - deps.symbols.assignChunkIndex(part.declared_symbols, @truncate(u32, chunk_index)); + deps.symbols.assignChunkIndex(part.declared_symbols, @as(u32, @truncate(chunk_index))); const used_refs = part.symbol_uses.keys(); @@ -5861,7 +5861,7 @@ const LinkerContext = struct { } _ = js.imports_from_other_chunks.getOrPutValue( c.allocator, - @truncate(u32, other_chunk_index), + @as(u32, @truncate(other_chunk_index)), CrossChunkImport.Item.List{}, ) catch unreachable; } @@ -5913,7 +5913,7 @@ const LinkerContext = struct { &stable_ref_list, ); var clause_items = BabyList(js_ast.ClauseItem).initCapacity(c.allocator, stable_ref_list.items.len) catch unreachable; - clause_items.len = @truncate(u32, stable_ref_list.items.len); + clause_items.len = @as(u32, @truncate(stable_ref_list.items.len)); repr.exports_to_other_chunks.ensureUnusedCapacity(c.allocator, stable_ref_list.items.len) catch unreachable; r.clearRetainingCapacity(); @@ -5977,7 +5977,7 @@ const LinkerContext = struct { for (cross_chunk_imports_input) |cross_chunk_import| { switch (c.options.output_format) { .esm => { - const import_record_index = @intCast(u32, cross_chunk_imports.len); + const import_record_index = @as(u32, @intCast(cross_chunk_imports.len)); var clauses = std.ArrayList(js_ast.ClauseItem).initCapacity(c.allocator, cross_chunk_import.sorted_import_items.len) catch unreachable; for (cross_chunk_import.sorted_import_items.slice()) |item| { @@ -6680,7 +6680,7 @@ const LinkerContext = struct { chunk.intermediate_output = c.breakOutputIntoPieces( worker.allocator, &j, - @truncate(u32, ctx.chunks.len), + @as(u32, @truncate(ctx.chunks.len)), ) catch @panic("Unhandled out of memory error in breakOutputIntoPieces()"); // TODO: meta contents @@ -6778,7 +6778,7 @@ const LinkerContext = struct { var res = try source_index_to_sources_index.getOrPut(current_source_index); if (res.found_existing) continue; res.value_ptr.* = next_source_index; - const source_index = @intCast(i32, next_source_index); + const source_index = @as(i32, @intCast(next_source_index)); next_source_index += 1; var start_state = sourcemap.SourceMapState{ @@ -8174,7 +8174,7 @@ const LinkerContext = struct { // Add all other parts in this chunk for (parts, 0..) |part, index_| { - const index = part_range.part_index_begin + @truncate(u32, index_); + const index = part_range.part_index_begin + @as(u32, @truncate(index_)); if (!part.is_live) { // Skip the part if it's not in this chunk continue; @@ -8669,7 +8669,7 @@ const LinkerContext = struct { wait_group.deinit(); c.allocator.destroy(wait_group); } - wait_group.counter = @truncate(u32, chunks.len); + wait_group.counter = @as(u32, @truncate(chunks.len)); var ctx = GenerateChunkCtx{ .chunk = &chunks[0], .wg = wait_group, .c = c, .chunks = chunks }; try c.parse_graph.pool.pool.doPtr(c.allocator, wait_group, ctx, generateJSRenamer, chunks); } @@ -8708,7 +8708,7 @@ const LinkerContext = struct { for (chunk.content.javascript.parts_in_chunk_in_order, 0..) |part_range, i| { remaining_part_ranges[0] = .{ .part_range = part_range, - .i = @truncate(u32, i), + .i = @as(u32, @truncate(i)), .task = ThreadPoolLib.Task{ .callback = &generateCompileResultForJSChunk, }, @@ -8719,7 +8719,7 @@ const LinkerContext = struct { remaining_part_ranges = remaining_part_ranges[1..]; } } - wait_group.counter = @truncate(u32, total_count); + wait_group.counter = @as(u32, @truncate(total_count)); c.parse_graph.pool.pool.schedule(batch); wait_group.wait(); } @@ -8736,7 +8736,7 @@ const LinkerContext = struct { debug(" START {d} postprocess chunks", .{chunks.len}); defer debug(" DONE {d} postprocess chunks", .{chunks.len}); wait_group.init(); - wait_group.counter = @truncate(u32, chunks.len); + wait_group.counter = @as(u32, @truncate(chunks.len)); try c.parse_graph.pool.pool.doPtr(c.allocator, wait_group, chunk_contexts[0], generateChunkJS, chunks); } @@ -8783,14 +8783,14 @@ const LinkerContext = struct { defer sorted_client_component_ids.deinit(); while (react_client_components_iterator.next()) |source_index| { if (!c.graph.files_live.isSet(source_index)) continue; - sorted_client_component_ids.appendAssumeCapacity(@intCast(u32, source_index)); + sorted_client_component_ids.appendAssumeCapacity(@as(u32, @intCast(source_index))); } var sorted_server_component_ids = std.ArrayList(u32).initCapacity(c.allocator, server_modules.capacity) catch unreachable; defer sorted_server_component_ids.deinit(); while (react_server_components_iterator.next()) |source_index| { if (!c.graph.files_live.isSet(source_index)) continue; - sorted_server_component_ids.appendAssumeCapacity(@intCast(u32, source_index)); + sorted_server_component_ids.appendAssumeCapacity(@as(u32, @intCast(source_index))); } const Sorter = struct { @@ -8817,7 +8817,7 @@ const LinkerContext = struct { var chunk: *Chunk = brk2: { for (chunks) |*chunk_| { if (!chunk_.entry_point.is_entry_point) continue; - if (chunk_.entry_point.source_index == @intCast(u32, component_source_index)) { + if (chunk_.entry_point.source_index == @as(u32, @intCast(component_source_index))) { break :brk2 chunk_; } @@ -8835,8 +8835,8 @@ const LinkerContext = struct { const named_exports = all_named_exports[source_index_for_named_exports].keys(); try export_names.ensureUnusedCapacity(named_exports.len); - const exports_len = @intCast(u32, named_exports.len); - const exports_start = @intCast(u32, export_names.items.len); + const exports_len = @as(u32, @intCast(named_exports.len)); + const exports_start = @as(u32, @intCast(export_names.items.len)); grow_length += chunk.final_rel_path.len; @@ -8844,8 +8844,8 @@ const LinkerContext = struct { for (named_exports) |export_name| { try export_names.append(Api.StringPointer{ - .offset = @intCast(u32, bytes.items.len + grow_length), - .length = @intCast(u32, export_name.len), + .offset = @as(u32, @intCast(bytes.items.len + grow_length)), + .length = @as(u32, @intCast(export_name.len)), }); grow_length += export_name.len; } @@ -8853,15 +8853,15 @@ const LinkerContext = struct { try bytes.ensureUnusedCapacity(grow_length); const input_name = Api.StringPointer{ - .offset = @intCast(u32, bytes.items.len), - .length = @intCast(u32, all_sources[component_source_index].path.pretty.len), + .offset = @as(u32, @intCast(bytes.items.len)), + .length = @as(u32, @intCast(all_sources[component_source_index].path.pretty.len)), }; bytes.appendSliceAssumeCapacity(all_sources[component_source_index].path.pretty); const asset_name = Api.StringPointer{ - .offset = @intCast(u32, bytes.items.len), - .length = @intCast(u32, chunk.final_rel_path.len), + .offset = @as(u32, @intCast(bytes.items.len)), + .length = @as(u32, @intCast(chunk.final_rel_path.len)), }; bytes.appendSliceAssumeCapacity(chunk.final_rel_path); @@ -9010,7 +9010,7 @@ const LinkerContext = struct { .hash = chunk.isolated_hash, .loader = .js, .input_path = input_path, - .display_size = @truncate(u32, display_size), + .display_size = @as(u32, @truncate(display_size)), .output_kind = if (chunk.entry_point.is_entry_point) c.graph.files.items(.entry_point_kind)[chunk.entry_point.source_index].OutputKind() else @@ -9019,7 +9019,7 @@ const LinkerContext = struct { .output_path = try bun.default_allocator.dupe(u8, chunk.final_rel_path), .is_executable = chunk.is_executable, .source_map_index = if (sourcemap_output_file != null) - @truncate(u32, output_files.items.len + 1) + @as(u32, @truncate(output_files.items.len + 1)) else null, }, @@ -9163,13 +9163,13 @@ const LinkerContext = struct { .buffer = .{ .ptr = @constCast(output_source_map.ptr), // TODO: handle > 4 GB files - .len = @truncate(u32, output_source_map.len), - .byte_len = @truncate(u32, output_source_map.len), + .len = @as(u32, @truncate(output_source_map.len)), + .byte_len = @as(u32, @truncate(output_source_map.len)), }, }, }, .encoding = .buffer, - .dirfd = @intCast(bun.FileDescriptor, root_dir.dir.fd), + .dirfd = @as(bun.FileDescriptor, @intCast(root_dir.dir.fd)), .file = .{ .path = JSC.Node.PathLike{ .string = JSC.PathString.init(source_map_final_rel_path), @@ -9196,7 +9196,7 @@ const LinkerContext = struct { .loader = .json, .input_loader = .file, .output_kind = .sourcemap, - .size = @truncate(u32, output_source_map.len), + .size = @as(u32, @truncate(output_source_map.len)), .data = .{ .saved = 0, }, @@ -9231,15 +9231,15 @@ const LinkerContext = struct { .buffer = .{ .ptr = @constCast(code_result.buffer.ptr), // TODO: handle > 4 GB files - .len = @truncate(u32, code_result.buffer.len), - .byte_len = @truncate(u32, code_result.buffer.len), + .len = @as(u32, @truncate(code_result.buffer.len)), + .byte_len = @as(u32, @truncate(code_result.buffer.len)), }, }, }, .encoding = .buffer, .mode = if (chunk.is_executable) 0o755 else 0o644, - .dirfd = @intCast(bun.FileDescriptor, root_dir.dir.fd), + .dirfd = @as(bun.FileDescriptor, @intCast(root_dir.dir.fd)), .file = .{ .path = JSC.Node.PathLike{ .string = JSC.PathString.init(rel_path), @@ -9275,11 +9275,11 @@ const LinkerContext = struct { .chunk, .loader = .js, .source_map_index = if (source_map_output_file != null) - @truncate(u32, output_files.items.len + 1) + @as(u32, @truncate(output_files.items.len + 1)) else null, - .size = @truncate(u32, code_result.buffer.len), - .display_size = @truncate(u32, display_size), + .size = @as(u32, @truncate(code_result.buffer.len)), + .display_size = @as(u32, @truncate(display_size)), .is_executable = chunk.is_executable, .data = .{ .saved = 0, @@ -9302,13 +9302,13 @@ const LinkerContext = struct { .buffer = .{ .ptr = @constCast(react_client_components_manifest.ptr), // TODO: handle > 4 GB files - .len = @truncate(u32, react_client_components_manifest.len), - .byte_len = @truncate(u32, react_client_components_manifest.len), + .len = @as(u32, @truncate(react_client_components_manifest.len)), + .byte_len = @as(u32, @truncate(react_client_components_manifest.len)), }, }, }, .encoding = .buffer, - .dirfd = @intCast(bun.FileDescriptor, root_dir.dir.fd), + .dirfd = @as(bun.FileDescriptor, @intCast(root_dir.dir.fd)), .file = .{ .path = JSC.Node.PathLike{ .string = JSC.PathString.init(components_manifest_path), @@ -9337,7 +9337,7 @@ const LinkerContext = struct { .loader = .file, .input_loader = .file, .output_kind = .@"component-manifest", - .size = @truncate(u32, react_client_components_manifest.len), + .size = @as(u32, @truncate(react_client_components_manifest.len)), .input_path = bun.default_allocator.dupe(u8, components_manifest_path) catch unreachable, .output_path = bun.default_allocator.dupe(u8, components_manifest_path) catch unreachable, }, @@ -9378,13 +9378,13 @@ const LinkerContext = struct { .buffer = .{ .ptr = @constCast(bytes.ptr), // TODO: handle > 4 GB files - .len = @truncate(u32, bytes.len), - .byte_len = @truncate(u32, bytes.len), + .len = @as(u32, @truncate(bytes.len)), + .byte_len = @as(u32, @truncate(bytes.len)), }, }, }, .encoding = .buffer, - .dirfd = @intCast(bun.FileDescriptor, root_dir.dir.fd), + .dirfd = @as(bun.FileDescriptor, @intCast(root_dir.dir.fd)), .file = .{ .path = JSC.Node.PathLike{ .string = JSC.PathString.init(src.dest_path), @@ -9408,7 +9408,7 @@ const LinkerContext = struct { dest.value = .{ .saved = .{}, }; - dest.size = @truncate(u32, bytes.len); + dest.size = @as(u32, @truncate(bytes.len)); } } } @@ -9601,7 +9601,7 @@ const LinkerContext = struct { entry_point_kinds[id].isEntryPoint())) { _ = c.markPartLiveForTreeShaking( - @intCast(u32, part_index), + @as(u32, @intCast(part_index)), id, side_effects, parts, @@ -10504,14 +10504,14 @@ const LinkerContext = struct { }, } - output_piece_index.index = @intCast(u30, index); + output_piece_index.index = @as(u30, @intCast(index)); // If we're at the end, generate one final piece if (boundary == invalid_boundary) { try pieces.append(Chunk.OutputPiece{ .index = output_piece_index, .data_ptr = output.ptr, - .data_len = @truncate(u32, output.len), + .data_len = @as(u32, @truncate(output.len)), }); break; } @@ -10522,7 +10522,7 @@ const LinkerContext = struct { .data_ptr = output.ptr, // sliced this way to panic if out of bounds - .data_len = @truncate(u32, output[0..boundary].len), + .data_len = @as(u32, @truncate(output[0..boundary].len)), }); output = output[boundary + prefix.len + 9 ..]; } @@ -11330,12 +11330,12 @@ const ShadowEntryPoint = struct { , .{ path.pretty, - ImportsFormatter{ .ctx = this.ctx, .source_index = @intCast(Index.Int, source_index), .pretty = path.pretty }, + ImportsFormatter{ .ctx = this.ctx, .source_index = @as(Index.Int, @intCast(source_index)), .pretty = path.pretty }, bun.fmt.hexIntUpper(bun.hash(path.pretty)), - ExportsFormatter{ .ctx = this.ctx, .source_index = @intCast(Index.Int, source_index), .pretty = path.pretty, .shadow = this.shadow }, + ExportsFormatter{ .ctx = this.ctx, .source_index = @as(Index.Int, @intCast(source_index)), .pretty = path.pretty, .shadow = this.shadow }, }, ) catch unreachable; - this.resolved_source_indices.append(@truncate(Index.Int, source_index)) catch unreachable; + this.resolved_source_indices.append(@as(Index.Int, @truncate(source_index))) catch unreachable; } }; const ImportsFormatter = struct { diff --git a/src/bundler/entry_points.zig b/src/bundler/entry_points.zig index abc7eb602..cf961817a 100644 --- a/src/bundler/entry_points.zig +++ b/src/bundler/entry_points.zig @@ -264,13 +264,13 @@ pub const MacroEntryPoint = struct { const fmt = bun.fmt.hexIntLower(hash); const specifier = std.fmt.bufPrint(buf, js_ast.Macro.namespaceWithColon ++ "//{any}.js", .{fmt}) catch unreachable; - len.* = @truncate(u32, specifier.len); + len.* = @as(u32, @truncate(specifier.len)); return generateIDFromSpecifier(specifier); } pub fn generateIDFromSpecifier(specifier: string) i32 { - return @bitCast(i32, @truncate(u32, bun.hash(specifier))); + return @as(i32, @bitCast(@as(u32, @truncate(bun.hash(specifier))))); } pub fn generate( @@ -68,7 +68,7 @@ pub fn lstat_absolute(path: [:0]const u8) !Stat { const ctime = st.ctime(); return Stat{ .inode = st.ino, - .size = @bitCast(u64, st.size), + .size = @as(u64, @bitCast(st.size)), .mode = st.mode, .kind = switch (builtin.os.tag) { .wasi => switch (st.filetype) { @@ -142,16 +142,16 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest const out_handle = try std.os.openatZ(to_dir, destination, std.os.O.WRONLY | std.os.O.CREAT | std.os.O.CLOEXEC, 0o022); defer std.os.close(out_handle); if (comptime Environment.isLinux) { - _ = std.os.system.fallocate(out_handle, 0, 0, @intCast(i64, stat_.size)); - _ = try std.os.sendfile(out_handle, in_handle, 0, @intCast(usize, stat_.size), &[_]std.os.iovec_const{}, &[_]std.os.iovec_const{}, 0); + _ = std.os.system.fallocate(out_handle, 0, 0, @as(i64, @intCast(stat_.size))); + _ = try std.os.sendfile(out_handle, in_handle, 0, @as(usize, @intCast(stat_.size)), &[_]std.os.iovec_const{}, &[_]std.os.iovec_const{}, 0); } else { if (comptime Environment.isMac) { // if this fails, it doesn't matter // we only really care about read & write succeeding PlatformSpecific.preallocate_file( out_handle, - @intCast(std.os.off_t, 0), - @intCast(std.os.off_t, stat_.size), + @as(std.os.off_t, @intCast(0)), + @as(std.os.off_t, @intCast(stat_.size)), ) catch {}; } @@ -350,15 +350,15 @@ pub fn getSystemLoadavg() [3]f64 { } pub fn getProcessPriority(pid_: i32) i32 { - const pid = @intCast(c_uint, pid_); + const pid = @as(c_uint, @intCast(pid_)); return get_process_priority(pid); } pub fn setProcessPriority(pid_: i32, priority_: i32) std.c.E { if (pid_ < 0) return .SRCH; - const pid = @intCast(c_uint, pid_); - const priority = @intCast(c_int, priority_); + const pid = @as(c_uint, @intCast(pid_)); + const priority = @as(c_int, @intCast(priority_)); const code: i32 = set_process_priority(pid, priority); @@ -431,9 +431,9 @@ pub fn dlsymWithHandle(comptime Type: type, comptime name: [:0]const u8, comptim pub fn dlsym(comptime Type: type, comptime name: [:0]const u8) ?Type { const handle_getter = struct { const RTLD_DEFAULT = if (bun.Environment.isMac) - @ptrFromInt(?*anyopaque, @bitCast(usize, @as(isize, -2))) + @as(?*anyopaque, @ptrFromInt(@as(usize, @bitCast(@as(isize, -2))))) else - @ptrFromInt(?*anyopaque, @as(usize, 0)); + @as(?*anyopaque, @ptrFromInt(@as(usize, 0))); pub fn getter() ?*anyopaque { return RTLD_DEFAULT; diff --git a/src/cli.zig b/src/cli.zig index 0c093681a..1debd9254 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -849,7 +849,7 @@ pub const HelpCommand = struct { \\ ; - var rand_state = std.rand.DefaultPrng.init(@intCast(u64, @max(std.time.milliTimestamp(), 0))); + var rand_state = std.rand.DefaultPrng.init(@as(u64, @intCast(@max(std.time.milliTimestamp(), 0)))); const rand = rand_state.random(); const package_add_i = rand.uintAtMost(usize, packages_to_add_filler.len - 1); const package_remove_i = rand.uintAtMost(usize, packages_to_remove_filler.len - 1); diff --git a/src/cli/add_completions.zig b/src/cli/add_completions.zig index 2e7d6b4ea..1267ea159 100644 --- a/src/cli/add_completions.zig +++ b/src/cli/add_completions.zig @@ -66,7 +66,7 @@ pub const index: Index = if (Environment.isDebug) Index.initFill(&.{"OOMWorkArou break; } } - array.set(@enumFromInt(FirstLetter, i), &record); + array.set(@as(FirstLetter, @enumFromInt(i)), &record); @setEvalBranchQuota(999999); i = next_i; diff --git a/src/cli/build_command.zig b/src/cli/build_command.zig index ef99f7765..bb4eb4313 100644 --- a/src/cli/build_command.zig +++ b/src/cli/build_command.zig @@ -345,7 +345,7 @@ pub const BuildCommand = struct { this_bundler.options.public_path, outfile, ); - const compiled_elapsed = @divTrunc(@truncate(i64, std.time.nanoTimestamp() - bundled_end), @as(i64, std.time.ns_per_ms)); + const compiled_elapsed = @divTrunc(@as(i64, @truncate(std.time.nanoTimestamp() - bundled_end)), @as(i64, std.time.ns_per_ms)); const compiled_elapsed_digit_count: isize = switch (compiled_elapsed) { 0...9 => 3, 10...99 => 2, @@ -355,9 +355,9 @@ pub const BuildCommand = struct { }; const padding_buf = [_]u8{' '} ** 16; - Output.pretty("{s}", .{padding_buf[0..@intCast(usize, compiled_elapsed_digit_count)]}); + Output.pretty("{s}", .{padding_buf[0..@as(usize, @intCast(compiled_elapsed_digit_count))]}); - Output.printElapsedStdoutTrim(@floatFromInt(f64, compiled_elapsed)); + Output.printElapsedStdoutTrim(@as(f64, @floatFromInt(compiled_elapsed))); Output.prettyln(" <green>compile<r> <b><blue>{s}<r>", .{ outfile, @@ -407,14 +407,14 @@ pub const BuildCommand = struct { .buffer = .{ .ptr = @constCast(value.bytes.ptr), // TODO: handle > 4 GB files - .len = @truncate(u32, value.bytes.len), - .byte_len = @truncate(u32, value.bytes.len), + .len = @as(u32, @truncate(value.bytes.len)), + .byte_len = @as(u32, @truncate(value.bytes.len)), }, }, }, .encoding = .buffer, .mode = if (f.is_executable) 0o755 else 0o644, - .dirfd = @intCast(bun.FileDescriptor, root_dir.dir.fd), + .dirfd = @as(bun.FileDescriptor, @intCast(root_dir.dir.fd)), .file = .{ .path = JSC.Node.PathLike{ .string = JSC.PathString.init(rel_path), @@ -451,7 +451,7 @@ pub const BuildCommand = struct { try writer.writeByteNTimes(' ', 2); try writer.writeAll(rel_path); try writer.writeByteNTimes(' ', padding_count); - const size = @floatFromInt(f64, f.size) / 1000.0; + const size = @as(f64, @floatFromInt(f.size)) / 1000.0; try std.fmt.formatFloatDecimal(size, .{ .precision = 2 }, writer); try writer.writeAll(" KB\n"); } @@ -461,7 +461,7 @@ pub const BuildCommand = struct { if (write_summary and log.errors == 0) { Output.prettyln("\n", .{}); Output.printElapsedStdoutTrim( - @floatFromInt(f64, (@divTrunc(@truncate(i64, std.time.nanoTimestamp() - bun.CLI.start_time), @as(i64, std.time.ns_per_ms)))), + @as(f64, @floatFromInt((@divTrunc(@as(i64, @truncate(std.time.nanoTimestamp() - bun.CLI.start_time)), @as(i64, std.time.ns_per_ms))))), ); if (this_bundler.options.transform_only) { Output.prettyln(" <green>transpile<r>", .{}); @@ -490,10 +490,10 @@ fn exitOrWatch(code: u8, watch: bool) void { fn printSummary(bundled_end: i128, minify_duration: u64, minified: bool, input_code_length: usize, reachable_file_count: usize, output_files: []const options.OutputFile) void { const padding_buf = [_]u8{' '} ** 16; - const bundle_until_now = @divTrunc(@truncate(i64, bundled_end - bun.CLI.start_time), @as(i64, std.time.ns_per_ms)); + const bundle_until_now = @divTrunc(@as(i64, @truncate(bundled_end - bun.CLI.start_time)), @as(i64, std.time.ns_per_ms)); const bundle_elapsed = if (minified) - bundle_until_now - @intCast(i64, @truncate(u63, minify_duration)) + bundle_until_now - @as(i64, @intCast(@as(u63, @truncate(minify_duration)))) else bundle_until_now; @@ -505,8 +505,8 @@ fn printSummary(bundled_end: i128, minify_duration: u64, minified: bool, input_c else => 0, }; if (minified) { - Output.pretty("{s}", .{padding_buf[0..@intCast(usize, minified_digit_count)]}); - Output.printElapsedStdoutTrim(@floatFromInt(f64, minify_duration)); + Output.pretty("{s}", .{padding_buf[0..@as(usize, @intCast(minified_digit_count))]}); + Output.printElapsedStdoutTrim(@as(f64, @floatFromInt(minify_duration))); const output_size = brk: { var total_size: u64 = 0; for (output_files) |f| { @@ -519,19 +519,19 @@ fn printSummary(bundled_end: i128, minify_duration: u64, minified: bool, input_c }; // this isn't an exact size // we may inject sourcemaps or comments or import paths - const delta: i64 = @truncate(i64, @intCast(i65, input_code_length) - @intCast(i65, output_size)); + const delta: i64 = @as(i64, @truncate(@as(i65, @intCast(input_code_length)) - @as(i65, @intCast(output_size)))); if (delta > 1024) { Output.prettyln( " <green>minify<r> -{} <d>(estimate)<r>", .{ - bun.fmt.size(@intCast(usize, delta)), + bun.fmt.size(@as(usize, @intCast(delta))), }, ); } else if (-delta > 1024) { Output.prettyln( " <b>minify<r> +{} <d>(estimate)<r>", .{ - bun.fmt.size(@intCast(usize, -delta)), + bun.fmt.size(@as(usize, @intCast(-delta))), }, ); } else { @@ -547,8 +547,8 @@ fn printSummary(bundled_end: i128, minify_duration: u64, minified: bool, input_c else => 0, }; - Output.pretty("{s}", .{padding_buf[0..@intCast(usize, bundle_elapsed_digit_count)]}); - Output.printElapsedStdoutTrim(@floatFromInt(f64, bundle_elapsed)); + Output.pretty("{s}", .{padding_buf[0..@as(usize, @intCast(bundle_elapsed_digit_count))]}); + Output.printElapsedStdoutTrim(@as(f64, @floatFromInt(bundle_elapsed))); Output.prettyln( " <green>bundle<r> {d} modules", .{ diff --git a/src/cli/bunx_command.zig b/src/cli/bunx_command.zig index 365f2c9ed..84c7e1bba 100644 --- a/src/cli/bunx_command.zig +++ b/src/cli/bunx_command.zig @@ -365,10 +365,10 @@ pub const BunxCommand = struct { } }, .Signal => |signal| { - Global.exit(@truncate(u7, signal)); + Global.exit(@as(u7, @truncate(signal))); }, .Stopped => |signal| { - Global.exit(@truncate(u7, signal)); + Global.exit(@as(u7, @truncate(signal))); }, // shouldn't happen else => { diff --git a/src/cli/create_command.zig b/src/cli/create_command.zig index d536c4750..aff34e9b4 100644 --- a/src/cli/create_command.zig +++ b/src/cli/create_command.zig @@ -104,7 +104,7 @@ fn execTask(allocator: std.mem.Allocator, task_: string, cwd: string, _: string, count += 1; } - const npm_args = 2 * @intCast(usize, @intFromBool(npm_client != null)); + const npm_args = 2 * @as(usize, @intCast(@intFromBool(npm_client != null))); const total = count + npm_args; var argv = allocator.alloc(string, total) catch return; var proc: std.ChildProcess = undefined; @@ -491,7 +491,7 @@ pub const CreateCommand = struct { [1]Archive.Plucker{undefined}; var archive_context = Archive.Context{ - .pluckers = pluckers[0..@intCast(usize, @intFromBool(!create_options.skip_package_json))], + .pluckers = pluckers[0..@as(usize, @intCast(@intFromBool(!create_options.skip_package_json)))], .all_files = undefined, .overwrite_list = bun.StringArrayHashMap(void).init(ctx.allocator), }; @@ -736,7 +736,7 @@ pub const CreateCommand = struct { if (package_json_expr.asProperty("name")) |name_expr| { if (name_expr.expr.data == .e_string) { var basename = std.fs.path.basename(destination); - name_expr.expr.data.e_string.data = @ptrFromInt([*]u8, @intFromPtr(basename.ptr))[0..basename.len]; + name_expr.expr.data.e_string.data = @as([*]u8, @ptrFromInt(@intFromPtr(basename.ptr)))[0..basename.len]; } } @@ -778,7 +778,7 @@ pub const CreateCommand = struct { const key = list[i].key.?.data.e_string.data; const do_prune = packages.has(key); - prune_count += @intCast(u16, @intFromBool(do_prune)); + prune_count += @as(u16, @intCast(@intFromBool(do_prune))); if (!do_prune) { list[out_i] = list[i]; @@ -902,14 +902,14 @@ pub const CreateCommand = struct { var needs_to_inject_dev_dependency = needs.react_refresh or needs.bun_macro_relay; var needs_to_inject_dependency = needs.bun_framework_next; - const dependencies_to_inject_count = @intCast(usize, @intFromBool(needs.bun_framework_next)); + const dependencies_to_inject_count = @as(usize, @intCast(@intFromBool(needs.bun_framework_next))); - const dev_dependencies_to_inject_count = @intCast(usize, @intFromBool(needs.react_refresh)) + - @intCast(usize, @intFromBool(needs.bun_macro_relay)); + const dev_dependencies_to_inject_count = @as(usize, @intCast(@intFromBool(needs.react_refresh))) + + @as(usize, @intCast(@intFromBool(needs.bun_macro_relay))); - const new_properties_count = @intCast(usize, @intFromBool(needs_to_inject_dev_dependency and dev_dependencies == null)) + - @intCast(usize, @intFromBool(needs_to_inject_dependency and dependencies == null)) + - @intCast(usize, @intFromBool(needs_bun_prop)); + const new_properties_count = @as(usize, @intCast(@intFromBool(needs_to_inject_dev_dependency and dev_dependencies == null))) + + @as(usize, @intCast(@intFromBool(needs_to_inject_dependency and dependencies == null))) + + @as(usize, @intCast(@intFromBool(needs_bun_prop))); if (new_properties_count != 0) { try properties_list.ensureUnusedCapacity(new_properties_count); @@ -1835,11 +1835,11 @@ pub const Example = struct { Headers.Kv{ .name = Api.StringPointer{ .offset = 0, - .length = @intCast(u32, "Access-Token".len), + .length = @as(u32, @intCast("Access-Token".len)), }, .value = Api.StringPointer{ - .offset = @intCast(u32, "Access-Token".len), - .length = @intCast(u32, headers_buf.len - "Access-Token".len), + .offset = @as(u32, @intCast("Access-Token".len)), + .length = @as(u32, @intCast(headers_buf.len - "Access-Token".len)), }, }, ); diff --git a/src/cli/package_manager_command.zig b/src/cli/package_manager_command.zig index 0d92c4232..4408568e0 100644 --- a/src/cli/package_manager_command.zig +++ b/src/cli/package_manager_command.zig @@ -222,7 +222,7 @@ pub const PackageManagerCommand = struct { const sorted_dependencies = try ctx.allocator.alloc(DependencyID, root_deps.len); defer ctx.allocator.free(sorted_dependencies); for (sorted_dependencies, 0..) |*dep, i| { - dep.* = @truncate(DependencyID, root_deps.off + i); + dep.* = @as(DependencyID, @truncate(root_deps.off + i)); } std.sort.block(DependencyID, sorted_dependencies, ByName{ .dependencies = dependencies, diff --git a/src/cli/run_command.zig b/src/cli/run_command.zig index 271d9ecba..44b3935a3 100644 --- a/src/cli/run_command.zig +++ b/src/cli/run_command.zig @@ -414,7 +414,7 @@ pub const RunCommand = struct { var retried = false; if (!strings.endsWithComptime(std.mem.span(std.os.argv[0]), "node")) { - var argv0 = @ptrCast([*:0]const u8, optional_bun_path.ptr); + var argv0 = @as([*:0]const u8, @ptrCast(optional_bun_path.ptr)); // if we are already an absolute path, use that // if the user started the application via a shebang, it's likely that the path is absolute already @@ -426,7 +426,7 @@ pub const RunCommand = struct { var self = std.fs.selfExePath(&self_exe_bin_path_buf) catch unreachable; if (self.len > 0) { self.ptr[self.len] = 0; - argv0 = @ptrCast([*:0]const u8, self.ptr); + argv0 = @as([*:0]const u8, @ptrCast(self.ptr)); optional_bun_path.* = self; } } @@ -589,7 +589,7 @@ pub const RunCommand = struct { try new_path.appendSlice(package_json_dir); } - var bin_dir_i: i32 = @intCast(i32, bin_dirs.len) - 1; + var bin_dir_i: i32 = @as(i32, @intCast(bin_dirs.len)) - 1; // Iterate in reverse order // Directories are added to bin_dirs in top-down order // That means the parent-most node_modules/.bin will be first @@ -598,7 +598,7 @@ pub const RunCommand = struct { if (needs_colon) { try new_path.append(':'); } - try new_path.appendSlice(bin_dirs[@intCast(usize, bin_dir_i)]); + try new_path.appendSlice(bin_dirs[@as(usize, @intCast(bin_dir_i))]); } if (needs_colon) { diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index 5314c6e52..75ca900df 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -766,7 +766,7 @@ pub const TestCommand = struct { // https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#grouping-log-lines const file_prefix = if (Output.is_github_action) "::group::" else ""; - vm.main_hash = @truncate(u32, bun.hash(file_path)); + vm.main_hash = @as(u32, @truncate(bun.hash(file_path))); var repeat_count = reporter.repeat_count; var repeat_index: u32 = 0; while (repeat_index < repeat_count) : (repeat_index += 1) { diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index e9d16999d..b8bfd3f73 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -116,7 +116,7 @@ pub const UpgradeCheckerThread = struct { } fn _run(env_loader: *DotEnv.Loader) anyerror!void { - var rand = std.rand.DefaultPrng.init(@intCast(u64, @max(std.time.milliTimestamp(), 0))); + var rand = std.rand.DefaultPrng.init(@as(u64, @intCast(@max(std.time.milliTimestamp(), 0)))); const delay = rand.random().intRangeAtMost(u64, 100, 10000); std.time.sleep(std.time.ns_per_ms * delay); @@ -174,8 +174,8 @@ pub const UpgradeCommand = struct { var header_entries: Headers.Entries = .{}; const accept = Headers.Kv{ - .name = Api.StringPointer{ .offset = 0, .length = @intCast(u32, "Accept".len) }, - .value = Api.StringPointer{ .offset = @intCast(u32, "Accept".len), .length = @intCast(u32, "application/vnd.github.v3+json".len) }, + .name = Api.StringPointer{ .offset = 0, .length = @as(u32, @intCast("Accept".len)) }, + .value = Api.StringPointer{ .offset = @as(u32, @intCast("Accept".len)), .length = @as(u32, @intCast("application/vnd.github.v3+json".len)) }, }; try header_entries.append(allocator, accept); defer if (comptime silent) header_entries.deinit(allocator); @@ -206,11 +206,11 @@ pub const UpgradeCommand = struct { Headers.Kv{ .name = Api.StringPointer{ .offset = accept.value.length + accept.value.offset, - .length = @intCast(u32, "Access-Token".len), + .length = @as(u32, @intCast("Access-Token".len)), }, .value = Api.StringPointer{ - .offset = @intCast(u32, accept.value.length + accept.value.offset + "Access-Token".len), - .length = @intCast(u32, access_token.len), + .offset = @as(u32, @intCast(accept.value.length + accept.value.offset + "Access-Token".len)), + .length = @as(u32, @intCast(access_token.len)), }, }, ); @@ -344,7 +344,7 @@ pub const UpgradeCommand = struct { if (asset.asProperty("size")) |size_| { if (size_.expr.data == .e_number) { - version.size = @intCast(u32, @max(@intFromFloat(i32, std.math.ceil(size_.expr.data.e_number.value)), 0)); + version.size = @as(u32, @intCast(@max(@as(i32, @intFromFloat(std.math.ceil(size_.expr.data.e_number.value))), 0))); } } return version; diff --git a/src/comptime_string_map.zig b/src/comptime_string_map.zig index 87881263b..3690abbe1 100644 --- a/src/comptime_string_map.zig +++ b/src/comptime_string_map.zig @@ -26,7 +26,7 @@ pub fn ComptimeStringMapWithKeyType(comptime KeyType: type, comptime V: type, co return a.key.len < b.key.len; } // https://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-processing-an-unsorted-array - @setEvalBranchQuota(99999); + @setEvalBranchQuota(999999); return std.mem.order(KeyType, a.key, b.key) == .lt; } }).lenAsc; diff --git a/src/copy_file.zig b/src/copy_file.zig index 7c68791b2..093c7d91d 100644 --- a/src/copy_file.zig +++ b/src/copy_file.zig @@ -88,12 +88,12 @@ fn canUseCopyFileRangeSyscall() bool { const fd_t = std.os.fd_t; pub fn copyFileRange(fd_in: fd_t, off_in: u64, fd_out: fd_t, off_out: u64, len: usize, flags: u32) CopyFileRangeError!usize { if (canUseCopyFileRangeSyscall()) { - var off_in_copy = @bitCast(i64, off_in); - var off_out_copy = @bitCast(i64, off_out); + var off_in_copy = @as(i64, @bitCast(off_in)); + var off_out_copy = @as(i64, @bitCast(off_out)); const rc = std.os.linux.copy_file_range(fd_in, &off_in_copy, fd_out, &off_out_copy, len, flags); switch (std.os.linux.getErrno(rc)) { - .SUCCESS => return @intCast(usize, rc), + .SUCCESS => return @as(usize, @intCast(rc)), .BADF => return error.FilesOpenedWithWrongFlags, .FBIG => return error.FileTooBig, .IO => return error.InputOutput, diff --git a/src/css_scanner.zig b/src/css_scanner.zig index 6edf8b310..e464a6d9f 100644 --- a/src/css_scanner.zig +++ b/src/css_scanner.zig @@ -34,7 +34,7 @@ pub const Chunk = struct { }; pub fn raw(chunk: *const Chunk, source: *const logger.Source) string { - return source.contents[@intCast(usize, chunk.range.loc.start)..][0..@intCast(usize, chunk.range.len)]; + return source.contents[@as(usize, @intCast(chunk.range.loc.start))..][0..@as(usize, @intCast(chunk.range.len))]; } // pub fn string(chunk: *const Chunk, source: *const logger.Source) string { @@ -132,8 +132,8 @@ pub const Scanner = struct { pub fn range(scanner: *Scanner) logger.Range { return logger.Range{ - .loc = .{ .start = @intCast(i32, scanner.start) }, - .len = @intCast(i32, scanner.end - scanner.start), + .loc = .{ .start = @as(i32, @intCast(scanner.start)) }, + .len = @as(i32, @intCast(scanner.end - scanner.start)), }; } @@ -251,7 +251,7 @@ pub const Scanner = struct { return text; }, -1 => { - const loc = logger.Loc{ .start = @intCast(i32, scanner.end) }; + const loc = logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }; scanner.log.addError(scanner.source, loc, "Expected \")\" to end URL token") catch {}; return text; }, @@ -264,7 +264,7 @@ pub const Scanner = struct { text.utf8 = scanner.source.contents[start..scanner.end]; if (scanner.codepoint != ')') { - const loc = logger.Loc{ .start = @intCast(i32, scanner.end) }; + const loc = logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }; scanner.log.addError(scanner.source, loc, "Expected \")\" to end URL token") catch {}; break :validURL; } @@ -273,7 +273,7 @@ pub const Scanner = struct { return text; }, '"', '\'', '(' => { - const r = logger.Range{ .loc = logger.Loc{ .start = @intCast(i32, start) }, .len = @intCast(i32, scanner.end - start) }; + const r = logger.Range{ .loc = logger.Loc{ .start = @as(i32, @intCast(start)) }, .len = @as(i32, @intCast(scanner.end - start)) }; scanner.log.addRangeError(scanner.source, r, "Expected \")\" to end URL token") catch {}; break :validURL; @@ -282,7 +282,7 @@ pub const Scanner = struct { text.needs_decode_escape = true; if (!scanner.isValidEscape()) { var loc = logger.Loc{ - .start = @intCast(i32, scanner.end), + .start = @as(i32, @intCast(scanner.end)), }; scanner.log.addError(scanner.source, loc, "Expected \")\" to end URL token") catch {}; break :validURL; @@ -293,7 +293,7 @@ pub const Scanner = struct { if (isNonPrintable(scanner.codepoint)) { const r = logger.Range{ .loc = logger.Loc{ - .start = @intCast(i32, start), + .start = @as(i32, @intCast(start)), }, .len = 1, }; @@ -354,7 +354,7 @@ pub const Scanner = struct { restart: while (true) { var chunk = Chunk{ .range = logger.Range{ - .loc = .{ .start = @intCast(i32, scanner.end) }, + .loc = .{ .start = @as(i32, @intCast(scanner.end)) }, .len = 0, }, .content = .{ @@ -372,7 +372,7 @@ pub const Scanner = struct { // We also need to parse strings and comments, or else we risk resolving comments like this /* url(hi.jpg) */ switch (scanner.codepoint) { -1 => { - chunk.range.len = @intCast(i32, scanner.end) - chunk.range.loc.start; + chunk.range.len = @as(i32, @intCast(scanner.end)) - chunk.range.loc.start; chunk.content.t_verbatim = .{}; try writeChunk(writer, chunk); return; @@ -457,13 +457,13 @@ pub const Scanner = struct { }, } - chunk.range.len = @intCast(i32, url_start) - chunk.range.loc.start; + chunk.range.len = @as(i32, @intCast(url_start)) - chunk.range.loc.start; chunk.content = .{ .t_verbatim = .{} }; // flush the pending chunk try writeChunk(writer, chunk); - chunk.range.loc.start = @intCast(i32, url_start); - chunk.range.len = @intCast(i32, scanner.end) - chunk.range.loc.start; + chunk.range.loc.start = @as(i32, @intCast(url_start)); + chunk.range.len = @as(i32, @intCast(scanner.end)) - chunk.range.loc.start; chunk.content = .{ .t_url = url_text }; try writeChunk(writer, chunk); scanner.has_delimiter_before = false; @@ -559,7 +559,7 @@ pub const Scanner = struct { if (scanner.codepoint != ' ') continue :toplevel; // Now that we know to expect an import url, we flush the chunk - chunk.range.len = @intCast(i32, start) - chunk.range.loc.start; + chunk.range.len = @as(i32, @intCast(start)) - chunk.range.loc.start; chunk.content = .{ .t_verbatim = .{} }; // flush the pending chunk try writeChunk(writer, chunk); @@ -597,7 +597,7 @@ pub const Scanner = struct { else => { scanner.log.addError( scanner.source, - logger.Loc{ .start = @intCast(i32, scanner.end) }, + logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }, "Expected @import to start with a string or url()", ) catch {}; return error.SyntaxError; @@ -609,7 +609,7 @@ pub const Scanner = struct { else => { scanner.log.addError( scanner.source, - logger.Loc{ .start = @intCast(i32, scanner.end) }, + logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }, "Expected @import to start with a \", ' or url()", ) catch {}; return error.SyntaxError; @@ -619,7 +619,7 @@ pub const Scanner = struct { if (scanner.codepoint != '(') { scanner.log.addError( scanner.source, - logger.Loc{ .start = @intCast(i32, scanner.end) }, + logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }, "Expected \"(\" in @import url", ) catch {}; return error.SyntaxError; @@ -688,7 +688,7 @@ pub const Scanner = struct { -1 => { scanner.log.addError( scanner.source, - logger.Loc{ .start = @intCast(i32, scanner.end) }, + logger.Loc{ .start = @as(i32, @intCast(scanner.end)) }, "Expected \";\" at end of @import", ) catch {}; return; @@ -698,7 +698,7 @@ pub const Scanner = struct { scanner.step(); } if (import_behavior == .scan or import_behavior == .keep) { - chunk.range.len = @intCast(i32, scanner.end) - @max(chunk.range.loc.start, 0); + chunk.range.len = @as(i32, @intCast(scanner.end)) - @max(chunk.range.loc.start, 0); chunk.content = .{ .t_import = import }; try writeChunk(writer, chunk); } @@ -725,7 +725,7 @@ pub const Scanner = struct { switch (scanner.codepoint) { '*' => { scanner.step(); - chunk.range.len = @intCast(i32, scanner.end); + chunk.range.len = @as(i32, @intCast(scanner.end)); scanner.consumeToEndOfMultiLineComment(chunk.range); }, '/' => { @@ -824,10 +824,10 @@ pub const Scanner = struct { return switch (slice.len) { 0 => -1, - 1 => @intCast(CodePoint, slice[0]), - 2 => @intCast(CodePoint, std.unicode.utf8Decode2(slice) catch unreachable), - 3 => @intCast(CodePoint, std.unicode.utf8Decode3(slice) catch unreachable), - 4 => @intCast(CodePoint, std.unicode.utf8Decode4(slice) catch unreachable), + 1 => @as(CodePoint, @intCast(slice[0])), + 2 => @as(CodePoint, @intCast(std.unicode.utf8Decode2(slice) catch unreachable)), + 3 => @as(CodePoint, @intCast(std.unicode.utf8Decode3(slice) catch unreachable)), + 4 => @as(CodePoint, @intCast(std.unicode.utf8Decode4(slice) catch unreachable)), else => unreachable, }; } @@ -1091,20 +1091,20 @@ pub fn NewWriter( .t_verbatim => { if (comptime std.meta.trait.hasFn("copyFileRange")(WriterType)) { try writer.ctx.copyFileRange( - @intCast(usize, chunk.range.loc.start), - @intCast( + @as(usize, @intCast(chunk.range.loc.start)), + @as( usize, - @intCast( + @intCast(@as( usize, - chunk.range.len, - ), + @intCast(chunk.range.len), + )), ), ); } else { try writer.ctx.writeAll( - writer.source.contents[@intCast(usize, chunk.range.loc.start)..][0..@intCast( + writer.source.contents[@as(usize, @intCast(chunk.range.loc.start))..][0..@as( usize, - chunk.range.len, + @intCast(chunk.range.len), )], ); } @@ -1219,9 +1219,9 @@ pub fn NewBundler( var lines_of_code: usize = 0; // We LIFO - var i: i32 = @intCast(i32, this.bundle_queue.items.len - 1); + var i: i32 = @as(i32, @intCast(this.bundle_queue.items.len - 1)); while (i >= 0) : (i -= 1) { - const item = this.bundle_queue.items[@intCast(usize, i)]; + const item = this.bundle_queue.items[@as(usize, @intCast(i))]; const watcher_id = this.watcher.indexOf(item) orelse unreachable; const watch_item = this.watcher.watchlist.get(watcher_id); const source = try this.getSource(watch_item.file_path, if (watch_item.fd > 0) watch_item.fd else null); @@ -1248,7 +1248,7 @@ pub fn NewBundler( try this.writer.done(); return CodeCount{ - .written = @intCast(usize, @max(this.writer.written - start_count, 0)), + .written = @as(usize, @intCast(@max(this.writer.written - start_count, 0))), .approximate_newline_count = lines_of_code, }; } diff --git a/src/darwin_c.zig b/src/darwin_c.zig index 2d7e98e58..88fd4f8bd 100644 --- a/src/darwin_c.zig +++ b/src/darwin_c.zig @@ -294,7 +294,7 @@ pub const SystemErrno = enum(u8) { } if (code >= max) return null; - return @enumFromInt(SystemErrno, code); + return @as(SystemErrno, @enumFromInt(code)); } pub fn label(this: SystemErrno) ?[]const u8 { @@ -460,9 +460,9 @@ pub const io_object_t = c_uint; pub const io_service_t = c_uint; pub const io_registry_entry_t = c_uint; pub const FSEventStreamCallback = ?*const fn (FSEventStreamRef, ?*anyopaque, c_int, ?*anyopaque, [*c]const FSEventStreamEventFlags, [*c]const FSEventStreamEventId) callconv(.C) void; -pub const kCFStringEncodingUTF8: CFStringEncoding = @bitCast(CFStringEncoding, @as(c_int, 134217984)); +pub const kCFStringEncodingUTF8: CFStringEncoding = @as(CFStringEncoding, @bitCast(@as(c_int, 134217984))); pub const noErr: OSStatus = 0; -pub const kFSEventStreamEventIdSinceNow: FSEventStreamEventId = @bitCast(FSEventStreamEventId, @as(c_longlong, -@as(c_int, 1))); +pub const kFSEventStreamEventIdSinceNow: FSEventStreamEventId = @as(FSEventStreamEventId, @bitCast(@as(c_longlong, -@as(c_int, 1)))); pub const kFSEventStreamCreateFlagNoDefer: c_int = 2; pub const kFSEventStreamCreateFlagFileEvents: c_int = 16; pub const kFSEventStreamEventFlagEventIdsWrapped: c_int = 8; @@ -521,7 +521,7 @@ pub fn get_system_uptime() u64 { else => return 0, }; - return @bitCast(u64, std.time.timestamp() - uptime_[0].sec); + return @as(u64, @bitCast(std.time.timestamp() - uptime_[0].sec)); } pub const struct_LoadAvg = struct { @@ -543,11 +543,11 @@ pub fn get_system_loadavg() [3]f64 { }; const loadavg = loadavg_[0]; - const scale = @floatFromInt(f64, loadavg.fscale); + const scale = @as(f64, @floatFromInt(loadavg.fscale)); return [3]f64{ - @floatFromInt(f64, loadavg.ldavg[0]) / scale, - @floatFromInt(f64, loadavg.ldavg[1]) / scale, - @floatFromInt(f64, loadavg.ldavg[2]) / scale, + @as(f64, @floatFromInt(loadavg.ldavg[0])) / scale, + @as(f64, @floatFromInt(loadavg.ldavg[1])) / scale, + @as(f64, @floatFromInt(loadavg.ldavg[2])) / scale, }; } diff --git a/src/defines.zig b/src/defines.zig index ca6edf3a4..210d301ed 100644 --- a/src/defines.zig +++ b/src/defines.zig @@ -66,7 +66,7 @@ pub const DefineData = struct { } pub fn from_mergable_input(defines: RawDefines, user_defines: *UserDefines, log: *logger.Log, allocator: std.mem.Allocator) !void { - try user_defines.ensureUnusedCapacity(@truncate(u32, defines.count())); + try user_defines.ensureUnusedCapacity(@as(u32, @truncate(defines.count()))); var iter = defines.iterator(); while (iter.next()) |entry| { var splitter = std.mem.split(u8, entry.key_ptr.*, "."); diff --git a/src/deps/boringssl.translated.zig b/src/deps/boringssl.translated.zig index ee4f76260..68d4215b4 100644 --- a/src/deps/boringssl.translated.zig +++ b/src/deps/boringssl.translated.zig @@ -1,7 +1,6 @@ const std = @import("std"); const C = @import("std").zig.c_builtins; - -const pthread_rwlock_t = C.pthread_rwlock_t; +const pthread_rwlock_t = @import("../sync.zig").RwLock.pthread_rwlock_t; const time_t = C.time_t; const va_list = C.va_list; const struct_timeval = C.struct_timeval; @@ -99,8 +98,9 @@ pub const struct_BASIC_CONSTRAINTS_st = opaque {}; pub const BASIC_CONSTRAINTS = struct_BASIC_CONSTRAINTS_st; pub const struct_DIST_POINT_st = opaque {}; pub const DIST_POINT = struct_DIST_POINT_st; +pub const BN_ULONG = u64; pub const struct_bignum_st = extern struct { - d: [*c]u64, + d: [*c]BN_ULONG, width: c_int, dmax: c_int, neg: c_int, @@ -134,32 +134,8 @@ pub const struct_Netscape_spki_st = extern struct { signature: [*c]ASN1_BIT_STRING, }; pub const NETSCAPE_SPKI = struct_Netscape_spki_st; - -pub const struct_RIPEMD160state_st = extern struct { - h: [5]u32, - Nl: u32, - Nh: u32, - data: [64]u8, - num: c_uint, -}; +pub const struct_RIPEMD160state_st = opaque {}; pub const RIPEMD160_CTX = struct_RIPEMD160state_st; -pub const RIPEMD160_CBLOCK = @as(c_int, 64); -pub const RIPEMD160_LBLOCK = @import("std").zig.c_translation.MacroArithmetic.div(RIPEMD160_CBLOCK, @as(c_int, 4)); -pub const RIPEMD160_DIGEST_LENGTH = @as(c_int, 20); -pub extern fn RIPEMD160_Init(ctx: [*c]RIPEMD160_CTX) c_int; -pub extern fn RIPEMD160_Update(ctx: [*c]RIPEMD160_CTX, data: ?*const anyopaque, len: usize) c_int; -pub extern fn RIPEMD160_Final(out: [*c]u8, ctx: [*c]RIPEMD160_CTX) c_int; -pub extern fn RIPEMD160(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; -pub extern fn RIPEMD160_Transform(ctx: [*c]RIPEMD160_CTX, block: [*c]const u8) void; - -pub const struct_X509_POLICY_CACHE_st = opaque {}; -pub const X509_POLICY_CACHE = struct_X509_POLICY_CACHE_st; -pub const struct_X509_POLICY_LEVEL_st = opaque {}; -pub const X509_POLICY_LEVEL = struct_X509_POLICY_LEVEL_st; -pub const struct_X509_POLICY_NODE_st = opaque {}; -pub const X509_POLICY_NODE = struct_X509_POLICY_NODE_st; -pub const struct_X509_POLICY_TREE_st = opaque {}; -pub const X509_POLICY_TREE = struct_X509_POLICY_TREE_st; pub const struct_X509_VERIFY_PARAM_st = opaque {}; pub const X509_VERIFY_PARAM = struct_X509_VERIFY_PARAM_st; pub const struct_X509_crl_st = opaque {}; @@ -195,11 +171,11 @@ pub const CRYPTO_MUTEX = pthread_rwlock_t; pub const struct_bn_mont_ctx_st = extern struct { RR: BIGNUM, N: BIGNUM, - n0: [2]u64, + n0: [2]BN_ULONG, }; pub const BN_MONT_CTX = struct_bn_mont_ctx_st; pub const struct_bn_blinding_st = opaque {}; -pub const BN_BLINDING = struct_bn_blinding_st; // /Users/jarred/Code/bun/src/deps/boringssl/include/openssl/rsa.h:785:12: warning: struct demoted to opaque type - has bitfield +pub const BN_BLINDING = struct_bn_blinding_st; // src/deps/boringssl/include/openssl/rsa.h:788:12: warning: struct demoted to opaque type - has bitfield pub const struct_rsa_st = opaque {}; pub const RSA = struct_rsa_st; pub const struct_dsa_st = extern struct { @@ -217,22 +193,7 @@ pub const struct_dsa_st = extern struct { ex_data: CRYPTO_EX_DATA, }; pub const DSA = struct_dsa_st; -pub const struct_dh_st = extern struct { - p: [*c]BIGNUM, - g: [*c]BIGNUM, - pub_key: [*c]BIGNUM, - priv_key: [*c]BIGNUM, - priv_length: c_uint, - method_mont_p_lock: CRYPTO_MUTEX, - method_mont_p: [*c]BN_MONT_CTX, - q: [*c]BIGNUM, - j: [*c]BIGNUM, - seed: [*c]u8, - seedlen: c_int, - counter: [*c]BIGNUM, - flags: c_int, - references: CRYPTO_refcount_t, -}; +pub const struct_dh_st = opaque {}; pub const DH = struct_dh_st; pub const struct_ec_key_st = opaque {}; pub const EC_KEY = struct_ec_key_st; @@ -240,7 +201,7 @@ const union_unnamed_2 = extern union { ptr: ?*anyopaque, rsa: ?*RSA, dsa: [*c]DSA, - dh: [*c]DH, + dh: ?*DH, ec: ?*EC_KEY, }; pub const struct_evp_pkey_asn1_method_st = opaque {}; @@ -252,38 +213,10 @@ pub const struct_evp_pkey_st = extern struct { ameth: ?*const EVP_PKEY_ASN1_METHOD, }; pub const EVP_PKEY = struct_evp_pkey_st; -pub const struct_evp_cipher_ctx_st = extern struct { - cipher: [*c]const EVP_CIPHER, - app_data: ?*anyopaque, - cipher_data: ?*anyopaque, - key_len: c_uint, - encrypt: c_int, - flags: u32, - oiv: [16]u8, - iv: [16]u8, - buf: [32]u8, - buf_len: c_int, - num: c_uint, - final_used: c_int, - final: [32]u8, -}; -pub const EVP_CIPHER_CTX = struct_evp_cipher_ctx_st; -pub const struct_evp_cipher_st = extern struct { - nid: c_int, - block_size: c_uint, - key_len: c_uint, - iv_len: c_uint, - ctx_size: c_uint, - flags: u32, - app_data: ?*anyopaque, - init: ?*const fn ([*c]EVP_CIPHER_CTX, [*c]const u8, [*c]const u8, c_int) callconv(.C) c_int, - cipher: ?*const fn ([*c]EVP_CIPHER_CTX, [*c]u8, [*c]const u8, usize) callconv(.C) c_int, - cleanup: ?*const fn ([*c]EVP_CIPHER_CTX) callconv(.C) void, - ctrl: ?*const fn ([*c]EVP_CIPHER_CTX, c_int, c_int, ?*anyopaque) callconv(.C) c_int, -}; +pub const struct_evp_cipher_st = opaque {}; pub const EVP_CIPHER = struct_evp_cipher_st; pub const struct_evp_cipher_info_st = extern struct { - cipher: [*c]const EVP_CIPHER, + cipher: ?*const EVP_CIPHER, iv: [16]u8, }; pub const EVP_CIPHER_INFO = struct_evp_cipher_info_st; @@ -318,6 +251,19 @@ pub const X509_SIG = struct_X509_sig_st; pub const struct_bignum_ctx = opaque {}; pub const BN_CTX = struct_bignum_ctx; pub const BIO_METHOD = struct_bio_method_st; +// pub const struct_bio_st = extern struct { +// method: [*c]const BIO_METHOD, +// init: c_int, +// shutdown: c_int, +// flags: c_int, +// retry_reason: c_int, +// num: c_int, +// references: CRYPTO_refcount_t, +// ptr: ?*anyopaque, +// next_bio: [*c]BIO, +// num_read: usize, +// num_write: usize, +// }; pub const BIO = struct_bio_st; pub const bio_info_cb = ?*const fn ([*c]BIO, c_int, [*c]const u8, c_int, c_long, c_long) callconv(.C) c_long; pub const struct_bio_method_st = extern struct { @@ -345,21 +291,17 @@ pub const struct_buf_mem_st = extern struct { max: usize, }; pub const BUF_MEM = struct_buf_mem_st; -pub const struct_cbb_buffer_st = extern struct { - buf: [*c]u8, - len: usize, - cap: usize, - can_resize: u8, - @"error": u8, +pub const CBB = struct_cbb_st; // src/deps/boringssl/include/openssl/bytestring.h:403:12: warning: struct demoted to opaque type - has bitfield +pub const struct_cbb_buffer_st = opaque {}; // src/deps/boringssl/include/openssl/bytestring.h:418:12: warning: struct demoted to opaque type - has bitfield +pub const struct_cbb_child_st = opaque {}; +const union_unnamed_3 = extern union { + base: struct_cbb_buffer_st, + child: struct_cbb_child_st, }; -pub const CBB = struct_cbb_st; pub const struct_cbb_st = extern struct { - base: [*c]struct_cbb_buffer_st, child: [*c]CBB, - offset: usize, - pending_len_len: u8, - pending_is_asn1: u8, is_child: u8, + u: union_unnamed_3, }; pub const struct_cbs_st = extern struct { data: [*c]const u8, @@ -376,6 +318,8 @@ pub const struct_crypto_buffer_pool_st = opaque {}; pub const CRYPTO_BUFFER_POOL = struct_crypto_buffer_pool_st; pub const struct_crypto_buffer_st = opaque {}; pub const CRYPTO_BUFFER = struct_crypto_buffer_st; +pub const struct_ctr_drbg_state_st = opaque {}; +pub const CTR_DRBG_STATE = struct_ctr_drbg_state_st; pub const struct_ec_group_st = opaque {}; pub const EC_GROUP = struct_ec_group_st; pub const struct_ec_point_st = opaque {}; @@ -411,6 +355,33 @@ pub const struct_env_md_ctx_st = extern struct { pub const EVP_MD_CTX = struct_env_md_ctx_st; pub const struct_evp_aead_st = opaque {}; pub const EVP_AEAD = struct_evp_aead_st; +pub const union_evp_aead_ctx_st_state = extern union { + @"opaque": [580]u8, + alignment: u64, +}; +pub const struct_evp_aead_ctx_st = extern struct { + aead: ?*const EVP_AEAD, + state: union_evp_aead_ctx_st_state, + tag_len: u8, +}; +pub const EVP_AEAD_CTX = struct_evp_aead_ctx_st; +pub const struct_evp_cipher_ctx_st = extern struct { + cipher: ?*const EVP_CIPHER, + app_data: ?*anyopaque, + cipher_data: ?*anyopaque, + key_len: c_uint, + encrypt: c_int, + flags: u32, + oiv: [16]u8, + iv: [16]u8, + buf: [32]u8, + buf_len: c_int, + num: c_uint, + final_used: c_int, + final: [32]u8, + poisoned: c_int, +}; +pub const EVP_CIPHER_CTX = struct_evp_cipher_ctx_st; pub const struct_evp_encode_ctx_st = extern struct { data_used: c_uint, data: [48]u8, @@ -477,19 +448,19 @@ pub const struct_sha512_state_st = extern struct { md_len: c_uint, }; pub const SHA512_CTX = struct_sha512_state_st; -const struct_unnamed_4 = extern struct { +const struct_unnamed_5 = extern struct { h0: u32, h1: u32, h2: u32, h3: u32, h4: u32, }; -const union_unnamed_3 = extern union { +const union_unnamed_4 = extern union { h: [5]u32, - unnamed_0: struct_unnamed_4, + unnamed_0: struct_unnamed_5, }; pub const struct_sha_state_st = extern struct { - unnamed_0: union_unnamed_3, + unnamed_0: union_unnamed_4, Nl: u32, Nh: u32, data: [64]u8, @@ -505,7 +476,10 @@ pub const struct_srtp_protection_profile_st = extern struct { pub const SRTP_PROTECTION_PROFILE = struct_srtp_protection_profile_st; pub const struct_ssl_cipher_st = opaque {}; pub const SSL_CIPHER = struct_ssl_cipher_st; - +// pub const struct_ssl_ctx_st = opaque {}; +// pub const SSL_CTX = struct_ssl_ctx_st; +// pub const struct_ssl_st = opaque {}; +// pub const SSL = struct_ssl_st; pub const struct_ssl_early_callback_ctx = extern struct { ssl: ?*SSL, client_hello: [*c]const u8, @@ -577,26 +551,13 @@ pub const struct_v3_ext_ctx = opaque {}; pub const X509V3_CTX = struct_v3_ext_ctx; pub const struct_x509_attributes_st = opaque {}; pub const X509_ATTRIBUTE = struct_x509_attributes_st; -pub const struct_x509_cert_aux_st = opaque {}; -pub const X509_CERT_AUX = struct_x509_cert_aux_st; -pub const struct_x509_crl_method_st = opaque {}; -pub const X509_CRL_METHOD = struct_x509_crl_method_st; pub const struct_x509_lookup_st = opaque {}; pub const X509_LOOKUP = struct_x509_lookup_st; pub const struct_x509_lookup_method_st = opaque {}; pub const X509_LOOKUP_METHOD = struct_x509_lookup_method_st; pub const struct_x509_object_st = opaque {}; pub const X509_OBJECT = struct_x509_object_st; -pub const struct_stack_st_X509_EXTENSION = opaque {}; -pub const struct_stack_st_GENERAL_NAME = opaque {}; -pub const struct_x509_revoked_st = extern struct { - serialNumber: [*c]ASN1_INTEGER, - revocationDate: [*c]ASN1_TIME, - extensions: ?*struct_stack_st_X509_EXTENSION, - issuer: ?*struct_stack_st_GENERAL_NAME, - reason: c_int, - sequence: c_int, -}; +pub const struct_x509_revoked_st = opaque {}; pub const X509_REVOKED = struct_x509_revoked_st; pub const struct_x509_store_ctx_st = opaque {}; pub const X509_STORE_CTX = struct_x509_store_ctx_st; @@ -612,37 +573,10 @@ pub const struct_x509_trust_st = extern struct { }; pub const X509_TRUST = struct_x509_trust_st; pub const OPENSSL_BLOCK = ?*anyopaque; -pub const fpos_t = isize; pub const struct___sbuf = extern struct { _base: [*c]u8, _size: c_int, }; -pub const struct___sFILEX = opaque {}; -pub const struct___sFILE = extern struct { - _p: [*c]u8, - _r: c_int, - _w: c_int, - _flags: c_short, - _file: c_short, - _bf: struct___sbuf, - _lbfsize: c_int, - _cookie: ?*anyopaque, - _close: ?*const fn (?*anyopaque) callconv(.C) c_int, - _read: ?*const fn (?*anyopaque, [*c]u8, c_int) callconv(.C) c_int, - _seek: ?*const fn (?*anyopaque, fpos_t, c_int) callconv(.C) fpos_t, - _write: ?*const fn (?*anyopaque, [*c]const u8, c_int) callconv(.C) c_int, - _ub: struct___sbuf, - _extra: ?*struct___sFILEX, - _ur: c_int, - _ubuf: [3]u8, - _nbuf: [1]u8, - _lb: struct___sbuf, - _blksize: c_int, - _offset: fpos_t, -}; -pub const FILE = struct___sFILE; -pub extern const sys_nerr: c_int; -pub extern const sys_errlist: [*c]const [*c]const u8; pub extern fn BUF_MEM_new() [*c]BUF_MEM; pub extern fn BUF_MEM_free(buf: [*c]BUF_MEM) void; pub extern fn BUF_MEM_reserve(buf: [*c]BUF_MEM, cap: usize) c_int; @@ -652,7 +586,7 @@ pub extern fn BUF_MEM_append(buf: [*c]BUF_MEM, in: ?*const anyopaque, len: usize pub extern fn BUF_strdup(str: [*c]const u8) [*c]u8; pub extern fn BUF_strnlen(str: [*c]const u8, max_len: usize) usize; pub extern fn BUF_strndup(str: [*c]const u8, size: usize) [*c]u8; -pub extern fn BUF_memdup(data: ?[*]const u8, size: usize) ?*anyopaque; +pub extern fn BUF_memdup(data: ?*const anyopaque, size: usize) ?*anyopaque; pub extern fn BUF_strlcpy(dst: [*c]u8, src: [*c]const u8, dst_size: usize) usize; pub extern fn BUF_strlcat(dst: [*c]u8, src: [*c]const u8, dst_size: usize) usize; pub extern fn ERR_load_BIO_strings() void; @@ -661,24 +595,18 @@ pub extern fn ERR_load_crypto_strings() void; pub extern fn ERR_load_RAND_strings() void; pub extern fn ERR_free_strings() void; pub extern fn ERR_get_error() u32; -pub extern fn ERR_get_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; -pub extern fn ERR_get_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; +// pub extern fn ERR_get_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; +// pub extern fn ERR_get_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; pub extern fn ERR_peek_error() u32; -pub extern fn ERR_peek_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; -pub extern fn ERR_peek_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; +// pub extern fn ERR_peek_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; +// pub extern fn ERR_peek_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; pub extern fn ERR_peek_last_error() u32; -pub extern fn ERR_peek_last_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; -pub extern fn ERR_peek_last_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; +// pub extern fn ERR_peek_last_error_line(file: [*c][*c]const u8, line: [*c]c_int) u32; +// pub extern fn ERR_peek_last_error_line_data(file: [*c][*c]const u8, line: [*c]c_int, data: [*c][*c]const u8, flags: [*c]c_int) u32; pub extern fn ERR_error_string_n(packed_error: u32, buf: [*c]u8, len: usize) [*c]u8; pub extern fn ERR_lib_error_string(packed_error: u32) [*c]const u8; pub extern fn ERR_reason_error_string(packed_error: u32) [*c]const u8; pub const ERR_print_errors_callback_t = ?*const fn ([*c]const u8, usize, ?*anyopaque) callconv(.C) c_int; -pub extern fn ERR_print_errors_cb(callback: ERR_print_errors_callback_t, ctx: ?*anyopaque) void; -pub extern fn ERR_print_errors_fp(file: [*c]FILE) void; -pub extern fn ERR_clear_error() void; -pub extern fn ERR_set_mark() c_int; -pub extern fn ERR_pop_to_mark() c_int; -pub extern fn ERR_get_next_error_library() c_int; pub const ERR_LIB_NONE: c_int = 1; pub const ERR_LIB_SYS: c_int = 2; pub const ERR_LIB_BN: c_int = 3; @@ -713,278 +641,284 @@ pub const ERR_LIB_HKDF: c_int = 31; pub const ERR_LIB_TRUST_TOKEN: c_int = 32; pub const ERR_LIB_USER: c_int = 33; pub const ERR_NUM_LIBS: c_int = 34; -const enum_unnamed_5 = c_uint; +const enum_unnamed_6 = c_uint; pub extern fn ERR_remove_state(pid: c_ulong) void; pub extern fn ERR_remove_thread_state(tid: [*c]const CRYPTO_THREADID) void; pub extern fn ERR_func_error_string(packed_error: u32) [*c]const u8; pub extern fn ERR_error_string(packed_error: u32, buf: [*c]u8) [*c]u8; pub extern fn ERR_clear_system_error() void; -pub extern fn ERR_put_error(library: c_int, unused: c_int, reason: c_int, file: [*c]const u8, line: c_uint) void; +// pub extern fn ERR_put_error(library: c_int, unused: c_int, reason: c_int, file: [*c]const u8, line: c_uint) void; pub extern fn ERR_add_error_data(count: c_uint, ...) void; pub extern fn ERR_add_error_dataf(format: [*c]const u8, ...) void; -pub const stack_free_func = ?*const fn (?*anyopaque) callconv(.C) void; -pub const stack_copy_func = ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque; -pub const stack_cmp_func = ?*const fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; +pub extern fn ERR_set_error_data(data: [*c]u8, flags: c_int) void; +pub const OPENSSL_sk_free_func = ?*const fn (?*anyopaque) callconv(.C) void; +pub const OPENSSL_sk_copy_func = ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque; +pub const OPENSSL_sk_cmp_func = ?*const fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; +pub const OPENSSL_sk_call_free_func = ?*const fn (OPENSSL_sk_free_func, ?*anyopaque) callconv(.C) void; +pub const OPENSSL_sk_call_copy_func = ?*const fn (OPENSSL_sk_copy_func, ?*anyopaque) callconv(.C) ?*anyopaque; +pub const OPENSSL_sk_call_cmp_func = ?*const fn (OPENSSL_sk_cmp_func, [*c]const ?*const anyopaque, [*c]const ?*const anyopaque) callconv(.C) c_int; pub const struct_stack_st = extern struct { num: usize, data: [*c]?*anyopaque, sorted: c_int, num_alloc: usize, - comp: stack_cmp_func, + comp: OPENSSL_sk_cmp_func, }; pub const _STACK = struct_stack_st; -pub extern fn sk_new(comp: stack_cmp_func) [*c]_STACK; +pub extern fn sk_new(comp: OPENSSL_sk_cmp_func) [*c]_STACK; pub extern fn sk_new_null() [*c]_STACK; pub extern fn sk_num(sk: [*c]const _STACK) usize; pub extern fn sk_zero(sk: [*c]_STACK) void; pub extern fn sk_value(sk: [*c]const _STACK, i: usize) ?*anyopaque; pub extern fn sk_set(sk: [*c]_STACK, i: usize, p: ?*anyopaque) ?*anyopaque; pub extern fn sk_free(sk: [*c]_STACK) void; -pub extern fn sk_pop_free_ex(sk: [*c]_STACK, call_free_func: ?*const fn (stack_free_func, ?*anyopaque) callconv(.C) void, free_func: stack_free_func) void; +pub extern fn sk_pop_free_ex(sk: [*c]_STACK, call_free_func: OPENSSL_sk_call_free_func, free_func: OPENSSL_sk_free_func) void; pub extern fn sk_insert(sk: [*c]_STACK, p: ?*anyopaque, where: usize) usize; pub extern fn sk_delete(sk: [*c]_STACK, where: usize) ?*anyopaque; pub extern fn sk_delete_ptr(sk: [*c]_STACK, p: ?*const anyopaque) ?*anyopaque; -pub extern fn sk_find(sk: [*c]const _STACK, out_index: [*c]usize, p: ?*const anyopaque, call_cmp_func: ?*const fn (stack_cmp_func, [*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int) c_int; +pub extern fn sk_find(sk: [*c]const _STACK, out_index: [*c]usize, p: ?*const anyopaque, call_cmp_func: OPENSSL_sk_call_cmp_func) c_int; pub extern fn sk_shift(sk: [*c]_STACK) ?*anyopaque; pub extern fn sk_push(sk: [*c]_STACK, p: ?*anyopaque) usize; pub extern fn sk_pop(sk: [*c]_STACK) ?*anyopaque; pub extern fn sk_dup(sk: [*c]const _STACK) [*c]_STACK; -pub extern fn sk_sort(sk: [*c]_STACK) void; +pub extern fn sk_sort(sk: [*c]_STACK, call_cmp_func: OPENSSL_sk_call_cmp_func) void; pub extern fn sk_is_sorted(sk: [*c]const _STACK) c_int; -pub extern fn sk_set_cmp_func(sk: [*c]_STACK, comp: stack_cmp_func) stack_cmp_func; -pub extern fn sk_deep_copy(sk: [*c]const _STACK, call_copy_func: ?*const fn (stack_copy_func, ?*anyopaque) callconv(.C) ?*anyopaque, copy_func: stack_copy_func, call_free_func: ?*const fn (stack_free_func, ?*anyopaque) callconv(.C) void, free_func: stack_free_func) [*c]_STACK; -pub extern fn sk_pop_free(sk: [*c]_STACK, free_func: stack_free_func) void; +pub extern fn sk_set_cmp_func(sk: [*c]_STACK, comp: OPENSSL_sk_cmp_func) OPENSSL_sk_cmp_func; +pub extern fn sk_deep_copy(sk: [*c]const _STACK, call_copy_func: OPENSSL_sk_call_copy_func, copy_func: OPENSSL_sk_copy_func, call_free_func: OPENSSL_sk_call_free_func, free_func: OPENSSL_sk_free_func) [*c]_STACK; +pub extern fn sk_pop_free(sk: [*c]_STACK, free_func: OPENSSL_sk_free_func) void; pub const OPENSSL_STRING = [*c]u8; -pub const stack_void_free_func = ?*const fn (?*anyopaque) callconv(.C) void; -pub const stack_void_copy_func = ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque; -pub const stack_void_cmp_func = ?*const fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; -pub fn sk_void_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_void_free_func = ?*const fn (?*anyopaque) callconv(.C) void; +pub const sk_void_copy_func = ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque; +pub const sk_void_cmp_func = ?*const fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; +pub fn sk_void_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_void_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)).?(ptr); + @as(sk_void_free_func, @ptrCast(@alignCast(free_func))).?(ptr); } -pub fn sk_void_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_void_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(stack_void_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)).?(ptr); + return @as(sk_void_copy_func, @ptrCast(@alignCast(copy_func))).?(ptr); } -pub fn sk_void_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_void_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; var a_ptr: ?*const anyopaque = a.*; var b_ptr: ?*const anyopaque = b.*; - return @ptrCast(stack_void_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + return @as(sk_void_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_void_new(arg_comp: stack_void_cmp_func) callconv(.C) ?*struct_stack_st_void { +pub fn sk_void_new(arg_comp: sk_void_cmp_func) callconv(.C) ?*struct_stack_st_void { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_void, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_void, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_void_new_null() callconv(.C) ?*struct_stack_st_void { - return @ptrCast(?*struct_stack_st_void, sk_new_null()); + return @as(?*struct_stack_st_void, @ptrCast(sk_new_null())); } pub fn sk_void_num(arg_sk: ?*const struct_stack_st_void) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_void_zero(arg_sk: ?*struct_stack_st_void) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_void_value(arg_sk: ?*const struct_stack_st_void, arg_i: usize) callconv(.C) ?*anyopaque { var sk = arg_sk; var i = arg_i; - return sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i); + return @alignCast(@ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_void_set(arg_sk: ?*struct_stack_st_void, arg_i: usize, arg_p: ?*anyopaque) callconv(.C) ?*anyopaque { var sk = arg_sk; var i = arg_i; var p = arg_p; - return sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, p); + return sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, p); } pub fn sk_void_free(arg_sk: ?*struct_stack_st_void) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_void_pop_free(arg_sk: ?*struct_stack_st_void, arg_free_func: stack_void_free_func) callconv(.C) void { +pub fn sk_void_pop_free(arg_sk: ?*struct_stack_st_void, arg_free_func: sk_void_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_void_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_void_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_void_insert(arg_sk: ?*struct_stack_st_void, arg_p: ?*anyopaque, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), p, where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), p, where); } pub fn sk_void_delete(arg_sk: ?*struct_stack_st_void, arg_where: usize) callconv(.C) ?*anyopaque { var sk = arg_sk; var where = arg_where; - return sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where); + return sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where); } pub fn sk_void_delete_ptr(arg_sk: ?*struct_stack_st_void, arg_p: ?*const anyopaque) callconv(.C) ?*anyopaque { var sk = arg_sk; var p = arg_p; - return sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), p); + return sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), p); } pub fn sk_void_find(arg_sk: ?*const struct_stack_st_void, arg_out_index: [*c]usize, arg_p: ?*const anyopaque) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, p, sk_void_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, p, &sk_void_call_cmp_func); } pub fn sk_void_shift(arg_sk: ?*struct_stack_st_void) callconv(.C) ?*anyopaque { var sk = arg_sk; - return sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_void_push(arg_sk: ?*struct_stack_st_void, arg_p: ?*anyopaque) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), p); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), p); } pub fn sk_void_pop(arg_sk: ?*struct_stack_st_void) callconv(.C) ?*anyopaque { var sk = arg_sk; - return sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_void_dup(arg_sk: ?*const struct_stack_st_void) callconv(.C) ?*struct_stack_st_void { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_void, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_void, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_void_sort(arg_sk: ?*struct_stack_st_void) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_void_call_cmp_func); } pub fn sk_void_is_sorted(arg_sk: ?*const struct_stack_st_void) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_void_set_cmp_func(arg_sk: ?*struct_stack_st_void, arg_comp: stack_void_cmp_func) callconv(.C) stack_void_cmp_func { +pub fn sk_void_set_cmp_func(arg_sk: ?*struct_stack_st_void, arg_comp: sk_void_cmp_func) callconv(.C) sk_void_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_void_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_void_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_void_deep_copy(arg_sk: ?*const struct_stack_st_void, arg_copy_func: ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque, arg_free_func: ?*const fn (?*anyopaque) callconv(.C) void) callconv(.C) ?*struct_stack_st_void { +pub fn sk_void_deep_copy(arg_sk: ?*const struct_stack_st_void, arg_copy_func: sk_void_copy_func, arg_free_func: sk_void_free_func) callconv(.C) ?*struct_stack_st_void { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_void, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_void_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_void_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); -} // /Users/jarred/Code/bun/src/deps/boringssl/include/openssl/type_check.h:75:42: warning: ignoring StaticAssert declaration + return @as(?*struct_stack_st_void, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_void_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_void_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); +} pub const struct_stack_st_OPENSSL_STRING = opaque {}; -pub const stack_OPENSSL_STRING_free_func = ?*const fn (OPENSSL_STRING) callconv(.C) void; -pub const stack_OPENSSL_STRING_copy_func = ?*const fn (OPENSSL_STRING) callconv(.C) OPENSSL_STRING; -pub const stack_OPENSSL_STRING_cmp_func = ?*const fn ([*c]const OPENSSL_STRING, [*c]const OPENSSL_STRING) callconv(.C) c_int; -pub fn sk_OPENSSL_STRING_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_OPENSSL_STRING_free_func = ?*const fn ([*c]u8) callconv(.C) void; +pub const sk_OPENSSL_STRING_copy_func = ?*const fn ([*c]u8) callconv(.C) [*c]u8; +pub const sk_OPENSSL_STRING_cmp_func = ?*const fn ([*c][*c]const u8, [*c][*c]const u8) callconv(.C) c_int; +pub fn sk_OPENSSL_STRING_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_OPENSSL_STRING_free_func, @alignCast(@import("std").meta.alignment(fn (OPENSSL_STRING) callconv(.C) void), free_func)).?(@ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), ptr))); + @as(sk_OPENSSL_STRING_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]u8, @ptrCast(@alignCast(ptr)))); } -pub fn sk_OPENSSL_STRING_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_OPENSSL_STRING_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_OPENSSL_STRING_copy_func, @alignCast(@import("std").meta.alignment(fn (OPENSSL_STRING) callconv(.C) OPENSSL_STRING), copy_func)).?(@ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_OPENSSL_STRING_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]u8, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_OPENSSL_STRING_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_OPENSSL_STRING_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - const a_ptr: OPENSSL_STRING = @ptrFromInt(OPENSSL_STRING, @intFromPtr(a.*)); - const b_ptr: OPENSSL_STRING = @ptrFromInt(OPENSSL_STRING, @intFromPtr(b.*)); - return @ptrCast(stack_OPENSSL_STRING_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]const OPENSSL_STRING, [*c]const OPENSSL_STRING) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const u8 = @as([*c]const u8, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const u8 = @as([*c]const u8, @ptrCast(@alignCast(b.*))); + return @as(sk_OPENSSL_STRING_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_OPENSSL_STRING_new(arg_comp: stack_OPENSSL_STRING_cmp_func) callconv(.C) ?*struct_stack_st_OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_new(arg_comp: sk_OPENSSL_STRING_cmp_func) callconv(.C) ?*struct_stack_st_OPENSSL_STRING { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_OPENSSL_STRING, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_OPENSSL_STRING, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_OPENSSL_STRING_new_null() callconv(.C) ?*struct_stack_st_OPENSSL_STRING { - return @ptrCast(?*struct_stack_st_OPENSSL_STRING, sk_new_null()); + return @as(?*struct_stack_st_OPENSSL_STRING, @ptrCast(sk_new_null())); } pub fn sk_OPENSSL_STRING_num(arg_sk: ?*const struct_stack_st_OPENSSL_STRING) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_OPENSSL_STRING_zero(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_OPENSSL_STRING_value(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_i: usize) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_value(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_i: usize) callconv(.C) [*c]u8 { var sk = arg_sk; var i = arg_i; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]u8, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } -pub fn sk_OPENSSL_STRING_set(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_i: usize, arg_p: OPENSSL_STRING) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_set(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_i: usize, arg_p: [*c]u8) callconv(.C) [*c]u8 { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]u8, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_OPENSSL_STRING_free(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_OPENSSL_STRING_pop_free(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_free_func: stack_OPENSSL_STRING_free_func) callconv(.C) void { +pub fn sk_OPENSSL_STRING_pop_free(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_free_func: sk_OPENSSL_STRING_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_OPENSSL_STRING_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_OPENSSL_STRING_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } -pub fn sk_OPENSSL_STRING_insert(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: OPENSSL_STRING, arg_where: usize) callconv(.C) usize { +pub fn sk_OPENSSL_STRING_insert(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: [*c]u8, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } -pub fn sk_OPENSSL_STRING_delete(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_where: usize) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_delete(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_where: usize) callconv(.C) [*c]u8 { var sk = arg_sk; var where = arg_where; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]u8, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } -pub fn sk_OPENSSL_STRING_delete_ptr(arg_sk: ?*struct_stack_st_OPENSSL_STRING, p: OPENSSL_STRING) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_delete_ptr(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: [*c]const u8) callconv(.C) [*c]u8 { var sk = arg_sk; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + var p = arg_p; + return @as([*c]u8, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } -pub fn sk_OPENSSL_STRING_find(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_out_index: [*c]usize, p: OPENSSL_STRING) callconv(.C) c_int { +pub fn sk_OPENSSL_STRING_find(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_out_index: [*c]usize, arg_p: [*c]const u8) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_OPENSSL_STRING_call_cmp_func); + var p = arg_p; + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_OPENSSL_STRING_call_cmp_func); } -pub fn sk_OPENSSL_STRING_shift(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_shift(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) [*c]u8 { var sk = arg_sk; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]u8, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } -pub fn sk_OPENSSL_STRING_push(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: OPENSSL_STRING) callconv(.C) usize { +pub fn sk_OPENSSL_STRING_push(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: [*c]u8) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } -pub fn sk_OPENSSL_STRING_pop(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_pop(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) [*c]u8 { var sk = arg_sk; - return @ptrCast(OPENSSL_STRING, @alignCast(@import("std").meta.alignment(u8), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]u8, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_OPENSSL_STRING_dup(arg_sk: ?*const struct_stack_st_OPENSSL_STRING) callconv(.C) ?*struct_stack_st_OPENSSL_STRING { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_OPENSSL_STRING, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_OPENSSL_STRING, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_OPENSSL_STRING_sort(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_OPENSSL_STRING_call_cmp_func); } pub fn sk_OPENSSL_STRING_is_sorted(arg_sk: ?*const struct_stack_st_OPENSSL_STRING) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_OPENSSL_STRING_set_cmp_func(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_comp: stack_OPENSSL_STRING_cmp_func) callconv(.C) stack_OPENSSL_STRING_cmp_func { +pub fn sk_OPENSSL_STRING_set_cmp_func(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_comp: sk_OPENSSL_STRING_cmp_func) callconv(.C) sk_OPENSSL_STRING_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_OPENSSL_STRING_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]const OPENSSL_STRING, [*c]const OPENSSL_STRING) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_OPENSSL_STRING_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_OPENSSL_STRING_deep_copy(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_copy_func: ?*const fn (OPENSSL_STRING) callconv(.C) OPENSSL_STRING, arg_free_func: ?*const fn (OPENSSL_STRING) callconv(.C) void) callconv(.C) ?*struct_stack_st_OPENSSL_STRING { +pub fn sk_OPENSSL_STRING_deep_copy(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_copy_func: sk_OPENSSL_STRING_copy_func, arg_free_func: sk_OPENSSL_STRING_free_func) callconv(.C) ?*struct_stack_st_OPENSSL_STRING { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_OPENSSL_STRING, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_OPENSSL_STRING_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_OPENSSL_STRING_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_OPENSSL_STRING, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_OPENSSL_STRING_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_OPENSSL_STRING_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const CRYPTO_EX_free = *const fn (?*anyopaque, ?*anyopaque, [*c]CRYPTO_EX_DATA, c_int, c_long, ?*anyopaque) callconv(.C) void; +pub const CRYPTO_EX_free = fn (?*anyopaque, ?*anyopaque, [*c]CRYPTO_EX_DATA, c_int, c_long, ?*anyopaque) callconv(.C) void; pub extern fn CRYPTO_cleanup_all_ex_data() void; -pub const CRYPTO_EX_dup = *const fn ([*c]CRYPTO_EX_DATA, [*c]const CRYPTO_EX_DATA, [*c]?*anyopaque, c_int, c_long, ?*anyopaque) callconv(.C) c_int; +pub const CRYPTO_EX_dup = fn ([*c]CRYPTO_EX_DATA, [*c]const CRYPTO_EX_DATA, [*c]?*anyopaque, c_int, c_long, ?*anyopaque) callconv(.C) c_int; pub const CRYPTO_EX_unused = c_int; pub extern fn CRYPTO_num_locks() c_int; pub extern fn CRYPTO_set_locking_callback(func: ?*const fn (c_int, c_int, [*c]const u8, c_int) callconv(.C) void) void; @@ -1008,159 +942,159 @@ pub extern fn CRYPTO_get_dynlock_create_callback() ?*const fn ([*c]const u8, c_i pub extern fn CRYPTO_get_dynlock_lock_callback() ?*const fn (c_int, ?*struct_CRYPTO_dynlock_value, [*c]const u8, c_int) callconv(.C) void; pub extern fn CRYPTO_get_dynlock_destroy_callback() ?*const fn (?*struct_CRYPTO_dynlock_value, [*c]const u8, c_int) callconv(.C) void; pub const struct_stack_st_BIO = opaque {}; -pub const stack_BIO_free_func = ?*const fn ([*c]BIO) callconv(.C) void; -pub const stack_BIO_copy_func = ?*const fn ([*c]BIO) callconv(.C) [*c]BIO; -pub const stack_BIO_cmp_func = ?*const fn ([*c][*c]const BIO, [*c][*c]const BIO) callconv(.C) c_int; -pub fn sk_BIO_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_BIO_free_func = ?*const fn ([*c]BIO) callconv(.C) void; +pub const sk_BIO_copy_func = ?*const fn ([*c]BIO) callconv(.C) [*c]BIO; +pub const sk_BIO_cmp_func = ?*const fn ([*c][*c]const BIO, [*c][*c]const BIO) callconv(.C) c_int; +pub fn sk_BIO_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_BIO_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]BIO) callconv(.C) void), free_func)).?(@ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), ptr))); + @as(sk_BIO_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]BIO, @ptrCast(@alignCast(ptr)))); } -pub fn sk_BIO_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_BIO_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_BIO_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]BIO) callconv(.C) [*c]BIO), copy_func)).?(@ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_BIO_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]BIO, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_BIO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_BIO_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const BIO = @ptrCast([*c]const BIO, @alignCast(@import("std").meta.alignment(BIO), a.*)); - var b_ptr: [*c]const BIO = @ptrCast([*c]const BIO, @alignCast(@import("std").meta.alignment(BIO), b.*)); - return @ptrCast(stack_BIO_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const BIO, [*c][*c]const BIO) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const BIO = @as([*c]const BIO, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const BIO = @as([*c]const BIO, @ptrCast(@alignCast(b.*))); + return @as(sk_BIO_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_BIO_new(arg_comp: stack_BIO_cmp_func) callconv(.C) ?*struct_stack_st_BIO { +pub fn sk_BIO_new(arg_comp: sk_BIO_cmp_func) callconv(.C) ?*struct_stack_st_BIO { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_BIO, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_BIO, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_BIO_new_null() callconv(.C) ?*struct_stack_st_BIO { - return @ptrCast(?*struct_stack_st_BIO, sk_new_null()); + return @as(?*struct_stack_st_BIO, @ptrCast(sk_new_null())); } pub fn sk_BIO_num(arg_sk: ?*const struct_stack_st_BIO) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_BIO_zero(arg_sk: ?*struct_stack_st_BIO) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_BIO_value(arg_sk: ?*const struct_stack_st_BIO, arg_i: usize) callconv(.C) [*c]BIO { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_BIO_set(arg_sk: ?*struct_stack_st_BIO, arg_i: usize, arg_p: [*c]BIO) callconv(.C) [*c]BIO { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_BIO_free(arg_sk: ?*struct_stack_st_BIO) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_BIO_pop_free(arg_sk: ?*struct_stack_st_BIO, arg_free_func: stack_BIO_free_func) callconv(.C) void { +pub fn sk_BIO_pop_free(arg_sk: ?*struct_stack_st_BIO, arg_free_func: sk_BIO_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_BIO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_BIO_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_BIO_insert(arg_sk: ?*struct_stack_st_BIO, arg_p: [*c]BIO, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_BIO_delete(arg_sk: ?*struct_stack_st_BIO, arg_where: usize) callconv(.C) [*c]BIO { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_BIO_delete_ptr(arg_sk: ?*struct_stack_st_BIO, arg_p: [*c]const BIO) callconv(.C) [*c]BIO { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_BIO_find(arg_sk: ?*const struct_stack_st_BIO, arg_out_index: [*c]usize, arg_p: [*c]const BIO) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_BIO_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_BIO_call_cmp_func); } pub fn sk_BIO_shift(arg_sk: ?*struct_stack_st_BIO) callconv(.C) [*c]BIO { var sk = arg_sk; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_BIO_push(arg_sk: ?*struct_stack_st_BIO, arg_p: [*c]BIO) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_BIO_pop(arg_sk: ?*struct_stack_st_BIO) callconv(.C) [*c]BIO { var sk = arg_sk; - return @ptrCast([*c]BIO, @alignCast(@import("std").meta.alignment(BIO), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]BIO, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_BIO_dup(arg_sk: ?*const struct_stack_st_BIO) callconv(.C) ?*struct_stack_st_BIO { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_BIO, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_BIO, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_BIO_sort(arg_sk: ?*struct_stack_st_BIO) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_BIO_call_cmp_func); } pub fn sk_BIO_is_sorted(arg_sk: ?*const struct_stack_st_BIO) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_BIO_set_cmp_func(arg_sk: ?*struct_stack_st_BIO, arg_comp: stack_BIO_cmp_func) callconv(.C) stack_BIO_cmp_func { +pub fn sk_BIO_set_cmp_func(arg_sk: ?*struct_stack_st_BIO, arg_comp: sk_BIO_cmp_func) callconv(.C) sk_BIO_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_BIO_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const BIO, [*c][*c]const BIO) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_BIO_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_BIO_deep_copy(arg_sk: ?*const struct_stack_st_BIO, arg_copy_func: ?*const fn ([*c]BIO) callconv(.C) [*c]BIO, arg_free_func: ?*const fn ([*c]BIO) callconv(.C) void) callconv(.C) ?*struct_stack_st_BIO { +pub fn sk_BIO_deep_copy(arg_sk: ?*const struct_stack_st_BIO, arg_copy_func: sk_BIO_copy_func, arg_free_func: sk_BIO_free_func) callconv(.C) ?*struct_stack_st_BIO { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_BIO, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_BIO_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_BIO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); -} -pub extern fn BIO_new(method: *const BIO_METHOD) ?*BIO; -pub extern fn BIO_free(bio: *BIO) c_int; -pub extern fn BIO_vfree(bio: *BIO) void; -pub extern fn BIO_up_ref(bio: *BIO) c_int; -pub extern fn BIO_read(bio: *BIO, data: ?*anyopaque, len: c_int) c_int; -pub extern fn BIO_gets(bio: *BIO, buf: [*c]u8, size: c_int) c_int; -pub extern fn BIO_write(bio: *BIO, data: ?[*]const u8, len: c_int) c_int; -pub extern fn BIO_write_all(bio: *BIO, data: ?[*]const u8, len: usize) c_int; -pub extern fn BIO_puts(bio: *BIO, buf: [*c]const u8) c_int; -pub extern fn BIO_flush(bio: *BIO) c_int; -pub extern fn BIO_ctrl(bio: *BIO, cmd: c_int, larg: c_long, parg: ?*anyopaque) c_long; -pub extern fn BIO_ptr_ctrl(bp: *BIO, cmd: c_int, larg: c_long) [*c]u8; -pub extern fn BIO_int_ctrl(bp: *BIO, cmd: c_int, larg: c_long, iarg: c_int) c_long; -pub extern fn BIO_reset(bio: *BIO) c_int; -pub extern fn BIO_eof(bio: *BIO) c_int; -pub extern fn BIO_set_flags(bio: *BIO, flags: c_int) void; -pub extern fn BIO_test_flags(bio: *const BIO, flags: c_int) c_int; -pub extern fn BIO_should_read(bio: *const BIO) c_int; -pub extern fn BIO_should_write(bio: *const BIO) c_int; -pub extern fn BIO_should_retry(bio: *const BIO) c_int; -pub extern fn BIO_should_io_special(bio: *const BIO) c_int; -pub extern fn BIO_get_retry_reason(bio: *const BIO) c_int; -pub extern fn BIO_set_retry_reason(bio: *BIO, reason: c_int) void; -pub extern fn BIO_clear_flags(bio: *BIO, flags: c_int) void; -pub extern fn BIO_set_retry_read(bio: *BIO) void; -pub extern fn BIO_set_retry_write(bio: *BIO) void; -pub extern fn BIO_get_retry_flags(bio: *BIO) c_int; -pub extern fn BIO_clear_retry_flags(bio: *BIO) void; -pub extern fn BIO_method_type(bio: *const BIO) c_int; -pub extern fn BIO_callback_ctrl(bio: *BIO, cmd: c_int, fp: bio_info_cb) c_long; -pub extern fn BIO_pending(bio: *const BIO) usize; -pub extern fn BIO_ctrl_pending(bio: *const BIO) usize; -pub extern fn BIO_wpending(bio: *const BIO) usize; -pub extern fn BIO_set_close(bio: *BIO, close_flag: c_int) c_int; -pub extern fn BIO_number_read(bio: *const BIO) usize; -pub extern fn BIO_number_written(bio: *const BIO) usize; -pub extern fn BIO_push(bio: *BIO, appended_bio: [*c]BIO) [*c]BIO; -pub extern fn BIO_pop(bio: *BIO) [*c]BIO; -pub extern fn BIO_next(bio: *BIO) [*c]BIO; + return @as(?*struct_stack_st_BIO, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_BIO_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_BIO_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); +} +pub extern fn BIO_new(method: [*c]const BIO_METHOD) ?*BIO; +pub extern fn BIO_free(bio: [*c]BIO) c_int; +pub extern fn BIO_vfree(bio: [*c]BIO) void; +pub extern fn BIO_up_ref(bio: [*c]BIO) c_int; +pub extern fn BIO_read(bio: [*c]BIO, data: ?*anyopaque, len: c_int) c_int; +pub extern fn BIO_gets(bio: [*c]BIO, buf: [*c]u8, size: c_int) c_int; +pub extern fn BIO_write(bio: [*c]BIO, data: ?*const anyopaque, len: c_int) c_int; +pub extern fn BIO_write_all(bio: [*c]BIO, data: ?*const anyopaque, len: usize) c_int; +pub extern fn BIO_puts(bio: [*c]BIO, buf: [*c]const u8) c_int; +pub extern fn BIO_flush(bio: [*c]BIO) c_int; +pub extern fn BIO_ctrl(bio: [*c]BIO, cmd: c_int, larg: c_long, parg: ?*anyopaque) c_long; +pub extern fn BIO_ptr_ctrl(bp: [*c]BIO, cmd: c_int, larg: c_long) [*c]u8; +pub extern fn BIO_int_ctrl(bp: [*c]BIO, cmd: c_int, larg: c_long, iarg: c_int) c_long; +pub extern fn BIO_reset(bio: [*c]BIO) c_int; +pub extern fn BIO_eof(bio: [*c]BIO) c_int; +pub extern fn BIO_set_flags(bio: [*c]BIO, flags: c_int) void; +pub extern fn BIO_test_flags(bio: [*c]const BIO, flags: c_int) c_int; +pub extern fn BIO_should_read(bio: [*c]const BIO) c_int; +pub extern fn BIO_should_write(bio: [*c]const BIO) c_int; +pub extern fn BIO_should_retry(bio: [*c]const BIO) c_int; +pub extern fn BIO_should_io_special(bio: [*c]const BIO) c_int; +pub extern fn BIO_get_retry_reason(bio: [*c]const BIO) c_int; +pub extern fn BIO_set_retry_reason(bio: [*c]BIO, reason: c_int) void; +pub extern fn BIO_clear_flags(bio: [*c]BIO, flags: c_int) void; +pub extern fn BIO_set_retry_read(bio: [*c]BIO) void; +pub extern fn BIO_set_retry_write(bio: [*c]BIO) void; +pub extern fn BIO_get_retry_flags(bio: [*c]BIO) c_int; +pub extern fn BIO_clear_retry_flags(bio: [*c]BIO) void; +pub extern fn BIO_method_type(bio: [*c]const BIO) c_int; +pub extern fn BIO_callback_ctrl(bio: [*c]BIO, cmd: c_int, fp: bio_info_cb) c_long; +pub extern fn BIO_pending(bio: [*c]const BIO) usize; +pub extern fn BIO_ctrl_pending(bio: [*c]const BIO) usize; +pub extern fn BIO_wpending(bio: [*c]const BIO) usize; +pub extern fn BIO_set_close(bio: [*c]BIO, close_flag: c_int) c_int; +pub extern fn BIO_number_read(bio: [*c]const BIO) usize; +pub extern fn BIO_number_written(bio: [*c]const BIO) usize; +pub extern fn BIO_push(bio: [*c]BIO, appended_bio: [*c]BIO) [*c]BIO; +pub extern fn BIO_pop(bio: [*c]BIO) [*c]BIO; +pub extern fn BIO_next(bio: [*c]BIO) [*c]BIO; pub extern fn BIO_free_all(bio: [*c]BIO) void; pub extern fn BIO_find_type(bio: [*c]BIO, @"type": c_int) [*c]BIO; pub extern fn BIO_copy_next_retry(bio: [*c]BIO) void; @@ -1169,9 +1103,9 @@ pub extern fn BIO_indent(bio: [*c]BIO, indent: c_uint, max_indent: c_uint) c_int pub extern fn BIO_hexdump(bio: [*c]BIO, data: [*c]const u8, len: usize, indent: c_uint) c_int; pub extern fn ERR_print_errors(bio: [*c]BIO) void; pub extern fn BIO_read_asn1(bio: [*c]BIO, out: [*c][*c]u8, out_len: [*c]usize, max_len: usize) c_int; -pub extern fn BIO_s_mem() [*c]const BIO_METHOD; -pub extern fn BIO_new_mem_buf(buf: ?*const anyopaque, len: c_int) *BIO; -pub extern fn BIO_mem_contents(bio: [*c]const BIO, out_contents: [*c][*c]const u8, out_len: [*c]usize) c_int; +pub extern fn BIO_s_mem() ?*const BIO_METHOD; +// pub extern fn BIO_new_mem_buf(buf: ?*const anyopaque, len: ossl_ssize_t) [*c]BIO; +// pub extern fn BIO_mem_contents(bio: [*c]const BIO, out_contents: [*c][*c]const u8, out_len: [*c]usize) c_int; pub extern fn BIO_get_mem_data(bio: [*c]BIO, contents: [*c][*c]u8) c_long; pub extern fn BIO_get_mem_ptr(bio: [*c]BIO, out: [*c][*c]BUF_MEM) c_int; pub extern fn BIO_set_mem_buf(bio: [*c]BIO, b: [*c]BUF_MEM, take_ownership: c_int) c_int; @@ -1180,37 +1114,39 @@ pub extern fn BIO_s_fd() [*c]const BIO_METHOD; pub extern fn BIO_new_fd(fd: c_int, close_flag: c_int) [*c]BIO; pub extern fn BIO_set_fd(bio: [*c]BIO, fd: c_int, close_flag: c_int) c_int; pub extern fn BIO_get_fd(bio: [*c]BIO, out_fd: [*c]c_int) c_int; -pub extern fn BIO_s_file() [*c]const BIO_METHOD; +// pub extern fn BIO_s_file() [*c]const BIO_METHOD; pub extern fn BIO_new_file(filename: [*c]const u8, mode: [*c]const u8) [*c]BIO; -pub extern fn BIO_new_fp(stream: [*c]FILE, close_flag: c_int) [*c]BIO; -pub extern fn BIO_get_fp(bio: [*c]BIO, out_file: [*c][*c]FILE) c_int; -pub extern fn BIO_set_fp(bio: [*c]BIO, file: [*c]FILE, close_flag: c_int) c_int; +// pub extern fn BIO_new_fp(stream: [*c]FILE, close_flag: c_int) [*c]BIO; +// pub extern fn BIO_get_fp(bio: [*c]BIO, out_file: [*c][*c]FILE) c_int; +// pub extern fn BIO_set_fp(bio: [*c]BIO, file: [*c]FILE, close_flag: c_int) c_int; pub extern fn BIO_read_filename(bio: [*c]BIO, filename: [*c]const u8) c_int; pub extern fn BIO_write_filename(bio: [*c]BIO, filename: [*c]const u8) c_int; pub extern fn BIO_append_filename(bio: [*c]BIO, filename: [*c]const u8) c_int; pub extern fn BIO_rw_filename(bio: [*c]BIO, filename: [*c]const u8) c_int; -pub extern fn BIO_s_socket() [*c]const BIO_METHOD; -pub extern fn BIO_new_socket(fd: c_int, close_flag: c_int) [*c]BIO; -pub extern fn BIO_s_connect() [*c]const BIO_METHOD; -pub extern fn BIO_new_connect(host_and_optional_port: [*c]const u8) [*c]BIO; -pub extern fn BIO_set_conn_hostname(bio: [*c]BIO, host_and_optional_port: [*c]const u8) c_int; -pub extern fn BIO_set_conn_port(bio: [*c]BIO, port_str: [*c]const u8) c_int; -pub extern fn BIO_set_conn_int_port(bio: [*c]BIO, port: [*c]const c_int) c_int; -pub extern fn BIO_set_nbio(bio: [*c]BIO, on: c_int) c_int; -pub extern fn BIO_do_connect(bio: [*c]BIO) c_int; -pub extern fn BIO_new_bio_pair(out1: [*c][*c]BIO, writebuf1: usize, out2: [*c][*c]BIO, writebuf2: usize) c_int; -pub extern fn BIO_ctrl_get_read_request(bio: [*c]BIO) usize; -pub extern fn BIO_ctrl_get_write_guarantee(bio: [*c]BIO) usize; -pub extern fn BIO_shutdown_wr(bio: [*c]BIO) c_int; +// pub extern fn BIO_tell(bio: [*c]BIO) c_long; +// pub extern fn BIO_seek(bio: [*c]BIO, offset: c_long) c_long; +// pub extern fn BIO_s_socket() [*c]const BIO_METHOD; +// pub extern fn BIO_new_socket(fd: c_int, close_flag: c_int) [*c]BIO; +// pub extern fn BIO_s_connect() [*c]const BIO_METHOD; +// pub extern fn BIO_new_connect(host_and_optional_port: [*c]const u8) [*c]BIO; +// pub extern fn BIO_set_conn_hostname(bio: [*c]BIO, host_and_optional_port: [*c]const u8) c_int; +// pub extern fn BIO_set_conn_port(bio: [*c]BIO, port_str: [*c]const u8) c_int; +// pub extern fn BIO_set_conn_int_port(bio: [*c]BIO, port: [*c]const c_int) c_int; +// pub extern fn BIO_set_nbio(bio: [*c]BIO, on: c_int) c_int; +// pub extern fn BIO_do_connect(bio: [*c]BIO) c_int; +// pub extern fn BIO_new_bio_pair(out1: [*c][*c]BIO, writebuf1: usize, out2: [*c][*c]BIO, writebuf2: usize) c_int; +// pub extern fn BIO_ctrl_get_read_request(bio: [*c]BIO) usize; +// pub extern fn BIO_ctrl_get_write_guarantee(bio: [*c]BIO) usize; +// pub extern fn BIO_shutdown_wr(bio: [*c]BIO) c_int; pub extern fn BIO_get_new_index() c_int; -pub extern fn BIO_meth_new(@"type": c_int, name: [*c]const u8) *BIO_METHOD; -pub extern fn BIO_meth_free(method: *BIO_METHOD) void; -pub extern fn BIO_meth_set_create(method: *BIO_METHOD, create: ?BIOMethod.create) c_int; -pub extern fn BIO_meth_set_destroy(method: *BIO_METHOD, destroy: ?BIOMethod.destroy) c_int; -pub extern fn BIO_meth_set_write(method: *BIO_METHOD, write: ?BIOMethod.write) c_int; -pub extern fn BIO_meth_set_read(method: *BIO_METHOD, read: ?BIOMethod.read) c_int; -pub extern fn BIO_meth_set_gets(method: *BIO_METHOD, gets: ?BIOMethod.gets) c_int; -pub extern fn BIO_meth_set_ctrl(method: *BIO_METHOD, ctrl: ?BIOMethod.ctrl) c_int; +pub extern fn BIO_meth_new(@"type": c_int, name: [*c]const u8) [*c]BIO_METHOD; +pub extern fn BIO_meth_free(method: [*c]BIO_METHOD) void; +pub extern fn BIO_meth_set_create(method: [*c]BIO_METHOD, create: ?*const fn ([*c]BIO) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_destroy(method: [*c]BIO_METHOD, destroy: ?*const fn ([*c]BIO) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_write(method: [*c]BIO_METHOD, write: ?*const fn ([*c]BIO, [*c]const u8, c_int) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_read(method: [*c]BIO_METHOD, read: ?*const fn ([*c]BIO, [*c]u8, c_int) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_gets(method: [*c]BIO_METHOD, gets: ?*const fn ([*c]BIO, [*c]u8, c_int) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_ctrl(method: [*c]BIO_METHOD, ctrl: ?*const fn ([*c]BIO, c_int, c_long, ?*anyopaque) callconv(.C) c_long) c_int; pub extern fn BIO_set_data(bio: [*c]BIO, ptr: ?*anyopaque) void; pub extern fn BIO_get_data(bio: [*c]BIO) ?*anyopaque; pub extern fn BIO_set_init(bio: [*c]BIO, init: c_int) void; @@ -1220,7 +1156,7 @@ pub extern fn BIO_set_retry_special(bio: [*c]BIO) void; pub extern fn BIO_set_write_buffer_size(bio: [*c]BIO, buffer_size: c_int) c_int; pub extern fn BIO_set_shutdown(bio: [*c]BIO, shutdown: c_int) void; pub extern fn BIO_get_shutdown(bio: [*c]BIO) c_int; -pub extern fn BIO_meth_set_puts(method: *BIO_METHOD, puts: ?*const fn ([*c]BIO, [*c]const u8) callconv(.C) c_int) c_int; +pub extern fn BIO_meth_set_puts(method: [*c]BIO_METHOD, puts: ?*const fn ([*c]BIO, [*c]const u8) callconv(.C) c_int) c_int; pub extern fn EVP_EncodeBlock(dst: [*c]u8, src: [*c]const u8, src_len: usize) usize; pub extern fn EVP_EncodedLength(out_len: [*c]usize, len: usize) c_int; pub extern fn EVP_DecodedLength(out_len: [*c]usize, len: usize) c_int; @@ -1234,43 +1170,42 @@ pub extern fn EVP_DecodeInit(ctx: [*c]EVP_ENCODE_CTX) void; pub extern fn EVP_DecodeUpdate(ctx: [*c]EVP_ENCODE_CTX, out: [*c]u8, out_len: [*c]c_int, in: [*c]const u8, in_len: usize) c_int; pub extern fn EVP_DecodeFinal(ctx: [*c]EVP_ENCODE_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; pub extern fn EVP_DecodeBlock(dst: [*c]u8, src: [*c]const u8, src_len: usize) c_int; -pub extern fn EVP_rc4() [*c]const EVP_CIPHER; -pub extern fn EVP_des_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ede() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ede3() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ede_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ede3_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_ctr() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_ofb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_ctr() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_ofb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_xts() [*c]const EVP_CIPHER; -pub extern fn EVP_enc_null() [*c]const EVP_CIPHER; -pub extern fn EVP_rc2_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_rc2_40_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_get_cipherbynid(nid: c_int) [*c]const EVP_CIPHER; +pub extern fn EVP_rc4() ?*const EVP_CIPHER; +pub extern fn EVP_des_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_des_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_des_ede() ?*const EVP_CIPHER; +pub extern fn EVP_des_ede3() ?*const EVP_CIPHER; +pub extern fn EVP_des_ede_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_des_ede3_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_ctr() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_ofb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_ctr() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_ofb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_xts() ?*const EVP_CIPHER; +pub extern fn EVP_enc_null() ?*const EVP_CIPHER; +pub extern fn EVP_rc2_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_rc2_40_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_get_cipherbynid(nid: c_int) ?*const EVP_CIPHER; pub extern fn EVP_CIPHER_CTX_init(ctx: [*c]EVP_CIPHER_CTX) void; pub extern fn EVP_CIPHER_CTX_new() [*c]EVP_CIPHER_CTX; pub extern fn EVP_CIPHER_CTX_cleanup(ctx: [*c]EVP_CIPHER_CTX) c_int; pub extern fn EVP_CIPHER_CTX_free(ctx: [*c]EVP_CIPHER_CTX) void; pub extern fn EVP_CIPHER_CTX_copy(out: [*c]EVP_CIPHER_CTX, in: [*c]const EVP_CIPHER_CTX) c_int; pub extern fn EVP_CIPHER_CTX_reset(ctx: [*c]EVP_CIPHER_CTX) c_int; -pub extern fn EVP_CipherInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, engine: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8, enc: c_int) c_int; -pub extern fn EVP_EncryptInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, impl: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8) c_int; -pub extern fn EVP_DecryptInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, impl: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8) c_int; +pub extern fn EVP_CipherInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, engine: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8, enc: c_int) c_int; +pub extern fn EVP_EncryptInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, impl: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8) c_int; +pub extern fn EVP_DecryptInit_ex(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, impl: ?*ENGINE, key: [*c]const u8, iv: [*c]const u8) c_int; pub extern fn EVP_EncryptUpdate(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int, in: [*c]const u8, in_len: c_int) c_int; pub extern fn EVP_EncryptFinal_ex(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; pub extern fn EVP_DecryptUpdate(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int, in: [*c]const u8, in_len: c_int) c_int; pub extern fn EVP_DecryptFinal_ex(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; -pub extern fn EVP_Cipher(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, in: [*c]const u8, in_len: usize) c_int; pub extern fn EVP_CipherUpdate(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int, in: [*c]const u8, in_len: c_int) c_int; pub extern fn EVP_CipherFinal_ex(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; -pub extern fn EVP_CIPHER_CTX_cipher(ctx: [*c]const EVP_CIPHER_CTX) [*c]const EVP_CIPHER; +pub extern fn EVP_CIPHER_CTX_cipher(ctx: [*c]const EVP_CIPHER_CTX) ?*const EVP_CIPHER; pub extern fn EVP_CIPHER_CTX_nid(ctx: [*c]const EVP_CIPHER_CTX) c_int; pub extern fn EVP_CIPHER_CTX_encrypting(ctx: [*c]const EVP_CIPHER_CTX) c_int; pub extern fn EVP_CIPHER_CTX_block_size(ctx: [*c]const EVP_CIPHER_CTX) c_uint; @@ -1283,79 +1218,60 @@ pub extern fn EVP_CIPHER_CTX_mode(ctx: [*c]const EVP_CIPHER_CTX) u32; pub extern fn EVP_CIPHER_CTX_ctrl(ctx: [*c]EVP_CIPHER_CTX, command: c_int, arg: c_int, ptr: ?*anyopaque) c_int; pub extern fn EVP_CIPHER_CTX_set_padding(ctx: [*c]EVP_CIPHER_CTX, pad: c_int) c_int; pub extern fn EVP_CIPHER_CTX_set_key_length(ctx: [*c]EVP_CIPHER_CTX, key_len: c_uint) c_int; -pub extern fn EVP_CIPHER_nid(cipher: [*c]const EVP_CIPHER) c_int; -pub extern fn EVP_CIPHER_block_size(cipher: [*c]const EVP_CIPHER) c_uint; -pub extern fn EVP_CIPHER_key_length(cipher: [*c]const EVP_CIPHER) c_uint; -pub extern fn EVP_CIPHER_iv_length(cipher: [*c]const EVP_CIPHER) c_uint; -pub extern fn EVP_CIPHER_flags(cipher: [*c]const EVP_CIPHER) u32; -pub extern fn EVP_CIPHER_mode(cipher: [*c]const EVP_CIPHER) u32; -pub extern fn EVP_BytesToKey(@"type": [*c]const EVP_CIPHER, md: ?*const EVP_MD, salt: [*c]const u8, data: [*c]const u8, data_len: usize, count: c_uint, key: [*c]u8, iv: [*c]u8) c_int; -pub extern fn EVP_CipherInit(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8, enc: c_int) c_int; -pub extern fn EVP_EncryptInit(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8) c_int; -pub extern fn EVP_DecryptInit(ctx: [*c]EVP_CIPHER_CTX, cipher: [*c]const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8) c_int; +pub extern fn EVP_CIPHER_nid(cipher: ?*const EVP_CIPHER) c_int; +pub extern fn EVP_CIPHER_block_size(cipher: ?*const EVP_CIPHER) c_uint; +pub extern fn EVP_CIPHER_key_length(cipher: ?*const EVP_CIPHER) c_uint; +pub extern fn EVP_CIPHER_iv_length(cipher: ?*const EVP_CIPHER) c_uint; +pub extern fn EVP_CIPHER_flags(cipher: ?*const EVP_CIPHER) u32; +pub extern fn EVP_CIPHER_mode(cipher: ?*const EVP_CIPHER) u32; +pub extern fn EVP_BytesToKey(@"type": ?*const EVP_CIPHER, md: ?*const EVP_MD, salt: [*c]const u8, data: [*c]const u8, data_len: usize, count: c_uint, key: [*c]u8, iv: [*c]u8) c_int; +pub extern fn EVP_CipherInit(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8, enc: c_int) c_int; +pub extern fn EVP_EncryptInit(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8) c_int; +pub extern fn EVP_DecryptInit(ctx: [*c]EVP_CIPHER_CTX, cipher: ?*const EVP_CIPHER, key: [*c]const u8, iv: [*c]const u8) c_int; pub extern fn EVP_CipherFinal(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; pub extern fn EVP_EncryptFinal(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; pub extern fn EVP_DecryptFinal(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, out_len: [*c]c_int) c_int; +pub extern fn EVP_Cipher(ctx: [*c]EVP_CIPHER_CTX, out: [*c]u8, in: [*c]const u8, in_len: usize) c_int; pub extern fn EVP_add_cipher_alias(a: [*c]const u8, b: [*c]const u8) c_int; -pub extern fn EVP_get_cipherbyname(name: [*c]const u8) [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_gcm() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_gcm() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_ctr() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_gcm() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_ofb() [*c]const EVP_CIPHER; -pub extern fn EVP_des_ede3_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_cfb128() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_128_cfb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_cfb128() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_192_cfb() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_cfb128() [*c]const EVP_CIPHER; -pub extern fn EVP_aes_256_cfb() [*c]const EVP_CIPHER; -pub extern fn EVP_bf_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_bf_cbc() [*c]const EVP_CIPHER; -pub extern fn EVP_bf_cfb() [*c]const EVP_CIPHER; -pub extern fn EVP_cast5_ecb() [*c]const EVP_CIPHER; -pub extern fn EVP_cast5_cbc() [*c]const EVP_CIPHER; +pub extern fn EVP_get_cipherbyname(name: [*c]const u8) ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_gcm() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_gcm() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_ctr() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_gcm() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_ofb() ?*const EVP_CIPHER; +pub extern fn EVP_des_ede3_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_cfb128() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_cfb128() ?*const EVP_CIPHER; +pub extern fn EVP_aes_128_cfb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_cfb128() ?*const EVP_CIPHER; +pub extern fn EVP_aes_192_cfb() ?*const EVP_CIPHER; +pub extern fn EVP_aes_256_cfb() ?*const EVP_CIPHER; +pub extern fn EVP_bf_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_bf_cbc() ?*const EVP_CIPHER; +pub extern fn EVP_bf_cfb() ?*const EVP_CIPHER; +pub extern fn EVP_cast5_ecb() ?*const EVP_CIPHER; +pub extern fn EVP_cast5_cbc() ?*const EVP_CIPHER; pub extern fn EVP_CIPHER_CTX_set_flags(ctx: [*c]const EVP_CIPHER_CTX, flags: u32) void; -pub extern fn EVP_md4() *const EVP_MD; -pub extern fn EVP_md5() *const EVP_MD; -pub extern fn EVP_sha1() *const EVP_MD; -pub extern fn EVP_sha224() *const EVP_MD; -pub extern fn EVP_sha256() *const EVP_MD; -pub extern fn EVP_sha384() *const EVP_MD; -pub extern fn EVP_sha512() *const EVP_MD; -pub extern fn EVP_sha512_256() *const EVP_MD; -pub extern fn EVP_blake2b256() *const EVP_MD; -pub extern fn EVP_md5_sha1() *const EVP_MD; +pub extern fn EVP_md5_sha1() ?*const EVP_MD; +pub extern fn EVP_ripemd160() ?*const EVP_MD; pub extern fn EVP_get_digestbynid(nid: c_int) ?*const EVP_MD; pub extern fn EVP_get_digestbyobj(obj: ?*const ASN1_OBJECT) ?*const EVP_MD; -pub extern fn EVP_MD_CTX_init(ctx: *EVP_MD_CTX) void; -pub extern fn EVP_MD_CTX_new() *EVP_MD_CTX; -pub extern fn EVP_MD_CTX_cleanup(ctx: *EVP_MD_CTX) c_int; -pub extern fn EVP_MD_CTX_free(ctx: *EVP_MD_CTX) void; +pub extern fn EVP_MD_CTX_init(ctx: [*c]EVP_MD_CTX) void; +pub extern fn EVP_MD_CTX_new() [*c]EVP_MD_CTX; +pub extern fn EVP_MD_CTX_cleanup(ctx: [*c]EVP_MD_CTX) c_int; +pub extern fn EVP_MD_CTX_cleanse(ctx: [*c]EVP_MD_CTX) void; +pub extern fn EVP_MD_CTX_free(ctx: [*c]EVP_MD_CTX) void; pub extern fn EVP_MD_CTX_copy_ex(out: [*c]EVP_MD_CTX, in: [*c]const EVP_MD_CTX) c_int; pub extern fn EVP_MD_CTX_move(out: [*c]EVP_MD_CTX, in: [*c]EVP_MD_CTX) void; -pub extern fn EVP_MD_CTX_reset(ctx: *EVP_MD_CTX) c_int; -pub extern fn EVP_DigestInit_ex(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD, engine: ?*ENGINE) c_int; -pub extern fn EVP_DigestInit(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; -/// EVP_DigestUpdate hashes |len| bytes from |data| into the hashing operation -/// in |ctx|. It returns one. -pub extern fn EVP_DigestUpdate(ctx: *EVP_MD_CTX, data: ?[*]const u8, len: usize) c_int; -/// EVP_DigestFinal_ex finishes the digest in |ctx| and writes the output to -/// |md_out|. |EVP_MD_CTX_size| bytes are written, which is at most -/// |EVP_MAX_MD_SIZE|. If |out_size| is not NULL then |*out_size| is set to the -/// number of bytes written. It returns one. After this call, the hash cannot be -/// updated or finished again until |EVP_DigestInit_ex| is called to start -/// another hashing operation. -pub extern fn EVP_DigestFinal_ex(ctx: *EVP_MD_CTX, md_out: [*]u8, out_size: ?*u32) c_int; -pub extern fn EVP_DigestFinal(ctx: *EVP_MD_CTX, md_out: [*]u8, out_size: ?*u32) c_int; -/// EVP_Digest performs a complete hashing operation in one call. It hashes |len| -/// bytes from |data| and writes the digest to |md_out|. |EVP_MD_CTX_size| bytes -/// are written, which is at most |EVP_MAX_MD_SIZE|. If |out_size| is not NULL -/// then |*out_size| is set to the number of bytes written. It returns one on -/// success and zero otherwise. -pub extern fn EVP_Digest(data: ?[*]const u8, len: usize, md_out: [*c]u8, md_out_size: [*c]c_uint, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; +pub extern fn EVP_MD_CTX_reset(ctx: [*c]EVP_MD_CTX) c_int; +pub extern fn EVP_DigestInit_ex(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD, engine: ?*ENGINE) c_int; +pub extern fn EVP_DigestInit(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; +pub extern fn EVP_DigestUpdate(ctx: [*c]EVP_MD_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn EVP_DigestFinal_ex(ctx: [*c]EVP_MD_CTX, md_out: [*c]u8, out_size: [*c]c_uint) c_int; +pub extern fn EVP_DigestFinal(ctx: [*c]EVP_MD_CTX, md_out: [*c]u8, out_size: [*c]c_uint) c_int; +pub extern fn EVP_Digest(data: ?*const anyopaque, len: usize, md_out: [*c]u8, md_out_size: [*c]c_uint, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; pub extern fn EVP_MD_type(md: ?*const EVP_MD) c_int; pub extern fn EVP_MD_flags(md: ?*const EVP_MD) u32; pub extern fn EVP_MD_size(md: ?*const EVP_MD) usize; @@ -1365,16 +1281,16 @@ pub extern fn EVP_MD_CTX_size(ctx: [*c]const EVP_MD_CTX) usize; pub extern fn EVP_MD_CTX_block_size(ctx: [*c]const EVP_MD_CTX) usize; pub extern fn EVP_MD_CTX_type(ctx: [*c]const EVP_MD_CTX) c_int; pub extern fn EVP_parse_digest_algorithm(cbs: [*c]CBS) ?*const EVP_MD; -pub extern fn EVP_marshal_digest_algorithm(cbb: [*c]CBB, md: ?*const EVP_MD) c_int; +pub extern fn EVP_marshal_digest_algorithm(cbb: ?*CBB, md: ?*const EVP_MD) c_int; pub extern fn EVP_MD_CTX_copy(out: [*c]EVP_MD_CTX, in: [*c]const EVP_MD_CTX) c_int; pub extern fn EVP_add_digest(digest: ?*const EVP_MD) c_int; pub extern fn EVP_get_digestbyname([*c]const u8) ?*const EVP_MD; pub extern fn EVP_dss1() ?*const EVP_MD; -pub extern fn EVP_MD_CTX_create() ?*EVP_MD_CTX; -pub extern fn EVP_MD_CTX_destroy(ctx: *EVP_MD_CTX) void; -pub extern fn EVP_DigestFinalXOF(ctx: *EVP_MD_CTX, out: [*c]u8, len: usize) c_int; +pub extern fn EVP_MD_CTX_create() [*c]EVP_MD_CTX; +pub extern fn EVP_MD_CTX_destroy(ctx: [*c]EVP_MD_CTX) void; +pub extern fn EVP_DigestFinalXOF(ctx: [*c]EVP_MD_CTX, out: [*c]u8, len: usize) c_int; pub extern fn EVP_MD_meth_get_flags(md: ?*const EVP_MD) u32; -pub extern fn EVP_MD_CTX_set_flags(ctx: *EVP_MD_CTX, flags: c_int) void; +pub extern fn EVP_MD_CTX_set_flags(ctx: [*c]EVP_MD_CTX, flags: c_int) void; pub extern fn EVP_MD_nid(md: ?*const EVP_MD) c_int; pub extern fn EVP_aead_aes_128_gcm() ?*const EVP_AEAD; pub extern fn EVP_aead_aes_192_gcm() ?*const EVP_AEAD; @@ -1389,21 +1305,12 @@ pub extern fn EVP_aead_aes_128_gcm_randnonce() ?*const EVP_AEAD; pub extern fn EVP_aead_aes_256_gcm_randnonce() ?*const EVP_AEAD; pub extern fn EVP_aead_aes_128_ccm_bluetooth() ?*const EVP_AEAD; pub extern fn EVP_aead_aes_128_ccm_bluetooth_8() ?*const EVP_AEAD; +pub extern fn EVP_aead_aes_128_ccm_matter() ?*const EVP_AEAD; pub extern fn EVP_has_aes_hardware() c_int; pub extern fn EVP_AEAD_key_length(aead: ?*const EVP_AEAD) usize; pub extern fn EVP_AEAD_nonce_length(aead: ?*const EVP_AEAD) usize; pub extern fn EVP_AEAD_max_overhead(aead: ?*const EVP_AEAD) usize; pub extern fn EVP_AEAD_max_tag_len(aead: ?*const EVP_AEAD) usize; -pub const union_evp_aead_ctx_st_state = extern union { - @"opaque": [580]u8, - alignment: u64, -}; -pub const struct_evp_aead_ctx_st = extern struct { - aead: ?*const EVP_AEAD, - state: union_evp_aead_ctx_st_state, - tag_len: u8, -}; -pub const EVP_AEAD_CTX = struct_evp_aead_ctx_st; pub extern fn EVP_AEAD_CTX_zero(ctx: [*c]EVP_AEAD_CTX) void; pub extern fn EVP_AEAD_CTX_new(aead: ?*const EVP_AEAD, key: [*c]const u8, key_len: usize, tag_len: usize) [*c]EVP_AEAD_CTX; pub extern fn EVP_AEAD_CTX_free(ctx: [*c]EVP_AEAD_CTX) void; @@ -1458,62 +1365,35 @@ pub extern fn EVP_PKEY_assign(pkey: [*c]EVP_PKEY, @"type": c_int, key: ?*anyopaq pub extern fn EVP_PKEY_set_type(pkey: [*c]EVP_PKEY, @"type": c_int) c_int; pub extern fn EVP_PKEY_cmp_parameters(a: [*c]const EVP_PKEY, b: [*c]const EVP_PKEY) c_int; pub extern fn EVP_parse_public_key(cbs: [*c]CBS) [*c]EVP_PKEY; -pub extern fn EVP_marshal_public_key(cbb: [*c]CBB, key: [*c]const EVP_PKEY) c_int; +pub extern fn EVP_marshal_public_key(cbb: ?*CBB, key: [*c]const EVP_PKEY) c_int; pub extern fn EVP_parse_private_key(cbs: [*c]CBS) [*c]EVP_PKEY; -pub extern fn EVP_marshal_private_key(cbb: [*c]CBB, key: [*c]const EVP_PKEY) c_int; +pub extern fn EVP_marshal_private_key(cbb: ?*CBB, key: [*c]const EVP_PKEY) c_int; pub extern fn EVP_PKEY_new_raw_private_key(@"type": c_int, unused: ?*ENGINE, in: [*c]const u8, len: usize) [*c]EVP_PKEY; pub extern fn EVP_PKEY_new_raw_public_key(@"type": c_int, unused: ?*ENGINE, in: [*c]const u8, len: usize) [*c]EVP_PKEY; pub extern fn EVP_PKEY_get_raw_private_key(pkey: [*c]const EVP_PKEY, out: [*c]u8, out_len: [*c]usize) c_int; pub extern fn EVP_PKEY_get_raw_public_key(pkey: [*c]const EVP_PKEY, out: [*c]u8, out_len: [*c]usize) c_int; -pub extern fn EVP_DigestSignInit(ctx: *EVP_MD_CTX, pctx: [*c]?*EVP_PKEY_CTX, @"type": ?*const EVP_MD, e: ?*ENGINE, pkey: [*c]EVP_PKEY) c_int; -pub extern fn EVP_DigestSignUpdate(ctx: *EVP_MD_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn EVP_DigestSignFinal(ctx: *EVP_MD_CTX, out_sig: [*c]u8, out_sig_len: [*c]usize) c_int; -pub extern fn EVP_DigestSign(ctx: *EVP_MD_CTX, out_sig: [*c]u8, out_sig_len: [*c]usize, data: [*c]const u8, data_len: usize) c_int; -pub extern fn EVP_DigestVerifyInit(ctx: *EVP_MD_CTX, pctx: [*c]?*EVP_PKEY_CTX, @"type": ?*const EVP_MD, e: ?*ENGINE, pkey: [*c]EVP_PKEY) c_int; -pub extern fn EVP_DigestVerifyUpdate(ctx: *EVP_MD_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn EVP_DigestVerifyFinal(ctx: *EVP_MD_CTX, sig: [*c]const u8, sig_len: usize) c_int; -pub extern fn EVP_DigestVerify(ctx: *EVP_MD_CTX, sig: [*c]const u8, sig_len: usize, data: [*c]const u8, len: usize) c_int; -pub extern fn EVP_SignInit_ex(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; -pub extern fn EVP_SignInit(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; -pub extern fn EVP_SignUpdate(ctx: *EVP_MD_CTX, data: ?[*]const u8, len: usize) c_int; +pub extern fn EVP_DigestSignInit(ctx: [*c]EVP_MD_CTX, pctx: [*c]?*EVP_PKEY_CTX, @"type": ?*const EVP_MD, e: ?*ENGINE, pkey: [*c]EVP_PKEY) c_int; +pub extern fn EVP_DigestSignUpdate(ctx: [*c]EVP_MD_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn EVP_DigestSignFinal(ctx: [*c]EVP_MD_CTX, out_sig: [*c]u8, out_sig_len: [*c]usize) c_int; +pub extern fn EVP_DigestSign(ctx: [*c]EVP_MD_CTX, out_sig: [*c]u8, out_sig_len: [*c]usize, data: [*c]const u8, data_len: usize) c_int; +pub extern fn EVP_DigestVerifyInit(ctx: [*c]EVP_MD_CTX, pctx: [*c]?*EVP_PKEY_CTX, @"type": ?*const EVP_MD, e: ?*ENGINE, pkey: [*c]EVP_PKEY) c_int; +pub extern fn EVP_DigestVerifyUpdate(ctx: [*c]EVP_MD_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn EVP_DigestVerifyFinal(ctx: [*c]EVP_MD_CTX, sig: [*c]const u8, sig_len: usize) c_int; +pub extern fn EVP_DigestVerify(ctx: [*c]EVP_MD_CTX, sig: [*c]const u8, sig_len: usize, data: [*c]const u8, len: usize) c_int; +pub extern fn EVP_SignInit_ex(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; +pub extern fn EVP_SignInit(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; +pub extern fn EVP_SignUpdate(ctx: [*c]EVP_MD_CTX, data: ?*const anyopaque, len: usize) c_int; pub extern fn EVP_SignFinal(ctx: [*c]const EVP_MD_CTX, sig: [*c]u8, out_sig_len: [*c]c_uint, pkey: [*c]EVP_PKEY) c_int; -pub extern fn EVP_VerifyInit_ex(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; -pub extern fn EVP_VerifyInit(ctx: *EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; -pub extern fn EVP_VerifyUpdate(ctx: *EVP_MD_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn EVP_VerifyFinal(ctx: *EVP_MD_CTX, sig: [*c]const u8, sig_len: usize, pkey: [*c]EVP_PKEY) c_int; +pub extern fn EVP_VerifyInit_ex(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD, impl: ?*ENGINE) c_int; +pub extern fn EVP_VerifyInit(ctx: [*c]EVP_MD_CTX, @"type": ?*const EVP_MD) c_int; +pub extern fn EVP_VerifyUpdate(ctx: [*c]EVP_MD_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn EVP_VerifyFinal(ctx: [*c]EVP_MD_CTX, sig: [*c]const u8, sig_len: usize, pkey: [*c]EVP_PKEY) c_int; pub extern fn EVP_PKEY_print_public(out: [*c]BIO, pkey: [*c]const EVP_PKEY, indent: c_int, pctx: ?*ASN1_PCTX) c_int; pub extern fn EVP_PKEY_print_private(out: [*c]BIO, pkey: [*c]const EVP_PKEY, indent: c_int, pctx: ?*ASN1_PCTX) c_int; pub extern fn EVP_PKEY_print_params(out: [*c]BIO, pkey: [*c]const EVP_PKEY, indent: c_int, pctx: ?*ASN1_PCTX) c_int; pub extern fn PKCS5_PBKDF2_HMAC(password: [*c]const u8, password_len: usize, salt: [*c]const u8, salt_len: usize, iterations: c_uint, digest: ?*const EVP_MD, key_len: usize, out_key: [*c]u8) c_int; pub extern fn PKCS5_PBKDF2_HMAC_SHA1(password: [*c]const u8, password_len: usize, salt: [*c]const u8, salt_len: usize, iterations: c_uint, key_len: usize, out_key: [*c]u8) c_int; -/// EVP_PBE_scrypt expands |password| into a secret key of length |key_len| using -/// scrypt, as described in RFC 7914, and writes the result to |out_key|. It -/// returns one on success and zero on allocation failure, if the memory required -/// for the operation exceeds |max_mem|, or if any of the parameters are invalid -/// as described below. -/// -/// |N|, |r|, and |p| are as described in RFC 7914 section 6. They determine the -/// cost of the operation. If |max_mem| is zero, a defult limit of 32MiB will be -/// used. -/// -/// The parameters are considered invalid under any of the following conditions: -/// - |r| or |p| are zero -/// - |p| > (2^30 - 1) / |r| -/// - |N| is not a power of two -/// - |N| > 2^32 -/// - |N| > 2^(128 * |r| / 8) -pub extern fn EVP_PBE_scrypt( - password: [*c]const u8, - password_len: usize, - salt: [*c]const u8, - salt_len: usize, - N: u64, - r: u64, - p: u64, - max_mem: usize, - out_key: [*c]u8, - key_len: usize, -) c_int; +pub extern fn EVP_PBE_scrypt(password: [*c]const u8, password_len: usize, salt: [*c]const u8, salt_len: usize, N: u64, r: u64, p: u64, max_mem: usize, out_key: [*c]u8, key_len: usize) c_int; pub extern fn EVP_PKEY_CTX_new(pkey: [*c]EVP_PKEY, e: ?*ENGINE) ?*EVP_PKEY_CTX; pub extern fn EVP_PKEY_CTX_new_id(id: c_int, e: ?*ENGINE) ?*EVP_PKEY_CTX; pub extern fn EVP_PKEY_CTX_free(ctx: ?*EVP_PKEY_CTX) void; @@ -1557,7 +1437,7 @@ pub extern fn OPENSSL_add_all_algorithms_conf() void; pub extern fn OpenSSL_add_all_ciphers() void; pub extern fn OpenSSL_add_all_digests() void; pub extern fn EVP_cleanup() void; -pub extern fn EVP_CIPHER_do_all_sorted(callback: ?*const fn ([*c]const EVP_CIPHER, [*c]const u8, [*c]const u8, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; +pub extern fn EVP_CIPHER_do_all_sorted(callback: ?*const fn (?*const EVP_CIPHER, [*c]const u8, [*c]const u8, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; pub extern fn EVP_MD_do_all_sorted(callback: ?*const fn (?*const EVP_MD, [*c]const u8, [*c]const u8, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; pub extern fn EVP_MD_do_all(callback: ?*const fn (?*const EVP_MD, [*c]const u8, [*c]const u8, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; pub extern fn i2d_PrivateKey(key: [*c]const EVP_PKEY, outp: [*c][*c]u8) c_int; @@ -1565,8 +1445,8 @@ pub extern fn i2d_PublicKey(key: [*c]const EVP_PKEY, outp: [*c][*c]u8) c_int; pub extern fn d2i_PrivateKey(@"type": c_int, out: [*c][*c]EVP_PKEY, inp: [*c][*c]const u8, len: c_long) [*c]EVP_PKEY; pub extern fn d2i_AutoPrivateKey(out: [*c][*c]EVP_PKEY, inp: [*c][*c]const u8, len: c_long) [*c]EVP_PKEY; pub extern fn d2i_PublicKey(@"type": c_int, out: [*c][*c]EVP_PKEY, inp: [*c][*c]const u8, len: c_long) [*c]EVP_PKEY; -pub extern fn EVP_PKEY_get0_DH(pkey: [*c]const EVP_PKEY) [*c]DH; -pub extern fn EVP_PKEY_get1_DH(pkey: [*c]const EVP_PKEY) [*c]DH; +pub extern fn EVP_PKEY_get0_DH(pkey: [*c]const EVP_PKEY) ?*DH; +pub extern fn EVP_PKEY_get1_DH(pkey: [*c]const EVP_PKEY) ?*DH; pub extern fn EVP_PKEY_CTX_set_ec_param_enc(ctx: ?*EVP_PKEY_CTX, encoding: c_int) c_int; pub extern fn EVP_PKEY_set1_tls_encodedpoint(pkey: [*c]EVP_PKEY, in: [*c]const u8, len: usize) c_int; pub extern fn EVP_PKEY_get1_tls_encodedpoint(pkey: [*c]const EVP_PKEY, out_ptr: [*c][*c]u8) usize; @@ -1582,15 +1462,17 @@ pub extern fn i2d_DSA_PUBKEY(dsa: [*c]const DSA, outp: [*c][*c]u8) c_int; pub extern fn d2i_DSA_PUBKEY(out: [*c][*c]DSA, inp: [*c][*c]const u8, len: c_long) [*c]DSA; pub extern fn i2d_EC_PUBKEY(ec_key: ?*const EC_KEY, outp: [*c][*c]u8) c_int; pub extern fn d2i_EC_PUBKEY(out: [*c]?*EC_KEY, inp: [*c][*c]const u8, len: c_long) ?*EC_KEY; +pub extern fn EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx: ?*EVP_PKEY_CTX, nbits: c_int) c_int; +pub extern fn EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx: ?*EVP_PKEY_CTX, qbits: c_int) c_int; pub const struct_stack_st_CRYPTO_BUFFER = opaque {}; pub const struct_stack_st_X509 = opaque {}; pub const struct_stack_st_X509_CRL = opaque {}; pub extern fn PKCS7_get_raw_certificates(out_certs: ?*struct_stack_st_CRYPTO_BUFFER, cbs: [*c]CBS, pool: ?*CRYPTO_BUFFER_POOL) c_int; pub extern fn PKCS7_get_certificates(out_certs: ?*struct_stack_st_X509, cbs: [*c]CBS) c_int; -pub extern fn PKCS7_bundle_raw_certificates(out: [*c]CBB, certs: ?*const struct_stack_st_CRYPTO_BUFFER) c_int; -pub extern fn PKCS7_bundle_certificates(out: [*c]CBB, certs: ?*const struct_stack_st_X509) c_int; +pub extern fn PKCS7_bundle_raw_certificates(out: ?*CBB, certs: ?*const struct_stack_st_CRYPTO_BUFFER) c_int; +pub extern fn PKCS7_bundle_certificates(out: ?*CBB, certs: ?*const struct_stack_st_X509) c_int; pub extern fn PKCS7_get_CRLs(out_crls: ?*struct_stack_st_X509_CRL, cbs: [*c]CBS) c_int; -pub extern fn PKCS7_bundle_CRLs(out: [*c]CBB, crls: ?*const struct_stack_st_X509_CRL) c_int; +pub extern fn PKCS7_bundle_CRLs(out: ?*CBB, crls: ?*const struct_stack_st_X509_CRL) c_int; pub extern fn PKCS7_get_PEM_certificates(out_certs: ?*struct_stack_st_X509, pem_bio: [*c]BIO) c_int; pub extern fn PKCS7_get_PEM_CRLs(out_crls: ?*struct_stack_st_X509_CRL, pem_bio: [*c]BIO) c_int; pub const PKCS7_SIGNED = extern struct { @@ -1605,7 +1487,7 @@ pub const PKCS7_ENVELOPE = anyopaque; pub const PKCS7_DIGEST = anyopaque; pub const PKCS7_ENCRYPT = anyopaque; pub const PKCS7_SIGNER_INFO = anyopaque; -const union_unnamed_6 = extern union { +const union_unnamed_7 = extern union { ptr: [*c]u8, data: [*c]ASN1_OCTET_STRING, sign: [*c]PKCS7_SIGNED, @@ -1619,7 +1501,7 @@ pub const PKCS7 = extern struct { ber_bytes: [*c]u8, ber_len: usize, type: ?*ASN1_OBJECT, - d: union_unnamed_6, + d: union_unnamed_7, }; pub extern fn d2i_PKCS7(out: [*c][*c]PKCS7, inp: [*c][*c]const u8, len: usize) [*c]PKCS7; pub extern fn d2i_PKCS7_bio(bio: [*c]BIO, out: [*c][*c]PKCS7) [*c]PKCS7; @@ -1645,7 +1527,7 @@ pub extern fn BN_num_bits(bn: [*c]const BIGNUM) c_uint; pub extern fn BN_num_bytes(bn: [*c]const BIGNUM) c_uint; pub extern fn BN_zero(bn: [*c]BIGNUM) void; pub extern fn BN_one(bn: [*c]BIGNUM) c_int; -pub extern fn BN_set_word(bn: [*c]BIGNUM, value: u64) c_int; +pub extern fn BN_set_word(bn: [*c]BIGNUM, value: BN_ULONG) c_int; pub extern fn BN_set_u64(bn: [*c]BIGNUM, value: u64) c_int; pub extern fn BN_set_negative(bn: [*c]BIGNUM, sign: c_int) void; pub extern fn BN_is_negative(bn: [*c]const BIGNUM) c_int; @@ -1654,18 +1536,17 @@ pub extern fn BN_bn2bin(in: [*c]const BIGNUM, out: [*c]u8) usize; pub extern fn BN_le2bn(in: [*c]const u8, len: usize, ret: [*c]BIGNUM) [*c]BIGNUM; pub extern fn BN_bn2le_padded(out: [*c]u8, len: usize, in: [*c]const BIGNUM) c_int; pub extern fn BN_bn2bin_padded(out: [*c]u8, len: usize, in: [*c]const BIGNUM) c_int; -pub extern fn BN_bn2cbb_padded(out: [*c]CBB, len: usize, in: [*c]const BIGNUM) c_int; +pub extern fn BN_bn2cbb_padded(out: ?*CBB, len: usize, in: [*c]const BIGNUM) c_int; pub extern fn BN_bn2hex(bn: [*c]const BIGNUM) [*c]u8; pub extern fn BN_hex2bn(outp: [*c][*c]BIGNUM, in: [*c]const u8) c_int; pub extern fn BN_bn2dec(a: [*c]const BIGNUM) [*c]u8; pub extern fn BN_dec2bn(outp: [*c][*c]BIGNUM, in: [*c]const u8) c_int; pub extern fn BN_asc2bn(outp: [*c][*c]BIGNUM, in: [*c]const u8) c_int; pub extern fn BN_print(bio: [*c]BIO, a: [*c]const BIGNUM) c_int; -pub extern fn BN_print_fp(fp: [*c]FILE, a: [*c]const BIGNUM) c_int; -pub extern fn BN_get_word(bn: [*c]const BIGNUM) u64; +pub extern fn BN_get_word(bn: [*c]const BIGNUM) BN_ULONG; pub extern fn BN_get_u64(bn: [*c]const BIGNUM, out: [*c]u64) c_int; pub extern fn BN_parse_asn1_unsigned(cbs: [*c]CBS, ret: [*c]BIGNUM) c_int; -pub extern fn BN_marshal_asn1(cbb: [*c]CBB, bn: [*c]const BIGNUM) c_int; +pub extern fn BN_marshal_asn1(cbb: ?*CBB, bn: [*c]const BIGNUM) c_int; pub extern fn BN_CTX_new() ?*BN_CTX; pub extern fn BN_CTX_free(ctx: ?*BN_CTX) void; pub extern fn BN_CTX_start(ctx: ?*BN_CTX) void; @@ -1673,24 +1554,24 @@ pub extern fn BN_CTX_get(ctx: ?*BN_CTX) [*c]BIGNUM; pub extern fn BN_CTX_end(ctx: ?*BN_CTX) void; pub extern fn BN_add(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; pub extern fn BN_uadd(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; -pub extern fn BN_add_word(a: [*c]BIGNUM, w: u64) c_int; +pub extern fn BN_add_word(a: [*c]BIGNUM, w: BN_ULONG) c_int; pub extern fn BN_sub(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; pub extern fn BN_usub(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; -pub extern fn BN_sub_word(a: [*c]BIGNUM, w: u64) c_int; +pub extern fn BN_sub_word(a: [*c]BIGNUM, w: BN_ULONG) c_int; pub extern fn BN_mul(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mul_word(bn: [*c]BIGNUM, w: u64) c_int; +pub extern fn BN_mul_word(bn: [*c]BIGNUM, w: BN_ULONG) c_int; pub extern fn BN_sqr(r: [*c]BIGNUM, a: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; pub extern fn BN_div(quotient: [*c]BIGNUM, rem: [*c]BIGNUM, numerator: [*c]const BIGNUM, divisor: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_div_word(numerator: [*c]BIGNUM, divisor: u64) u64; +pub extern fn BN_div_word(numerator: [*c]BIGNUM, divisor: BN_ULONG) BN_ULONG; pub extern fn BN_sqrt(out_sqrt: [*c]BIGNUM, in: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; pub extern fn BN_cmp(a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; -pub extern fn BN_cmp_word(a: [*c]const BIGNUM, b: u64) c_int; +pub extern fn BN_cmp_word(a: [*c]const BIGNUM, b: BN_ULONG) c_int; pub extern fn BN_ucmp(a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; pub extern fn BN_equal_consttime(a: [*c]const BIGNUM, b: [*c]const BIGNUM) c_int; -pub extern fn BN_abs_is_word(bn: [*c]const BIGNUM, w: u64) c_int; +pub extern fn BN_abs_is_word(bn: [*c]const BIGNUM, w: BN_ULONG) c_int; pub extern fn BN_is_zero(bn: [*c]const BIGNUM) c_int; pub extern fn BN_is_one(bn: [*c]const BIGNUM) c_int; -pub extern fn BN_is_word(bn: [*c]const BIGNUM, w: u64) c_int; +pub extern fn BN_is_word(bn: [*c]const BIGNUM, w: BN_ULONG) c_int; pub extern fn BN_is_odd(bn: [*c]const BIGNUM) c_int; pub extern fn BN_is_pow2(a: [*c]const BIGNUM) c_int; pub extern fn BN_lshift(r: [*c]BIGNUM, a: [*c]const BIGNUM, n: c_int) c_int; @@ -1702,7 +1583,7 @@ pub extern fn BN_clear_bit(a: [*c]BIGNUM, n: c_int) c_int; pub extern fn BN_is_bit_set(a: [*c]const BIGNUM, n: c_int) c_int; pub extern fn BN_mask_bits(a: [*c]BIGNUM, n: c_int) c_int; pub extern fn BN_count_low_zero_bits(bn: [*c]const BIGNUM) c_int; -pub extern fn BN_mod_word(a: [*c]const BIGNUM, w: u64) u64; +pub extern fn BN_mod_word(a: [*c]const BIGNUM, w: BN_ULONG) BN_ULONG; pub extern fn BN_mod_pow2(r: [*c]BIGNUM, a: [*c]const BIGNUM, e: usize) c_int; pub extern fn BN_nnmod_pow2(r: [*c]BIGNUM, a: [*c]const BIGNUM, e: usize) c_int; pub extern fn BN_nnmod(rem: [*c]BIGNUM, numerator: [*c]const BIGNUM, divisor: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; @@ -1720,56 +1601,31 @@ pub extern fn BN_mod_sqrt(in: [*c]BIGNUM, a: [*c]const BIGNUM, p: [*c]const BIGN pub extern fn BN_rand(rnd: [*c]BIGNUM, bits: c_int, top: c_int, bottom: c_int) c_int; pub extern fn BN_pseudo_rand(rnd: [*c]BIGNUM, bits: c_int, top: c_int, bottom: c_int) c_int; pub extern fn BN_rand_range(rnd: [*c]BIGNUM, range: [*c]const BIGNUM) c_int; -pub extern fn BN_rand_range_ex(r: [*c]BIGNUM, min_inclusive: u64, max_exclusive: [*c]const BIGNUM) c_int; +pub extern fn BN_rand_range_ex(r: [*c]BIGNUM, min_inclusive: BN_ULONG, max_exclusive: [*c]const BIGNUM) c_int; pub extern fn BN_pseudo_rand_range(rnd: [*c]BIGNUM, range: [*c]const BIGNUM) c_int; +pub extern fn BN_GENCB_new() [*c]BN_GENCB; +pub extern fn BN_GENCB_free(callback: [*c]BN_GENCB) void; pub extern fn BN_GENCB_set(callback: [*c]BN_GENCB, f: ?*const fn (c_int, c_int, [*c]BN_GENCB) callconv(.C) c_int, arg: ?*anyopaque) void; pub extern fn BN_GENCB_call(callback: [*c]BN_GENCB, event: c_int, n: c_int) c_int; +pub extern fn BN_GENCB_get_arg(callback: [*c]const BN_GENCB) ?*anyopaque; pub extern fn BN_generate_prime_ex(ret: [*c]BIGNUM, bits: c_int, safe: c_int, add: [*c]const BIGNUM, rem: [*c]const BIGNUM, cb: [*c]BN_GENCB) c_int; pub const bn_probably_prime: c_int = 0; pub const bn_composite: c_int = 1; pub const bn_non_prime_power_composite: c_int = 2; pub const enum_bn_primality_result_t = c_uint; -pub extern fn BN_enhanced_miller_rabin_primality_test(out_result: [*c]enum_bn_primality_result_t, w: [*c]const BIGNUM, checks: c_int, ctx: ?*BN_CTX, cb: [*c]BN_GENCB) c_int; -pub extern fn BN_primality_test(is_probably_prime: [*c]c_int, candidate: [*c]const BIGNUM, checks: c_int, ctx: ?*BN_CTX, do_trial_division: c_int, cb: [*c]BN_GENCB) c_int; -pub extern fn BN_is_prime_fasttest_ex(candidate: [*c]const BIGNUM, checks: c_int, ctx: ?*BN_CTX, do_trial_division: c_int, cb: [*c]BN_GENCB) c_int; -pub extern fn BN_is_prime_ex(candidate: [*c]const BIGNUM, checks: c_int, ctx: ?*BN_CTX, cb: [*c]BN_GENCB) c_int; -pub extern fn BN_gcd(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mod_inverse(out: [*c]BIGNUM, a: [*c]const BIGNUM, n: [*c]const BIGNUM, ctx: ?*BN_CTX) [*c]BIGNUM; -pub extern fn BN_mod_inverse_blinded(out: [*c]BIGNUM, out_no_inverse: [*c]c_int, a: [*c]const BIGNUM, mont: [*c]const BN_MONT_CTX, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mod_inverse_odd(out: [*c]BIGNUM, out_no_inverse: [*c]c_int, a: [*c]const BIGNUM, n: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_MONT_CTX_new_for_modulus(mod: [*c]const BIGNUM, ctx: ?*BN_CTX) [*c]BN_MONT_CTX; -pub extern fn BN_MONT_CTX_new_consttime(mod: [*c]const BIGNUM, ctx: ?*BN_CTX) [*c]BN_MONT_CTX; -pub extern fn BN_MONT_CTX_free(mont: [*c]BN_MONT_CTX) void; -pub extern fn BN_MONT_CTX_copy(to: [*c]BN_MONT_CTX, from: [*c]const BN_MONT_CTX) [*c]BN_MONT_CTX; -pub extern fn BN_MONT_CTX_set_locked(pmont: [*c][*c]BN_MONT_CTX, lock: [*c]CRYPTO_MUTEX, mod: [*c]const BIGNUM, bn_ctx: ?*BN_CTX) c_int; -pub extern fn BN_to_montgomery(ret: [*c]BIGNUM, a: [*c]const BIGNUM, mont: [*c]const BN_MONT_CTX, ctx: ?*BN_CTX) c_int; -pub extern fn BN_from_montgomery(ret: [*c]BIGNUM, a: [*c]const BIGNUM, mont: [*c]const BN_MONT_CTX, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mod_mul_montgomery(r: [*c]BIGNUM, a: [*c]const BIGNUM, b: [*c]const BIGNUM, mont: [*c]const BN_MONT_CTX, ctx: ?*BN_CTX) c_int; -pub extern fn BN_exp(r: [*c]BIGNUM, a: [*c]const BIGNUM, p: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mod_exp(r: [*c]BIGNUM, a: [*c]const BIGNUM, p: [*c]const BIGNUM, m: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_mod_exp_mont(r: [*c]BIGNUM, a: [*c]const BIGNUM, p: [*c]const BIGNUM, m: [*c]const BIGNUM, ctx: ?*BN_CTX, mont: [*c]const BN_MONT_CTX) c_int; -pub extern fn BN_mod_exp_mont_consttime(rr: [*c]BIGNUM, a: [*c]const BIGNUM, p: [*c]const BIGNUM, m: [*c]const BIGNUM, ctx: ?*BN_CTX, mont: [*c]const BN_MONT_CTX) c_int; -pub extern fn BN_bn2mpi(in: [*c]const BIGNUM, out: [*c]u8) usize; -pub extern fn BN_mpi2bn(in: [*c]const u8, len: usize, out: [*c]BIGNUM) [*c]BIGNUM; -pub extern fn BN_mod_exp_mont_word(r: [*c]BIGNUM, a: u64, p: [*c]const BIGNUM, m: [*c]const BIGNUM, ctx: ?*BN_CTX, mont: [*c]const BN_MONT_CTX) c_int; -pub extern fn BN_mod_exp2_mont(r: [*c]BIGNUM, a1: [*c]const BIGNUM, p1: [*c]const BIGNUM, a2: [*c]const BIGNUM, p2: [*c]const BIGNUM, m: [*c]const BIGNUM, ctx: ?*BN_CTX, mont: [*c]const BN_MONT_CTX) c_int; -pub extern fn BN_MONT_CTX_new() [*c]BN_MONT_CTX; -pub extern fn BN_MONT_CTX_set(mont: [*c]BN_MONT_CTX, mod: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn BN_bn2binpad(in: [*c]const BIGNUM, out: [*c]u8, len: c_int) c_int; -pub extern fn BN_num_bits_word(l: u64) c_uint; pub extern fn ASN1_tag2bit(tag: c_int) c_ulong; pub extern fn ASN1_tag2str(tag: c_int) [*c]const u8; -pub const d2i_of_void = *const fn ([*c]?*anyopaque, [*c][*c]const u8, c_long) callconv(.C) ?*anyopaque; -pub const i2d_of_void = *const fn (?*const anyopaque, [*c][*c]u8) callconv(.C) c_int; +pub const d2i_of_void = fn ([*c]?*anyopaque, [*c][*c]const u8, c_long) callconv(.C) ?*anyopaque; +pub const i2d_of_void = fn (?*const anyopaque, [*c][*c]u8) callconv(.C) c_int; pub const ASN1_ITEM_EXP = ASN1_ITEM; pub extern fn ASN1_item_new(it: ?*const ASN1_ITEM) ?*ASN1_VALUE; pub extern fn ASN1_item_free(val: ?*ASN1_VALUE, it: ?*const ASN1_ITEM) void; pub extern fn ASN1_item_d2i(out: [*c]?*ASN1_VALUE, inp: [*c][*c]const u8, len: c_long, it: ?*const ASN1_ITEM) ?*ASN1_VALUE; pub extern fn ASN1_item_i2d(val: ?*ASN1_VALUE, outp: [*c][*c]u8, it: ?*const ASN1_ITEM) c_int; pub extern fn ASN1_item_dup(it: ?*const ASN1_ITEM, x: ?*anyopaque) ?*anyopaque; -pub extern fn ASN1_item_d2i_fp(it: ?*const ASN1_ITEM, in: [*c]FILE, out: ?*anyopaque) ?*anyopaque; +// pub extern fn ASN1_item_d2i_fp(it: ?*const ASN1_ITEM, in: [*c]FILE, out: ?*anyopaque) ?*anyopaque; pub extern fn ASN1_item_d2i_bio(it: ?*const ASN1_ITEM, in: [*c]BIO, out: ?*anyopaque) ?*anyopaque; -pub extern fn ASN1_item_i2d_fp(it: ?*const ASN1_ITEM, out: [*c]FILE, in: ?*anyopaque) c_int; +// pub extern fn ASN1_item_i2d_fp(it: ?*const ASN1_ITEM, out: [*c]FILE, in: ?*anyopaque) c_int; pub extern fn ASN1_item_i2d_bio(it: ?*const ASN1_ITEM, out: [*c]BIO, in: ?*anyopaque) c_int; pub extern fn ASN1_item_unpack(oct: [*c]const ASN1_STRING, it: ?*const ASN1_ITEM) ?*anyopaque; pub extern fn ASN1_item_pack(obj: ?*anyopaque, it: ?*const ASN1_ITEM, out: [*c][*c]ASN1_STRING) [*c]ASN1_STRING; @@ -1788,8 +1644,8 @@ pub extern fn ASN1_STRING_get0_data(str: [*c]const ASN1_STRING) [*c]const u8; pub extern fn ASN1_STRING_data(str: [*c]ASN1_STRING) [*c]u8; pub extern fn ASN1_STRING_length(str: [*c]const ASN1_STRING) c_int; pub extern fn ASN1_STRING_cmp(a: [*c]const ASN1_STRING, b: [*c]const ASN1_STRING) c_int; -pub extern fn ASN1_STRING_set(str: [*c]ASN1_STRING, data: ?[*]const u8, len: c_int) c_int; -pub extern fn ASN1_STRING_set0(str: [*c]ASN1_STRING, data: ?*anyopaque, len: c_int) void; +// pub extern fn ASN1_STRING_set(str: [*c]ASN1_STRING, data: ?*const anyopaque, len: ossl_ssize_t) c_int; +// pub extern fn ASN1_STRING_set0(str: [*c]ASN1_STRING, data: ?*anyopaque, len: c_int) void; pub extern fn ASN1_BMPSTRING_new() [*c]ASN1_BMPSTRING; pub extern fn ASN1_GENERALSTRING_new() [*c]ASN1_GENERALSTRING; pub extern fn ASN1_IA5STRING_new() [*c]ASN1_IA5STRING; @@ -1861,124 +1717,124 @@ pub extern fn c2i_ASN1_BIT_STRING(out: [*c][*c]ASN1_BIT_STRING, inp: [*c][*c]con pub extern fn i2c_ASN1_BIT_STRING(in: [*c]const ASN1_BIT_STRING, outp: [*c][*c]u8) c_int; pub extern const ASN1_BIT_STRING_it: ASN1_ITEM; pub extern fn ASN1_BIT_STRING_num_bytes(str: [*c]const ASN1_BIT_STRING, out: [*c]usize) c_int; -pub extern fn ASN1_BIT_STRING_set(str: [*c]ASN1_BIT_STRING, d: [*c]const u8, length: c_int) c_int; +// pub extern fn ASN1_BIT_STRING_set(str: [*c]ASN1_BIT_STRING, d: [*c]const u8, length: ossl_ssize_t) c_int; pub extern fn ASN1_BIT_STRING_set_bit(str: [*c]ASN1_BIT_STRING, n: c_int, value: c_int) c_int; pub extern fn ASN1_BIT_STRING_get_bit(str: [*c]const ASN1_BIT_STRING, n: c_int) c_int; pub extern fn ASN1_BIT_STRING_check(str: [*c]const ASN1_BIT_STRING, flags: [*c]const u8, flags_len: c_int) c_int; pub const struct_stack_st_ASN1_INTEGER = opaque {}; -pub const stack_ASN1_INTEGER_free_func = ?*const fn ([*c]ASN1_INTEGER) callconv(.C) void; -pub const stack_ASN1_INTEGER_copy_func = ?*const fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER; -pub const stack_ASN1_INTEGER_cmp_func = ?*const fn ([*c][*c]const ASN1_INTEGER, [*c][*c]const ASN1_INTEGER) callconv(.C) c_int; -pub fn sk_ASN1_INTEGER_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_ASN1_INTEGER_free_func = ?*const fn ([*c]ASN1_INTEGER) callconv(.C) void; +pub const sk_ASN1_INTEGER_copy_func = ?*const fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER; +pub const sk_ASN1_INTEGER_cmp_func = ?*const fn ([*c][*c]const ASN1_INTEGER, [*c][*c]const ASN1_INTEGER) callconv(.C) c_int; +pub fn sk_ASN1_INTEGER_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_ASN1_INTEGER_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]ASN1_INTEGER) callconv(.C) void), free_func)).?(@ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), ptr))); + @as(sk_ASN1_INTEGER_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]ASN1_INTEGER, @ptrCast(@alignCast(ptr)))); } -pub fn sk_ASN1_INTEGER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_ASN1_INTEGER_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_ASN1_INTEGER_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER), copy_func)).?(@ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_ASN1_INTEGER_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]ASN1_INTEGER, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_ASN1_INTEGER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_ASN1_INTEGER_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const ASN1_INTEGER = @ptrCast([*c]const ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), a.*)); - var b_ptr: [*c]const ASN1_INTEGER = @ptrCast([*c]const ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), b.*)); - return @ptrCast(stack_ASN1_INTEGER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const ASN1_INTEGER, [*c][*c]const ASN1_INTEGER) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const ASN1_INTEGER = @as([*c]const ASN1_INTEGER, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const ASN1_INTEGER = @as([*c]const ASN1_INTEGER, @ptrCast(@alignCast(b.*))); + return @as(sk_ASN1_INTEGER_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_ASN1_INTEGER_new(arg_comp: stack_ASN1_INTEGER_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_INTEGER { +pub fn sk_ASN1_INTEGER_new(arg_comp: sk_ASN1_INTEGER_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_INTEGER { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_ASN1_INTEGER, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_ASN1_INTEGER, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_ASN1_INTEGER_new_null() callconv(.C) ?*struct_stack_st_ASN1_INTEGER { - return @ptrCast(?*struct_stack_st_ASN1_INTEGER, sk_new_null()); + return @as(?*struct_stack_st_ASN1_INTEGER, @ptrCast(sk_new_null())); } pub fn sk_ASN1_INTEGER_num(arg_sk: ?*const struct_stack_st_ASN1_INTEGER) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_INTEGER_zero(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_INTEGER_value(arg_sk: ?*const struct_stack_st_ASN1_INTEGER, arg_i: usize) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_ASN1_INTEGER_set(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_i: usize, arg_p: [*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_ASN1_INTEGER_free(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_INTEGER_pop_free(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_free_func: stack_ASN1_INTEGER_free_func) callconv(.C) void { +pub fn sk_ASN1_INTEGER_pop_free(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_free_func: sk_ASN1_INTEGER_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_INTEGER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_INTEGER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_ASN1_INTEGER_insert(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_p: [*c]ASN1_INTEGER, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_ASN1_INTEGER_delete(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_where: usize) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_ASN1_INTEGER_delete_ptr(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_p: [*c]const ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_ASN1_INTEGER_find(arg_sk: ?*const struct_stack_st_ASN1_INTEGER, arg_out_index: [*c]usize, arg_p: [*c]const ASN1_INTEGER) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_ASN1_INTEGER_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_ASN1_INTEGER_call_cmp_func); } pub fn sk_ASN1_INTEGER_shift(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_ASN1_INTEGER_push(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_p: [*c]ASN1_INTEGER) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_ASN1_INTEGER_pop(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; - return @ptrCast([*c]ASN1_INTEGER, @alignCast(@import("std").meta.alignment(ASN1_INTEGER), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]ASN1_INTEGER, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_ASN1_INTEGER_dup(arg_sk: ?*const struct_stack_st_ASN1_INTEGER) callconv(.C) ?*struct_stack_st_ASN1_INTEGER { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_ASN1_INTEGER, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_ASN1_INTEGER, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_ASN1_INTEGER_sort(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_INTEGER_call_cmp_func); } pub fn sk_ASN1_INTEGER_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_INTEGER) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_INTEGER_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_comp: stack_ASN1_INTEGER_cmp_func) callconv(.C) stack_ASN1_INTEGER_cmp_func { +pub fn sk_ASN1_INTEGER_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_comp: sk_ASN1_INTEGER_cmp_func) callconv(.C) sk_ASN1_INTEGER_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_ASN1_INTEGER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const ASN1_INTEGER, [*c][*c]const ASN1_INTEGER) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_ASN1_INTEGER_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_ASN1_INTEGER_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_INTEGER, arg_copy_func: ?*const fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER, arg_free_func: ?*const fn ([*c]ASN1_INTEGER) callconv(.C) void) callconv(.C) ?*struct_stack_st_ASN1_INTEGER { +pub fn sk_ASN1_INTEGER_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_INTEGER, arg_copy_func: sk_ASN1_INTEGER_copy_func, arg_free_func: sk_ASN1_INTEGER_free_func) callconv(.C) ?*struct_stack_st_ASN1_INTEGER { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_ASN1_INTEGER, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_INTEGER_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_ASN1_INTEGER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_ASN1_INTEGER, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_INTEGER_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_ASN1_INTEGER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn ASN1_INTEGER_new() [*c]ASN1_INTEGER; pub extern fn ASN1_INTEGER_free(str: [*c]ASN1_INTEGER) void; @@ -1988,9 +1844,10 @@ pub extern fn i2d_ASN1_INTEGER(in: [*c]const ASN1_INTEGER, outp: [*c][*c]u8) c_i pub extern fn c2i_ASN1_INTEGER(in: [*c][*c]ASN1_INTEGER, outp: [*c][*c]const u8, len: c_long) [*c]ASN1_INTEGER; pub extern fn i2c_ASN1_INTEGER(in: [*c]const ASN1_INTEGER, outp: [*c][*c]u8) c_int; pub extern const ASN1_INTEGER_it: ASN1_ITEM; -pub extern fn ASN1_INTEGER_set(a: [*c]ASN1_INTEGER, v: c_long) c_int; pub extern fn ASN1_INTEGER_set_uint64(out: [*c]ASN1_INTEGER, v: u64) c_int; -pub extern fn ASN1_INTEGER_get(a: [*c]const ASN1_INTEGER) c_long; +pub extern fn ASN1_INTEGER_set_int64(out: [*c]ASN1_INTEGER, v: i64) c_int; +pub extern fn ASN1_INTEGER_get_uint64(out: [*c]u64, a: [*c]const ASN1_INTEGER) c_int; +pub extern fn ASN1_INTEGER_get_int64(out: [*c]i64, a: [*c]const ASN1_INTEGER) c_int; pub extern fn BN_to_ASN1_INTEGER(bn: [*c]const BIGNUM, ai: [*c]ASN1_INTEGER) [*c]ASN1_INTEGER; pub extern fn ASN1_INTEGER_to_BN(ai: [*c]const ASN1_INTEGER, bn: [*c]BIGNUM) [*c]BIGNUM; pub extern fn ASN1_INTEGER_cmp(x: [*c]const ASN1_INTEGER, y: [*c]const ASN1_INTEGER) c_int; @@ -1999,8 +1856,10 @@ pub extern fn ASN1_ENUMERATED_free(str: [*c]ASN1_ENUMERATED) void; pub extern fn d2i_ASN1_ENUMERATED(out: [*c][*c]ASN1_ENUMERATED, inp: [*c][*c]const u8, len: c_long) [*c]ASN1_ENUMERATED; pub extern fn i2d_ASN1_ENUMERATED(in: [*c]const ASN1_ENUMERATED, outp: [*c][*c]u8) c_int; pub extern const ASN1_ENUMERATED_it: ASN1_ITEM; -pub extern fn ASN1_ENUMERATED_set(a: [*c]ASN1_ENUMERATED, v: c_long) c_int; -pub extern fn ASN1_ENUMERATED_get(a: [*c]const ASN1_ENUMERATED) c_long; +pub extern fn ASN1_ENUMERATED_set_uint64(out: [*c]ASN1_ENUMERATED, v: u64) c_int; +pub extern fn ASN1_ENUMERATED_set_int64(out: [*c]ASN1_ENUMERATED, v: i64) c_int; +pub extern fn ASN1_ENUMERATED_get_uint64(out: [*c]u64, a: [*c]const ASN1_ENUMERATED) c_int; +pub extern fn ASN1_ENUMERATED_get_int64(out: [*c]i64, a: [*c]const ASN1_ENUMERATED) c_int; pub extern fn BN_to_ASN1_ENUMERATED(bn: [*c]const BIGNUM, ai: [*c]ASN1_ENUMERATED) [*c]ASN1_ENUMERATED; pub extern fn ASN1_ENUMERATED_to_BN(ai: [*c]const ASN1_ENUMERATED, bn: [*c]BIGNUM) [*c]BIGNUM; pub extern fn ASN1_UTCTIME_new() [*c]ASN1_UTCTIME; @@ -2033,125 +1892,127 @@ pub extern fn ASN1_TIME_adj(s: [*c]ASN1_TIME, t: time_t, offset_day: c_int, offs pub extern fn ASN1_TIME_check(t: [*c]const ASN1_TIME) c_int; pub extern fn ASN1_TIME_to_generalizedtime(t: [*c]const ASN1_TIME, out: [*c][*c]ASN1_GENERALIZEDTIME) [*c]ASN1_GENERALIZEDTIME; pub extern fn ASN1_TIME_set_string(s: [*c]ASN1_TIME, str: [*c]const u8) c_int; +pub extern fn ASN1_TIME_to_time_t(t: [*c]const ASN1_TIME, out: [*c]time_t) c_int; +pub extern fn ASN1_TIME_to_posix(t: [*c]const ASN1_TIME, out: [*c]i64) c_int; pub extern fn ASN1_NULL_new() ?*ASN1_NULL; pub extern fn ASN1_NULL_free(@"null": ?*ASN1_NULL) void; pub extern fn d2i_ASN1_NULL(out: [*c]?*ASN1_NULL, inp: [*c][*c]const u8, len: c_long) ?*ASN1_NULL; pub extern fn i2d_ASN1_NULL(in: ?*const ASN1_NULL, outp: [*c][*c]u8) c_int; pub extern const ASN1_NULL_it: ASN1_ITEM; pub const struct_stack_st_ASN1_OBJECT = opaque {}; -pub const stack_ASN1_OBJECT_free_func = ?*const fn (?*ASN1_OBJECT) callconv(.C) void; -pub const stack_ASN1_OBJECT_copy_func = ?*const fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT; -pub const stack_ASN1_OBJECT_cmp_func = ?*const fn ([*c]?*const ASN1_OBJECT, [*c]?*const ASN1_OBJECT) callconv(.C) c_int; -pub fn sk_ASN1_OBJECT_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_ASN1_OBJECT_free_func = ?*const fn (?*ASN1_OBJECT) callconv(.C) void; +pub const sk_ASN1_OBJECT_copy_func = ?*const fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT; +pub const sk_ASN1_OBJECT_cmp_func = ?*const fn ([*c]?*const ASN1_OBJECT, [*c]?*const ASN1_OBJECT) callconv(.C) c_int; +pub fn sk_ASN1_OBJECT_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_ASN1_OBJECT_free_func, @alignCast(@import("std").meta.alignment(fn (?*ASN1_OBJECT) callconv(.C) void), free_func)).?(@ptrCast(?*ASN1_OBJECT, ptr)); + @as(sk_ASN1_OBJECT_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*ASN1_OBJECT, @ptrCast(ptr))); } -pub fn sk_ASN1_OBJECT_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_ASN1_OBJECT_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_ASN1_OBJECT_copy_func, @alignCast(@import("std").meta.alignment(fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT), copy_func)).?(@ptrCast(?*ASN1_OBJECT, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_ASN1_OBJECT_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*ASN1_OBJECT, @ptrCast(ptr))))); } -pub fn sk_ASN1_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_ASN1_OBJECT_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const ASN1_OBJECT = @ptrCast(?*const ASN1_OBJECT, a.*); - var b_ptr: ?*const ASN1_OBJECT = @ptrCast(?*const ASN1_OBJECT, b.*); - return @ptrCast(stack_ASN1_OBJECT_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const ASN1_OBJECT, [*c]?*const ASN1_OBJECT) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const ASN1_OBJECT = @as(?*const ASN1_OBJECT, @ptrCast(a.*)); + var b_ptr: ?*const ASN1_OBJECT = @as(?*const ASN1_OBJECT, @ptrCast(b.*)); + return @as(sk_ASN1_OBJECT_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_ASN1_OBJECT_new(arg_comp: stack_ASN1_OBJECT_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_OBJECT { +pub fn sk_ASN1_OBJECT_new(arg_comp: sk_ASN1_OBJECT_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_OBJECT { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_ASN1_OBJECT, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_ASN1_OBJECT, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_ASN1_OBJECT_new_null() callconv(.C) ?*struct_stack_st_ASN1_OBJECT { - return @ptrCast(?*struct_stack_st_ASN1_OBJECT, sk_new_null()); + return @as(?*struct_stack_st_ASN1_OBJECT, @ptrCast(sk_new_null())); } pub fn sk_ASN1_OBJECT_num(arg_sk: ?*const struct_stack_st_ASN1_OBJECT) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_OBJECT_zero(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_OBJECT_value(arg_sk: ?*const struct_stack_st_ASN1_OBJECT, arg_i: usize) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*ASN1_OBJECT, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*ASN1_OBJECT, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_ASN1_OBJECT_set(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_i: usize, arg_p: ?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*ASN1_OBJECT, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*ASN1_OBJECT, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_ASN1_OBJECT_free(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_OBJECT_pop_free(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_free_func: stack_ASN1_OBJECT_free_func) callconv(.C) void { +pub fn sk_ASN1_OBJECT_pop_free(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_free_func: sk_ASN1_OBJECT_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_OBJECT_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_ASN1_OBJECT_insert(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_p: ?*ASN1_OBJECT, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_ASN1_OBJECT_delete(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_where: usize) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*ASN1_OBJECT, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*ASN1_OBJECT, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_ASN1_OBJECT_delete_ptr(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_p: ?*const ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*ASN1_OBJECT, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*ASN1_OBJECT, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_ASN1_OBJECT_find(arg_sk: ?*const struct_stack_st_ASN1_OBJECT, arg_out_index: [*c]usize, arg_p: ?*const ASN1_OBJECT) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_ASN1_OBJECT_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_ASN1_OBJECT_call_cmp_func); } pub fn sk_ASN1_OBJECT_shift(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; - return @ptrCast(?*ASN1_OBJECT, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*ASN1_OBJECT, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_ASN1_OBJECT_push(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_p: ?*ASN1_OBJECT) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_ASN1_OBJECT_pop(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; - return @ptrCast(?*ASN1_OBJECT, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*ASN1_OBJECT, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_ASN1_OBJECT_dup(arg_sk: ?*const struct_stack_st_ASN1_OBJECT) callconv(.C) ?*struct_stack_st_ASN1_OBJECT { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_ASN1_OBJECT, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_ASN1_OBJECT, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_ASN1_OBJECT_sort(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_OBJECT_call_cmp_func); } pub fn sk_ASN1_OBJECT_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_OBJECT) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_OBJECT_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_comp: stack_ASN1_OBJECT_cmp_func) callconv(.C) stack_ASN1_OBJECT_cmp_func { +pub fn sk_ASN1_OBJECT_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_comp: sk_ASN1_OBJECT_cmp_func) callconv(.C) sk_ASN1_OBJECT_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_ASN1_OBJECT_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const ASN1_OBJECT, [*c]?*const ASN1_OBJECT) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_ASN1_OBJECT_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_ASN1_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_OBJECT, arg_copy_func: ?*const fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT, arg_free_func: ?*const fn (?*ASN1_OBJECT) callconv(.C) void) callconv(.C) ?*struct_stack_st_ASN1_OBJECT { +pub fn sk_ASN1_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_OBJECT, arg_copy_func: sk_ASN1_OBJECT_copy_func, arg_free_func: sk_ASN1_OBJECT_free_func) callconv(.C) ?*struct_stack_st_ASN1_OBJECT { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_ASN1_OBJECT, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_OBJECT_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_ASN1_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_ASN1_OBJECT, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_OBJECT_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_ASN1_OBJECT_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn ASN1_OBJECT_create(nid: c_int, data: [*c]const u8, len: c_int, sn: [*c]const u8, ln: [*c]const u8) ?*ASN1_OBJECT; pub extern fn ASN1_OBJECT_free(a: ?*ASN1_OBJECT) void; @@ -2160,119 +2021,119 @@ pub extern fn i2d_ASN1_OBJECT(a: ?*const ASN1_OBJECT, outp: [*c][*c]u8) c_int; pub extern fn c2i_ASN1_OBJECT(out: [*c]?*ASN1_OBJECT, inp: [*c][*c]const u8, len: c_long) ?*ASN1_OBJECT; pub extern const ASN1_OBJECT_it: ASN1_ITEM; pub const struct_stack_st_ASN1_TYPE = opaque {}; -pub const stack_ASN1_TYPE_free_func = ?*const fn ([*c]ASN1_TYPE) callconv(.C) void; -pub const stack_ASN1_TYPE_copy_func = ?*const fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE; -pub const stack_ASN1_TYPE_cmp_func = ?*const fn ([*c][*c]const ASN1_TYPE, [*c][*c]const ASN1_TYPE) callconv(.C) c_int; -pub fn sk_ASN1_TYPE_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_ASN1_TYPE_free_func = ?*const fn ([*c]ASN1_TYPE) callconv(.C) void; +pub const sk_ASN1_TYPE_copy_func = ?*const fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE; +pub const sk_ASN1_TYPE_cmp_func = ?*const fn ([*c][*c]const ASN1_TYPE, [*c][*c]const ASN1_TYPE) callconv(.C) c_int; +pub fn sk_ASN1_TYPE_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_ASN1_TYPE_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]ASN1_TYPE) callconv(.C) void), free_func)).?(@ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), ptr))); + @as(sk_ASN1_TYPE_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]ASN1_TYPE, @ptrCast(@alignCast(ptr)))); } -pub fn sk_ASN1_TYPE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_ASN1_TYPE_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_ASN1_TYPE_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE), copy_func)).?(@ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_ASN1_TYPE_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]ASN1_TYPE, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_ASN1_TYPE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_ASN1_TYPE_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const ASN1_TYPE = @ptrCast([*c]const ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), a.*)); - var b_ptr: [*c]const ASN1_TYPE = @ptrCast([*c]const ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), b.*)); - return @ptrCast(stack_ASN1_TYPE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const ASN1_TYPE, [*c][*c]const ASN1_TYPE) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const ASN1_TYPE = @as([*c]const ASN1_TYPE, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const ASN1_TYPE = @as([*c]const ASN1_TYPE, @ptrCast(@alignCast(b.*))); + return @as(sk_ASN1_TYPE_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_ASN1_TYPE_new(arg_comp: stack_ASN1_TYPE_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_TYPE { +pub fn sk_ASN1_TYPE_new(arg_comp: sk_ASN1_TYPE_cmp_func) callconv(.C) ?*struct_stack_st_ASN1_TYPE { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_ASN1_TYPE, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_ASN1_TYPE, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_ASN1_TYPE_new_null() callconv(.C) ?*struct_stack_st_ASN1_TYPE { - return @ptrCast(?*struct_stack_st_ASN1_TYPE, sk_new_null()); + return @as(?*struct_stack_st_ASN1_TYPE, @ptrCast(sk_new_null())); } pub fn sk_ASN1_TYPE_num(arg_sk: ?*const struct_stack_st_ASN1_TYPE) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_TYPE_zero(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_ASN1_TYPE_value(arg_sk: ?*const struct_stack_st_ASN1_TYPE, arg_i: usize) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_ASN1_TYPE_set(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_i: usize, arg_p: [*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_ASN1_TYPE_free(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_TYPE_pop_free(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_free_func: stack_ASN1_TYPE_free_func) callconv(.C) void { +pub fn sk_ASN1_TYPE_pop_free(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_free_func: sk_ASN1_TYPE_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_TYPE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_TYPE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_ASN1_TYPE_insert(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_p: [*c]ASN1_TYPE, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_ASN1_TYPE_delete(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_where: usize) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_ASN1_TYPE_delete_ptr(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_p: [*c]const ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_ASN1_TYPE_find(arg_sk: ?*const struct_stack_st_ASN1_TYPE, arg_out_index: [*c]usize, arg_p: [*c]const ASN1_TYPE) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_ASN1_TYPE_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_ASN1_TYPE_call_cmp_func); } pub fn sk_ASN1_TYPE_shift(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_ASN1_TYPE_push(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_p: [*c]ASN1_TYPE) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_ASN1_TYPE_pop(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; - return @ptrCast([*c]ASN1_TYPE, @alignCast(@import("std").meta.alignment(ASN1_TYPE), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]ASN1_TYPE, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_ASN1_TYPE_dup(arg_sk: ?*const struct_stack_st_ASN1_TYPE) callconv(.C) ?*struct_stack_st_ASN1_TYPE { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_ASN1_TYPE, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_ASN1_TYPE, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_ASN1_TYPE_sort(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_TYPE_call_cmp_func); } pub fn sk_ASN1_TYPE_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_TYPE) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_ASN1_TYPE_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_comp: stack_ASN1_TYPE_cmp_func) callconv(.C) stack_ASN1_TYPE_cmp_func { +pub fn sk_ASN1_TYPE_set_cmp_func(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_comp: sk_ASN1_TYPE_cmp_func) callconv(.C) sk_ASN1_TYPE_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_ASN1_TYPE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const ASN1_TYPE, [*c][*c]const ASN1_TYPE) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_ASN1_TYPE_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_ASN1_TYPE_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_TYPE, arg_copy_func: ?*const fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE, arg_free_func: ?*const fn ([*c]ASN1_TYPE) callconv(.C) void) callconv(.C) ?*struct_stack_st_ASN1_TYPE { +pub fn sk_ASN1_TYPE_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_TYPE, arg_copy_func: sk_ASN1_TYPE_copy_func, arg_free_func: sk_ASN1_TYPE_free_func) callconv(.C) ?*struct_stack_st_ASN1_TYPE { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_ASN1_TYPE, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_ASN1_TYPE_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_ASN1_TYPE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_ASN1_TYPE, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_ASN1_TYPE_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_ASN1_TYPE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn ASN1_TYPE_new() [*c]ASN1_TYPE; pub extern fn ASN1_TYPE_free(a: [*c]ASN1_TYPE) void; @@ -2293,7 +2154,7 @@ pub extern fn ASN1_GENERALIZEDTIME_print(out: [*c]BIO, a: [*c]const ASN1_GENERAL pub extern fn ASN1_TIME_print(out: [*c]BIO, a: [*c]const ASN1_TIME) c_int; pub extern fn ASN1_STRING_print(out: [*c]BIO, str: [*c]const ASN1_STRING) c_int; pub extern fn ASN1_STRING_print_ex(out: [*c]BIO, str: [*c]const ASN1_STRING, flags: c_ulong) c_int; -pub extern fn ASN1_STRING_print_ex_fp(fp: [*c]FILE, str: [*c]const ASN1_STRING, flags: c_ulong) c_int; +// pub extern fn ASN1_STRING_print_ex_fp(fp: [*c]FILE, str: [*c]const ASN1_STRING, flags: c_ulong) c_int; pub extern fn i2a_ASN1_INTEGER(bp: [*c]BIO, a: [*c]const ASN1_INTEGER) c_int; pub extern fn i2a_ASN1_ENUMERATED(bp: [*c]BIO, a: [*c]const ASN1_ENUMERATED) c_int; pub extern fn i2a_ASN1_OBJECT(bp: [*c]BIO, a: ?*const ASN1_OBJECT) c_int; @@ -2303,7 +2164,6 @@ pub extern fn ASN1_get_object(inp: [*c][*c]const u8, out_length: [*c]c_long, out pub extern fn ASN1_put_object(outp: [*c][*c]u8, constructed: c_int, length: c_int, tag: c_int, xclass: c_int) void; pub extern fn ASN1_put_eoc(outp: [*c][*c]u8) c_int; pub extern fn ASN1_object_size(constructed: c_int, length: c_int, tag: c_int) c_int; -pub extern fn ASN1_PRINTABLE_type(s: [*c]const u8, len: c_int) c_int; pub extern fn ASN1_STRING_set_default_mask(mask: c_ulong) void; pub extern fn ASN1_STRING_set_default_mask_asc(p: [*c]const u8) c_int; pub extern fn ASN1_STRING_get_default_mask() c_ulong; @@ -2313,36 +2173,46 @@ pub extern fn ASN1_PRINTABLE_free(str: [*c]ASN1_STRING) void; pub extern fn d2i_ASN1_PRINTABLE(out: [*c][*c]ASN1_STRING, inp: [*c][*c]const u8, len: c_long) [*c]ASN1_STRING; pub extern fn i2d_ASN1_PRINTABLE(in: [*c]const ASN1_STRING, outp: [*c][*c]u8) c_int; pub extern const ASN1_PRINTABLE_it: ASN1_ITEM; -pub extern fn DH_new() [*c]DH; -pub extern fn DH_free(dh: [*c]DH) void; -pub extern fn DH_up_ref(dh: [*c]DH) c_int; -pub extern fn DH_get0_pub_key(dh: [*c]const DH) [*c]const BIGNUM; -pub extern fn DH_get0_priv_key(dh: [*c]const DH) [*c]const BIGNUM; -pub extern fn DH_get0_p(dh: [*c]const DH) [*c]const BIGNUM; -pub extern fn DH_get0_q(dh: [*c]const DH) [*c]const BIGNUM; -pub extern fn DH_get0_g(dh: [*c]const DH) [*c]const BIGNUM; -pub extern fn DH_get0_key(dh: [*c]const DH, out_pub_key: [*c][*c]const BIGNUM, out_priv_key: [*c][*c]const BIGNUM) void; -pub extern fn DH_set0_key(dh: [*c]DH, pub_key: [*c]BIGNUM, priv_key: [*c]BIGNUM) c_int; -pub extern fn DH_get0_pqg(dh: [*c]const DH, out_p: [*c][*c]const BIGNUM, out_q: [*c][*c]const BIGNUM, out_g: [*c][*c]const BIGNUM) void; -pub extern fn DH_set0_pqg(dh: [*c]DH, p: [*c]BIGNUM, q: [*c]BIGNUM, g: [*c]BIGNUM) c_int; -pub extern fn DH_set_length(dh: [*c]DH, priv_length: c_uint) c_int; +pub extern fn ASN1_INTEGER_set(a: [*c]ASN1_INTEGER, v: c_long) c_int; +pub extern fn ASN1_ENUMERATED_set(a: [*c]ASN1_ENUMERATED, v: c_long) c_int; +pub extern fn ASN1_INTEGER_get(a: [*c]const ASN1_INTEGER) c_long; +pub extern fn ASN1_ENUMERATED_get(a: [*c]const ASN1_ENUMERATED) c_long; +pub extern fn DH_new() ?*DH; +pub extern fn DH_free(dh: ?*DH) void; +pub extern fn DH_up_ref(dh: ?*DH) c_int; +pub extern fn DH_bits(dh: ?*const DH) c_uint; +pub extern fn DH_get0_pub_key(dh: ?*const DH) [*c]const BIGNUM; +pub extern fn DH_get0_priv_key(dh: ?*const DH) [*c]const BIGNUM; +pub extern fn DH_get0_p(dh: ?*const DH) [*c]const BIGNUM; +pub extern fn DH_get0_q(dh: ?*const DH) [*c]const BIGNUM; +pub extern fn DH_get0_g(dh: ?*const DH) [*c]const BIGNUM; +pub extern fn DH_get0_key(dh: ?*const DH, out_pub_key: [*c][*c]const BIGNUM, out_priv_key: [*c][*c]const BIGNUM) void; +pub extern fn DH_set0_key(dh: ?*DH, pub_key: [*c]BIGNUM, priv_key: [*c]BIGNUM) c_int; +pub extern fn DH_get0_pqg(dh: ?*const DH, out_p: [*c][*c]const BIGNUM, out_q: [*c][*c]const BIGNUM, out_g: [*c][*c]const BIGNUM) void; +pub extern fn DH_set0_pqg(dh: ?*DH, p: [*c]BIGNUM, q: [*c]BIGNUM, g: [*c]BIGNUM) c_int; +pub extern fn DH_set_length(dh: ?*DH, priv_length: c_uint) c_int; +pub extern fn DH_get_rfc7919_2048() ?*DH; pub extern fn BN_get_rfc3526_prime_1536(ret: [*c]BIGNUM) [*c]BIGNUM; -pub extern fn DH_get_rfc7919_2048() [*c]DH; -pub extern fn DH_generate_parameters_ex(dh: [*c]DH, prime_bits: c_int, generator: c_int, cb: [*c]BN_GENCB) c_int; -pub extern fn DH_generate_key(dh: [*c]DH) c_int; -pub extern fn DH_compute_key_padded(out: [*c]u8, peers_key: [*c]const BIGNUM, dh: [*c]DH) c_int; -pub extern fn DH_compute_key_hashed(dh: [*c]DH, out: [*c]u8, out_len: [*c]usize, max_out_len: usize, peers_key: [*c]const BIGNUM, digest: ?*const EVP_MD) c_int; -pub extern fn DH_size(dh: [*c]const DH) c_int; -pub extern fn DH_num_bits(dh: [*c]const DH) c_uint; -pub extern fn DH_check(dh: [*c]const DH, out_flags: [*c]c_int) c_int; -pub extern fn DH_check_pub_key(dh: [*c]const DH, pub_key: [*c]const BIGNUM, out_flags: [*c]c_int) c_int; -pub extern fn DHparams_dup(dh: [*c]const DH) [*c]DH; -pub extern fn DH_parse_parameters(cbs: [*c]CBS) [*c]DH; -pub extern fn DH_marshal_parameters(cbb: [*c]CBB, dh: [*c]const DH) c_int; -pub extern fn DH_generate_parameters(prime_len: c_int, generator: c_int, callback: ?*const fn (c_int, c_int, ?*anyopaque) callconv(.C) void, cb_arg: ?*anyopaque) [*c]DH; -pub extern fn d2i_DHparams(ret: [*c][*c]DH, inp: [*c][*c]const u8, len: c_long) [*c]DH; -pub extern fn i2d_DHparams(in: [*c]const DH, outp: [*c][*c]u8) c_int; -pub extern fn DH_compute_key(out: [*c]u8, peers_key: [*c]const BIGNUM, dh: [*c]DH) c_int; +pub extern fn BN_get_rfc3526_prime_2048(ret: [*c]BIGNUM) [*c]BIGNUM; +pub extern fn BN_get_rfc3526_prime_3072(ret: [*c]BIGNUM) [*c]BIGNUM; +pub extern fn BN_get_rfc3526_prime_4096(ret: [*c]BIGNUM) [*c]BIGNUM; +pub extern fn BN_get_rfc3526_prime_6144(ret: [*c]BIGNUM) [*c]BIGNUM; +pub extern fn BN_get_rfc3526_prime_8192(ret: [*c]BIGNUM) [*c]BIGNUM; +pub extern fn DH_generate_parameters_ex(dh: ?*DH, prime_bits: c_int, generator: c_int, cb: [*c]BN_GENCB) c_int; +pub extern fn DH_generate_key(dh: ?*DH) c_int; +pub extern fn DH_compute_key_padded(out: [*c]u8, peers_key: [*c]const BIGNUM, dh: ?*DH) c_int; +pub extern fn DH_compute_key_hashed(dh: ?*DH, out: [*c]u8, out_len: [*c]usize, max_out_len: usize, peers_key: [*c]const BIGNUM, digest: ?*const EVP_MD) c_int; +pub extern fn DH_size(dh: ?*const DH) c_int; +pub extern fn DH_num_bits(dh: ?*const DH) c_uint; +pub extern fn DH_check(dh: ?*const DH, out_flags: [*c]c_int) c_int; +pub extern fn DH_check_pub_key(dh: ?*const DH, pub_key: [*c]const BIGNUM, out_flags: [*c]c_int) c_int; +pub extern fn DHparams_dup(dh: ?*const DH) ?*DH; +pub extern fn DH_parse_parameters(cbs: [*c]CBS) ?*DH; +pub extern fn DH_marshal_parameters(cbb: ?*CBB, dh: ?*const DH) c_int; +pub extern fn DH_generate_parameters(prime_len: c_int, generator: c_int, callback: ?*const fn (c_int, c_int, ?*anyopaque) callconv(.C) void, cb_arg: ?*anyopaque) ?*DH; +pub extern fn d2i_DHparams(ret: [*c]?*DH, inp: [*c][*c]const u8, len: c_long) ?*DH; +pub extern fn i2d_DHparams(in: ?*const DH, outp: [*c][*c]u8) c_int; +pub extern fn DH_compute_key(out: [*c]u8, peers_key: [*c]const BIGNUM, dh: ?*DH) c_int; pub extern fn ENGINE_new() ?*ENGINE; pub extern fn ENGINE_free(engine: ?*ENGINE) c_int; pub extern fn ENGINE_set_RSA_method(engine: ?*ENGINE, method: [*c]const RSA_METHOD, method_size: usize) c_int; @@ -2354,6 +2224,7 @@ pub extern fn METHOD_unref(method: ?*anyopaque) void; pub extern fn DSA_new() [*c]DSA; pub extern fn DSA_free(dsa: [*c]DSA) void; pub extern fn DSA_up_ref(dsa: [*c]DSA) c_int; +pub extern fn DSA_bits(dsa: [*c]const DSA) c_uint; pub extern fn DSA_get0_pub_key(dsa: [*c]const DSA) [*c]const BIGNUM; pub extern fn DSA_get0_priv_key(dsa: [*c]const DSA) [*c]const BIGNUM; pub extern fn DSA_get0_p(dsa: [*c]const DSA) [*c]const BIGNUM; @@ -2378,15 +2249,15 @@ pub extern fn DSA_verify(@"type": c_int, digest: [*c]const u8, digest_len: usize pub extern fn DSA_check_signature(out_valid: [*c]c_int, digest: [*c]const u8, digest_len: usize, sig: [*c]const u8, sig_len: usize, dsa: [*c]const DSA) c_int; pub extern fn DSA_size(dsa: [*c]const DSA) c_int; pub extern fn DSA_SIG_parse(cbs: [*c]CBS) [*c]DSA_SIG; -pub extern fn DSA_SIG_marshal(cbb: [*c]CBB, sig: [*c]const DSA_SIG) c_int; +pub extern fn DSA_SIG_marshal(cbb: ?*CBB, sig: [*c]const DSA_SIG) c_int; pub extern fn DSA_parse_public_key(cbs: [*c]CBS) [*c]DSA; -pub extern fn DSA_marshal_public_key(cbb: [*c]CBB, dsa: [*c]const DSA) c_int; +pub extern fn DSA_marshal_public_key(cbb: ?*CBB, dsa: [*c]const DSA) c_int; pub extern fn DSA_parse_private_key(cbs: [*c]CBS) [*c]DSA; -pub extern fn DSA_marshal_private_key(cbb: [*c]CBB, dsa: [*c]const DSA) c_int; +pub extern fn DSA_marshal_private_key(cbb: ?*CBB, dsa: [*c]const DSA) c_int; pub extern fn DSA_parse_parameters(cbs: [*c]CBS) [*c]DSA; -pub extern fn DSA_marshal_parameters(cbb: [*c]CBB, dsa: [*c]const DSA) c_int; -pub extern fn DSA_dup_DH(dsa: [*c]const DSA) [*c]DH; -pub extern fn DSA_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn DSA_marshal_parameters(cbb: ?*CBB, dsa: [*c]const DSA) c_int; +pub extern fn DSA_dup_DH(dsa: [*c]const DSA) ?*DH; +pub extern fn DSA_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn DSA_set_ex_data(dsa: [*c]DSA, idx: c_int, arg: ?*anyopaque) c_int; pub extern fn DSA_get_ex_data(dsa: [*c]const DSA, idx: c_int) ?*anyopaque; pub extern fn d2i_DSA_SIG(out_sig: [*c][*c]DSA_SIG, inp: [*c][*c]const u8, len: c_long) [*c]DSA_SIG; @@ -2427,8 +2298,9 @@ pub extern fn EC_POINT_get_affine_coordinates_GFp(group: ?*const EC_GROUP, point pub extern fn EC_POINT_get_affine_coordinates(group: ?*const EC_GROUP, point: ?*const EC_POINT, x: [*c]BIGNUM, y: [*c]BIGNUM, ctx: ?*BN_CTX) c_int; pub extern fn EC_POINT_set_affine_coordinates_GFp(group: ?*const EC_GROUP, point: ?*EC_POINT, x: [*c]const BIGNUM, y: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; pub extern fn EC_POINT_set_affine_coordinates(group: ?*const EC_GROUP, point: ?*EC_POINT, x: [*c]const BIGNUM, y: [*c]const BIGNUM, ctx: ?*BN_CTX) c_int; -pub extern fn EC_POINT_point2oct(group: ?*const EC_GROUP, point: ?*const EC_POINT, form: point_conversion_form_t, buf: [*c]u8, len: usize, ctx: ?*BN_CTX) usize; -pub extern fn EC_POINT_point2cbb(out: [*c]CBB, group: ?*const EC_GROUP, point: ?*const EC_POINT, form: point_conversion_form_t, ctx: ?*BN_CTX) c_int; +pub extern fn EC_POINT_point2oct(group: ?*const EC_GROUP, point: ?*const EC_POINT, form: point_conversion_form_t, buf: [*c]u8, max_out: usize, ctx: ?*BN_CTX) usize; +pub extern fn EC_POINT_point2buf(group: ?*const EC_GROUP, point: ?*const EC_POINT, form: point_conversion_form_t, out_buf: [*c][*c]u8, ctx: ?*BN_CTX) usize; +pub extern fn EC_POINT_point2cbb(out: ?*CBB, group: ?*const EC_GROUP, point: ?*const EC_POINT, form: point_conversion_form_t, ctx: ?*BN_CTX) c_int; pub extern fn EC_POINT_oct2point(group: ?*const EC_GROUP, point: ?*EC_POINT, buf: [*c]const u8, len: usize, ctx: ?*BN_CTX) c_int; pub extern fn EC_POINT_set_compressed_coordinates_GFp(group: ?*const EC_GROUP, point: ?*EC_POINT, x: [*c]const BIGNUM, y_bit: c_int, ctx: ?*BN_CTX) c_int; pub extern fn EC_POINT_add(group: ?*const EC_GROUP, r: ?*EC_POINT, a: ?*const EC_POINT, b: ?*const EC_POINT, ctx: ?*BN_CTX) c_int; @@ -2471,16 +2343,20 @@ pub extern fn EC_KEY_set_conv_form(key: ?*EC_KEY, cform: point_conversion_form_t pub extern fn EC_KEY_check_key(key: ?*const EC_KEY) c_int; pub extern fn EC_KEY_check_fips(key: ?*const EC_KEY) c_int; pub extern fn EC_KEY_set_public_key_affine_coordinates(key: ?*EC_KEY, x: [*c]const BIGNUM, y: [*c]const BIGNUM) c_int; +pub extern fn EC_KEY_oct2key(key: ?*EC_KEY, in: [*c]const u8, len: usize, ctx: ?*BN_CTX) c_int; pub extern fn EC_KEY_key2buf(key: ?*const EC_KEY, form: point_conversion_form_t, out_buf: [*c][*c]u8, ctx: ?*BN_CTX) usize; +pub extern fn EC_KEY_oct2priv(key: ?*EC_KEY, in: [*c]const u8, len: usize) c_int; +pub extern fn EC_KEY_priv2oct(key: ?*const EC_KEY, out: [*c]u8, max_out: usize) usize; +pub extern fn EC_KEY_priv2buf(key: ?*const EC_KEY, out_buf: [*c][*c]u8) usize; pub extern fn EC_KEY_generate_key(key: ?*EC_KEY) c_int; pub extern fn EC_KEY_generate_key_fips(key: ?*EC_KEY) c_int; pub extern fn EC_KEY_derive_from_secret(group: ?*const EC_GROUP, secret: [*c]const u8, secret_len: usize) ?*EC_KEY; pub extern fn EC_KEY_parse_private_key(cbs: [*c]CBS, group: ?*const EC_GROUP) ?*EC_KEY; -pub extern fn EC_KEY_marshal_private_key(cbb: [*c]CBB, key: ?*const EC_KEY, enc_flags: c_uint) c_int; +pub extern fn EC_KEY_marshal_private_key(cbb: ?*CBB, key: ?*const EC_KEY, enc_flags: c_uint) c_int; pub extern fn EC_KEY_parse_curve_name(cbs: [*c]CBS) ?*EC_GROUP; -pub extern fn EC_KEY_marshal_curve_name(cbb: [*c]CBB, group: ?*const EC_GROUP) c_int; +pub extern fn EC_KEY_marshal_curve_name(cbb: ?*CBB, group: ?*const EC_GROUP) c_int; pub extern fn EC_KEY_parse_parameters(cbs: [*c]CBS) ?*EC_GROUP; -pub extern fn EC_KEY_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn EC_KEY_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn EC_KEY_set_ex_data(r: ?*EC_KEY, idx: c_int, arg: ?*anyopaque) c_int; pub extern fn EC_KEY_get_ex_data(r: ?*const EC_KEY, idx: c_int) ?*anyopaque; pub extern fn EC_KEY_set_asn1_flag(key: ?*EC_KEY, flag: c_int) void; @@ -2505,85 +2381,89 @@ pub extern fn ECDSA_do_sign(digest: [*c]const u8, digest_len: usize, key: ?*cons pub extern fn ECDSA_do_verify(digest: [*c]const u8, digest_len: usize, sig: [*c]const ECDSA_SIG, key: ?*const EC_KEY) c_int; pub extern fn ECDSA_SIG_parse(cbs: [*c]CBS) [*c]ECDSA_SIG; pub extern fn ECDSA_SIG_from_bytes(in: [*c]const u8, in_len: usize) [*c]ECDSA_SIG; -pub extern fn ECDSA_SIG_marshal(cbb: [*c]CBB, sig: [*c]const ECDSA_SIG) c_int; +pub extern fn ECDSA_SIG_marshal(cbb: ?*CBB, sig: [*c]const ECDSA_SIG) c_int; pub extern fn ECDSA_SIG_to_bytes(out_bytes: [*c][*c]u8, out_len: [*c]usize, sig: [*c]const ECDSA_SIG) c_int; pub extern fn ECDSA_SIG_max_len(order_len: usize) usize; pub extern fn ECDSA_sign_with_nonce_and_leak_private_key_for_testing(digest: [*c]const u8, digest_len: usize, eckey: ?*const EC_KEY, nonce: [*c]const u8, nonce_len: usize) [*c]ECDSA_SIG; pub extern fn d2i_ECDSA_SIG(out: [*c][*c]ECDSA_SIG, inp: [*c][*c]const u8, len: c_long) [*c]ECDSA_SIG; pub extern fn i2d_ECDSA_SIG(sig: [*c]const ECDSA_SIG, outp: [*c][*c]u8) c_int; -pub extern fn CBS_init(cbs: [*c]CBS, data: [*c]const u8, len: usize) void; -pub extern fn CBS_skip(cbs: [*c]CBS, len: usize) c_int; -pub extern fn CBS_data(cbs: [*c]const CBS) [*c]const u8; -pub extern fn CBS_len(cbs: [*c]const CBS) usize; -pub extern fn CBS_stow(cbs: [*c]const CBS, out_ptr: [*c][*c]u8, out_len: [*c]usize) c_int; -pub extern fn CBS_strdup(cbs: [*c]const CBS, out_ptr: [*c][*c]u8) c_int; -pub extern fn CBS_contains_zero_byte(cbs: [*c]const CBS) c_int; -pub extern fn CBS_mem_equal(cbs: [*c]const CBS, data: [*c]const u8, len: usize) c_int; -pub extern fn CBS_get_u8(cbs: [*c]CBS, out: [*c]u8) c_int; -pub extern fn CBS_get_u16(cbs: [*c]CBS, out: [*c]u16) c_int; -pub extern fn CBS_get_u16le(cbs: [*c]CBS, out: [*c]u16) c_int; -pub extern fn CBS_get_u24(cbs: [*c]CBS, out: [*c]u32) c_int; -pub extern fn CBS_get_u32(cbs: [*c]CBS, out: [*c]u32) c_int; -pub extern fn CBS_get_u32le(cbs: [*c]CBS, out: [*c]u32) c_int; -pub extern fn CBS_get_u64(cbs: [*c]CBS, out: [*c]u64) c_int; -pub extern fn CBS_get_u64le(cbs: [*c]CBS, out: [*c]u64) c_int; -pub extern fn CBS_get_last_u8(cbs: [*c]CBS, out: [*c]u8) c_int; -pub extern fn CBS_get_bytes(cbs: [*c]CBS, out: [*c]CBS, len: usize) c_int; -pub extern fn CBS_copy_bytes(cbs: [*c]CBS, out: [*c]u8, len: usize) c_int; -pub extern fn CBS_get_u8_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; -pub extern fn CBS_get_u16_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; -pub extern fn CBS_get_u24_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; -pub extern fn CBS_get_until_first(cbs: [*c]CBS, out: [*c]CBS, c: u8) c_int; -pub extern fn CBS_get_asn1(cbs: [*c]CBS, out: [*c]CBS, tag_value: c_uint) c_int; -pub extern fn CBS_get_asn1_element(cbs: [*c]CBS, out: [*c]CBS, tag_value: c_uint) c_int; -pub extern fn CBS_peek_asn1_tag(cbs: [*c]const CBS, tag_value: c_uint) c_int; -pub extern fn CBS_get_any_asn1(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]c_uint) c_int; -pub extern fn CBS_get_any_asn1_element(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]c_uint, out_header_len: [*c]usize) c_int; -pub extern fn CBS_get_any_ber_asn1_element(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]c_uint, out_header_len: [*c]usize, out_ber_found: [*c]c_int) c_int; -pub extern fn CBS_get_asn1_uint64(cbs: [*c]CBS, out: [*c]u64) c_int; -pub extern fn CBS_get_asn1_int64(cbs: [*c]CBS, out: [*c]i64) c_int; -pub extern fn CBS_get_asn1_bool(cbs: [*c]CBS, out: [*c]c_int) c_int; -pub extern fn CBS_get_optional_asn1(cbs: [*c]CBS, out: [*c]CBS, out_present: [*c]c_int, tag: c_uint) c_int; -pub extern fn CBS_get_optional_asn1_octet_string(cbs: [*c]CBS, out: [*c]CBS, out_present: [*c]c_int, tag: c_uint) c_int; -pub extern fn CBS_get_optional_asn1_uint64(cbs: [*c]CBS, out: [*c]u64, tag: c_uint, default_value: u64) c_int; -pub extern fn CBS_get_optional_asn1_bool(cbs: [*c]CBS, out: [*c]c_int, tag: c_uint, default_value: c_int) c_int; -pub extern fn CBS_is_valid_asn1_bitstring(cbs: [*c]const CBS) c_int; -pub extern fn CBS_asn1_bitstring_has_bit(cbs: [*c]const CBS, bit: c_uint) c_int; -pub extern fn CBS_is_valid_asn1_integer(cbs: [*c]const CBS, out_is_negative: [*c]c_int) c_int; -pub extern fn CBS_is_unsigned_asn1_integer(cbs: [*c]const CBS) c_int; -pub extern fn CBS_asn1_oid_to_text(cbs: [*c]const CBS) [*c]u8; -pub extern fn CBB_zero(cbb: [*c]CBB) void; -pub extern fn CBB_init(cbb: [*c]CBB, initial_capacity: usize) c_int; -pub extern fn CBB_init_fixed(cbb: [*c]CBB, buf: [*c]u8, len: usize) c_int; -pub extern fn CBB_cleanup(cbb: [*c]CBB) void; -pub extern fn CBB_finish(cbb: [*c]CBB, out_data: [*c][*c]u8, out_len: [*c]usize) c_int; -pub extern fn CBB_flush(cbb: [*c]CBB) c_int; -pub extern fn CBB_data(cbb: [*c]const CBB) [*c]const u8; -pub extern fn CBB_len(cbb: [*c]const CBB) usize; -pub extern fn CBB_add_u8_length_prefixed(cbb: [*c]CBB, out_contents: [*c]CBB) c_int; -pub extern fn CBB_add_u16_length_prefixed(cbb: [*c]CBB, out_contents: [*c]CBB) c_int; -pub extern fn CBB_add_u24_length_prefixed(cbb: [*c]CBB, out_contents: [*c]CBB) c_int; -pub extern fn CBB_add_asn1(cbb: [*c]CBB, out_contents: [*c]CBB, tag: c_uint) c_int; -pub extern fn CBB_add_bytes(cbb: [*c]CBB, data: [*c]const u8, len: usize) c_int; -pub extern fn CBB_add_zeros(cbb: [*c]CBB, len: usize) c_int; -pub extern fn CBB_add_space(cbb: [*c]CBB, out_data: [*c][*c]u8, len: usize) c_int; -pub extern fn CBB_reserve(cbb: [*c]CBB, out_data: [*c][*c]u8, len: usize) c_int; -pub extern fn CBB_did_write(cbb: [*c]CBB, len: usize) c_int; -pub extern fn CBB_add_u8(cbb: [*c]CBB, value: u8) c_int; -pub extern fn CBB_add_u16(cbb: [*c]CBB, value: u16) c_int; -pub extern fn CBB_add_u16le(cbb: [*c]CBB, value: u16) c_int; -pub extern fn CBB_add_u24(cbb: [*c]CBB, value: u32) c_int; -pub extern fn CBB_add_u32(cbb: [*c]CBB, value: u32) c_int; -pub extern fn CBB_add_u32le(cbb: [*c]CBB, value: u32) c_int; -pub extern fn CBB_add_u64(cbb: [*c]CBB, value: u64) c_int; -pub extern fn CBB_add_u64le(cbb: [*c]CBB, value: u64) c_int; -pub extern fn CBB_discard_child(cbb: [*c]CBB) void; -pub extern fn CBB_add_asn1_uint64(cbb: [*c]CBB, value: u64) c_int; -pub extern fn CBB_add_asn1_int64(cbb: [*c]CBB, value: i64) c_int; -pub extern fn CBB_add_asn1_octet_string(cbb: [*c]CBB, data: [*c]const u8, data_len: usize) c_int; -pub extern fn CBB_add_asn1_bool(cbb: [*c]CBB, value: c_int) c_int; -pub extern fn CBB_add_asn1_oid_from_text(cbb: [*c]CBB, text: [*c]const u8, len: usize) c_int; -pub extern fn CBB_flush_asn1_set_of(cbb: [*c]CBB) c_int; +// pub extern fn CBS_init(cbs: [*c]CBS, data: [*c]const u8, len: usize) void; +// pub extern fn CBS_skip(cbs: [*c]CBS, len: usize) c_int; +// pub extern fn CBS_data(cbs: [*c]const CBS) [*c]const u8; +// pub extern fn CBS_len(cbs: [*c]const CBS) usize; +// pub extern fn CBS_stow(cbs: [*c]const CBS, out_ptr: [*c][*c]u8, out_len: [*c]usize) c_int; +// pub extern fn CBS_strdup(cbs: [*c]const CBS, out_ptr: [*c][*c]u8) c_int; +// pub extern fn CBS_contains_zero_byte(cbs: [*c]const CBS) c_int; +// pub extern fn CBS_mem_equal(cbs: [*c]const CBS, data: [*c]const u8, len: usize) c_int; +// pub extern fn CBS_get_u8(cbs: [*c]CBS, out: [*c]u8) c_int; +// pub extern fn CBS_get_u16(cbs: [*c]CBS, out: [*c]u16) c_int; +// pub extern fn CBS_get_u16le(cbs: [*c]CBS, out: [*c]u16) c_int; +// pub extern fn CBS_get_u24(cbs: [*c]CBS, out: [*c]u32) c_int; +// pub extern fn CBS_get_u32(cbs: [*c]CBS, out: [*c]u32) c_int; +// pub extern fn CBS_get_u32le(cbs: [*c]CBS, out: [*c]u32) c_int; +// pub extern fn CBS_get_u64(cbs: [*c]CBS, out: [*c]u64) c_int; +// pub extern fn CBS_get_u64le(cbs: [*c]CBS, out: [*c]u64) c_int; +// pub extern fn CBS_get_last_u8(cbs: [*c]CBS, out: [*c]u8) c_int; +// pub extern fn CBS_get_bytes(cbs: [*c]CBS, out: [*c]CBS, len: usize) c_int; +// pub extern fn CBS_copy_bytes(cbs: [*c]CBS, out: [*c]u8, len: usize) c_int; +// pub extern fn CBS_get_u8_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; +// pub extern fn CBS_get_u16_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; +// pub extern fn CBS_get_u24_length_prefixed(cbs: [*c]CBS, out: [*c]CBS) c_int; +// pub extern fn CBS_get_until_first(cbs: [*c]CBS, out: [*c]CBS, c: u8) c_int; +// pub extern fn CBS_get_asn1(cbs: [*c]CBS, out: [*c]CBS, tag_value: CBS_ASN1_TAG) c_int; +// pub extern fn CBS_get_asn1_element(cbs: [*c]CBS, out: [*c]CBS, tag_value: CBS_ASN1_TAG) c_int; +// pub extern fn CBS_peek_asn1_tag(cbs: [*c]const CBS, tag_value: CBS_ASN1_TAG) c_int; +// pub extern fn CBS_get_any_asn1(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]CBS_ASN1_TAG) c_int; +// pub extern fn CBS_get_any_asn1_element(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]CBS_ASN1_TAG, out_header_len: [*c]usize) c_int; +// pub extern fn CBS_get_any_ber_asn1_element(cbs: [*c]CBS, out: [*c]CBS, out_tag: [*c]CBS_ASN1_TAG, out_header_len: [*c]usize, out_ber_found: [*c]c_int, out_indefinite: [*c]c_int) c_int; +// pub extern fn CBS_get_asn1_uint64(cbs: [*c]CBS, out: [*c]u64) c_int; +// pub extern fn CBS_get_asn1_int64(cbs: [*c]CBS, out: [*c]i64) c_int; +// pub extern fn CBS_get_asn1_bool(cbs: [*c]CBS, out: [*c]c_int) c_int; +// pub extern fn CBS_get_optional_asn1(cbs: [*c]CBS, out: [*c]CBS, out_present: [*c]c_int, tag: CBS_ASN1_TAG) c_int; +// pub extern fn CBS_get_optional_asn1_octet_string(cbs: [*c]CBS, out: [*c]CBS, out_present: [*c]c_int, tag: CBS_ASN1_TAG) c_int; +// pub extern fn CBS_get_optional_asn1_uint64(cbs: [*c]CBS, out: [*c]u64, tag: CBS_ASN1_TAG, default_value: u64) c_int; +// pub extern fn CBS_get_optional_asn1_bool(cbs: [*c]CBS, out: [*c]c_int, tag: CBS_ASN1_TAG, default_value: c_int) c_int; +// pub extern fn CBS_is_valid_asn1_bitstring(cbs: [*c]const CBS) c_int; +// pub extern fn CBS_asn1_bitstring_has_bit(cbs: [*c]const CBS, bit: c_uint) c_int; +// pub extern fn CBS_is_valid_asn1_integer(cbs: [*c]const CBS, out_is_negative: [*c]c_int) c_int; +// pub extern fn CBS_is_unsigned_asn1_integer(cbs: [*c]const CBS) c_int; +// pub extern fn CBS_asn1_oid_to_text(cbs: [*c]const CBS) [*c]u8; +// pub extern fn CBS_parse_generalized_time(cbs: [*c]const CBS, out_tm: [*c]struct_tm, allow_timezone_offset: c_int) c_int; +// pub extern fn CBS_parse_utc_time(cbs: [*c]const CBS, out_tm: [*c]struct_tm, allow_timezone_offset: c_int) c_int; +// pub extern fn CBB_zero(cbb: ?*CBB) void; +// pub extern fn CBB_init(cbb: ?*CBB, initial_capacity: usize) c_int; +// pub extern fn CBB_init_fixed(cbb: ?*CBB, buf: [*c]u8, len: usize) c_int; +// pub extern fn CBB_cleanup(cbb: ?*CBB) void; +// pub extern fn CBB_finish(cbb: ?*CBB, out_data: [*c][*c]u8, out_len: [*c]usize) c_int; +// pub extern fn CBB_flush(cbb: ?*CBB) c_int; +// pub extern fn CBB_data(cbb: ?*const CBB) [*c]const u8; +// pub extern fn CBB_len(cbb: ?*const CBB) usize; +// pub extern fn CBB_add_u8_length_prefixed(cbb: ?*CBB, out_contents: ?*CBB) c_int; +// pub extern fn CBB_add_u16_length_prefixed(cbb: ?*CBB, out_contents: ?*CBB) c_int; +// pub extern fn CBB_add_u24_length_prefixed(cbb: ?*CBB, out_contents: ?*CBB) c_int; +// pub extern fn CBB_add_asn1(cbb: ?*CBB, out_contents: ?*CBB, tag: CBS_ASN1_TAG) c_int; +// pub extern fn CBB_add_bytes(cbb: ?*CBB, data: [*c]const u8, len: usize) c_int; +// pub extern fn CBB_add_zeros(cbb: ?*CBB, len: usize) c_int; +// pub extern fn CBB_add_space(cbb: ?*CBB, out_data: [*c][*c]u8, len: usize) c_int; +// pub extern fn CBB_reserve(cbb: ?*CBB, out_data: [*c][*c]u8, len: usize) c_int; +// pub extern fn CBB_did_write(cbb: ?*CBB, len: usize) c_int; +// pub extern fn CBB_add_u8(cbb: ?*CBB, value: u8) c_int; +// pub extern fn CBB_add_u16(cbb: ?*CBB, value: u16) c_int; +// pub extern fn CBB_add_u16le(cbb: ?*CBB, value: u16) c_int; +// pub extern fn CBB_add_u24(cbb: ?*CBB, value: u32) c_int; +// pub extern fn CBB_add_u32(cbb: ?*CBB, value: u32) c_int; +// pub extern fn CBB_add_u32le(cbb: ?*CBB, value: u32) c_int; +// pub extern fn CBB_add_u64(cbb: ?*CBB, value: u64) c_int; +// pub extern fn CBB_add_u64le(cbb: ?*CBB, value: u64) c_int; +// pub extern fn CBB_discard_child(cbb: ?*CBB) void; +// pub extern fn CBB_add_asn1_uint64(cbb: ?*CBB, value: u64) c_int; +// pub extern fn CBB_add_asn1_uint64_with_tag(cbb: ?*CBB, value: u64, tag: CBS_ASN1_TAG) c_int; +// pub extern fn CBB_add_asn1_int64(cbb: ?*CBB, value: i64) c_int; +// pub extern fn CBB_add_asn1_int64_with_tag(cbb: ?*CBB, value: i64, tag: CBS_ASN1_TAG) c_int; +// pub extern fn CBB_add_asn1_octet_string(cbb: ?*CBB, data: [*c]const u8, data_len: usize) c_int; +// pub extern fn CBB_add_asn1_bool(cbb: ?*CBB, value: c_int) c_int; +// pub extern fn CBB_add_asn1_oid_from_text(cbb: ?*CBB, text: [*c]const u8, len: usize) c_int; +// pub extern fn CBB_flush_asn1_set_of(cbb: ?*CBB) c_int; pub extern fn OBJ_dup(obj: ?*const ASN1_OBJECT) ?*ASN1_OBJECT; pub extern fn OBJ_cmp(a: ?*const ASN1_OBJECT, b: ?*const ASN1_OBJECT) c_int; pub extern fn OBJ_get0_data(obj: ?*const ASN1_OBJECT) [*c]const u8; @@ -2596,7 +2476,7 @@ pub extern fn OBJ_txt2nid(s: [*c]const u8) c_int; pub extern fn OBJ_nid2obj(nid: c_int) ?*ASN1_OBJECT; pub extern fn OBJ_nid2sn(nid: c_int) [*c]const u8; pub extern fn OBJ_nid2ln(nid: c_int) [*c]const u8; -pub extern fn OBJ_nid2cbb(out: [*c]CBB, nid: c_int) c_int; +pub extern fn OBJ_nid2cbb(out: ?*CBB, nid: c_int) c_int; pub extern fn OBJ_txt2obj(s: [*c]const u8, dont_search_names: c_int) ?*ASN1_OBJECT; pub extern fn OBJ_obj2txt(out: [*c]u8, out_len: c_int, obj: ?*const ASN1_OBJECT, always_return_oid: c_int) c_int; pub extern fn OBJ_create(oid: [*c]const u8, short_name: [*c]const u8, long_name: [*c]const u8) c_int; @@ -2612,119 +2492,119 @@ pub const OBJ_NAME = struct_obj_name_st; pub extern fn OBJ_NAME_do_all_sorted(@"type": c_int, callback: ?*const fn ([*c]const OBJ_NAME, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; pub extern fn OBJ_NAME_do_all(@"type": c_int, callback: ?*const fn ([*c]const OBJ_NAME, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; pub extern fn OBJ_cleanup() void; -pub const stack_CRYPTO_BUFFER_free_func = ?*const fn (?*CRYPTO_BUFFER) callconv(.C) void; -pub const stack_CRYPTO_BUFFER_copy_func = ?*const fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER; -pub const stack_CRYPTO_BUFFER_cmp_func = ?*const fn ([*c]?*const CRYPTO_BUFFER, [*c]?*const CRYPTO_BUFFER) callconv(.C) c_int; -pub fn sk_CRYPTO_BUFFER_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_CRYPTO_BUFFER_free_func = ?*const fn (?*CRYPTO_BUFFER) callconv(.C) void; +pub const sk_CRYPTO_BUFFER_copy_func = ?*const fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER; +pub const sk_CRYPTO_BUFFER_cmp_func = ?*const fn ([*c]?*const CRYPTO_BUFFER, [*c]?*const CRYPTO_BUFFER) callconv(.C) c_int; +pub fn sk_CRYPTO_BUFFER_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_CRYPTO_BUFFER_free_func, @alignCast(@import("std").meta.alignment(fn (?*CRYPTO_BUFFER) callconv(.C) void), free_func)).?(@ptrCast(?*CRYPTO_BUFFER, ptr)); + @as(sk_CRYPTO_BUFFER_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*CRYPTO_BUFFER, @ptrCast(ptr))); } -pub fn sk_CRYPTO_BUFFER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_CRYPTO_BUFFER_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_CRYPTO_BUFFER_copy_func, @alignCast(@import("std").meta.alignment(fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER), copy_func)).?(@ptrCast(?*CRYPTO_BUFFER, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_CRYPTO_BUFFER_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*CRYPTO_BUFFER, @ptrCast(ptr))))); } -pub fn sk_CRYPTO_BUFFER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_CRYPTO_BUFFER_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const CRYPTO_BUFFER = @ptrCast(?*const CRYPTO_BUFFER, a.*); - var b_ptr: ?*const CRYPTO_BUFFER = @ptrCast(?*const CRYPTO_BUFFER, b.*); - return @ptrCast(stack_CRYPTO_BUFFER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const CRYPTO_BUFFER, [*c]?*const CRYPTO_BUFFER) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const CRYPTO_BUFFER = @as(?*const CRYPTO_BUFFER, @ptrCast(a.*)); + var b_ptr: ?*const CRYPTO_BUFFER = @as(?*const CRYPTO_BUFFER, @ptrCast(b.*)); + return @as(sk_CRYPTO_BUFFER_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_CRYPTO_BUFFER_new(arg_comp: stack_CRYPTO_BUFFER_cmp_func) callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { +pub fn sk_CRYPTO_BUFFER_new(arg_comp: sk_CRYPTO_BUFFER_cmp_func) callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_CRYPTO_BUFFER, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_CRYPTO_BUFFER, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_CRYPTO_BUFFER_new_null() callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { - return @ptrCast(?*struct_stack_st_CRYPTO_BUFFER, sk_new_null()); + return @as(?*struct_stack_st_CRYPTO_BUFFER, @ptrCast(sk_new_null())); } pub fn sk_CRYPTO_BUFFER_num(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_CRYPTO_BUFFER_zero(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_CRYPTO_BUFFER_value(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER, arg_i: usize) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*CRYPTO_BUFFER, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_CRYPTO_BUFFER_set(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_i: usize, arg_p: ?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*CRYPTO_BUFFER, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_CRYPTO_BUFFER_free(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_CRYPTO_BUFFER_pop_free(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_free_func: stack_CRYPTO_BUFFER_free_func) callconv(.C) void { +pub fn sk_CRYPTO_BUFFER_pop_free(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_free_func: sk_CRYPTO_BUFFER_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_CRYPTO_BUFFER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_CRYPTO_BUFFER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_CRYPTO_BUFFER_insert(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_p: ?*CRYPTO_BUFFER, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_CRYPTO_BUFFER_delete(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_where: usize) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*CRYPTO_BUFFER, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_CRYPTO_BUFFER_delete_ptr(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_p: ?*const CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*CRYPTO_BUFFER, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_CRYPTO_BUFFER_find(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER, arg_out_index: [*c]usize, arg_p: ?*const CRYPTO_BUFFER) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_CRYPTO_BUFFER_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_CRYPTO_BUFFER_call_cmp_func); } pub fn sk_CRYPTO_BUFFER_shift(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; - return @ptrCast(?*CRYPTO_BUFFER, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_CRYPTO_BUFFER_push(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_p: ?*CRYPTO_BUFFER) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_CRYPTO_BUFFER_pop(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; - return @ptrCast(?*CRYPTO_BUFFER, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*CRYPTO_BUFFER, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_CRYPTO_BUFFER_dup(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER) callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_CRYPTO_BUFFER, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_CRYPTO_BUFFER, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_CRYPTO_BUFFER_sort(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_CRYPTO_BUFFER_call_cmp_func); } pub fn sk_CRYPTO_BUFFER_is_sorted(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_CRYPTO_BUFFER_set_cmp_func(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_comp: stack_CRYPTO_BUFFER_cmp_func) callconv(.C) stack_CRYPTO_BUFFER_cmp_func { +pub fn sk_CRYPTO_BUFFER_set_cmp_func(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_comp: sk_CRYPTO_BUFFER_cmp_func) callconv(.C) sk_CRYPTO_BUFFER_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_CRYPTO_BUFFER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const CRYPTO_BUFFER, [*c]?*const CRYPTO_BUFFER) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_CRYPTO_BUFFER_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_CRYPTO_BUFFER_deep_copy(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER, arg_copy_func: ?*const fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER, arg_free_func: ?*const fn (?*CRYPTO_BUFFER) callconv(.C) void) callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { +pub fn sk_CRYPTO_BUFFER_deep_copy(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER, arg_copy_func: sk_CRYPTO_BUFFER_copy_func, arg_free_func: sk_CRYPTO_BUFFER_free_func) callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_CRYPTO_BUFFER, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_CRYPTO_BUFFER_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_CRYPTO_BUFFER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_CRYPTO_BUFFER, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_CRYPTO_BUFFER_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_CRYPTO_BUFFER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn CRYPTO_BUFFER_POOL_new() ?*CRYPTO_BUFFER_POOL; pub extern fn CRYPTO_BUFFER_POOL_free(pool: ?*CRYPTO_BUFFER_POOL) void; @@ -2762,7 +2642,7 @@ pub extern fn RSA_encrypt(rsa: ?*RSA, out_len: [*c]usize, out: [*c]u8, max_out: pub extern fn RSA_decrypt(rsa: ?*RSA, out_len: [*c]usize, out: [*c]u8, max_out: usize, in: [*c]const u8, in_len: usize, padding: c_int) c_int; pub extern fn RSA_public_encrypt(flen: usize, from: [*c]const u8, to: [*c]u8, rsa: ?*RSA, padding: c_int) c_int; pub extern fn RSA_private_decrypt(flen: usize, from: [*c]const u8, to: [*c]u8, rsa: ?*RSA, padding: c_int) c_int; -pub extern fn RSA_sign(hash_nid: c_int, digest: [*c]const u8, digest_len: c_uint, out: [*c]u8, out_len: [*c]c_uint, rsa: ?*RSA) c_int; +pub extern fn RSA_sign(hash_nid: c_int, digest: [*c]const u8, digest_len: usize, out: [*c]u8, out_len: [*c]c_uint, rsa: ?*RSA) c_int; pub extern fn RSA_sign_pss_mgf1(rsa: ?*RSA, out_len: [*c]usize, out: [*c]u8, max_out: usize, digest: [*c]const u8, digest_len: usize, md: ?*const EVP_MD, mgf1_md: ?*const EVP_MD, salt_len: c_int) c_int; pub extern fn RSA_sign_raw(rsa: ?*RSA, out_len: [*c]usize, out: [*c]u8, max_out: usize, in: [*c]const u8, in_len: usize, padding: c_int) c_int; pub extern fn RSA_verify(hash_nid: c_int, digest: [*c]const u8, digest_len: usize, sig: [*c]const u8, sig_len: usize, rsa: ?*RSA) c_int; @@ -2782,18 +2662,19 @@ pub extern fn RSA_padding_add_PKCS1_OAEP_mgf1(to: [*c]u8, to_len: usize, from: [ pub extern fn RSA_add_pkcs1_prefix(out_msg: [*c][*c]u8, out_msg_len: [*c]usize, is_alloced: [*c]c_int, hash_nid: c_int, digest: [*c]const u8, digest_len: usize) c_int; pub extern fn RSA_parse_public_key(cbs: [*c]CBS) ?*RSA; pub extern fn RSA_public_key_from_bytes(in: [*c]const u8, in_len: usize) ?*RSA; -pub extern fn RSA_marshal_public_key(cbb: [*c]CBB, rsa: ?*const RSA) c_int; +pub extern fn RSA_marshal_public_key(cbb: ?*CBB, rsa: ?*const RSA) c_int; pub extern fn RSA_public_key_to_bytes(out_bytes: [*c][*c]u8, out_len: [*c]usize, rsa: ?*const RSA) c_int; pub extern fn RSA_parse_private_key(cbs: [*c]CBS) ?*RSA; pub extern fn RSA_private_key_from_bytes(in: [*c]const u8, in_len: usize) ?*RSA; -pub extern fn RSA_marshal_private_key(cbb: [*c]CBB, rsa: ?*const RSA) c_int; +pub extern fn RSA_marshal_private_key(cbb: ?*CBB, rsa: ?*const RSA) c_int; pub extern fn RSA_private_key_to_bytes(out_bytes: [*c][*c]u8, out_len: [*c]usize, rsa: ?*const RSA) c_int; -pub extern fn RSA_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn RSA_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn RSA_set_ex_data(rsa: ?*RSA, idx: c_int, arg: ?*anyopaque) c_int; pub extern fn RSA_get_ex_data(rsa: ?*const RSA, idx: c_int) ?*anyopaque; pub extern fn RSA_flags(rsa: ?*const RSA) c_int; +pub extern fn RSA_test_flags(rsa: ?*const RSA, flags: c_int) c_int; pub extern fn RSA_blinding_on(rsa: ?*RSA, ctx: ?*BN_CTX) c_int; -pub extern fn RSA_generate_key(bits: c_int, e: c_ulong, callback: ?*anyopaque, cb_arg: ?*anyopaque) ?*RSA; +pub extern fn RSA_generate_key(bits: c_int, e: u64, callback: ?*anyopaque, cb_arg: ?*anyopaque) ?*RSA; pub extern fn d2i_RSAPublicKey(out: [*c]?*RSA, inp: [*c][*c]const u8, len: c_long) ?*RSA; pub extern fn i2d_RSAPublicKey(in: ?*const RSA, outp: [*c][*c]u8) c_int; pub extern fn d2i_RSAPrivateKey(out: [*c]?*RSA, inp: [*c][*c]const u8, len: c_long) ?*RSA; @@ -2803,1227 +2684,1543 @@ pub extern fn RSA_verify_PKCS1_PSS(rsa: ?*const RSA, mHash: [*c]const u8, Hash: pub extern fn RSA_padding_add_PKCS1_OAEP(to: [*c]u8, to_len: usize, from: [*c]const u8, from_len: usize, param: [*c]const u8, param_len: usize) c_int; pub extern fn RSA_print(bio: [*c]BIO, rsa: ?*const RSA, indent: c_int) c_int; pub extern fn RSA_get0_pss_params(rsa: ?*const RSA) [*c]const RSA_PSS_PARAMS; -pub extern fn SHA1_Init(sha: *SHA_CTX) c_int; -pub extern fn SHA1_Update(sha: *SHA_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA1_Final(out: [*]u8, sha: *SHA_CTX) c_int; -pub extern fn SHA1(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn SHA1_Transform(sha: *SHA_CTX, block: [*]const u8) void; -pub extern fn SHA224_Init(sha: *SHA256_CTX) c_int; -pub extern fn SHA224_Update(sha: *SHA256_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA224_Final(out: [*]u8, sha: *SHA256_CTX) c_int; -pub extern fn SHA224(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn SHA256_Init(sha: *SHA256_CTX) c_int; -pub extern fn SHA256_Update(sha: *SHA256_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA256_Final(out: [*]u8, sha: *SHA256_CTX) c_int; -pub extern fn SHA256(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn SHA256_Transform(sha: *SHA256_CTX, block: [*]const u8) void; -pub extern fn SHA256_TransformBlocks(state: [*c]u32, data: [*]const u8, num_blocks: usize) void; -pub extern fn SHA384_Init(sha: *SHA512_CTX) c_int; -pub extern fn SHA384_Update(sha: *SHA512_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA384_Final(out: [*]u8, sha: *SHA512_CTX) c_int; -pub extern fn SHA384(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn SHA512_Init(sha: *SHA512_CTX) c_int; -pub extern fn SHA512_Update(sha: *SHA512_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA512_Final(out: [*]u8, sha: *SHA512_CTX) c_int; -pub extern fn SHA512(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn SHA512_Transform(sha: *SHA512_CTX, block: [*]const u8) void; -pub extern fn SHA512_256_Init(sha: *SHA512_CTX) c_int; -pub extern fn SHA512_256_Update(sha: *SHA512_CTX, data: ?[*]const u8, len: usize) c_int; -pub extern fn SHA512_256_Final(out: [*]u8, sha: *SHA512_CTX) c_int; -pub extern fn SHA512_256(data: [*]const u8, len: usize, out: [*]u8) [*]u8; -pub extern fn X509_ALGOR_new() [*c]X509_ALGOR; -pub extern fn X509_ALGOR_free(a: [*c]X509_ALGOR) void; -pub extern fn d2i_X509_ALGOR(a: [*c][*c]X509_ALGOR, in: [*c][*c]const u8, len: c_long) [*c]X509_ALGOR; -pub extern fn i2d_X509_ALGOR(a: [*c]X509_ALGOR, out: [*c][*c]u8) c_int; - -pub extern const X509_ALGOR_it: ASN1_ITEM; -pub const struct_stack_st_X509_ALGOR = opaque {}; -pub const stack_X509_ALGOR_free_func = ?*const fn ([*c]X509_ALGOR) callconv(.C) void; -pub const stack_X509_ALGOR_copy_func = ?*const fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR; -pub const stack_X509_ALGOR_cmp_func = ?*const fn ([*c][*c]const X509_ALGOR, [*c][*c]const X509_ALGOR) callconv(.C) c_int; -pub fn sk_X509_ALGOR_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub extern fn SHA1_Init(sha: [*c]SHA_CTX) c_int; +pub extern fn SHA1_Update(sha: [*c]SHA_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA1_Final(out: [*c]u8, sha: [*c]SHA_CTX) c_int; +pub extern fn SHA1(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub extern fn SHA1_Transform(sha: [*c]SHA_CTX, block: [*c]const u8) void; +pub extern fn SHA224_Init(sha: [*c]SHA256_CTX) c_int; +pub extern fn SHA224_Update(sha: [*c]SHA256_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA224_Final(out: [*c]u8, sha: [*c]SHA256_CTX) c_int; +pub extern fn SHA224(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub extern fn SHA256_Init(sha: [*c]SHA256_CTX) c_int; +pub extern fn SHA256_Update(sha: [*c]SHA256_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA256_Final(out: [*c]u8, sha: [*c]SHA256_CTX) c_int; +pub extern fn SHA256(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub extern fn SHA256_Transform(sha: [*c]SHA256_CTX, block: [*c]const u8) void; +pub extern fn SHA256_TransformBlocks(state: [*c]u32, data: [*c]const u8, num_blocks: usize) void; +pub extern fn SHA384_Init(sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA384_Update(sha: [*c]SHA512_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA384_Final(out: [*c]u8, sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA384(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub extern fn SHA512_Init(sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA512_Update(sha: [*c]SHA512_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA512_Final(out: [*c]u8, sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA512(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub extern fn SHA512_Transform(sha: [*c]SHA512_CTX, block: [*c]const u8) void; +pub extern fn SHA512_256_Init(sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA512_256_Update(sha: [*c]SHA512_CTX, data: ?*const anyopaque, len: usize) c_int; +pub extern fn SHA512_256_Final(out: [*c]u8, sha: [*c]SHA512_CTX) c_int; +pub extern fn SHA512_256(data: [*c]const u8, len: usize, out: [*c]u8) [*c]u8; +pub const sk_X509_free_func = ?*const fn (?*X509) callconv(.C) void; +pub const sk_X509_copy_func = ?*const fn (?*X509) callconv(.C) ?*X509; +pub const sk_X509_cmp_func = ?*const fn ([*c]?*const X509, [*c]?*const X509) callconv(.C) c_int; +pub fn sk_X509_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_ALGOR_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_ALGOR) callconv(.C) void), free_func)).?(@ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), ptr))); + @as(sk_X509_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509, @ptrCast(ptr))); } -pub fn sk_X509_ALGOR_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_ALGOR_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR), copy_func)).?(@ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509, @ptrCast(ptr))))); } -pub fn sk_X509_ALGOR_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const X509_ALGOR = @ptrCast([*c]const X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), a.*)); - var b_ptr: [*c]const X509_ALGOR = @ptrCast([*c]const X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), b.*)); - return @ptrCast(stack_X509_ALGOR_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_ALGOR, [*c][*c]const X509_ALGOR) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509 = @as(?*const X509, @ptrCast(a.*)); + var b_ptr: ?*const X509 = @as(?*const X509, @ptrCast(b.*)); + return @as(sk_X509_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_ALGOR_new(arg_comp: stack_X509_ALGOR_cmp_func) callconv(.C) ?*struct_stack_st_X509_ALGOR { +pub fn sk_X509_new(arg_comp: sk_X509_cmp_func) callconv(.C) ?*struct_stack_st_X509 { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_ALGOR, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } -pub fn sk_X509_ALGOR_new_null() callconv(.C) ?*struct_stack_st_X509_ALGOR { - return @ptrCast(?*struct_stack_st_X509_ALGOR, sk_new_null()); +pub fn sk_X509_new_null() callconv(.C) ?*struct_stack_st_X509 { + return @as(?*struct_stack_st_X509, @ptrCast(sk_new_null())); } -pub fn sk_X509_ALGOR_num(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) usize { +pub fn sk_X509_num(arg_sk: ?*const struct_stack_st_X509) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ALGOR_zero(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { +pub fn sk_X509_zero(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ALGOR_value(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_i: usize) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_value(arg_sk: ?*const struct_stack_st_X509, arg_i: usize) callconv(.C) ?*X509 { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as(?*X509, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } -pub fn sk_X509_ALGOR_set(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_i: usize, arg_p: [*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_set(arg_sk: ?*struct_stack_st_X509, arg_i: usize, arg_p: ?*X509) callconv(.C) ?*X509 { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as(?*X509, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } -pub fn sk_X509_ALGOR_free(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { +pub fn sk_X509_free(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ALGOR_pop_free(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_free_func: stack_X509_ALGOR_free_func) callconv(.C) void { +pub fn sk_X509_pop_free(arg_sk: ?*struct_stack_st_X509, arg_free_func: sk_X509_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_ALGOR_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } -pub fn sk_X509_ALGOR_insert(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]X509_ALGOR, arg_where: usize) callconv(.C) usize { +pub fn sk_X509_insert(arg_sk: ?*struct_stack_st_X509, arg_p: ?*X509, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } -pub fn sk_X509_ALGOR_delete(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_where: usize) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_delete(arg_sk: ?*struct_stack_st_X509, arg_where: usize) callconv(.C) ?*X509 { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as(?*X509, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } -pub fn sk_X509_ALGOR_delete_ptr(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]const X509_ALGOR) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_delete_ptr(arg_sk: ?*struct_stack_st_X509, arg_p: ?*const X509) callconv(.C) ?*X509 { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as(?*X509, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } -pub fn sk_X509_ALGOR_find(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_out_index: [*c]usize, arg_p: [*c]const X509_ALGOR) callconv(.C) c_int { +pub fn sk_X509_find(arg_sk: ?*const struct_stack_st_X509, arg_out_index: [*c]usize, arg_p: ?*const X509) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_ALGOR_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_call_cmp_func); } -pub fn sk_X509_ALGOR_shift(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_shift(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { var sk = arg_sk; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as(?*X509, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_ALGOR_push(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]X509_ALGOR) callconv(.C) usize { +pub fn sk_X509_push(arg_sk: ?*struct_stack_st_X509, arg_p: ?*X509) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } -pub fn sk_X509_ALGOR_pop(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { +pub fn sk_X509_pop(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { var sk = arg_sk; - return @ptrCast([*c]X509_ALGOR, @alignCast(@import("std").meta.alignment(X509_ALGOR), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as(?*X509, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_ALGOR_dup(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) ?*struct_stack_st_X509_ALGOR { +pub fn sk_X509_dup(arg_sk: ?*const struct_stack_st_X509) callconv(.C) ?*struct_stack_st_X509 { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_ALGOR, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_ALGOR_sort(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { +pub fn sk_X509_sort(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_call_cmp_func); } -pub fn sk_X509_ALGOR_is_sorted(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) c_int { +pub fn sk_X509_is_sorted(arg_sk: ?*const struct_stack_st_X509) callconv(.C) c_int { + var sk = arg_sk; + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); +} +pub fn sk_X509_set_cmp_func(arg_sk: ?*struct_stack_st_X509, arg_comp: sk_X509_cmp_func) callconv(.C) sk_X509_cmp_func { + var sk = arg_sk; + var comp = arg_comp; + return @as(sk_X509_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); +} +pub fn sk_X509_deep_copy(arg_sk: ?*const struct_stack_st_X509, arg_copy_func: sk_X509_copy_func, arg_free_func: sk_X509_free_func) callconv(.C) ?*struct_stack_st_X509 { + var sk = arg_sk; + var copy_func = arg_copy_func; + var free_func = arg_free_func; + return @as(?*struct_stack_st_X509, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); +} +pub const stack_free_func = ?*const fn (?*anyopaque) callconv(.C) void; +pub const stack_copy_func = ?*const fn (?*anyopaque) callconv(.C) ?*anyopaque; +pub const stack_cmp_func = ?*const fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; +pub extern const X509_it: ASN1_ITEM; +pub extern fn X509_up_ref(x509: ?*X509) c_int; +pub extern fn X509_chain_up_ref(chain: ?*struct_stack_st_X509) ?*struct_stack_st_X509; +pub extern fn X509_dup(x509: ?*X509) ?*X509; +pub extern fn X509_free(x509: ?*X509) void; +pub extern fn d2i_X509(out: [*c]?*X509, inp: [*c][*c]const u8, len: c_long) ?*X509; +pub extern fn X509_parse_from_buffer(buf: ?*CRYPTO_BUFFER) ?*X509; +pub extern fn i2d_X509(x509: ?*X509, outp: [*c][*c]u8) c_int; +pub extern fn X509_get_version(x509: ?*const X509) c_long; +pub extern fn X509_get0_serialNumber(x509: ?*const X509) [*c]const ASN1_INTEGER; +pub extern fn X509_get0_notBefore(x509: ?*const X509) [*c]const ASN1_TIME; +pub extern fn X509_get0_notAfter(x509: ?*const X509) [*c]const ASN1_TIME; +pub extern fn X509_get_issuer_name(x509: ?*const X509) ?*X509_NAME; +pub extern fn X509_get_subject_name(x509: ?*const X509) ?*X509_NAME; +pub extern fn X509_get_X509_PUBKEY(x509: ?*const X509) ?*X509_PUBKEY; +pub extern fn X509_get_pubkey(x509: ?*X509) [*c]EVP_PKEY; +pub extern fn X509_get0_pubkey_bitstr(x509: ?*const X509) [*c]ASN1_BIT_STRING; +pub extern fn X509_get0_uids(x509: ?*const X509, out_issuer_uid: [*c][*c]const ASN1_BIT_STRING, out_subject_uid: [*c][*c]const ASN1_BIT_STRING) void; +pub const struct_stack_st_X509_EXTENSION = opaque {}; +pub extern fn X509_get0_extensions(x509: ?*const X509) ?*const struct_stack_st_X509_EXTENSION; +pub extern fn X509_get_ext_count(x: ?*const X509) c_int; +pub extern fn X509_get_ext_by_NID(x: ?*const X509, nid: c_int, lastpos: c_int) c_int; +pub extern fn X509_get_ext_by_OBJ(x: ?*const X509, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; +pub extern fn X509_get_ext_by_critical(x: ?*const X509, crit: c_int, lastpos: c_int) c_int; +pub extern fn X509_get_ext(x: ?*const X509, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_get0_tbs_sigalg(x509: ?*const X509) [*c]const X509_ALGOR; +pub extern fn X509_get0_signature(out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR, x509: ?*const X509) void; +pub extern fn X509_get_signature_nid(x509: ?*const X509) c_int; +pub extern fn i2d_X509_tbs(x509: ?*X509, outp: [*c][*c]u8) c_int; +pub extern fn X509_new() ?*X509; +pub extern fn X509_set_version(x509: ?*X509, version: c_long) c_int; +pub extern fn X509_set_serialNumber(x509: ?*X509, serial: [*c]const ASN1_INTEGER) c_int; +pub extern fn X509_set1_notBefore(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; +pub extern fn X509_set1_notAfter(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; +pub extern fn X509_getm_notBefore(x509: ?*X509) [*c]ASN1_TIME; +pub extern fn X509_getm_notAfter(x: ?*X509) [*c]ASN1_TIME; +pub extern fn X509_set_issuer_name(x509: ?*X509, name: ?*X509_NAME) c_int; +pub extern fn X509_set_subject_name(x509: ?*X509, name: ?*X509_NAME) c_int; +pub extern fn X509_set_pubkey(x509: ?*X509, pkey: [*c]EVP_PKEY) c_int; +pub extern fn X509_delete_ext(x: ?*X509, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_add_ext(x: ?*X509, ex: ?*const X509_EXTENSION, loc: c_int) c_int; +pub extern fn X509_sign(x509: ?*X509, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; +pub extern fn X509_sign_ctx(x509: ?*X509, ctx: [*c]EVP_MD_CTX) c_int; +pub extern fn i2d_re_X509_tbs(x509: ?*X509, outp: [*c][*c]u8) c_int; +pub extern fn X509_set1_signature_algo(x509: ?*X509, algo: [*c]const X509_ALGOR) c_int; +pub extern fn X509_set1_signature_value(x509: ?*X509, sig: [*c]const u8, sig_len: usize) c_int; +pub extern fn i2d_X509_AUX(x509: ?*X509, outp: [*c][*c]u8) c_int; +pub extern fn d2i_X509_AUX(x509: [*c]?*X509, inp: [*c][*c]const u8, length: c_long) ?*X509; +pub extern fn X509_alias_set1(x509: ?*X509, name: [*c]const u8, len: c_int) c_int; +pub extern fn X509_keyid_set1(x509: ?*X509, id: [*c]const u8, len: c_int) c_int; +pub extern fn X509_alias_get0(x509: ?*X509, out_len: [*c]c_int) [*c]u8; +pub extern fn X509_keyid_get0(x509: ?*X509, out_len: [*c]c_int) [*c]u8; +pub const sk_X509_CRL_free_func = ?*const fn (?*X509_CRL) callconv(.C) void; +pub const sk_X509_CRL_copy_func = ?*const fn (?*X509_CRL) callconv(.C) ?*X509_CRL; +pub const sk_X509_CRL_cmp_func = ?*const fn ([*c]?*const X509_CRL, [*c]?*const X509_CRL) callconv(.C) c_int; +pub fn sk_X509_CRL_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { + var free_func = arg_free_func; + var ptr = arg_ptr; + @as(sk_X509_CRL_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_CRL, @ptrCast(ptr))); +} +pub extern fn X509V3_EXT_d2i(ex: ?*X509_EXTENSION) ?*anyopaque; +pub extern fn X509V3_EXT_get(ex: ?*X509_EXTENSION) ?*X509V3_EXT_METHOD; +pub const X509V3_EXT_METHOD = opaque {}; +pub extern fn X509V3_EXT_get_nid(ndi: c_int) ?*X509V3_EXT_METHOD; +pub fn sk_X509_CRL_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { + var cmp_func = arg_cmp_func; + var a = arg_a; + var b = arg_b; + var a_ptr: ?*const X509_CRL = @as(?*const X509_CRL, @ptrCast(a.*)); + var b_ptr: ?*const X509_CRL = @as(?*const X509_CRL, @ptrCast(b.*)); + return @as(sk_X509_CRL_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); +} +pub const struct_stack_st_X509_REVOKED = opaque {}; +pub const stack_X509_REVOKED_free_func = ?*const fn ([*c]X509_REVOKED) callconv(.C) void; +pub const stack_X509_REVOKED_copy_func = ?*const fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED; +pub const stack_X509_REVOKED_cmp_func = ?*const fn ([*c][*c]const X509_REVOKED, [*c][*c]const X509_REVOKED) callconv(.C) c_int; +pub const struct_stack_st_GENERAL_NAMES = opaque {}; +pub const struct_stack_st_ACCESS_DESCRIPTION = opaque {}; + +pub const OTHERNAME = extern struct { + type_id: ?*ASN1_OBJECT, + value: ?*ASN1_TYPE, +}; + +pub const GENERAL_NAME = extern struct { + name_type: enum(c_int) { + GEN_OTHERNAME = 0, + GEN_EMAIL = 1, + GEN_DNS = 2, + GEN_X400 = 3, + GEN_DIRNAME = 4, + GEN_EDIPARTY = 5, + GEN_URI = 6, + GEN_IPADD = 7, + GEN_RID = 8, + }, + d: extern union { + ptr: *c_char, + otherName: *OTHERNAME, + rfc822Name: *ASN1_IA5STRING, + dNSName: *ASN1_IA5STRING, + x400Address: *ASN1_STRING, + directoryName: *X509_NAME, + //EDIPARTYNAME + ediPartyName: *anyopaque, + uniformResourceIdentifier: *ASN1_IA5STRING, + iPAddress: *ASN1_OCTET_STRING, + registeredID: *ASN1_OBJECT, + ip: *ASN1_OCTET_STRING, + dirn: *X509_NAME, + ia5: *ASN1_IA5STRING, + rid: *ASN1_OBJECT, + other: *ASN1_TYPE, + }, +}; + +pub const ACCESS_DESCRIPTION = extern struct { + method: *ASN1_OBJECT, + location: *GENERAL_NAME, +}; + +pub fn sk_GENERAL_NAME_num(arg_sk: ?*const struct_stack_st_GENERAL_NAME) callconv(.C) usize { + var sk = arg_sk; + return sk_num(@as([*c]const _STACK, @alignCast(@ptrCast(sk)))); +} +pub fn sk_GENERAL_NAME_free(arg_sk: ?*struct_stack_st_GENERAL_NAME) callconv(.C) void { + var sk = arg_sk; + sk_free(@as([*c]_STACK, @alignCast(@ptrCast(sk)))); +} +pub const stack_GENERAL_NAME_free_func = ?*const fn (?*struct_stack_st_GENERAL_NAME) callconv(.C) void; + +pub fn sk_GENERAL_NAME_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { + var free_func = arg_free_func; + var ptr = arg_ptr; + @as(stack_GENERAL_NAME_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*struct_stack_st_GENERAL_NAME, @ptrCast(ptr))); +} +pub fn sk_GENERAL_NAME_pop_free(arg_sk: ?*struct_stack_st_GENERAL_NAME, arg_free_func: stack_GENERAL_NAME_free_func) callconv(.C) void { + var sk = arg_sk; + var free_func = arg_free_func; + sk_pop_free_ex(@as([*c]_STACK, @alignCast(@ptrCast(sk))), sk_GENERAL_NAME_call_free_func, @as(stack_free_func, @ptrCast(free_func))); +} +pub fn sk_GENERAL_NAME_value(arg_sk: ?*const struct_stack_st_GENERAL_NAME, arg_i: usize) callconv(.C) ?*GENERAL_NAME { + var sk = arg_sk; + var i = arg_i; + return @alignCast(@ptrCast(sk_value(@as([*c]const _STACK, @alignCast(@ptrCast(sk))), i))); +} + +pub fn sk_ACCESS_DESCRIPTION_num(arg_sk: ?*const AUTHORITY_INFO_ACCESS) callconv(.C) usize { + var sk = arg_sk; + return sk_num(@as([*c]const _STACK, @alignCast(@ptrCast(sk)))); +} +pub fn sk_ACCESS_DESCRIPTION_free(arg_sk: ?*AUTHORITY_INFO_ACCESS) callconv(.C) void { + var sk = arg_sk; + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); +} +pub const stack_ACCESS_DESCRIPTION_free_func = ?*const fn (?*AUTHORITY_INFO_ACCESS) callconv(.C) void; + +pub fn sk_ACCESS_DESCRIPTION_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { + var free_func = arg_free_func; + var ptr = arg_ptr; + @as(stack_ACCESS_DESCRIPTION_free_func, @ptrCast(free_func)).?(@as(?*AUTHORITY_INFO_ACCESS, @ptrCast(ptr))); +} +pub fn sk_ACCESS_DESCRIPTION_pop_free(arg_sk: ?*AUTHORITY_INFO_ACCESS, arg_free_func: stack_ACCESS_DESCRIPTION_free_func) callconv(.C) void { + var sk = arg_sk; + var free_func = arg_free_func; + sk_pop_free_ex(@as([*c]_STACK, @alignCast(@ptrCast(sk))), sk_ACCESS_DESCRIPTION_call_free_func, @as(stack_free_func, @ptrCast(free_func))); +} +pub extern fn X509_get_serialNumber(x509: ?*X509) [*c]ASN1_INTEGER; +pub fn sk_ACCESS_DESCRIPTION_value(arg_sk: ?*const AUTHORITY_INFO_ACCESS, arg_i: usize) callconv(.C) ?*ACCESS_DESCRIPTION { + var sk = arg_sk; + var i = arg_i; + return @alignCast(@ptrCast(sk_value(@as([*c]const _STACK, @alignCast(@ptrCast(sk))), i))); +} +pub const NID_id_on_SmtpUTF8Mailbox = @as(c_int, 1208); +pub const NID_XmppAddr = @as(c_int, 1209); +pub const NID_SRVName = @as(c_int, 1210); +pub const NID_NAIRealm = @as(c_int, 1211); + +pub const stack_X509_CRL_free_func = ?*const fn (?*X509_CRL) callconv(.C) void; +pub const stack_X509_CRL_copy_func = ?*const fn (?*X509_CRL) callconv(.C) ?*X509_CRL; +pub const stack_X509_CRL_cmp_func = ?*const fn ([*c]?*const X509_CRL, [*c]?*const X509_CRL) callconv(.C) c_int; +pub fn sk_X509_CRL_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { + var copy_func = arg_copy_func; + var ptr = arg_ptr; + return @as(?*anyopaque, @ptrCast(@as(stack_X509_CRL_copy_func, @ptrCast(copy_func)).?(@as(?*X509_CRL, @ptrCast(ptr))))); +} +pub fn sk_X509_CRL_new(arg_comp: stack_X509_CRL_cmp_func) callconv(.C) ?*struct_stack_st_X509_CRL { + var comp = arg_comp; + return @as(?*struct_stack_st_X509_CRL, @ptrCast(sk_new(@as(stack_cmp_func, @ptrCast(comp))))); +} +pub fn sk_X509_CRL_new_null() callconv(.C) ?*struct_stack_st_X509_CRL { + return @as(?*struct_stack_st_X509_CRL, @ptrCast(sk_new_null())); +} +pub fn sk_X509_CRL_num(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) usize { + var sk = arg_sk; + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); +} +pub fn sk_X509_CRL_zero(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { + var sk = arg_sk; + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); +} +pub fn sk_X509_CRL_value(arg_sk: ?*const struct_stack_st_X509_CRL, arg_i: usize) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + var i = arg_i; + return @as(?*X509_CRL, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); +} +pub fn sk_X509_CRL_set(arg_sk: ?*struct_stack_st_X509_CRL, arg_i: usize, arg_p: ?*X509_CRL) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + var i = arg_i; + var p = arg_p; + return @as(?*X509_CRL, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); +} +pub fn sk_X509_CRL_free(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { + var sk = arg_sk; + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); +} +pub fn sk_X509_CRL_pop_free(arg_sk: ?*struct_stack_st_X509_CRL, arg_free_func: sk_X509_CRL_free_func) callconv(.C) void { + var sk = arg_sk; + var free_func = arg_free_func; + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_CRL_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); +} +pub fn sk_X509_CRL_insert(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*X509_CRL, arg_where: usize) callconv(.C) usize { + var sk = arg_sk; + var p = arg_p; + var where = arg_where; + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); +} +pub fn sk_X509_CRL_delete(arg_sk: ?*struct_stack_st_X509_CRL, arg_where: usize) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + var where = arg_where; + return @as(?*X509_CRL, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); +} +pub fn sk_X509_CRL_delete_ptr(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*const X509_CRL) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + var p = arg_p; + return @as(?*X509_CRL, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); +} +pub fn sk_X509_CRL_find(arg_sk: ?*const struct_stack_st_X509_CRL, arg_out_index: [*c]usize, arg_p: ?*const X509_CRL) callconv(.C) c_int { + var sk = arg_sk; + var out_index = arg_out_index; + var p = arg_p; + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_CRL_call_cmp_func); +} +pub fn sk_X509_CRL_shift(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + return @as(?*X509_CRL, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); +} +pub fn sk_X509_CRL_push(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*X509_CRL) callconv(.C) usize { + var sk = arg_sk; + var p = arg_p; + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); +} +pub fn sk_X509_CRL_pop(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) ?*X509_CRL { + var sk = arg_sk; + return @as(?*X509_CRL, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); +} +pub fn sk_X509_CRL_dup(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) ?*struct_stack_st_X509_CRL { + var sk = arg_sk; + return @as(?*struct_stack_st_X509_CRL, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); +} +pub fn sk_X509_CRL_sort(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_CRL_call_cmp_func); } -pub fn sk_X509_ALGOR_set_cmp_func(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_comp: stack_X509_ALGOR_cmp_func) callconv(.C) stack_X509_ALGOR_cmp_func { +pub fn sk_X509_CRL_is_sorted(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) c_int { + var sk = arg_sk; + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); +} +pub fn sk_X509_CRL_set_cmp_func(arg_sk: ?*struct_stack_st_X509_CRL, arg_comp: sk_X509_CRL_cmp_func) callconv(.C) sk_X509_CRL_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_ALGOR_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_ALGOR, [*c][*c]const X509_ALGOR) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_CRL_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_ALGOR_deep_copy(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_copy_func: ?*const fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR, arg_free_func: ?*const fn ([*c]X509_ALGOR) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_ALGOR { +pub fn sk_X509_CRL_deep_copy(arg_sk: ?*const struct_stack_st_X509_CRL, arg_copy_func: sk_X509_CRL_copy_func, arg_free_func: sk_X509_CRL_free_func) callconv(.C) ?*struct_stack_st_X509_CRL { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_ALGOR, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_ALGOR_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_ALGOR_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_CRL, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_CRL_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_CRL_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const X509_ALGORS = struct_stack_st_X509_ALGOR; +pub extern const X509_CRL_it: ASN1_ITEM; +pub extern fn X509_CRL_up_ref(crl: ?*X509_CRL) c_int; +pub extern fn X509_CRL_dup(crl: ?*X509_CRL) ?*X509_CRL; +pub extern fn X509_CRL_free(crl: ?*X509_CRL) void; +pub extern fn d2i_X509_CRL(out: [*c]?*X509_CRL, inp: [*c][*c]const u8, len: c_long) ?*X509_CRL; +pub extern fn i2d_X509_CRL(crl: ?*X509_CRL, outp: [*c][*c]u8) c_int; +pub extern fn X509_CRL_get_version(crl: ?*const X509_CRL) c_long; +pub extern fn X509_CRL_get0_lastUpdate(crl: ?*const X509_CRL) [*c]const ASN1_TIME; +pub extern fn X509_CRL_get0_nextUpdate(crl: ?*const X509_CRL) [*c]const ASN1_TIME; +pub extern fn X509_CRL_get_issuer(crl: ?*const X509_CRL) ?*X509_NAME; +pub extern fn X509_CRL_get_REVOKED(crl: ?*X509_CRL) ?*struct_stack_st_X509_REVOKED; +pub extern fn X509_CRL_get0_extensions(crl: ?*const X509_CRL) ?*const struct_stack_st_X509_EXTENSION; +pub extern fn X509_CRL_get_ext_count(x: ?*const X509_CRL) c_int; +pub extern fn X509_CRL_get_ext_by_NID(x: ?*const X509_CRL, nid: c_int, lastpos: c_int) c_int; +pub extern fn X509_CRL_get_ext_by_OBJ(x: ?*const X509_CRL, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; +pub extern fn X509_CRL_get_ext_by_critical(x: ?*const X509_CRL, crit: c_int, lastpos: c_int) c_int; +pub extern fn X509_CRL_get_ext(x: ?*const X509_CRL, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_CRL_get0_signature(crl: ?*const X509_CRL, out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR) void; +pub extern fn X509_CRL_get_signature_nid(crl: ?*const X509_CRL) c_int; +pub extern fn i2d_X509_CRL_tbs(crl: ?*X509_CRL, outp: [*c][*c]u8) c_int; +pub extern fn X509_CRL_new() ?*X509_CRL; +pub extern fn X509_CRL_set_version(crl: ?*X509_CRL, version: c_long) c_int; +pub extern fn X509_CRL_set_issuer_name(crl: ?*X509_CRL, name: ?*X509_NAME) c_int; +pub extern fn X509_CRL_set1_lastUpdate(crl: ?*X509_CRL, tm: [*c]const ASN1_TIME) c_int; +pub extern fn X509_CRL_set1_nextUpdate(crl: ?*X509_CRL, tm: [*c]const ASN1_TIME) c_int; +pub extern fn X509_CRL_delete_ext(x: ?*X509_CRL, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_CRL_add_ext(x: ?*X509_CRL, ex: ?*const X509_EXTENSION, loc: c_int) c_int; +pub extern fn X509_CRL_sign(crl: ?*X509_CRL, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; +pub extern fn X509_CRL_sign_ctx(crl: ?*X509_CRL, ctx: [*c]EVP_MD_CTX) c_int; +pub extern fn i2d_re_X509_CRL_tbs(crl: ?*X509_CRL, outp: [*c][*c]u8) c_int; +pub extern fn X509_CRL_set1_signature_algo(crl: ?*X509_CRL, algo: [*c]const X509_ALGOR) c_int; +pub extern fn X509_CRL_set1_signature_value(crl: ?*X509_CRL, sig: [*c]const u8, sig_len: usize) c_int; +pub extern const X509_REQ_it: ASN1_ITEM; +pub extern fn X509_REQ_dup(req: ?*X509_REQ) ?*X509_REQ; +pub extern fn X509_REQ_free(req: ?*X509_REQ) void; +pub extern fn d2i_X509_REQ(out: [*c]?*X509_REQ, inp: [*c][*c]const u8, len: c_long) ?*X509_REQ; +pub extern fn i2d_X509_REQ(req: ?*X509_REQ, outp: [*c][*c]u8) c_int; +pub extern fn X509_REQ_get_version(req: ?*const X509_REQ) c_long; +pub extern fn X509_REQ_get_subject_name(req: ?*const X509_REQ) ?*X509_NAME; +pub extern fn X509_REQ_get_pubkey(req: ?*X509_REQ) [*c]EVP_PKEY; +pub extern fn X509_REQ_get0_signature(req: ?*const X509_REQ, out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR) void; +pub extern fn X509_REQ_get_signature_nid(req: ?*const X509_REQ) c_int; +pub extern fn X509_REQ_new() ?*X509_REQ; +pub extern fn X509_REQ_set_version(req: ?*X509_REQ, version: c_long) c_int; +pub extern fn X509_REQ_set_subject_name(req: ?*X509_REQ, name: ?*X509_NAME) c_int; +pub extern fn X509_REQ_set_pubkey(req: ?*X509_REQ, pkey: [*c]EVP_PKEY) c_int; +pub extern fn X509_REQ_sign(req: ?*X509_REQ, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; +pub extern fn X509_REQ_sign_ctx(req: ?*X509_REQ, ctx: [*c]EVP_MD_CTX) c_int; +pub extern fn i2d_re_X509_REQ_tbs(req: ?*X509_REQ, outp: [*c][*c]u8) c_int; +pub extern fn X509_REQ_set1_signature_algo(req: ?*X509_REQ, algo: [*c]const X509_ALGOR) c_int; +pub extern fn X509_REQ_set1_signature_value(req: ?*X509_REQ, sig: [*c]const u8, sig_len: usize) c_int; pub const struct_stack_st_X509_NAME_ENTRY = opaque {}; -pub const stack_X509_NAME_ENTRY_free_func = ?*const fn (?*X509_NAME_ENTRY) callconv(.C) void; -pub const stack_X509_NAME_ENTRY_copy_func = ?*const fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY; -pub const stack_X509_NAME_ENTRY_cmp_func = ?*const fn ([*c]?*const X509_NAME_ENTRY, [*c]?*const X509_NAME_ENTRY) callconv(.C) c_int; -pub fn sk_X509_NAME_ENTRY_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_NAME_ENTRY_free_func = ?*const fn (?*X509_NAME_ENTRY) callconv(.C) void; +pub const sk_X509_NAME_ENTRY_copy_func = ?*const fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY; +pub const sk_X509_NAME_ENTRY_cmp_func = ?*const fn ([*c]?*const X509_NAME_ENTRY, [*c]?*const X509_NAME_ENTRY) callconv(.C) c_int; +pub fn sk_X509_NAME_ENTRY_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_NAME_ENTRY_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME_ENTRY) callconv(.C) void), free_func)).?(@ptrCast(?*X509_NAME_ENTRY, ptr)); + @as(sk_X509_NAME_ENTRY_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_NAME_ENTRY, @ptrCast(ptr))); } -pub fn sk_X509_NAME_ENTRY_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_NAME_ENTRY_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_NAME_ENTRY_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY), copy_func)).?(@ptrCast(?*X509_NAME_ENTRY, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_NAME_ENTRY_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_NAME_ENTRY, @ptrCast(ptr))))); } -pub fn sk_X509_NAME_ENTRY_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_NAME_ENTRY_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_NAME_ENTRY = @ptrCast(?*const X509_NAME_ENTRY, a.*); - var b_ptr: ?*const X509_NAME_ENTRY = @ptrCast(?*const X509_NAME_ENTRY, b.*); - return @ptrCast(stack_X509_NAME_ENTRY_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_NAME_ENTRY, [*c]?*const X509_NAME_ENTRY) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_NAME_ENTRY = @as(?*const X509_NAME_ENTRY, @ptrCast(a.*)); + var b_ptr: ?*const X509_NAME_ENTRY = @as(?*const X509_NAME_ENTRY, @ptrCast(b.*)); + return @as(sk_X509_NAME_ENTRY_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_NAME_ENTRY_new(arg_comp: stack_X509_NAME_ENTRY_cmp_func) callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { +pub fn sk_X509_NAME_ENTRY_new(arg_comp: sk_X509_NAME_ENTRY_cmp_func) callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_NAME_ENTRY, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_NAME_ENTRY, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_NAME_ENTRY_new_null() callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { - return @ptrCast(?*struct_stack_st_X509_NAME_ENTRY, sk_new_null()); + return @as(?*struct_stack_st_X509_NAME_ENTRY, @ptrCast(sk_new_null())); } pub fn sk_X509_NAME_ENTRY_num(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_NAME_ENTRY_zero(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_NAME_ENTRY_value(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY, arg_i: usize) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_NAME_ENTRY, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_NAME_ENTRY_set(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_i: usize, arg_p: ?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_NAME_ENTRY, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_NAME_ENTRY_free(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_NAME_ENTRY_pop_free(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_free_func: stack_X509_NAME_ENTRY_free_func) callconv(.C) void { +pub fn sk_X509_NAME_ENTRY_pop_free(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_free_func: sk_X509_NAME_ENTRY_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_NAME_ENTRY_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_ENTRY_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_NAME_ENTRY_insert(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_p: ?*X509_NAME_ENTRY, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_NAME_ENTRY_delete(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_where: usize) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_NAME_ENTRY, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_NAME_ENTRY_delete_ptr(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_p: ?*const X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_NAME_ENTRY, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_NAME_ENTRY_find(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY, arg_out_index: [*c]usize, arg_p: ?*const X509_NAME_ENTRY) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_NAME_ENTRY_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_NAME_ENTRY_call_cmp_func); } pub fn sk_X509_NAME_ENTRY_shift(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; - return @ptrCast(?*X509_NAME_ENTRY, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_ENTRY_push(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_p: ?*X509_NAME_ENTRY) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_NAME_ENTRY_pop(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; - return @ptrCast(?*X509_NAME_ENTRY, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_NAME_ENTRY, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_ENTRY_dup(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY) callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_NAME_ENTRY, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_NAME_ENTRY, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_ENTRY_sort(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_ENTRY_call_cmp_func); } pub fn sk_X509_NAME_ENTRY_is_sorted(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_NAME_ENTRY_set_cmp_func(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_comp: stack_X509_NAME_ENTRY_cmp_func) callconv(.C) stack_X509_NAME_ENTRY_cmp_func { +pub fn sk_X509_NAME_ENTRY_set_cmp_func(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_comp: sk_X509_NAME_ENTRY_cmp_func) callconv(.C) sk_X509_NAME_ENTRY_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_NAME_ENTRY_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_NAME_ENTRY, [*c]?*const X509_NAME_ENTRY) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_NAME_ENTRY_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_NAME_ENTRY_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY, arg_copy_func: ?*const fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY, arg_free_func: ?*const fn (?*X509_NAME_ENTRY) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { +pub fn sk_X509_NAME_ENTRY_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY, arg_copy_func: sk_X509_NAME_ENTRY_copy_func, arg_free_func: sk_X509_NAME_ENTRY_free_func) callconv(.C) ?*struct_stack_st_X509_NAME_ENTRY { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_NAME_ENTRY, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_NAME_ENTRY_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_NAME_ENTRY_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_NAME_ENTRY, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_ENTRY_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_NAME_ENTRY_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub const struct_stack_st_X509_NAME = opaque {}; -pub const stack_X509_NAME_free_func = ?*const fn (?*X509_NAME) callconv(.C) void; -pub const stack_X509_NAME_copy_func = ?*const fn (?*X509_NAME) callconv(.C) ?*X509_NAME; -pub const stack_X509_NAME_cmp_func = ?*const fn ([*c]?*const X509_NAME, [*c]?*const X509_NAME) callconv(.C) c_int; -pub fn sk_X509_NAME_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_NAME_free_func = ?*const fn (?*X509_NAME) callconv(.C) void; +pub const sk_X509_NAME_copy_func = ?*const fn (?*X509_NAME) callconv(.C) ?*X509_NAME; +pub const sk_X509_NAME_cmp_func = ?*const fn ([*c]?*const X509_NAME, [*c]?*const X509_NAME) callconv(.C) c_int; +pub fn sk_X509_NAME_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_NAME_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME) callconv(.C) void), free_func)).?(@ptrCast(?*X509_NAME, ptr)); + @as(sk_X509_NAME_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_NAME, @ptrCast(ptr))); } -pub fn sk_X509_NAME_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_NAME_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_NAME_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME) callconv(.C) ?*X509_NAME), copy_func)).?(@ptrCast(?*X509_NAME, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_NAME_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_NAME, @ptrCast(ptr))))); } -pub fn sk_X509_NAME_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_NAME_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_NAME = @ptrCast(?*const X509_NAME, a.*); - var b_ptr: ?*const X509_NAME = @ptrCast(?*const X509_NAME, b.*); - return @ptrCast(stack_X509_NAME_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_NAME, [*c]?*const X509_NAME) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_NAME = @as(?*const X509_NAME, @ptrCast(a.*)); + var b_ptr: ?*const X509_NAME = @as(?*const X509_NAME, @ptrCast(b.*)); + return @as(sk_X509_NAME_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_NAME_new(arg_comp: stack_X509_NAME_cmp_func) callconv(.C) ?*struct_stack_st_X509_NAME { +pub fn sk_X509_NAME_new(arg_comp: sk_X509_NAME_cmp_func) callconv(.C) ?*struct_stack_st_X509_NAME { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_NAME, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_NAME, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_NAME_new_null() callconv(.C) ?*struct_stack_st_X509_NAME { - return @ptrCast(?*struct_stack_st_X509_NAME, sk_new_null()); + return @as(?*struct_stack_st_X509_NAME, @ptrCast(sk_new_null())); } pub fn sk_X509_NAME_num(arg_sk: ?*const struct_stack_st_X509_NAME) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_NAME_zero(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_NAME_value(arg_sk: ?*const struct_stack_st_X509_NAME, arg_i: usize) callconv(.C) ?*X509_NAME { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_NAME, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_NAME, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_NAME_set(arg_sk: ?*struct_stack_st_X509_NAME, arg_i: usize, arg_p: ?*X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_NAME, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_NAME, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_NAME_free(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_NAME_pop_free(arg_sk: ?*struct_stack_st_X509_NAME, arg_free_func: stack_X509_NAME_free_func) callconv(.C) void { +pub fn sk_X509_NAME_pop_free(arg_sk: ?*struct_stack_st_X509_NAME, arg_free_func: sk_X509_NAME_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_NAME_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_NAME_insert(arg_sk: ?*struct_stack_st_X509_NAME, arg_p: ?*X509_NAME, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_NAME_delete(arg_sk: ?*struct_stack_st_X509_NAME, arg_where: usize) callconv(.C) ?*X509_NAME { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_NAME, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_NAME, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_NAME_delete_ptr(arg_sk: ?*struct_stack_st_X509_NAME, arg_p: ?*const X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_NAME, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_NAME, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_NAME_find(arg_sk: ?*const struct_stack_st_X509_NAME, arg_out_index: [*c]usize, arg_p: ?*const X509_NAME) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_NAME_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_NAME_call_cmp_func); } pub fn sk_X509_NAME_shift(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; - return @ptrCast(?*X509_NAME, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_NAME, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_push(arg_sk: ?*struct_stack_st_X509_NAME, arg_p: ?*X509_NAME) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_NAME_pop(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; - return @ptrCast(?*X509_NAME, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_NAME, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_dup(arg_sk: ?*const struct_stack_st_X509_NAME) callconv(.C) ?*struct_stack_st_X509_NAME { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_NAME, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_NAME, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_NAME_sort(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_call_cmp_func); } pub fn sk_X509_NAME_is_sorted(arg_sk: ?*const struct_stack_st_X509_NAME) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_NAME_set_cmp_func(arg_sk: ?*struct_stack_st_X509_NAME, arg_comp: stack_X509_NAME_cmp_func) callconv(.C) stack_X509_NAME_cmp_func { +pub fn sk_X509_NAME_set_cmp_func(arg_sk: ?*struct_stack_st_X509_NAME, arg_comp: sk_X509_NAME_cmp_func) callconv(.C) sk_X509_NAME_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_NAME_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_NAME, [*c]?*const X509_NAME) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_NAME_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_NAME_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME, arg_copy_func: ?*const fn (?*X509_NAME) callconv(.C) ?*X509_NAME, arg_free_func: ?*const fn (?*X509_NAME) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_NAME { +pub fn sk_X509_NAME_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME, arg_copy_func: sk_X509_NAME_copy_func, arg_free_func: sk_X509_NAME_free_func) callconv(.C) ?*struct_stack_st_X509_NAME { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_NAME, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_NAME_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_NAME_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_NAME, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_NAME_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_NAME_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const X509_EXTENSIONS = struct_stack_st_X509_EXTENSION; -pub const stack_X509_EXTENSION_free_func = ?*const fn (?*X509_EXTENSION) callconv(.C) void; -pub const stack_X509_EXTENSION_copy_func = ?*const fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION; -pub const stack_X509_EXTENSION_cmp_func = ?*const fn ([*c]?*const X509_EXTENSION, [*c]?*const X509_EXTENSION) callconv(.C) c_int; -pub fn sk_X509_EXTENSION_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub extern const X509_NAME_it: ASN1_ITEM; +pub extern fn X509_NAME_new() ?*X509_NAME; +pub extern fn X509_NAME_free(name: ?*X509_NAME) void; +pub extern fn d2i_X509_NAME(out: [*c]?*X509_NAME, inp: [*c][*c]const u8, len: c_long) ?*X509_NAME; +pub extern fn i2d_X509_NAME(in: ?*X509_NAME, outp: [*c][*c]u8) c_int; +pub extern fn X509_NAME_dup(name: ?*X509_NAME) ?*X509_NAME; +pub extern fn X509_NAME_get0_der(name: ?*X509_NAME, out_der: [*c][*c]const u8, out_der_len: [*c]usize) c_int; +pub extern fn X509_NAME_set(xn: [*c]?*X509_NAME, name: ?*X509_NAME) c_int; +pub extern fn X509_NAME_entry_count(name: ?*const X509_NAME) c_int; +pub extern fn X509_NAME_get_index_by_NID(name: ?*const X509_NAME, nid: c_int, lastpos: c_int) c_int; +pub extern fn X509_NAME_get_index_by_OBJ(name: ?*const X509_NAME, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; +pub extern fn X509_NAME_get_entry(name: ?*const X509_NAME, loc: c_int) ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_delete_entry(name: ?*X509_NAME, loc: c_int) ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_add_entry(name: ?*X509_NAME, entry: ?*const X509_NAME_ENTRY, loc: c_int, set: c_int) c_int; +pub extern fn X509_NAME_add_entry_by_OBJ(name: ?*X509_NAME, obj: ?*const ASN1_OBJECT, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; +pub extern fn X509_NAME_add_entry_by_NID(name: ?*X509_NAME, nid: c_int, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; +pub extern fn X509_NAME_add_entry_by_txt(name: ?*X509_NAME, field: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; +pub extern const X509_NAME_ENTRY_it: ASN1_ITEM; +pub extern fn X509_NAME_ENTRY_new() ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_ENTRY_free(entry: ?*X509_NAME_ENTRY) void; +pub extern fn d2i_X509_NAME_ENTRY(out: [*c]?*X509_NAME_ENTRY, inp: [*c][*c]const u8, len: c_long) ?*X509_NAME_ENTRY; +pub extern fn i2d_X509_NAME_ENTRY(in: ?*const X509_NAME_ENTRY, outp: [*c][*c]u8) c_int; +pub extern fn X509_NAME_ENTRY_dup(entry: ?*const X509_NAME_ENTRY) ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_ENTRY_get_object(entry: ?*const X509_NAME_ENTRY) ?*ASN1_OBJECT; +pub extern fn X509_NAME_ENTRY_set_object(entry: ?*X509_NAME_ENTRY, obj: ?*const ASN1_OBJECT) c_int; +pub extern fn X509_NAME_ENTRY_get_data(entry: ?*const X509_NAME_ENTRY) [*c]ASN1_STRING; +pub extern fn X509_NAME_ENTRY_set_data(entry: ?*X509_NAME_ENTRY, @"type": c_int, bytes: [*c]const u8, len: c_int) c_int; +pub extern fn X509_NAME_ENTRY_set(entry: ?*const X509_NAME_ENTRY) c_int; +pub extern fn X509_NAME_ENTRY_create_by_OBJ(out: [*c]?*X509_NAME_ENTRY, obj: ?*const ASN1_OBJECT, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_ENTRY_create_by_NID(out: [*c]?*X509_NAME_ENTRY, nid: c_int, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; +pub extern fn X509_NAME_ENTRY_create_by_txt(out: [*c]?*X509_NAME_ENTRY, field: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; +pub extern const X509_EXTENSION_it: ASN1_ITEM; +pub extern fn X509_EXTENSION_new() ?*X509_EXTENSION; +pub extern fn X509_EXTENSION_free(ex: ?*X509_EXTENSION) void; +pub extern fn d2i_X509_EXTENSION(out: [*c]?*X509_EXTENSION, inp: [*c][*c]const u8, len: c_long) ?*X509_EXTENSION; +pub extern fn i2d_X509_EXTENSION(alg: ?*const X509_EXTENSION, outp: [*c][*c]u8) c_int; +pub extern fn X509_EXTENSION_dup(ex: ?*const X509_EXTENSION) ?*X509_EXTENSION; +pub extern fn X509_EXTENSION_create_by_NID(ex: [*c]?*X509_EXTENSION, nid: c_int, crit: c_int, data: [*c]const ASN1_OCTET_STRING) ?*X509_EXTENSION; +pub extern fn X509_EXTENSION_create_by_OBJ(ex: [*c]?*X509_EXTENSION, obj: ?*const ASN1_OBJECT, crit: c_int, data: [*c]const ASN1_OCTET_STRING) ?*X509_EXTENSION; +pub extern fn X509_EXTENSION_get_object(ex: ?*const X509_EXTENSION) ?*ASN1_OBJECT; +pub extern fn X509_EXTENSION_get_data(ne: ?*const X509_EXTENSION) [*c]ASN1_OCTET_STRING; +pub extern fn X509_EXTENSION_get_critical(ex: ?*const X509_EXTENSION) c_int; +pub extern fn X509_EXTENSION_set_object(ex: ?*X509_EXTENSION, obj: ?*const ASN1_OBJECT) c_int; +pub extern fn X509_EXTENSION_set_critical(ex: ?*X509_EXTENSION, crit: c_int) c_int; +pub extern fn X509_EXTENSION_set_data(ex: ?*X509_EXTENSION, data: [*c]const ASN1_OCTET_STRING) c_int; +pub const sk_X509_EXTENSION_free_func = ?*const fn (?*X509_EXTENSION) callconv(.C) void; +pub const sk_X509_EXTENSION_copy_func = ?*const fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION; +pub const sk_X509_EXTENSION_cmp_func = ?*const fn ([*c]?*const X509_EXTENSION, [*c]?*const X509_EXTENSION) callconv(.C) c_int; +pub fn sk_X509_EXTENSION_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_EXTENSION_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_EXTENSION) callconv(.C) void), free_func)).?(@ptrCast(?*X509_EXTENSION, ptr)); + @as(sk_X509_EXTENSION_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_EXTENSION, @ptrCast(ptr))); } -pub fn sk_X509_EXTENSION_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_EXTENSION_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_EXTENSION_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION), copy_func)).?(@ptrCast(?*X509_EXTENSION, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_EXTENSION_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_EXTENSION, @ptrCast(ptr))))); } -pub fn sk_X509_EXTENSION_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_EXTENSION_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_EXTENSION = @ptrCast(?*const X509_EXTENSION, a.*); - var b_ptr: ?*const X509_EXTENSION = @ptrCast(?*const X509_EXTENSION, b.*); - return @ptrCast(stack_X509_EXTENSION_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_EXTENSION, [*c]?*const X509_EXTENSION) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_EXTENSION = @as(?*const X509_EXTENSION, @ptrCast(a.*)); + var b_ptr: ?*const X509_EXTENSION = @as(?*const X509_EXTENSION, @ptrCast(b.*)); + return @as(sk_X509_EXTENSION_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_EXTENSION_new(arg_comp: stack_X509_EXTENSION_cmp_func) callconv(.C) ?*struct_stack_st_X509_EXTENSION { +pub fn sk_X509_EXTENSION_new(arg_comp: sk_X509_EXTENSION_cmp_func) callconv(.C) ?*struct_stack_st_X509_EXTENSION { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_EXTENSION, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_EXTENSION, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_EXTENSION_new_null() callconv(.C) ?*struct_stack_st_X509_EXTENSION { - return @ptrCast(?*struct_stack_st_X509_EXTENSION, sk_new_null()); + return @as(?*struct_stack_st_X509_EXTENSION, @ptrCast(sk_new_null())); } pub fn sk_X509_EXTENSION_num(arg_sk: ?*const struct_stack_st_X509_EXTENSION) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_EXTENSION_zero(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_EXTENSION_value(arg_sk: ?*const struct_stack_st_X509_EXTENSION, arg_i: usize) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_EXTENSION, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_EXTENSION, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_EXTENSION_set(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_i: usize, arg_p: ?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_EXTENSION, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_EXTENSION, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_EXTENSION_free(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_EXTENSION_pop_free(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_free_func: stack_X509_EXTENSION_free_func) callconv(.C) void { +pub fn sk_X509_EXTENSION_pop_free(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_free_func: sk_X509_EXTENSION_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_EXTENSION_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_EXTENSION_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_EXTENSION_insert(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_p: ?*X509_EXTENSION, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_EXTENSION_delete(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_where: usize) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_EXTENSION, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_EXTENSION, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_EXTENSION_delete_ptr(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_p: ?*const X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_EXTENSION, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_EXTENSION, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_EXTENSION_find(arg_sk: ?*const struct_stack_st_X509_EXTENSION, arg_out_index: [*c]usize, arg_p: ?*const X509_EXTENSION) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_EXTENSION_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_EXTENSION_call_cmp_func); } pub fn sk_X509_EXTENSION_shift(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; - return @ptrCast(?*X509_EXTENSION, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_EXTENSION, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_EXTENSION_push(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_p: ?*X509_EXTENSION) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_EXTENSION_pop(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; - return @ptrCast(?*X509_EXTENSION, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_EXTENSION, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_EXTENSION_dup(arg_sk: ?*const struct_stack_st_X509_EXTENSION) callconv(.C) ?*struct_stack_st_X509_EXTENSION { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_EXTENSION, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_EXTENSION, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_EXTENSION_sort(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_EXTENSION_call_cmp_func); } pub fn sk_X509_EXTENSION_is_sorted(arg_sk: ?*const struct_stack_st_X509_EXTENSION) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_EXTENSION_set_cmp_func(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_comp: stack_X509_EXTENSION_cmp_func) callconv(.C) stack_X509_EXTENSION_cmp_func { +pub fn sk_X509_EXTENSION_set_cmp_func(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_comp: sk_X509_EXTENSION_cmp_func) callconv(.C) sk_X509_EXTENSION_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_EXTENSION_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_EXTENSION, [*c]?*const X509_EXTENSION) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_EXTENSION_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_EXTENSION_deep_copy(arg_sk: ?*const struct_stack_st_X509_EXTENSION, arg_copy_func: ?*const fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION, arg_free_func: ?*const fn (?*X509_EXTENSION) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_EXTENSION { +pub fn sk_X509_EXTENSION_deep_copy(arg_sk: ?*const struct_stack_st_X509_EXTENSION, arg_copy_func: sk_X509_EXTENSION_copy_func, arg_free_func: sk_X509_EXTENSION_free_func) callconv(.C) ?*struct_stack_st_X509_EXTENSION { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_EXTENSION, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_EXTENSION_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_EXTENSION_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_EXTENSION, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_EXTENSION_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_EXTENSION_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const struct_stack_st_X509_ATTRIBUTE = opaque {}; -pub const stack_X509_ATTRIBUTE_free_func = ?*const fn (?*X509_ATTRIBUTE) callconv(.C) void; -pub const stack_X509_ATTRIBUTE_copy_func = ?*const fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE; -pub const stack_X509_ATTRIBUTE_cmp_func = ?*const fn ([*c]?*const X509_ATTRIBUTE, [*c]?*const X509_ATTRIBUTE) callconv(.C) c_int; -pub fn sk_X509_ATTRIBUTE_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const X509_EXTENSIONS = struct_stack_st_X509_EXTENSION; +pub extern const X509_EXTENSIONS_it: ASN1_ITEM; +pub extern fn d2i_X509_EXTENSIONS(out: [*c]?*X509_EXTENSIONS, inp: [*c][*c]const u8, len: c_long) ?*X509_EXTENSIONS; +pub extern fn i2d_X509_EXTENSIONS(alg: ?*const X509_EXTENSIONS, outp: [*c][*c]u8) c_int; +pub extern fn X509v3_get_ext_count(x: ?*const struct_stack_st_X509_EXTENSION) c_int; +pub extern fn X509v3_get_ext_by_NID(x: ?*const struct_stack_st_X509_EXTENSION, nid: c_int, lastpos: c_int) c_int; +pub extern fn X509v3_get_ext_by_OBJ(x: ?*const struct_stack_st_X509_EXTENSION, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; +pub extern fn X509v3_get_ext_by_critical(x: ?*const struct_stack_st_X509_EXTENSION, crit: c_int, lastpos: c_int) c_int; +pub extern fn X509v3_get_ext(x: ?*const struct_stack_st_X509_EXTENSION, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509v3_delete_ext(x: ?*struct_stack_st_X509_EXTENSION, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509v3_add_ext(x: [*c]?*struct_stack_st_X509_EXTENSION, ex: ?*const X509_EXTENSION, loc: c_int) ?*struct_stack_st_X509_EXTENSION; +pub const struct_stack_st_X509_ALGOR = opaque {}; +pub const sk_X509_ALGOR_free_func = ?*const fn ([*c]X509_ALGOR) callconv(.C) void; +pub const sk_X509_ALGOR_copy_func = ?*const fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR; +pub const sk_X509_ALGOR_cmp_func = ?*const fn ([*c][*c]const X509_ALGOR, [*c][*c]const X509_ALGOR) callconv(.C) c_int; +pub fn sk_X509_ALGOR_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_ATTRIBUTE_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_ATTRIBUTE) callconv(.C) void), free_func)).?(@ptrCast(?*X509_ATTRIBUTE, ptr)); + @as(sk_X509_ALGOR_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]X509_ALGOR, @ptrCast(@alignCast(ptr)))); } -pub fn sk_X509_ATTRIBUTE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_ALGOR_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_ATTRIBUTE_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE), copy_func)).?(@ptrCast(?*X509_ATTRIBUTE, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_ALGOR_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]X509_ALGOR, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_X509_ATTRIBUTE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_ALGOR_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_ATTRIBUTE = @ptrCast(?*const X509_ATTRIBUTE, a.*); - var b_ptr: ?*const X509_ATTRIBUTE = @ptrCast(?*const X509_ATTRIBUTE, b.*); - return @ptrCast(stack_X509_ATTRIBUTE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_ATTRIBUTE, [*c]?*const X509_ATTRIBUTE) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const X509_ALGOR = @as([*c]const X509_ALGOR, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const X509_ALGOR = @as([*c]const X509_ALGOR, @ptrCast(@alignCast(b.*))); + return @as(sk_X509_ALGOR_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_ATTRIBUTE_new(arg_comp: stack_X509_ATTRIBUTE_cmp_func) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_new(arg_comp: sk_X509_ALGOR_cmp_func) callconv(.C) ?*struct_stack_st_X509_ALGOR { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_ATTRIBUTE, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_ALGOR, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } -pub fn sk_X509_ATTRIBUTE_new_null() callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { - return @ptrCast(?*struct_stack_st_X509_ATTRIBUTE, sk_new_null()); +pub fn sk_X509_ALGOR_new_null() callconv(.C) ?*struct_stack_st_X509_ALGOR { + return @as(?*struct_stack_st_X509_ALGOR, @ptrCast(sk_new_null())); } -pub fn sk_X509_ATTRIBUTE_num(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) usize { +pub fn sk_X509_ALGOR_num(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ATTRIBUTE_zero(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { +pub fn sk_X509_ALGOR_zero(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ATTRIBUTE_value(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_i: usize) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_value(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_i: usize) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_ATTRIBUTE, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } -pub fn sk_X509_ATTRIBUTE_set(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_i: usize, arg_p: ?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_set(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_i: usize, arg_p: [*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_ATTRIBUTE, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } -pub fn sk_X509_ATTRIBUTE_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { +pub fn sk_X509_ALGOR_free(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ATTRIBUTE_pop_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_free_func: stack_X509_ATTRIBUTE_free_func) callconv(.C) void { +pub fn sk_X509_ALGOR_pop_free(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_free_func: sk_X509_ALGOR_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_ATTRIBUTE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_ALGOR_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } -pub fn sk_X509_ATTRIBUTE_insert(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*X509_ATTRIBUTE, arg_where: usize) callconv(.C) usize { +pub fn sk_X509_ALGOR_insert(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]X509_ALGOR, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } -pub fn sk_X509_ATTRIBUTE_delete(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_where: usize) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_delete(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_where: usize) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_ATTRIBUTE, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } -pub fn sk_X509_ATTRIBUTE_delete_ptr(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*const X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_delete_ptr(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]const X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_ATTRIBUTE, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } -pub fn sk_X509_ATTRIBUTE_find(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_out_index: [*c]usize, arg_p: ?*const X509_ATTRIBUTE) callconv(.C) c_int { +pub fn sk_X509_ALGOR_find(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_out_index: [*c]usize, arg_p: [*c]const X509_ALGOR) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_ATTRIBUTE_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_ALGOR_call_cmp_func); } -pub fn sk_X509_ATTRIBUTE_shift(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_shift(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; - return @ptrCast(?*X509_ATTRIBUTE, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } -pub fn sk_X509_ATTRIBUTE_push(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*X509_ATTRIBUTE) callconv(.C) usize { +pub fn sk_X509_ALGOR_push(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_p: [*c]X509_ALGOR) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } -pub fn sk_X509_ATTRIBUTE_pop(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_pop(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; - return @ptrCast(?*X509_ATTRIBUTE, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as([*c]X509_ALGOR, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } -pub fn sk_X509_ATTRIBUTE_dup(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_dup(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) ?*struct_stack_st_X509_ALGOR { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_ATTRIBUTE, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_ALGOR, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_ATTRIBUTE_sort(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { +pub fn sk_X509_ALGOR_sort(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_ALGOR_call_cmp_func); } -pub fn sk_X509_ATTRIBUTE_is_sorted(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) c_int { +pub fn sk_X509_ALGOR_is_sorted(arg_sk: ?*const struct_stack_st_X509_ALGOR) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_ATTRIBUTE_set_cmp_func(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_comp: stack_X509_ATTRIBUTE_cmp_func) callconv(.C) stack_X509_ATTRIBUTE_cmp_func { +pub fn sk_X509_ALGOR_set_cmp_func(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_comp: sk_X509_ALGOR_cmp_func) callconv(.C) sk_X509_ALGOR_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_ATTRIBUTE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_ATTRIBUTE, [*c]?*const X509_ATTRIBUTE) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_ALGOR_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_ATTRIBUTE_deep_copy(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_copy_func: ?*const fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE, arg_free_func: ?*const fn (?*X509_ATTRIBUTE) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { +pub fn sk_X509_ALGOR_deep_copy(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_copy_func: sk_X509_ALGOR_copy_func, arg_free_func: sk_X509_ALGOR_free_func) callconv(.C) ?*struct_stack_st_X509_ALGOR { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_ATTRIBUTE, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_ATTRIBUTE_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_ATTRIBUTE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_ALGOR, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_ALGOR_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_ALGOR_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const struct_stack_st_DIST_POINT = opaque {}; -pub const stack_X509_free_func = ?*const fn (?*X509) callconv(.C) void; -pub const stack_X509_copy_func = ?*const fn (?*X509) callconv(.C) ?*X509; -pub const stack_X509_cmp_func = ?*const fn ([*c]?*const X509, [*c]?*const X509) callconv(.C) c_int; -pub fn sk_X509_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub extern const X509_ALGOR_it: ASN1_ITEM; +pub extern fn X509_ALGOR_new() [*c]X509_ALGOR; +pub extern fn X509_ALGOR_dup(alg: [*c]const X509_ALGOR) [*c]X509_ALGOR; +pub extern fn X509_ALGOR_free(alg: [*c]X509_ALGOR) void; +pub extern fn d2i_X509_ALGOR(out: [*c][*c]X509_ALGOR, inp: [*c][*c]const u8, len: c_long) [*c]X509_ALGOR; +pub extern fn i2d_X509_ALGOR(alg: [*c]const X509_ALGOR, outp: [*c][*c]u8) c_int; +pub extern fn X509_ALGOR_set0(alg: [*c]X509_ALGOR, obj: ?*ASN1_OBJECT, param_type: c_int, param_value: ?*anyopaque) c_int; +pub extern fn X509_ALGOR_get0(out_obj: [*c]?*const ASN1_OBJECT, out_param_type: [*c]c_int, out_param_value: [*c]?*const anyopaque, alg: [*c]const X509_ALGOR) void; +pub extern fn X509_ALGOR_set_md(alg: [*c]X509_ALGOR, md: ?*const EVP_MD) void; +pub extern fn X509_ALGOR_cmp(a: [*c]const X509_ALGOR, b: [*c]const X509_ALGOR) c_int; +pub extern fn X509_signature_dump(bio: [*c]BIO, sig: [*c]const ASN1_STRING, indent: c_int) c_int; +pub extern fn X509_signature_print(bio: [*c]BIO, alg: [*c]const X509_ALGOR, sig: [*c]const ASN1_STRING) c_int; +pub extern fn X509_pubkey_digest(x509: ?*const X509, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; +pub extern fn X509_digest(x509: ?*const X509, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; +pub extern fn X509_CRL_digest(crl: ?*const X509_CRL, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; +pub extern fn X509_REQ_digest(req: ?*const X509_REQ, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; +pub extern fn X509_NAME_digest(name: ?*const X509_NAME, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; +pub extern fn d2i_X509_bio(bp: [*c]BIO, x509: [*c]?*X509) ?*X509; +pub extern fn d2i_X509_CRL_bio(bp: [*c]BIO, crl: [*c]?*X509_CRL) ?*X509_CRL; +pub extern fn d2i_X509_REQ_bio(bp: [*c]BIO, req: [*c]?*X509_REQ) ?*X509_REQ; +pub extern fn d2i_RSAPrivateKey_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; +pub extern fn d2i_RSAPublicKey_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; +pub extern fn d2i_RSA_PUBKEY_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; +pub extern fn d2i_DSA_PUBKEY_bio(bp: [*c]BIO, dsa: [*c][*c]DSA) [*c]DSA; +pub extern fn d2i_DSAPrivateKey_bio(bp: [*c]BIO, dsa: [*c][*c]DSA) [*c]DSA; +pub extern fn d2i_EC_PUBKEY_bio(bp: [*c]BIO, eckey: [*c]?*EC_KEY) ?*EC_KEY; +pub extern fn d2i_ECPrivateKey_bio(bp: [*c]BIO, eckey: [*c]?*EC_KEY) ?*EC_KEY; +pub extern fn d2i_PKCS8_bio(bp: [*c]BIO, p8: [*c]?*X509_SIG) ?*X509_SIG; +pub extern fn d2i_PKCS8_PRIV_KEY_INFO_bio(bp: [*c]BIO, p8inf: [*c]?*PKCS8_PRIV_KEY_INFO) ?*PKCS8_PRIV_KEY_INFO; +pub extern fn d2i_PUBKEY_bio(bp: [*c]BIO, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; +pub extern fn d2i_DHparams_bio(bp: [*c]BIO, dh: [*c]?*DH) ?*DH; +pub extern fn d2i_PrivateKey_bio(bp: [*c]BIO, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; +pub extern fn i2d_X509_bio(bp: [*c]BIO, x509: ?*X509) c_int; +pub extern fn i2d_X509_CRL_bio(bp: [*c]BIO, crl: ?*X509_CRL) c_int; +pub extern fn i2d_X509_REQ_bio(bp: [*c]BIO, req: ?*X509_REQ) c_int; +pub extern fn i2d_RSAPrivateKey_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; +pub extern fn i2d_RSAPublicKey_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; +pub extern fn i2d_RSA_PUBKEY_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; +pub extern fn i2d_DSA_PUBKEY_bio(bp: [*c]BIO, dsa: [*c]DSA) c_int; +pub extern fn i2d_DSAPrivateKey_bio(bp: [*c]BIO, dsa: [*c]DSA) c_int; +pub extern fn i2d_EC_PUBKEY_bio(bp: [*c]BIO, eckey: ?*EC_KEY) c_int; +pub extern fn i2d_ECPrivateKey_bio(bp: [*c]BIO, eckey: ?*EC_KEY) c_int; +pub extern fn i2d_PKCS8_bio(bp: [*c]BIO, p8: ?*X509_SIG) c_int; +pub extern fn i2d_PKCS8_PRIV_KEY_INFO_bio(bp: [*c]BIO, p8inf: ?*PKCS8_PRIV_KEY_INFO) c_int; +pub extern fn i2d_PrivateKey_bio(bp: [*c]BIO, pkey: [*c]EVP_PKEY) c_int; +pub extern fn i2d_PUBKEY_bio(bp: [*c]BIO, pkey: [*c]EVP_PKEY) c_int; +pub extern fn i2d_DHparams_bio(bp: [*c]BIO, dh: ?*const DH) c_int; +pub extern fn i2d_PKCS8PrivateKeyInfo_bio(bp: [*c]BIO, key: [*c]EVP_PKEY) c_int; +// pub extern fn d2i_X509_fp(fp: [*c]FILE, x509: [*c]?*X509) ?*X509; +// pub extern fn d2i_X509_CRL_fp(fp: [*c]FILE, crl: [*c]?*X509_CRL) ?*X509_CRL; +// pub extern fn d2i_X509_REQ_fp(fp: [*c]FILE, req: [*c]?*X509_REQ) ?*X509_REQ; +// pub extern fn d2i_RSAPrivateKey_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; +// pub extern fn d2i_RSAPublicKey_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; +// pub extern fn d2i_RSA_PUBKEY_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; +// pub extern fn d2i_DSA_PUBKEY_fp(fp: [*c]FILE, dsa: [*c][*c]DSA) [*c]DSA; +// pub extern fn d2i_DSAPrivateKey_fp(fp: [*c]FILE, dsa: [*c][*c]DSA) [*c]DSA; +// pub extern fn d2i_EC_PUBKEY_fp(fp: [*c]FILE, eckey: [*c]?*EC_KEY) ?*EC_KEY; +// pub extern fn d2i_ECPrivateKey_fp(fp: [*c]FILE, eckey: [*c]?*EC_KEY) ?*EC_KEY; +// pub extern fn d2i_PKCS8_fp(fp: [*c]FILE, p8: [*c]?*X509_SIG) ?*X509_SIG; +// pub extern fn d2i_PKCS8_PRIV_KEY_INFO_fp(fp: [*c]FILE, p8inf: [*c]?*PKCS8_PRIV_KEY_INFO) ?*PKCS8_PRIV_KEY_INFO; +// pub extern fn d2i_PrivateKey_fp(fp: [*c]FILE, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; +// pub extern fn d2i_PUBKEY_fp(fp: [*c]FILE, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; +// pub extern fn i2d_X509_fp(fp: [*c]FILE, x509: ?*X509) c_int; +// pub extern fn i2d_X509_CRL_fp(fp: [*c]FILE, crl: ?*X509_CRL) c_int; +// pub extern fn i2d_X509_REQ_fp(fp: [*c]FILE, req: ?*X509_REQ) c_int; +// pub extern fn i2d_RSAPrivateKey_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; +// pub extern fn i2d_RSAPublicKey_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; +// pub extern fn i2d_RSA_PUBKEY_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; +// pub extern fn i2d_DSA_PUBKEY_fp(fp: [*c]FILE, dsa: [*c]DSA) c_int; +// pub extern fn i2d_DSAPrivateKey_fp(fp: [*c]FILE, dsa: [*c]DSA) c_int; +// pub extern fn i2d_EC_PUBKEY_fp(fp: [*c]FILE, eckey: ?*EC_KEY) c_int; +// pub extern fn i2d_ECPrivateKey_fp(fp: [*c]FILE, eckey: ?*EC_KEY) c_int; +// pub extern fn i2d_PKCS8_fp(fp: [*c]FILE, p8: ?*X509_SIG) c_int; +// pub extern fn i2d_PKCS8_PRIV_KEY_INFO_fp(fp: [*c]FILE, p8inf: ?*PKCS8_PRIV_KEY_INFO) c_int; +// pub extern fn i2d_PKCS8PrivateKeyInfo_fp(fp: [*c]FILE, key: [*c]EVP_PKEY) c_int; +// pub extern fn i2d_PrivateKey_fp(fp: [*c]FILE, pkey: [*c]EVP_PKEY) c_int; +// pub extern fn i2d_PUBKEY_fp(fp: [*c]FILE, pkey: [*c]EVP_PKEY) c_int; +pub extern fn X509_NAME_get_text_by_OBJ(name: ?*const X509_NAME, obj: ?*const ASN1_OBJECT, buf: [*c]u8, len: c_int) c_int; +pub extern fn X509_NAME_get_text_by_NID(name: ?*const X509_NAME, nid: c_int, buf: [*c]u8, len: c_int) c_int; +pub const struct_stack_st_X509_ATTRIBUTE = opaque {}; +pub const sk_X509_ATTRIBUTE_free_func = ?*const fn (?*X509_ATTRIBUTE) callconv(.C) void; +pub const sk_X509_ATTRIBUTE_copy_func = ?*const fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE; +pub const sk_X509_ATTRIBUTE_cmp_func = ?*const fn ([*c]?*const X509_ATTRIBUTE, [*c]?*const X509_ATTRIBUTE) callconv(.C) c_int; +pub fn sk_X509_ATTRIBUTE_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509) callconv(.C) void), free_func)).?(@ptrCast(?*X509, ptr)); + @as(sk_X509_ATTRIBUTE_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_ATTRIBUTE, @ptrCast(ptr))); } -pub fn sk_X509_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_ATTRIBUTE_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509) callconv(.C) ?*X509), copy_func)).?(@ptrCast(?*X509, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_ATTRIBUTE_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_ATTRIBUTE, @ptrCast(ptr))))); } -pub fn sk_X509_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_ATTRIBUTE_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509 = @ptrCast(?*const X509, a.*); - var b_ptr: ?*const X509 = @ptrCast(?*const X509, b.*); - return @ptrCast(stack_X509_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509, [*c]?*const X509) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_ATTRIBUTE = @as(?*const X509_ATTRIBUTE, @ptrCast(a.*)); + var b_ptr: ?*const X509_ATTRIBUTE = @as(?*const X509_ATTRIBUTE, @ptrCast(b.*)); + return @as(sk_X509_ATTRIBUTE_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_new(arg_comp: stack_X509_cmp_func) callconv(.C) ?*struct_stack_st_X509 { +pub fn sk_X509_ATTRIBUTE_new(arg_comp: sk_X509_ATTRIBUTE_cmp_func) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_ATTRIBUTE, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } -pub fn sk_X509_new_null() callconv(.C) ?*struct_stack_st_X509 { - return @ptrCast(?*struct_stack_st_X509, sk_new_null()); +pub fn sk_X509_ATTRIBUTE_new_null() callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { + return @as(?*struct_stack_st_X509_ATTRIBUTE, @ptrCast(sk_new_null())); } -pub fn sk_X509_num(arg_sk: ?*const struct_stack_st_X509) callconv(.C) usize { +pub fn sk_X509_ATTRIBUTE_num(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_zero(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { +pub fn sk_X509_ATTRIBUTE_zero(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_value(arg_sk: ?*const struct_stack_st_X509, arg_i: usize) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_value(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_i: usize) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } -pub fn sk_X509_set(arg_sk: ?*struct_stack_st_X509, arg_i: usize, arg_p: ?*X509) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_set(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_i: usize, arg_p: ?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } -pub fn sk_X509_free(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { +pub fn sk_X509_ATTRIBUTE_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_pop_free(arg_sk: ?*struct_stack_st_X509, arg_free_func: stack_X509_free_func) callconv(.C) void { +pub fn sk_X509_ATTRIBUTE_pop_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_free_func: sk_X509_ATTRIBUTE_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_ATTRIBUTE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } -pub fn sk_X509_insert(arg_sk: ?*struct_stack_st_X509, arg_p: ?*X509, arg_where: usize) callconv(.C) usize { +pub fn sk_X509_ATTRIBUTE_insert(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*X509_ATTRIBUTE, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } -pub fn sk_X509_delete(arg_sk: ?*struct_stack_st_X509, arg_where: usize) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_delete(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_where: usize) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } -pub fn sk_X509_delete_ptr(arg_sk: ?*struct_stack_st_X509, arg_p: ?*const X509) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_delete_ptr(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*const X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } -pub fn sk_X509_find(arg_sk: ?*const struct_stack_st_X509, arg_out_index: [*c]usize, arg_p: ?*const X509) callconv(.C) c_int { +pub fn sk_X509_ATTRIBUTE_find(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_out_index: [*c]usize, arg_p: ?*const X509_ATTRIBUTE) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_ATTRIBUTE_call_cmp_func); } -pub fn sk_X509_shift(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_shift(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; - return @ptrCast(?*X509, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_push(arg_sk: ?*struct_stack_st_X509, arg_p: ?*X509) callconv(.C) usize { +pub fn sk_X509_ATTRIBUTE_push(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_p: ?*X509_ATTRIBUTE) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } -pub fn sk_X509_pop(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { +pub fn sk_X509_ATTRIBUTE_pop(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; - return @ptrCast(?*X509, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_ATTRIBUTE, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_dup(arg_sk: ?*const struct_stack_st_X509) callconv(.C) ?*struct_stack_st_X509 { +pub fn sk_X509_ATTRIBUTE_dup(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_ATTRIBUTE, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_sort(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { +pub fn sk_X509_ATTRIBUTE_sort(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_ATTRIBUTE_call_cmp_func); } -pub fn sk_X509_is_sorted(arg_sk: ?*const struct_stack_st_X509) callconv(.C) c_int { +pub fn sk_X509_ATTRIBUTE_is_sorted(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_set_cmp_func(arg_sk: ?*struct_stack_st_X509, arg_comp: stack_X509_cmp_func) callconv(.C) stack_X509_cmp_func { +pub fn sk_X509_ATTRIBUTE_set_cmp_func(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_comp: sk_X509_ATTRIBUTE_cmp_func) callconv(.C) sk_X509_ATTRIBUTE_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509, [*c]?*const X509) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_ATTRIBUTE_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_deep_copy(arg_sk: ?*const struct_stack_st_X509, arg_copy_func: ?*const fn (?*X509) callconv(.C) ?*X509, arg_free_func: ?*const fn (?*X509) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509 { +pub fn sk_X509_ATTRIBUTE_deep_copy(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_copy_func: sk_X509_ATTRIBUTE_copy_func, arg_free_func: sk_X509_ATTRIBUTE_free_func) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_ATTRIBUTE, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_ATTRIBUTE_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_ATTRIBUTE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } +pub const struct_stack_st_DIST_POINT = opaque {}; +pub const struct_stack_st_GENERAL_NAME = opaque {}; pub const struct_stack_st_X509_TRUST = opaque {}; -pub const stack_X509_TRUST_free_func = ?*const fn ([*c]X509_TRUST) callconv(.C) void; -pub const stack_X509_TRUST_copy_func = ?*const fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST; -pub const stack_X509_TRUST_cmp_func = ?*const fn ([*c][*c]const X509_TRUST, [*c][*c]const X509_TRUST) callconv(.C) c_int; -pub fn sk_X509_TRUST_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_TRUST_free_func = ?*const fn ([*c]X509_TRUST) callconv(.C) void; +pub const sk_X509_TRUST_copy_func = ?*const fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST; +pub const sk_X509_TRUST_cmp_func = ?*const fn ([*c][*c]const X509_TRUST, [*c][*c]const X509_TRUST) callconv(.C) c_int; +pub fn sk_X509_TRUST_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_TRUST_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_TRUST) callconv(.C) void), free_func)).?(@ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), ptr))); + @as(sk_X509_TRUST_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]X509_TRUST, @ptrCast(@alignCast(ptr)))); } -pub fn sk_X509_TRUST_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_TRUST_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_TRUST_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST), copy_func)).?(@ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_TRUST_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]X509_TRUST, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_X509_TRUST_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_TRUST_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const X509_TRUST = @ptrCast([*c]const X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), a.*)); - var b_ptr: [*c]const X509_TRUST = @ptrCast([*c]const X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), b.*)); - return @ptrCast(stack_X509_TRUST_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_TRUST, [*c][*c]const X509_TRUST) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const X509_TRUST = @as([*c]const X509_TRUST, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const X509_TRUST = @as([*c]const X509_TRUST, @ptrCast(@alignCast(b.*))); + return @as(sk_X509_TRUST_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_TRUST_new(arg_comp: stack_X509_TRUST_cmp_func) callconv(.C) ?*struct_stack_st_X509_TRUST { +pub fn sk_X509_TRUST_new(arg_comp: sk_X509_TRUST_cmp_func) callconv(.C) ?*struct_stack_st_X509_TRUST { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_TRUST, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_TRUST, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_TRUST_new_null() callconv(.C) ?*struct_stack_st_X509_TRUST { - return @ptrCast(?*struct_stack_st_X509_TRUST, sk_new_null()); + return @as(?*struct_stack_st_X509_TRUST, @ptrCast(sk_new_null())); } pub fn sk_X509_TRUST_num(arg_sk: ?*const struct_stack_st_X509_TRUST) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_TRUST_zero(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_TRUST_value(arg_sk: ?*const struct_stack_st_X509_TRUST, arg_i: usize) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_X509_TRUST_set(arg_sk: ?*struct_stack_st_X509_TRUST, arg_i: usize, arg_p: [*c]X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_X509_TRUST_free(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_TRUST_pop_free(arg_sk: ?*struct_stack_st_X509_TRUST, arg_free_func: stack_X509_TRUST_free_func) callconv(.C) void { +pub fn sk_X509_TRUST_pop_free(arg_sk: ?*struct_stack_st_X509_TRUST, arg_free_func: sk_X509_TRUST_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_TRUST_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_TRUST_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_TRUST_insert(arg_sk: ?*struct_stack_st_X509_TRUST, arg_p: [*c]X509_TRUST, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_TRUST_delete(arg_sk: ?*struct_stack_st_X509_TRUST, arg_where: usize) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_X509_TRUST_delete_ptr(arg_sk: ?*struct_stack_st_X509_TRUST, arg_p: [*c]const X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_X509_TRUST_find(arg_sk: ?*const struct_stack_st_X509_TRUST, arg_out_index: [*c]usize, arg_p: [*c]const X509_TRUST) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_TRUST_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_TRUST_call_cmp_func); } pub fn sk_X509_TRUST_shift(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_X509_TRUST_push(arg_sk: ?*struct_stack_st_X509_TRUST, arg_p: [*c]X509_TRUST) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_TRUST_pop(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; - return @ptrCast([*c]X509_TRUST, @alignCast(@import("std").meta.alignment(X509_TRUST), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]X509_TRUST, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_X509_TRUST_dup(arg_sk: ?*const struct_stack_st_X509_TRUST) callconv(.C) ?*struct_stack_st_X509_TRUST { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_TRUST, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_TRUST, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_TRUST_sort(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_TRUST_call_cmp_func); } pub fn sk_X509_TRUST_is_sorted(arg_sk: ?*const struct_stack_st_X509_TRUST) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_TRUST_set_cmp_func(arg_sk: ?*struct_stack_st_X509_TRUST, arg_comp: stack_X509_TRUST_cmp_func) callconv(.C) stack_X509_TRUST_cmp_func { +pub fn sk_X509_TRUST_set_cmp_func(arg_sk: ?*struct_stack_st_X509_TRUST, arg_comp: sk_X509_TRUST_cmp_func) callconv(.C) sk_X509_TRUST_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_TRUST_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_TRUST, [*c][*c]const X509_TRUST) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_TRUST_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_TRUST_deep_copy(arg_sk: ?*const struct_stack_st_X509_TRUST, arg_copy_func: ?*const fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST, arg_free_func: ?*const fn ([*c]X509_TRUST) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_TRUST { +pub fn sk_X509_TRUST_deep_copy(arg_sk: ?*const struct_stack_st_X509_TRUST, arg_copy_func: sk_X509_TRUST_copy_func, arg_free_func: sk_X509_TRUST_free_func) callconv(.C) ?*struct_stack_st_X509_TRUST { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_TRUST, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_TRUST_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_TRUST_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_TRUST, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_TRUST_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_TRUST_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub const struct_stack_st_X509_REVOKED = opaque {}; -pub const stack_X509_REVOKED_free_func = ?*const fn ([*c]X509_REVOKED) callconv(.C) void; -pub const stack_X509_REVOKED_copy_func = ?*const fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED; -pub const stack_X509_REVOKED_cmp_func = ?*const fn ([*c][*c]const X509_REVOKED, [*c][*c]const X509_REVOKED) callconv(.C) c_int; -pub fn sk_X509_REVOKED_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_REVOKED_free_func = ?*const fn (?*X509_REVOKED) callconv(.C) void; +pub const sk_X509_REVOKED_copy_func = ?*const fn (?*X509_REVOKED) callconv(.C) ?*X509_REVOKED; +pub const sk_X509_REVOKED_cmp_func = ?*const fn ([*c]?*const X509_REVOKED, [*c]?*const X509_REVOKED) callconv(.C) c_int; +pub fn sk_X509_REVOKED_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_REVOKED_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_REVOKED) callconv(.C) void), free_func)).?(@ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), ptr))); + @as(sk_X509_REVOKED_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_REVOKED, @ptrCast(ptr))); } -pub fn sk_X509_REVOKED_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_REVOKED_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_REVOKED_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED), copy_func)).?(@ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_REVOKED_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_REVOKED, @ptrCast(ptr))))); } -pub fn sk_X509_REVOKED_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_REVOKED_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const X509_REVOKED = @ptrCast([*c]const X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), a.*)); - var b_ptr: [*c]const X509_REVOKED = @ptrCast([*c]const X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), b.*)); - return @ptrCast(stack_X509_REVOKED_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_REVOKED, [*c][*c]const X509_REVOKED) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_REVOKED = @as(?*const X509_REVOKED, @ptrCast(a.*)); + var b_ptr: ?*const X509_REVOKED = @as(?*const X509_REVOKED, @ptrCast(b.*)); + return @as(sk_X509_REVOKED_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_REVOKED_new(arg_comp: stack_X509_REVOKED_cmp_func) callconv(.C) ?*struct_stack_st_X509_REVOKED { +pub fn sk_X509_REVOKED_new(arg_comp: sk_X509_REVOKED_cmp_func) callconv(.C) ?*struct_stack_st_X509_REVOKED { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_REVOKED, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_REVOKED, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_REVOKED_new_null() callconv(.C) ?*struct_stack_st_X509_REVOKED { - return @ptrCast(?*struct_stack_st_X509_REVOKED, sk_new_null()); + return @as(?*struct_stack_st_X509_REVOKED, @ptrCast(sk_new_null())); } pub fn sk_X509_REVOKED_num(arg_sk: ?*const struct_stack_st_X509_REVOKED) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_REVOKED_zero(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_REVOKED_value(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_i: usize) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_value(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_i: usize) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as(?*X509_REVOKED, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } -pub fn sk_X509_REVOKED_set(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_i: usize, arg_p: [*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_set(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_i: usize, arg_p: ?*X509_REVOKED) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as(?*X509_REVOKED, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_REVOKED_free(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_REVOKED_pop_free(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_free_func: stack_X509_REVOKED_free_func) callconv(.C) void { +pub fn sk_X509_REVOKED_pop_free(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_free_func: sk_X509_REVOKED_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_REVOKED_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_REVOKED_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } -pub fn sk_X509_REVOKED_insert(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: [*c]X509_REVOKED, arg_where: usize) callconv(.C) usize { +pub fn sk_X509_REVOKED_insert(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: ?*X509_REVOKED, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } -pub fn sk_X509_REVOKED_delete(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_where: usize) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_delete(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_where: usize) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as(?*X509_REVOKED, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } -pub fn sk_X509_REVOKED_delete_ptr(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: [*c]const X509_REVOKED) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_delete_ptr(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: ?*const X509_REVOKED) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as(?*X509_REVOKED, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } -pub fn sk_X509_REVOKED_find(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_out_index: [*c]usize, arg_p: [*c]const X509_REVOKED) callconv(.C) c_int { +pub fn sk_X509_REVOKED_find(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_out_index: [*c]usize, arg_p: ?*const X509_REVOKED) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_REVOKED_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_REVOKED_call_cmp_func); } -pub fn sk_X509_REVOKED_shift(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_shift(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as(?*X509_REVOKED, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } -pub fn sk_X509_REVOKED_push(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: [*c]X509_REVOKED) callconv(.C) usize { +pub fn sk_X509_REVOKED_push(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: ?*X509_REVOKED) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } -pub fn sk_X509_REVOKED_pop(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) [*c]X509_REVOKED { +pub fn sk_X509_REVOKED_pop(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) ?*X509_REVOKED { var sk = arg_sk; - return @ptrCast([*c]X509_REVOKED, @alignCast(@import("std").meta.alignment(X509_REVOKED), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as(?*X509_REVOKED, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_REVOKED_dup(arg_sk: ?*const struct_stack_st_X509_REVOKED) callconv(.C) ?*struct_stack_st_X509_REVOKED { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_REVOKED, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_REVOKED, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_REVOKED_sort(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_REVOKED_call_cmp_func); } pub fn sk_X509_REVOKED_is_sorted(arg_sk: ?*const struct_stack_st_X509_REVOKED) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); -} -pub fn sk_X509_REVOKED_set_cmp_func(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_comp: stack_X509_REVOKED_cmp_func) callconv(.C) stack_X509_REVOKED_cmp_func { - var sk = arg_sk; - var comp = arg_comp; - return @ptrCast(stack_X509_REVOKED_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_REVOKED, [*c][*c]const X509_REVOKED) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); -} -pub fn sk_X509_REVOKED_deep_copy(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_copy_func: ?*const fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED, arg_free_func: ?*const fn ([*c]X509_REVOKED) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_REVOKED { - var sk = arg_sk; - var copy_func = arg_copy_func; - var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_REVOKED, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_REVOKED_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_REVOKED_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); -} -pub const struct_stack_st_GENERAL_NAMES = opaque {}; -pub const stack_X509_CRL_free_func = ?*const fn (?*X509_CRL) callconv(.C) void; -pub const stack_X509_CRL_copy_func = ?*const fn (?*X509_CRL) callconv(.C) ?*X509_CRL; -pub const stack_X509_CRL_cmp_func = ?*const fn ([*c]?*const X509_CRL, [*c]?*const X509_CRL) callconv(.C) c_int; -pub fn sk_X509_CRL_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { - var free_func = arg_free_func; - var ptr = arg_ptr; - @ptrCast(stack_X509_CRL_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_CRL) callconv(.C) void), free_func)).?(@ptrCast(?*X509_CRL, ptr)); -} -pub fn sk_X509_CRL_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { - var copy_func = arg_copy_func; - var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_CRL_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_CRL) callconv(.C) ?*X509_CRL), copy_func)).?(@ptrCast(?*X509_CRL, ptr))); -} -pub fn sk_X509_CRL_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { - var cmp_func = arg_cmp_func; - var a = arg_a; - var b = arg_b; - var a_ptr: ?*const X509_CRL = @ptrCast(?*const X509_CRL, a.*); - var b_ptr: ?*const X509_CRL = @ptrCast(?*const X509_CRL, b.*); - return @ptrCast(stack_X509_CRL_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_CRL, [*c]?*const X509_CRL) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); -} -pub fn sk_X509_CRL_new(arg_comp: stack_X509_CRL_cmp_func) callconv(.C) ?*struct_stack_st_X509_CRL { - var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_CRL, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); -} -pub fn sk_X509_CRL_new_null() callconv(.C) ?*struct_stack_st_X509_CRL { - return @ptrCast(?*struct_stack_st_X509_CRL, sk_new_null()); -} -pub fn sk_X509_CRL_num(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) usize { - var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_CRL_zero(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { - var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); -} -pub fn sk_X509_CRL_value(arg_sk: ?*const struct_stack_st_X509_CRL, arg_i: usize) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - var i = arg_i; - return @ptrCast(?*X509_CRL, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); -} -pub fn sk_X509_CRL_set(arg_sk: ?*struct_stack_st_X509_CRL, arg_i: usize, arg_p: ?*X509_CRL) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - var i = arg_i; - var p = arg_p; - return @ptrCast(?*X509_CRL, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); -} -pub fn sk_X509_CRL_free(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { - var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); -} -pub fn sk_X509_CRL_pop_free(arg_sk: ?*struct_stack_st_X509_CRL, arg_free_func: stack_X509_CRL_free_func) callconv(.C) void { - var sk = arg_sk; - var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_CRL_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); -} -pub fn sk_X509_CRL_insert(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*X509_CRL, arg_where: usize) callconv(.C) usize { - var sk = arg_sk; - var p = arg_p; - var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); -} -pub fn sk_X509_CRL_delete(arg_sk: ?*struct_stack_st_X509_CRL, arg_where: usize) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - var where = arg_where; - return @ptrCast(?*X509_CRL, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); -} -pub fn sk_X509_CRL_delete_ptr(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*const X509_CRL) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - var p = arg_p; - return @ptrCast(?*X509_CRL, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); -} -pub fn sk_X509_CRL_find(arg_sk: ?*const struct_stack_st_X509_CRL, arg_out_index: [*c]usize, arg_p: ?*const X509_CRL) callconv(.C) c_int { - var sk = arg_sk; - var out_index = arg_out_index; - var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_CRL_call_cmp_func); -} -pub fn sk_X509_CRL_shift(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - return @ptrCast(?*X509_CRL, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); -} -pub fn sk_X509_CRL_push(arg_sk: ?*struct_stack_st_X509_CRL, arg_p: ?*X509_CRL) callconv(.C) usize { - var sk = arg_sk; - var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); -} -pub fn sk_X509_CRL_pop(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) ?*X509_CRL { - var sk = arg_sk; - return @ptrCast(?*X509_CRL, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); -} -pub fn sk_X509_CRL_dup(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) ?*struct_stack_st_X509_CRL { - var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_CRL, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); -} -pub fn sk_X509_CRL_sort(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { - var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); -} -pub fn sk_X509_CRL_is_sorted(arg_sk: ?*const struct_stack_st_X509_CRL) callconv(.C) c_int { - var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); -} -pub fn sk_X509_CRL_set_cmp_func(arg_sk: ?*struct_stack_st_X509_CRL, arg_comp: stack_X509_CRL_cmp_func) callconv(.C) stack_X509_CRL_cmp_func { +pub fn sk_X509_REVOKED_set_cmp_func(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_comp: sk_X509_REVOKED_cmp_func) callconv(.C) sk_X509_REVOKED_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_CRL_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_CRL, [*c]?*const X509_CRL) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_REVOKED_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_CRL_deep_copy(arg_sk: ?*const struct_stack_st_X509_CRL, arg_copy_func: ?*const fn (?*X509_CRL) callconv(.C) ?*X509_CRL, arg_free_func: ?*const fn (?*X509_CRL) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_CRL { +pub fn sk_X509_REVOKED_deep_copy(arg_sk: ?*const struct_stack_st_X509_REVOKED, arg_copy_func: sk_X509_REVOKED_copy_func, arg_free_func: sk_X509_REVOKED_free_func) callconv(.C) ?*struct_stack_st_X509_REVOKED { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_CRL, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_CRL_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_CRL_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_REVOKED, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_REVOKED_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_REVOKED_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub const struct_stack_st_X509_INFO = opaque {}; -pub const stack_X509_INFO_free_func = ?*const fn ([*c]X509_INFO) callconv(.C) void; -pub const stack_X509_INFO_copy_func = ?*const fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO; -pub const stack_X509_INFO_cmp_func = ?*const fn ([*c][*c]const X509_INFO, [*c][*c]const X509_INFO) callconv(.C) c_int; -pub fn sk_X509_INFO_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_INFO_free_func = ?*const fn ([*c]X509_INFO) callconv(.C) void; +pub const sk_X509_INFO_copy_func = ?*const fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO; +pub const sk_X509_INFO_cmp_func = ?*const fn ([*c][*c]const X509_INFO, [*c][*c]const X509_INFO) callconv(.C) c_int; +pub fn sk_X509_INFO_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_INFO_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_INFO) callconv(.C) void), free_func)).?(@ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), ptr))); + @as(sk_X509_INFO_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]X509_INFO, @ptrCast(@alignCast(ptr)))); } -pub fn sk_X509_INFO_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_INFO_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_INFO_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO), copy_func)).?(@ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_INFO_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]X509_INFO, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_X509_INFO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_INFO_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const X509_INFO = @ptrCast([*c]const X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), a.*)); - var b_ptr: [*c]const X509_INFO = @ptrCast([*c]const X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), b.*)); - return @ptrCast(stack_X509_INFO_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_INFO, [*c][*c]const X509_INFO) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const X509_INFO = @as([*c]const X509_INFO, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const X509_INFO = @as([*c]const X509_INFO, @ptrCast(@alignCast(b.*))); + return @as(sk_X509_INFO_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_INFO_new(arg_comp: stack_X509_INFO_cmp_func) callconv(.C) ?*struct_stack_st_X509_INFO { +pub fn sk_X509_INFO_new(arg_comp: sk_X509_INFO_cmp_func) callconv(.C) ?*struct_stack_st_X509_INFO { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_INFO, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_INFO, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_INFO_new_null() callconv(.C) ?*struct_stack_st_X509_INFO { - return @ptrCast(?*struct_stack_st_X509_INFO, sk_new_null()); + return @as(?*struct_stack_st_X509_INFO, @ptrCast(sk_new_null())); } pub fn sk_X509_INFO_num(arg_sk: ?*const struct_stack_st_X509_INFO) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_INFO_zero(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_INFO_value(arg_sk: ?*const struct_stack_st_X509_INFO, arg_i: usize) callconv(.C) [*c]X509_INFO { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_X509_INFO_set(arg_sk: ?*struct_stack_st_X509_INFO, arg_i: usize, arg_p: [*c]X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_X509_INFO_free(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_INFO_pop_free(arg_sk: ?*struct_stack_st_X509_INFO, arg_free_func: stack_X509_INFO_free_func) callconv(.C) void { +pub fn sk_X509_INFO_pop_free(arg_sk: ?*struct_stack_st_X509_INFO, arg_free_func: sk_X509_INFO_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_INFO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_INFO_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_INFO_insert(arg_sk: ?*struct_stack_st_X509_INFO, arg_p: [*c]X509_INFO, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_INFO_delete(arg_sk: ?*struct_stack_st_X509_INFO, arg_where: usize) callconv(.C) [*c]X509_INFO { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_X509_INFO_delete_ptr(arg_sk: ?*struct_stack_st_X509_INFO, arg_p: [*c]const X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_X509_INFO_find(arg_sk: ?*const struct_stack_st_X509_INFO, arg_out_index: [*c]usize, arg_p: [*c]const X509_INFO) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_INFO_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_INFO_call_cmp_func); } pub fn sk_X509_INFO_shift(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_X509_INFO_push(arg_sk: ?*struct_stack_st_X509_INFO, arg_p: [*c]X509_INFO) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_INFO_pop(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; - return @ptrCast([*c]X509_INFO, @alignCast(@import("std").meta.alignment(X509_INFO), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]X509_INFO, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_X509_INFO_dup(arg_sk: ?*const struct_stack_st_X509_INFO) callconv(.C) ?*struct_stack_st_X509_INFO { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_INFO, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_INFO, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_INFO_sort(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_INFO_call_cmp_func); } pub fn sk_X509_INFO_is_sorted(arg_sk: ?*const struct_stack_st_X509_INFO) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_INFO_set_cmp_func(arg_sk: ?*struct_stack_st_X509_INFO, arg_comp: stack_X509_INFO_cmp_func) callconv(.C) stack_X509_INFO_cmp_func { +pub fn sk_X509_INFO_set_cmp_func(arg_sk: ?*struct_stack_st_X509_INFO, arg_comp: sk_X509_INFO_cmp_func) callconv(.C) sk_X509_INFO_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_INFO_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const X509_INFO, [*c][*c]const X509_INFO) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_INFO_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_INFO_deep_copy(arg_sk: ?*const struct_stack_st_X509_INFO, arg_copy_func: ?*const fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO, arg_free_func: ?*const fn ([*c]X509_INFO) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_INFO { +pub fn sk_X509_INFO_deep_copy(arg_sk: ?*const struct_stack_st_X509_INFO, arg_copy_func: sk_X509_INFO_copy_func, arg_free_func: sk_X509_INFO_free_func) callconv(.C) ?*struct_stack_st_X509_INFO { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_INFO, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_INFO_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_INFO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_INFO, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_INFO_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_INFO_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub extern fn X509_get_version(x509: ?*const X509) c_long; -pub extern fn X509_set_version(x509: ?*X509, version: c_long) c_int; -pub extern fn X509_get0_serialNumber(x509: ?*const X509) [*c]const ASN1_INTEGER; -pub extern fn X509_set_serialNumber(x509: ?*X509, serial: [*c]const ASN1_INTEGER) c_int; -pub extern fn X509_get0_notBefore(x509: ?*const X509) [*c]const ASN1_TIME; -pub extern fn X509_get0_notAfter(x509: ?*const X509) [*c]const ASN1_TIME; -pub extern fn X509_set1_notBefore(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_set1_notAfter(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_getm_notBefore(x509: ?*X509) [*c]ASN1_TIME; -pub extern fn X509_getm_notAfter(x: ?*X509) [*c]ASN1_TIME; pub extern fn X509_get_notBefore(x509: ?*const X509) [*c]ASN1_TIME; pub extern fn X509_get_notAfter(x509: ?*const X509) [*c]ASN1_TIME; pub extern fn X509_set_notBefore(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; pub extern fn X509_set_notAfter(x509: ?*X509, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_get0_uids(x509: ?*const X509, out_issuer_uid: [*c][*c]const ASN1_BIT_STRING, out_subject_uid: [*c][*c]const ASN1_BIT_STRING) void; pub extern fn X509_get_pathlen(x509: ?*X509) c_long; -pub extern fn X509_REQ_get_version(req: ?*const X509_REQ) c_long; -pub extern fn X509_REQ_get_subject_name(req: ?*const X509_REQ) ?*X509_NAME; -pub extern fn X509_CRL_get_version(crl: ?*const X509_CRL) c_long; -pub extern fn X509_CRL_get0_lastUpdate(crl: ?*const X509_CRL) [*c]const ASN1_TIME; -pub extern fn X509_CRL_get0_nextUpdate(crl: ?*const X509_CRL) [*c]const ASN1_TIME; -pub extern fn X509_CRL_set1_lastUpdate(crl: ?*X509_CRL, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_CRL_set1_nextUpdate(crl: ?*X509_CRL, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_CRL_get_lastUpdate(crl: ?*X509_CRL) [*c]ASN1_TIME; -pub extern fn X509_CRL_get_nextUpdate(crl: ?*X509_CRL) [*c]ASN1_TIME; -pub extern fn X509_CRL_get_issuer(crl: ?*const X509_CRL) ?*X509_NAME; -pub extern fn X509_CRL_get_REVOKED(crl: ?*X509_CRL) ?*struct_stack_st_X509_REVOKED; -pub extern fn X509_CRL_get0_extensions(crl: ?*const X509_CRL) ?*const struct_stack_st_X509_EXTENSION; pub extern fn X509_SIG_get0(sig: ?*const X509_SIG, out_alg: [*c][*c]const X509_ALGOR, out_digest: [*c][*c]const ASN1_OCTET_STRING) void; pub extern fn X509_SIG_getm(sig: ?*X509_SIG, out_alg: [*c][*c]X509_ALGOR, out_digest: [*c][*c]ASN1_OCTET_STRING) void; -pub extern fn X509_CRL_set_default_method(meth: ?*const X509_CRL_METHOD) void; -pub extern fn X509_CRL_METHOD_new(crl_init: ?*const fn (?*X509_CRL) callconv(.C) c_int, crl_free: ?*const fn (?*X509_CRL) callconv(.C) c_int, crl_lookup: ?*const fn (?*X509_CRL, [*c][*c]X509_REVOKED, [*c]ASN1_INTEGER, ?*X509_NAME) callconv(.C) c_int, crl_verify: ?*const fn (?*X509_CRL, [*c]EVP_PKEY) callconv(.C) c_int) ?*X509_CRL_METHOD; -pub extern fn X509_CRL_METHOD_free(m: ?*X509_CRL_METHOD) void; -pub extern fn X509_CRL_set_meth_data(crl: ?*X509_CRL, dat: ?*anyopaque) void; -pub extern fn X509_CRL_get_meth_data(crl: ?*X509_CRL) ?*anyopaque; -pub extern fn X509_get_X509_PUBKEY(x509: ?*const X509) ?*X509_PUBKEY; pub extern fn X509_verify_cert_error_string(err: c_long) [*c]const u8; pub extern fn X509_verify(x509: ?*X509, pkey: [*c]EVP_PKEY) c_int; pub extern fn X509_REQ_verify(req: ?*X509_REQ, pkey: [*c]EVP_PKEY) c_int; @@ -4033,96 +4230,9 @@ pub extern fn NETSCAPE_SPKI_b64_decode(str: [*c]const u8, len: c_int) [*c]NETSCA pub extern fn NETSCAPE_SPKI_b64_encode(spki: [*c]NETSCAPE_SPKI) [*c]u8; pub extern fn NETSCAPE_SPKI_get_pubkey(spki: [*c]NETSCAPE_SPKI) [*c]EVP_PKEY; pub extern fn NETSCAPE_SPKI_set_pubkey(spki: [*c]NETSCAPE_SPKI, pkey: [*c]EVP_PKEY) c_int; -pub extern fn X509_signature_dump(bio: [*c]BIO, sig: [*c]const ASN1_STRING, indent: c_int) c_int; -pub extern fn X509_signature_print(bio: [*c]BIO, alg: [*c]const X509_ALGOR, sig: [*c]const ASN1_STRING) c_int; -pub extern fn X509_sign(x509: ?*X509, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; -pub extern fn X509_sign_ctx(x509: ?*X509, ctx: [*c]EVP_MD_CTX) c_int; -pub extern fn X509_REQ_sign(req: ?*X509_REQ, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; -pub extern fn X509_REQ_sign_ctx(req: ?*X509_REQ, ctx: [*c]EVP_MD_CTX) c_int; -pub extern fn X509_CRL_sign(crl: ?*X509_CRL, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; -pub extern fn X509_CRL_sign_ctx(crl: ?*X509_CRL, ctx: [*c]EVP_MD_CTX) c_int; pub extern fn NETSCAPE_SPKI_sign(spki: [*c]NETSCAPE_SPKI, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) c_int; -pub extern fn X509_pubkey_digest(x509: ?*const X509, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; -pub extern fn X509_digest(x509: ?*const X509, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; -pub extern fn X509_CRL_digest(crl: ?*const X509_CRL, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; -pub extern fn X509_REQ_digest(req: ?*const X509_REQ, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; -pub extern fn X509_NAME_digest(name: ?*const X509_NAME, md: ?*const EVP_MD, out: [*c]u8, out_len: [*c]c_uint) c_int; -pub extern fn X509_parse_from_buffer(buf: ?*CRYPTO_BUFFER) ?*X509; -pub extern fn d2i_X509_fp(fp: [*c]FILE, x509: [*c]?*X509) ?*X509; -pub extern fn i2d_X509_fp(fp: [*c]FILE, x509: ?*X509) c_int; -pub extern fn d2i_X509_CRL_fp(fp: [*c]FILE, crl: [*c]?*X509_CRL) ?*X509_CRL; -pub extern fn i2d_X509_CRL_fp(fp: [*c]FILE, crl: ?*X509_CRL) c_int; -pub extern fn d2i_X509_REQ_fp(fp: [*c]FILE, req: [*c]?*X509_REQ) ?*X509_REQ; -pub extern fn i2d_X509_REQ_fp(fp: [*c]FILE, req: ?*X509_REQ) c_int; -pub extern fn d2i_RSAPrivateKey_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSAPrivateKey_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; -pub extern fn d2i_RSAPublicKey_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSAPublicKey_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; -pub extern fn d2i_RSA_PUBKEY_fp(fp: [*c]FILE, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSA_PUBKEY_fp(fp: [*c]FILE, rsa: ?*RSA) c_int; -pub extern fn d2i_DSA_PUBKEY_fp(fp: [*c]FILE, dsa: [*c][*c]DSA) [*c]DSA; -pub extern fn i2d_DSA_PUBKEY_fp(fp: [*c]FILE, dsa: [*c]DSA) c_int; -pub extern fn d2i_DSAPrivateKey_fp(fp: [*c]FILE, dsa: [*c][*c]DSA) [*c]DSA; -pub extern fn i2d_DSAPrivateKey_fp(fp: [*c]FILE, dsa: [*c]DSA) c_int; -pub extern fn d2i_EC_PUBKEY_fp(fp: [*c]FILE, eckey: [*c]?*EC_KEY) ?*EC_KEY; -pub extern fn i2d_EC_PUBKEY_fp(fp: [*c]FILE, eckey: ?*EC_KEY) c_int; -pub extern fn d2i_ECPrivateKey_fp(fp: [*c]FILE, eckey: [*c]?*EC_KEY) ?*EC_KEY; -pub extern fn i2d_ECPrivateKey_fp(fp: [*c]FILE, eckey: ?*EC_KEY) c_int; -pub extern fn d2i_PKCS8_fp(fp: [*c]FILE, p8: [*c]?*X509_SIG) ?*X509_SIG; -pub extern fn i2d_PKCS8_fp(fp: [*c]FILE, p8: ?*X509_SIG) c_int; -pub extern fn d2i_PKCS8_PRIV_KEY_INFO_fp(fp: [*c]FILE, p8inf: [*c]?*PKCS8_PRIV_KEY_INFO) ?*PKCS8_PRIV_KEY_INFO; -pub extern fn i2d_PKCS8_PRIV_KEY_INFO_fp(fp: [*c]FILE, p8inf: ?*PKCS8_PRIV_KEY_INFO) c_int; -pub extern fn i2d_PKCS8PrivateKeyInfo_fp(fp: [*c]FILE, key: [*c]EVP_PKEY) c_int; -pub extern fn i2d_PrivateKey_fp(fp: [*c]FILE, pkey: [*c]EVP_PKEY) c_int; -pub extern fn d2i_PrivateKey_fp(fp: [*c]FILE, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; -pub extern fn i2d_PUBKEY_fp(fp: [*c]FILE, pkey: [*c]EVP_PKEY) c_int; -pub extern fn d2i_PUBKEY_fp(fp: [*c]FILE, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; -pub extern fn d2i_X509_bio(bp: [*c]BIO, x509: [*c]?*X509) ?*X509; -pub extern fn i2d_X509_bio(bp: [*c]BIO, x509: ?*X509) c_int; -pub extern fn d2i_X509_CRL_bio(bp: [*c]BIO, crl: [*c]?*X509_CRL) ?*X509_CRL; -pub extern fn i2d_X509_CRL_bio(bp: [*c]BIO, crl: ?*X509_CRL) c_int; -pub extern fn d2i_X509_REQ_bio(bp: [*c]BIO, req: [*c]?*X509_REQ) ?*X509_REQ; -pub extern fn i2d_X509_REQ_bio(bp: [*c]BIO, req: ?*X509_REQ) c_int; -pub extern fn d2i_RSAPrivateKey_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSAPrivateKey_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; -pub extern fn d2i_RSAPublicKey_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSAPublicKey_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; -pub extern fn d2i_RSA_PUBKEY_bio(bp: [*c]BIO, rsa: [*c]?*RSA) ?*RSA; -pub extern fn i2d_RSA_PUBKEY_bio(bp: [*c]BIO, rsa: ?*RSA) c_int; -pub extern fn d2i_DSA_PUBKEY_bio(bp: [*c]BIO, dsa: [*c][*c]DSA) [*c]DSA; -pub extern fn i2d_DSA_PUBKEY_bio(bp: [*c]BIO, dsa: [*c]DSA) c_int; -pub extern fn d2i_DSAPrivateKey_bio(bp: [*c]BIO, dsa: [*c][*c]DSA) [*c]DSA; -pub extern fn i2d_DSAPrivateKey_bio(bp: [*c]BIO, dsa: [*c]DSA) c_int; -pub extern fn d2i_EC_PUBKEY_bio(bp: [*c]BIO, eckey: [*c]?*EC_KEY) ?*EC_KEY; -pub extern fn i2d_EC_PUBKEY_bio(bp: [*c]BIO, eckey: ?*EC_KEY) c_int; -pub extern fn d2i_ECPrivateKey_bio(bp: [*c]BIO, eckey: [*c]?*EC_KEY) ?*EC_KEY; -pub extern fn i2d_ECPrivateKey_bio(bp: [*c]BIO, eckey: ?*EC_KEY) c_int; -pub extern fn d2i_PKCS8_bio(bp: [*c]BIO, p8: [*c]?*X509_SIG) ?*X509_SIG; -pub extern fn i2d_PKCS8_bio(bp: [*c]BIO, p8: ?*X509_SIG) c_int; -pub extern fn d2i_PKCS8_PRIV_KEY_INFO_bio(bp: [*c]BIO, p8inf: [*c]?*PKCS8_PRIV_KEY_INFO) ?*PKCS8_PRIV_KEY_INFO; -pub extern fn i2d_PKCS8_PRIV_KEY_INFO_bio(bp: [*c]BIO, p8inf: ?*PKCS8_PRIV_KEY_INFO) c_int; -pub extern fn i2d_PKCS8PrivateKeyInfo_bio(bp: [*c]BIO, key: [*c]EVP_PKEY) c_int; -pub extern fn i2d_PrivateKey_bio(bp: [*c]BIO, pkey: [*c]EVP_PKEY) c_int; -pub extern fn d2i_PrivateKey_bio(bp: [*c]BIO, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; -pub extern fn i2d_PUBKEY_bio(bp: [*c]BIO, pkey: [*c]EVP_PKEY) c_int; -pub extern fn d2i_PUBKEY_bio(bp: [*c]BIO, a: [*c][*c]EVP_PKEY) [*c]EVP_PKEY; -pub extern fn d2i_DHparams_bio(bp: [*c]BIO, dh: [*c][*c]DH) [*c]DH; -pub extern fn i2d_DHparams_bio(bp: [*c]BIO, dh: [*c]const DH) c_int; -pub extern fn X509_dup(x509: ?*X509) ?*X509; -pub extern fn X509_ATTRIBUTE_dup(xa: ?*X509_ATTRIBUTE) ?*X509_ATTRIBUTE; -pub extern fn X509_EXTENSION_dup(ex: ?*X509_EXTENSION) ?*X509_EXTENSION; -pub extern fn X509_CRL_dup(crl: ?*X509_CRL) ?*X509_CRL; -pub extern fn X509_REVOKED_dup(rev: [*c]X509_REVOKED) [*c]X509_REVOKED; -pub extern fn X509_REQ_dup(req: ?*X509_REQ) ?*X509_REQ; -pub extern fn X509_ALGOR_dup(xn: [*c]X509_ALGOR) [*c]X509_ALGOR; -pub extern fn X509_ALGOR_set0(alg: [*c]X509_ALGOR, obj: ?*ASN1_OBJECT, param_type: c_int, param_value: ?*anyopaque) c_int; -pub extern fn X509_ALGOR_get0(out_obj: [*c]?*const ASN1_OBJECT, out_param_type: [*c]c_int, out_param_value: [*c]?*const anyopaque, alg: [*c]const X509_ALGOR) void; -pub extern fn X509_ALGOR_set_md(alg: [*c]X509_ALGOR, md: ?*const EVP_MD) void; -pub extern fn X509_ALGOR_cmp(a: [*c]const X509_ALGOR, b: [*c]const X509_ALGOR) c_int; -pub extern fn X509_NAME_dup(xn: ?*X509_NAME) ?*X509_NAME; -pub extern fn X509_NAME_ENTRY_dup(ne: ?*X509_NAME_ENTRY) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_ENTRY_set(ne: ?*const X509_NAME_ENTRY) c_int; -pub extern fn X509_NAME_get0_der(nm: ?*X509_NAME, pder: [*c][*c]const u8, pderlen: [*c]usize) c_int; +pub extern fn X509_ATTRIBUTE_dup(xa: ?*const X509_ATTRIBUTE) ?*X509_ATTRIBUTE; +pub extern fn X509_REVOKED_dup(rev: ?*const X509_REVOKED) ?*X509_REVOKED; pub extern fn X509_cmp_time(s: [*c]const ASN1_TIME, t: [*c]time_t) c_int; pub extern fn X509_cmp_current_time(s: [*c]const ASN1_TIME) c_int; pub extern fn X509_time_adj(s: [*c]ASN1_TIME, offset_sec: c_long, t: [*c]time_t) [*c]ASN1_TIME; @@ -4130,138 +4240,61 @@ pub extern fn X509_time_adj_ex(s: [*c]ASN1_TIME, offset_day: c_int, offset_sec: pub extern fn X509_gmtime_adj(s: [*c]ASN1_TIME, offset_sec: c_long) [*c]ASN1_TIME; pub extern fn X509_get_default_cert_area() [*c]const u8; pub extern fn X509_get_default_cert_dir() [*c]const u8; -pub extern fn X509_get_default_cert_file() [*c]const u8; +// pub extern fn X509_get_default_cert_file() [*c]const u8; pub extern fn X509_get_default_cert_dir_env() [*c]const u8; -pub extern fn X509_get_default_cert_file_env() [*c]const u8; +// pub extern fn X509_get_default_cert_file_env() [*c]const u8; pub extern fn X509_get_default_private_dir() [*c]const u8; -pub extern fn X509_to_X509_REQ(x: ?*X509, pkey: [*c]EVP_PKEY, md: ?*const EVP_MD) ?*X509_REQ; -pub extern fn d2i_X509_ALGORS(a: [*c]?*X509_ALGORS, in: [*c][*c]const u8, len: c_long) ?*X509_ALGORS; -pub extern fn i2d_X509_ALGORS(a: ?*X509_ALGORS, out: [*c][*c]u8) c_int; -pub extern const X509_ALGORS_it: ASN1_ITEM; pub extern fn X509_PUBKEY_new() ?*X509_PUBKEY; pub extern fn X509_PUBKEY_free(a: ?*X509_PUBKEY) void; pub extern fn d2i_X509_PUBKEY(a: [*c]?*X509_PUBKEY, in: [*c][*c]const u8, len: c_long) ?*X509_PUBKEY; -pub extern fn i2d_X509_PUBKEY(a: ?*X509_PUBKEY, out: [*c][*c]u8) c_int; +pub extern fn i2d_X509_PUBKEY(a: ?*const X509_PUBKEY, out: [*c][*c]u8) c_int; pub extern const X509_PUBKEY_it: ASN1_ITEM; pub extern fn X509_PUBKEY_set(x: [*c]?*X509_PUBKEY, pkey: [*c]EVP_PKEY) c_int; pub extern fn X509_PUBKEY_get(key: ?*X509_PUBKEY) [*c]EVP_PKEY; pub extern fn X509_SIG_new() ?*X509_SIG; pub extern fn X509_SIG_free(a: ?*X509_SIG) void; pub extern fn d2i_X509_SIG(a: [*c]?*X509_SIG, in: [*c][*c]const u8, len: c_long) ?*X509_SIG; -pub extern fn i2d_X509_SIG(a: ?*X509_SIG, out: [*c][*c]u8) c_int; +pub extern fn i2d_X509_SIG(a: ?*const X509_SIG, out: [*c][*c]u8) c_int; pub extern const X509_SIG_it: ASN1_ITEM; -pub extern fn X509_REQ_new() ?*X509_REQ; -pub extern fn X509_REQ_free(a: ?*X509_REQ) void; -pub extern fn d2i_X509_REQ(a: [*c]?*X509_REQ, in: [*c][*c]const u8, len: c_long) ?*X509_REQ; -pub extern fn i2d_X509_REQ(a: ?*X509_REQ, out: [*c][*c]u8) c_int; -pub extern const X509_REQ_it: ASN1_ITEM; pub extern fn X509_ATTRIBUTE_new() ?*X509_ATTRIBUTE; pub extern fn X509_ATTRIBUTE_free(a: ?*X509_ATTRIBUTE) void; pub extern fn d2i_X509_ATTRIBUTE(a: [*c]?*X509_ATTRIBUTE, in: [*c][*c]const u8, len: c_long) ?*X509_ATTRIBUTE; -pub extern fn i2d_X509_ATTRIBUTE(a: ?*X509_ATTRIBUTE, out: [*c][*c]u8) c_int; +pub extern fn i2d_X509_ATTRIBUTE(a: ?*const X509_ATTRIBUTE, out: [*c][*c]u8) c_int; pub extern const X509_ATTRIBUTE_it: ASN1_ITEM; pub extern fn X509_ATTRIBUTE_create(nid: c_int, attrtype: c_int, value: ?*anyopaque) ?*X509_ATTRIBUTE; -pub extern fn X509_EXTENSION_new() ?*X509_EXTENSION; -pub extern fn X509_EXTENSION_free(a: ?*X509_EXTENSION) void; -pub extern fn d2i_X509_EXTENSION(a: [*c]?*X509_EXTENSION, in: [*c][*c]const u8, len: c_long) ?*X509_EXTENSION; -pub extern fn i2d_X509_EXTENSION(a: ?*X509_EXTENSION, out: [*c][*c]u8) c_int; -pub extern const X509_EXTENSION_it: ASN1_ITEM; -pub extern fn d2i_X509_EXTENSIONS(a: [*c]?*X509_EXTENSIONS, in: [*c][*c]const u8, len: c_long) ?*X509_EXTENSIONS; -pub extern fn i2d_X509_EXTENSIONS(a: ?*X509_EXTENSIONS, out: [*c][*c]u8) c_int; -pub extern const X509_EXTENSIONS_it: ASN1_ITEM; -pub extern fn X509_NAME_ENTRY_new() ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_ENTRY_free(a: ?*X509_NAME_ENTRY) void; -pub extern fn d2i_X509_NAME_ENTRY(a: [*c]?*X509_NAME_ENTRY, in: [*c][*c]const u8, len: c_long) ?*X509_NAME_ENTRY; -pub extern fn i2d_X509_NAME_ENTRY(a: ?*X509_NAME_ENTRY, out: [*c][*c]u8) c_int; -pub extern const X509_NAME_ENTRY_it: ASN1_ITEM; -pub extern fn X509_NAME_new() ?*X509_NAME; -pub extern fn X509_NAME_free(a: ?*X509_NAME) void; -pub extern fn d2i_X509_NAME(a: [*c]?*X509_NAME, in: [*c][*c]const u8, len: c_long) ?*X509_NAME; -pub extern fn i2d_X509_NAME(a: ?*X509_NAME, out: [*c][*c]u8) c_int; -pub extern const X509_NAME_it: ASN1_ITEM; -pub extern fn X509_NAME_set(xn: [*c]?*X509_NAME, name: ?*X509_NAME) c_int; -pub extern fn X509_new() ?*X509; -pub extern fn X509_free(a: ?*X509) void; -pub extern fn d2i_X509(a: [*c]?*X509, in: [*c][*c]const u8, len: c_long) ?*X509; -pub extern fn i2d_X509(a: ?*X509, out: [*c][*c]u8) c_int; -pub extern const X509_it: ASN1_ITEM; -pub extern fn X509_CERT_AUX_new() ?*X509_CERT_AUX; -pub extern fn X509_CERT_AUX_free(a: ?*X509_CERT_AUX) void; -pub extern fn d2i_X509_CERT_AUX(a: [*c]?*X509_CERT_AUX, in: [*c][*c]const u8, len: c_long) ?*X509_CERT_AUX; -pub extern fn i2d_X509_CERT_AUX(a: ?*X509_CERT_AUX, out: [*c][*c]u8) c_int; -pub extern const X509_CERT_AUX_it: ASN1_ITEM; -pub extern fn X509_up_ref(x509: ?*X509) c_int; -pub extern fn X509_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn X509_set_ex_data(r: ?*X509, idx: c_int, arg: ?*anyopaque) c_int; -pub extern fn X509_get_ex_data(r: ?*X509, idx: c_int) ?*anyopaque; -pub extern fn i2d_X509_AUX(a: ?*X509, pp: [*c][*c]u8) c_int; -pub extern fn d2i_X509_AUX(a: [*c]?*X509, pp: [*c][*c]const u8, length: c_long) ?*X509; -pub extern fn i2d_re_X509_tbs(x509: ?*X509, outp: [*c][*c]u8) c_int; -pub extern fn i2d_X509_tbs(x509: ?*X509, outp: [*c][*c]u8) c_int; -pub extern fn X509_set1_signature_algo(x509: ?*X509, algo: [*c]const X509_ALGOR) c_int; -pub extern fn X509_set1_signature_value(x509: ?*X509, sig: [*c]const u8, sig_len: usize) c_int; -pub extern fn X509_get0_signature(out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR, x509: ?*const X509) void; -pub extern fn X509_get_signature_nid(x509: ?*const X509) c_int; -pub extern fn X509_alias_set1(x: ?*X509, name: [*c]const u8, len: c_int) c_int; -pub extern fn X509_keyid_set1(x: ?*X509, id: [*c]const u8, len: c_int) c_int; -pub extern fn X509_alias_get0(x: ?*X509, len: [*c]c_int) [*c]u8; -pub extern fn X509_keyid_get0(x: ?*X509, len: [*c]c_int) [*c]u8; -pub extern fn X509_TRUST_set_default(trust: ?*const fn (c_int, ?*X509, c_int) callconv(.C) c_int) ?*const fn (c_int, ?*X509, c_int) callconv(.C) c_int; -pub extern fn X509_TRUST_set(t: [*c]c_int, trust: c_int) c_int; pub extern fn X509_add1_trust_object(x: ?*X509, obj: ?*ASN1_OBJECT) c_int; pub extern fn X509_add1_reject_object(x: ?*X509, obj: ?*ASN1_OBJECT) c_int; pub extern fn X509_trust_clear(x: ?*X509) void; pub extern fn X509_reject_clear(x: ?*X509) void; -pub extern fn X509_REVOKED_new() [*c]X509_REVOKED; -pub extern fn X509_REVOKED_free(a: [*c]X509_REVOKED) void; -pub extern fn d2i_X509_REVOKED(a: [*c][*c]X509_REVOKED, in: [*c][*c]const u8, len: c_long) [*c]X509_REVOKED; -pub extern fn i2d_X509_REVOKED(a: [*c]X509_REVOKED, out: [*c][*c]u8) c_int; +pub extern fn X509_TRUST_set(t: [*c]c_int, trust: c_int) c_int; +pub extern fn X509_REVOKED_new() ?*X509_REVOKED; +pub extern fn X509_REVOKED_free(a: ?*X509_REVOKED) void; +pub extern fn d2i_X509_REVOKED(a: [*c]?*X509_REVOKED, in: [*c][*c]const u8, len: c_long) ?*X509_REVOKED; +pub extern fn i2d_X509_REVOKED(a: ?*const X509_REVOKED, out: [*c][*c]u8) c_int; pub extern const X509_REVOKED_it: ASN1_ITEM; -pub extern fn X509_CRL_new() ?*X509_CRL; -pub extern fn X509_CRL_free(a: ?*X509_CRL) void; -pub extern fn d2i_X509_CRL(a: [*c]?*X509_CRL, in: [*c][*c]const u8, len: c_long) ?*X509_CRL; -pub extern fn i2d_X509_CRL(a: ?*X509_CRL, out: [*c][*c]u8) c_int; -pub extern const X509_CRL_it: ASN1_ITEM; -pub extern fn X509_CRL_add0_revoked(crl: ?*X509_CRL, rev: [*c]X509_REVOKED) c_int; -pub extern fn X509_CRL_get0_by_serial(crl: ?*X509_CRL, ret: [*c][*c]X509_REVOKED, serial: [*c]ASN1_INTEGER) c_int; -pub extern fn X509_CRL_get0_by_cert(crl: ?*X509_CRL, ret: [*c][*c]X509_REVOKED, x: ?*X509) c_int; +pub extern fn X509_CRL_add0_revoked(crl: ?*X509_CRL, rev: ?*X509_REVOKED) c_int; +pub extern fn X509_CRL_get0_by_serial(crl: ?*X509_CRL, ret: [*c]?*X509_REVOKED, serial: [*c]ASN1_INTEGER) c_int; +pub extern fn X509_CRL_get0_by_cert(crl: ?*X509_CRL, ret: [*c]?*X509_REVOKED, x: ?*X509) c_int; pub extern fn X509_PKEY_new() [*c]X509_PKEY; pub extern fn X509_PKEY_free(a: [*c]X509_PKEY) void; pub extern fn NETSCAPE_SPKI_new() [*c]NETSCAPE_SPKI; pub extern fn NETSCAPE_SPKI_free(a: [*c]NETSCAPE_SPKI) void; pub extern fn d2i_NETSCAPE_SPKI(a: [*c][*c]NETSCAPE_SPKI, in: [*c][*c]const u8, len: c_long) [*c]NETSCAPE_SPKI; -pub extern fn i2d_NETSCAPE_SPKI(a: [*c]NETSCAPE_SPKI, out: [*c][*c]u8) c_int; +pub extern fn i2d_NETSCAPE_SPKI(a: [*c]const NETSCAPE_SPKI, out: [*c][*c]u8) c_int; pub extern const NETSCAPE_SPKI_it: ASN1_ITEM; pub extern fn NETSCAPE_SPKAC_new() [*c]NETSCAPE_SPKAC; pub extern fn NETSCAPE_SPKAC_free(a: [*c]NETSCAPE_SPKAC) void; pub extern fn d2i_NETSCAPE_SPKAC(a: [*c][*c]NETSCAPE_SPKAC, in: [*c][*c]const u8, len: c_long) [*c]NETSCAPE_SPKAC; -pub extern fn i2d_NETSCAPE_SPKAC(a: [*c]NETSCAPE_SPKAC, out: [*c][*c]u8) c_int; +pub extern fn i2d_NETSCAPE_SPKAC(a: [*c]const NETSCAPE_SPKAC, out: [*c][*c]u8) c_int; pub extern const NETSCAPE_SPKAC_it: ASN1_ITEM; pub extern fn X509_INFO_new() [*c]X509_INFO; pub extern fn X509_INFO_free(a: [*c]X509_INFO) void; pub extern fn X509_NAME_oneline(a: ?*const X509_NAME, buf: [*c]u8, size: c_int) [*c]u8; -pub extern fn ASN1_digest(i2d: ?i2d_of_void, @"type": ?*const EVP_MD, data: [*c]u8, md: [*c]u8, len: [*c]c_uint) c_int; +pub extern fn ASN1_digest(i2d: ?*const i2d_of_void, @"type": ?*const EVP_MD, data: [*c]u8, md: [*c]u8, len: [*c]c_uint) c_int; pub extern fn ASN1_item_digest(it: ?*const ASN1_ITEM, @"type": ?*const EVP_MD, data: ?*anyopaque, md: [*c]u8, len: [*c]c_uint) c_int; pub extern fn ASN1_item_verify(it: ?*const ASN1_ITEM, algor1: [*c]const X509_ALGOR, signature: [*c]const ASN1_BIT_STRING, data: ?*anyopaque, pkey: [*c]EVP_PKEY) c_int; pub extern fn ASN1_item_sign(it: ?*const ASN1_ITEM, algor1: [*c]X509_ALGOR, algor2: [*c]X509_ALGOR, signature: [*c]ASN1_BIT_STRING, data: ?*anyopaque, pkey: [*c]EVP_PKEY, @"type": ?*const EVP_MD) c_int; pub extern fn ASN1_item_sign_ctx(it: ?*const ASN1_ITEM, algor1: [*c]X509_ALGOR, algor2: [*c]X509_ALGOR, signature: [*c]ASN1_BIT_STRING, asn: ?*anyopaque, ctx: [*c]EVP_MD_CTX) c_int; -pub extern fn X509_get_serialNumber(x509: ?*X509) [*c]ASN1_INTEGER; -pub extern fn X509_set_issuer_name(x509: ?*X509, name: ?*X509_NAME) c_int; -pub extern fn X509_get_issuer_name(x509: ?*const X509) ?*X509_NAME; -pub extern fn X509_set_subject_name(x509: ?*X509, name: ?*X509_NAME) c_int; -pub extern fn X509_get_subject_name(x509: ?*const X509) ?*X509_NAME; -pub extern fn X509_set_pubkey(x509: ?*X509, pkey: [*c]EVP_PKEY) c_int; -pub extern fn X509_get_pubkey(x509: ?*X509) [*c]EVP_PKEY; -pub extern fn X509_get0_pubkey_bitstr(x509: ?*const X509) [*c]ASN1_BIT_STRING; -pub extern fn X509_get0_extensions(x509: ?*const X509) ?*const struct_stack_st_X509_EXTENSION; -pub extern fn X509_get0_tbs_sigalg(x509: ?*const X509) [*c]const X509_ALGOR; -pub extern fn X509_REQ_set_version(req: ?*X509_REQ, version: c_long) c_int; -pub extern fn X509_REQ_set_subject_name(req: ?*X509_REQ, name: ?*X509_NAME) c_int; -pub extern fn X509_REQ_get0_signature(req: ?*const X509_REQ, out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR) void; -pub extern fn X509_REQ_get_signature_nid(req: ?*const X509_REQ) c_int; -pub extern fn i2d_re_X509_REQ_tbs(req: ?*X509_REQ, outp: [*c][*c]u8) c_int; -pub extern fn X509_REQ_set_pubkey(req: ?*X509_REQ, pkey: [*c]EVP_PKEY) c_int; -pub extern fn X509_REQ_get_pubkey(req: ?*X509_REQ) [*c]EVP_PKEY; pub extern fn X509_REQ_extension_nid(nid: c_int) c_int; pub extern fn X509_REQ_get_extensions(req: ?*X509_REQ) ?*struct_stack_st_X509_EXTENSION; pub extern fn X509_REQ_add_extensions_nid(req: ?*X509_REQ, exts: ?*const struct_stack_st_X509_EXTENSION, nid: c_int) c_int; @@ -4275,28 +4308,15 @@ pub extern fn X509_REQ_add1_attr(req: ?*X509_REQ, attr: ?*X509_ATTRIBUTE) c_int; pub extern fn X509_REQ_add1_attr_by_OBJ(req: ?*X509_REQ, obj: ?*const ASN1_OBJECT, attrtype: c_int, data: [*c]const u8, len: c_int) c_int; pub extern fn X509_REQ_add1_attr_by_NID(req: ?*X509_REQ, nid: c_int, attrtype: c_int, data: [*c]const u8, len: c_int) c_int; pub extern fn X509_REQ_add1_attr_by_txt(req: ?*X509_REQ, attrname: [*c]const u8, attrtype: c_int, data: [*c]const u8, len: c_int) c_int; -pub extern fn X509_CRL_set_version(crl: ?*X509_CRL, version: c_long) c_int; -pub extern fn X509_CRL_set_issuer_name(crl: ?*X509_CRL, name: ?*X509_NAME) c_int; pub extern fn X509_CRL_sort(crl: ?*X509_CRL) c_int; -pub extern fn X509_CRL_up_ref(crl: ?*X509_CRL) c_int; -pub extern fn X509_CRL_get0_signature(crl: ?*const X509_CRL, out_sig: [*c][*c]const ASN1_BIT_STRING, out_alg: [*c][*c]const X509_ALGOR) void; -pub extern fn X509_CRL_get_signature_nid(crl: ?*const X509_CRL) c_int; -pub extern fn i2d_re_X509_CRL_tbs(crl: ?*X509_CRL, outp: [*c][*c]u8) c_int; -pub extern fn i2d_X509_CRL_tbs(crl: ?*X509_CRL, outp: [*c][*c]u8) c_int; -pub extern fn X509_CRL_set1_signature_algo(crl: ?*X509_CRL, algo: [*c]const X509_ALGOR) c_int; -pub extern fn X509_CRL_set1_signature_value(crl: ?*X509_CRL, sig: [*c]const u8, sig_len: usize) c_int; -pub extern fn X509_REVOKED_get0_serialNumber(revoked: [*c]const X509_REVOKED) [*c]const ASN1_INTEGER; -pub extern fn X509_REVOKED_set_serialNumber(revoked: [*c]X509_REVOKED, serial: [*c]const ASN1_INTEGER) c_int; -pub extern fn X509_REVOKED_get0_revocationDate(revoked: [*c]const X509_REVOKED) [*c]const ASN1_TIME; -pub extern fn X509_REVOKED_set_revocationDate(revoked: [*c]X509_REVOKED, tm: [*c]const ASN1_TIME) c_int; -pub extern fn X509_REVOKED_get0_extensions(r: [*c]const X509_REVOKED) ?*const struct_stack_st_X509_EXTENSION; +pub extern fn X509_REVOKED_get0_serialNumber(revoked: ?*const X509_REVOKED) [*c]const ASN1_INTEGER; +pub extern fn X509_REVOKED_set_serialNumber(revoked: ?*X509_REVOKED, serial: [*c]const ASN1_INTEGER) c_int; +pub extern fn X509_REVOKED_get0_revocationDate(revoked: ?*const X509_REVOKED) [*c]const ASN1_TIME; +pub extern fn X509_REVOKED_set_revocationDate(revoked: ?*X509_REVOKED, tm: [*c]const ASN1_TIME) c_int; +pub extern fn X509_REVOKED_get0_extensions(r: ?*const X509_REVOKED) ?*const struct_stack_st_X509_EXTENSION; pub extern fn X509_CRL_diff(base: ?*X509_CRL, newer: ?*X509_CRL, skey: [*c]EVP_PKEY, md: ?*const EVP_MD, flags: c_uint) ?*X509_CRL; pub extern fn X509_REQ_check_private_key(x509: ?*X509_REQ, pkey: [*c]EVP_PKEY) c_int; pub extern fn X509_check_private_key(x509: ?*X509, pkey: [*c]const EVP_PKEY) c_int; -pub extern fn X509_chain_check_suiteb(perror_depth: [*c]c_int, x: ?*X509, chain: ?*struct_stack_st_X509, flags: c_ulong) c_int; -pub extern fn X509_CRL_check_suiteb(crl: ?*X509_CRL, pk: [*c]EVP_PKEY, flags: c_ulong) c_int; -pub extern fn X509_chain_up_ref(chain: ?*struct_stack_st_X509) ?*struct_stack_st_X509; -pub extern fn X509_issuer_and_serial_cmp(a: ?*const X509, b: ?*const X509) c_int; pub extern fn X509_issuer_name_cmp(a: ?*const X509, b: ?*const X509) c_int; pub extern fn X509_issuer_name_hash(a: ?*X509) c_ulong; pub extern fn X509_subject_name_cmp(a: ?*const X509, b: ?*const X509) c_int; @@ -4309,80 +4329,31 @@ pub extern fn X509_NAME_hash(x: ?*X509_NAME) c_ulong; pub extern fn X509_NAME_hash_old(x: ?*X509_NAME) c_ulong; pub extern fn X509_CRL_cmp(a: ?*const X509_CRL, b: ?*const X509_CRL) c_int; pub extern fn X509_CRL_match(a: ?*const X509_CRL, b: ?*const X509_CRL) c_int; -pub extern fn X509_print_ex_fp(bp: [*c]FILE, x: ?*X509, nmflag: c_ulong, cflag: c_ulong) c_int; -pub extern fn X509_print_fp(bp: [*c]FILE, x: ?*X509) c_int; -pub extern fn X509_CRL_print_fp(bp: [*c]FILE, x: ?*X509_CRL) c_int; -pub extern fn X509_REQ_print_fp(bp: [*c]FILE, req: ?*X509_REQ) c_int; -pub extern fn X509_NAME_print_ex_fp(fp: [*c]FILE, nm: ?*const X509_NAME, indent: c_int, flags: c_ulong) c_int; +// pub extern fn X509_print_ex_fp(bp: [*c]FILE, x: ?*X509, nmflag: c_ulong, cflag: c_ulong) c_int; +// pub extern fn X509_print_fp(bp: [*c]FILE, x: ?*X509) c_int; +// pub extern fn X509_CRL_print_fp(bp: [*c]FILE, x: ?*X509_CRL) c_int; +// pub extern fn X509_REQ_print_fp(bp: [*c]FILE, req: ?*X509_REQ) c_int; +// pub extern fn X509_NAME_print_ex_fp(fp: [*c]FILE, nm: ?*const X509_NAME, indent: c_int, flags: c_ulong) c_int; pub extern fn X509_NAME_print(bp: [*c]BIO, name: ?*const X509_NAME, obase: c_int) c_int; pub extern fn X509_NAME_print_ex(out: [*c]BIO, nm: ?*const X509_NAME, indent: c_int, flags: c_ulong) c_int; pub extern fn X509_print_ex(bp: [*c]BIO, x: ?*X509, nmflag: c_ulong, cflag: c_ulong) c_int; pub extern fn X509_print(bp: [*c]BIO, x: ?*X509) c_int; -pub extern fn X509_ocspid_print(bp: [*c]BIO, x: ?*X509) c_int; -pub extern fn X509_CERT_AUX_print(bp: [*c]BIO, x: ?*X509_CERT_AUX, indent: c_int) c_int; pub extern fn X509_CRL_print(bp: [*c]BIO, x: ?*X509_CRL) c_int; pub extern fn X509_REQ_print_ex(bp: [*c]BIO, x: ?*X509_REQ, nmflag: c_ulong, cflag: c_ulong) c_int; pub extern fn X509_REQ_print(bp: [*c]BIO, req: ?*X509_REQ) c_int; -pub extern fn X509_NAME_entry_count(name: ?*const X509_NAME) c_int; -pub extern fn X509_NAME_get_text_by_NID(name: ?*const X509_NAME, nid: c_int, buf: [*c]u8, len: c_int) c_int; -pub extern fn X509_NAME_get_text_by_OBJ(name: ?*const X509_NAME, obj: ?*const ASN1_OBJECT, buf: [*c]u8, len: c_int) c_int; -pub extern fn X509_NAME_get_index_by_NID(name: ?*const X509_NAME, nid: c_int, lastpos: c_int) c_int; -pub extern fn X509_NAME_get_index_by_OBJ(name: ?*const X509_NAME, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; -pub extern fn X509_NAME_get_entry(name: ?*const X509_NAME, loc: c_int) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_delete_entry(name: ?*X509_NAME, loc: c_int) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_add_entry(name: ?*X509_NAME, ne: ?*X509_NAME_ENTRY, loc: c_int, set: c_int) c_int; -pub extern fn X509_NAME_add_entry_by_OBJ(name: ?*X509_NAME, obj: ?*ASN1_OBJECT, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; -pub extern fn X509_NAME_add_entry_by_NID(name: ?*X509_NAME, nid: c_int, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; -pub extern fn X509_NAME_ENTRY_create_by_txt(ne: [*c]?*X509_NAME_ENTRY, field: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_ENTRY_create_by_NID(ne: [*c]?*X509_NAME_ENTRY, nid: c_int, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_add_entry_by_txt(name: ?*X509_NAME, field: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int, loc: c_int, set: c_int) c_int; -pub extern fn X509_NAME_ENTRY_create_by_OBJ(ne: [*c]?*X509_NAME_ENTRY, obj: ?*const ASN1_OBJECT, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_NAME_ENTRY; -pub extern fn X509_NAME_ENTRY_set_object(ne: ?*X509_NAME_ENTRY, obj: ?*const ASN1_OBJECT) c_int; -pub extern fn X509_NAME_ENTRY_set_data(ne: ?*X509_NAME_ENTRY, @"type": c_int, bytes: [*c]const u8, len: c_int) c_int; -pub extern fn X509_NAME_ENTRY_get_object(ne: ?*const X509_NAME_ENTRY) ?*ASN1_OBJECT; -pub extern fn X509_NAME_ENTRY_get_data(ne: ?*const X509_NAME_ENTRY) [*c]ASN1_STRING; -pub extern fn X509v3_get_ext_count(x: ?*const struct_stack_st_X509_EXTENSION) c_int; -pub extern fn X509v3_get_ext_by_NID(x: ?*const struct_stack_st_X509_EXTENSION, nid: c_int, lastpos: c_int) c_int; -pub extern fn X509v3_get_ext_by_OBJ(x: ?*const struct_stack_st_X509_EXTENSION, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; -pub extern fn X509v3_get_ext_by_critical(x: ?*const struct_stack_st_X509_EXTENSION, crit: c_int, lastpos: c_int) c_int; -pub extern fn X509v3_get_ext(x: ?*const struct_stack_st_X509_EXTENSION, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509v3_delete_ext(x: ?*struct_stack_st_X509_EXTENSION, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509v3_add_ext(x: [*c]?*struct_stack_st_X509_EXTENSION, ex: ?*X509_EXTENSION, loc: c_int) ?*struct_stack_st_X509_EXTENSION; -pub extern fn X509_get_ext_count(x: ?*const X509) c_int; -pub extern fn X509_get_ext_by_NID(x: ?*const X509, nid: c_int, lastpos: c_int) c_int; -pub extern fn X509_get_ext_by_OBJ(x: ?*const X509, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; -pub extern fn X509_get_ext_by_critical(x: ?*const X509, crit: c_int, lastpos: c_int) c_int; -pub extern fn X509_get_ext(x: ?*const X509, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_delete_ext(x: ?*X509, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_add_ext(x: ?*X509, ex: ?*X509_EXTENSION, loc: c_int) c_int; pub extern fn X509_get_ext_d2i(x509: ?*const X509, nid: c_int, out_critical: [*c]c_int, out_idx: [*c]c_int) ?*anyopaque; pub extern fn X509_add1_ext_i2d(x: ?*X509, nid: c_int, value: ?*anyopaque, crit: c_int, flags: c_ulong) c_int; -pub extern fn X509_CRL_get_ext_count(x: ?*const X509_CRL) c_int; -pub extern fn X509_CRL_get_ext_by_NID(x: ?*const X509_CRL, nid: c_int, lastpos: c_int) c_int; -pub extern fn X509_CRL_get_ext_by_OBJ(x: ?*const X509_CRL, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; -pub extern fn X509_CRL_get_ext_by_critical(x: ?*const X509_CRL, crit: c_int, lastpos: c_int) c_int; -pub extern fn X509_CRL_get_ext(x: ?*const X509_CRL, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_CRL_delete_ext(x: ?*X509_CRL, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_CRL_add_ext(x: ?*X509_CRL, ex: ?*X509_EXTENSION, loc: c_int) c_int; pub extern fn X509_CRL_get_ext_d2i(crl: ?*const X509_CRL, nid: c_int, out_critical: [*c]c_int, out_idx: [*c]c_int) ?*anyopaque; pub extern fn X509_CRL_add1_ext_i2d(x: ?*X509_CRL, nid: c_int, value: ?*anyopaque, crit: c_int, flags: c_ulong) c_int; -pub extern fn X509_REVOKED_get_ext_count(x: [*c]const X509_REVOKED) c_int; -pub extern fn X509_REVOKED_get_ext_by_NID(x: [*c]const X509_REVOKED, nid: c_int, lastpos: c_int) c_int; -pub extern fn X509_REVOKED_get_ext_by_OBJ(x: [*c]const X509_REVOKED, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; -pub extern fn X509_REVOKED_get_ext_by_critical(x: [*c]const X509_REVOKED, crit: c_int, lastpos: c_int) c_int; -pub extern fn X509_REVOKED_get_ext(x: [*c]const X509_REVOKED, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_REVOKED_delete_ext(x: [*c]X509_REVOKED, loc: c_int) ?*X509_EXTENSION; -pub extern fn X509_REVOKED_add_ext(x: [*c]X509_REVOKED, ex: ?*X509_EXTENSION, loc: c_int) c_int; -pub extern fn X509_REVOKED_get_ext_d2i(revoked: [*c]const X509_REVOKED, nid: c_int, out_critical: [*c]c_int, out_idx: [*c]c_int) ?*anyopaque; -pub extern fn X509_REVOKED_add1_ext_i2d(x: [*c]X509_REVOKED, nid: c_int, value: ?*anyopaque, crit: c_int, flags: c_ulong) c_int; -pub extern fn X509_EXTENSION_create_by_NID(ex: [*c]?*X509_EXTENSION, nid: c_int, crit: c_int, data: [*c]const ASN1_OCTET_STRING) ?*X509_EXTENSION; -pub extern fn X509_EXTENSION_create_by_OBJ(ex: [*c]?*X509_EXTENSION, obj: ?*const ASN1_OBJECT, crit: c_int, data: [*c]const ASN1_OCTET_STRING) ?*X509_EXTENSION; -pub extern fn X509_EXTENSION_set_object(ex: ?*X509_EXTENSION, obj: ?*const ASN1_OBJECT) c_int; -pub extern fn X509_EXTENSION_set_critical(ex: ?*X509_EXTENSION, crit: c_int) c_int; -pub extern fn X509_EXTENSION_set_data(ex: ?*X509_EXTENSION, data: [*c]const ASN1_OCTET_STRING) c_int; -pub extern fn X509_EXTENSION_get_object(ex: ?*X509_EXTENSION) ?*ASN1_OBJECT; -pub extern fn X509_EXTENSION_get_data(ne: ?*X509_EXTENSION) [*c]ASN1_OCTET_STRING; -pub extern fn X509_EXTENSION_get_critical(ex: ?*const X509_EXTENSION) c_int; +pub extern fn X509_REVOKED_get_ext_count(x: ?*const X509_REVOKED) c_int; +pub extern fn X509_REVOKED_get_ext_by_NID(x: ?*const X509_REVOKED, nid: c_int, lastpos: c_int) c_int; +pub extern fn X509_REVOKED_get_ext_by_OBJ(x: ?*const X509_REVOKED, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; +pub extern fn X509_REVOKED_get_ext_by_critical(x: ?*const X509_REVOKED, crit: c_int, lastpos: c_int) c_int; +pub extern fn X509_REVOKED_get_ext(x: ?*const X509_REVOKED, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_REVOKED_delete_ext(x: ?*X509_REVOKED, loc: c_int) ?*X509_EXTENSION; +pub extern fn X509_REVOKED_add_ext(x: ?*X509_REVOKED, ex: ?*const X509_EXTENSION, loc: c_int) c_int; +pub extern fn X509_REVOKED_get_ext_d2i(revoked: ?*const X509_REVOKED, nid: c_int, out_critical: [*c]c_int, out_idx: [*c]c_int) ?*anyopaque; +pub extern fn X509_REVOKED_add1_ext_i2d(x: ?*X509_REVOKED, nid: c_int, value: ?*anyopaque, crit: c_int, flags: c_ulong) c_int; pub extern fn X509at_get_attr_count(x: ?*const struct_stack_st_X509_ATTRIBUTE) c_int; pub extern fn X509at_get_attr_by_NID(x: ?*const struct_stack_st_X509_ATTRIBUTE, nid: c_int, lastpos: c_int) c_int; pub extern fn X509at_get_attr_by_OBJ(sk: ?*const struct_stack_st_X509_ATTRIBUTE, obj: ?*const ASN1_OBJECT, lastpos: c_int) c_int; @@ -4392,27 +4363,23 @@ pub extern fn X509at_add1_attr(x: [*c]?*struct_stack_st_X509_ATTRIBUTE, attr: ?* pub extern fn X509at_add1_attr_by_OBJ(x: [*c]?*struct_stack_st_X509_ATTRIBUTE, obj: ?*const ASN1_OBJECT, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*struct_stack_st_X509_ATTRIBUTE; pub extern fn X509at_add1_attr_by_NID(x: [*c]?*struct_stack_st_X509_ATTRIBUTE, nid: c_int, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*struct_stack_st_X509_ATTRIBUTE; pub extern fn X509at_add1_attr_by_txt(x: [*c]?*struct_stack_st_X509_ATTRIBUTE, attrname: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*struct_stack_st_X509_ATTRIBUTE; -pub extern fn X509_ATTRIBUTE_create_by_NID(attr: [*c]?*X509_ATTRIBUTE, nid: c_int, attrtype: c_int, data: ?[*]const u8, len: c_int) ?*X509_ATTRIBUTE; -pub extern fn X509_ATTRIBUTE_create_by_OBJ(attr: [*c]?*X509_ATTRIBUTE, obj: ?*const ASN1_OBJECT, attrtype: c_int, data: ?[*]const u8, len: c_int) ?*X509_ATTRIBUTE; +pub extern fn X509_ATTRIBUTE_create_by_NID(attr: [*c]?*X509_ATTRIBUTE, nid: c_int, attrtype: c_int, data: ?*const anyopaque, len: c_int) ?*X509_ATTRIBUTE; +pub extern fn X509_ATTRIBUTE_create_by_OBJ(attr: [*c]?*X509_ATTRIBUTE, obj: ?*const ASN1_OBJECT, attrtype: c_int, data: ?*const anyopaque, len: c_int) ?*X509_ATTRIBUTE; pub extern fn X509_ATTRIBUTE_create_by_txt(attr: [*c]?*X509_ATTRIBUTE, attrname: [*c]const u8, @"type": c_int, bytes: [*c]const u8, len: c_int) ?*X509_ATTRIBUTE; pub extern fn X509_ATTRIBUTE_set1_object(attr: ?*X509_ATTRIBUTE, obj: ?*const ASN1_OBJECT) c_int; -pub extern fn X509_ATTRIBUTE_set1_data(attr: ?*X509_ATTRIBUTE, attrtype: c_int, data: ?[*]const u8, len: c_int) c_int; +pub extern fn X509_ATTRIBUTE_set1_data(attr: ?*X509_ATTRIBUTE, attrtype: c_int, data: ?*const anyopaque, len: c_int) c_int; pub extern fn X509_ATTRIBUTE_get0_data(attr: ?*X509_ATTRIBUTE, idx: c_int, attrtype: c_int, unused: ?*anyopaque) ?*anyopaque; pub extern fn X509_ATTRIBUTE_count(attr: ?*const X509_ATTRIBUTE) c_int; pub extern fn X509_ATTRIBUTE_get0_object(attr: ?*X509_ATTRIBUTE) ?*ASN1_OBJECT; pub extern fn X509_ATTRIBUTE_get0_type(attr: ?*X509_ATTRIBUTE, idx: c_int) [*c]ASN1_TYPE; pub extern fn X509_verify_cert(ctx: ?*X509_STORE_CTX) c_int; -pub extern fn X509_find_by_issuer_and_serial(sk: ?*struct_stack_st_X509, name: ?*X509_NAME, serial: [*c]ASN1_INTEGER) ?*X509; -pub extern fn X509_find_by_subject(sk: ?*struct_stack_st_X509, name: ?*X509_NAME) ?*X509; pub extern fn PKCS8_PRIV_KEY_INFO_new() ?*PKCS8_PRIV_KEY_INFO; pub extern fn PKCS8_PRIV_KEY_INFO_free(a: ?*PKCS8_PRIV_KEY_INFO) void; pub extern fn d2i_PKCS8_PRIV_KEY_INFO(a: [*c]?*PKCS8_PRIV_KEY_INFO, in: [*c][*c]const u8, len: c_long) ?*PKCS8_PRIV_KEY_INFO; -pub extern fn i2d_PKCS8_PRIV_KEY_INFO(a: ?*PKCS8_PRIV_KEY_INFO, out: [*c][*c]u8) c_int; +pub extern fn i2d_PKCS8_PRIV_KEY_INFO(a: ?*const PKCS8_PRIV_KEY_INFO, out: [*c][*c]u8) c_int; pub extern const PKCS8_PRIV_KEY_INFO_it: ASN1_ITEM; -pub extern fn EVP_PKCS82PKEY(p8: ?*PKCS8_PRIV_KEY_INFO) [*c]EVP_PKEY; -pub extern fn EVP_PKEY2PKCS8(pkey: [*c]EVP_PKEY) ?*PKCS8_PRIV_KEY_INFO; -pub extern fn PKCS8_pkey_set0(priv: ?*PKCS8_PRIV_KEY_INFO, aobj: ?*ASN1_OBJECT, version: c_int, ptype: c_int, pval: ?*anyopaque, penc: [*c]u8, penclen: c_int) c_int; -pub extern fn PKCS8_pkey_get0(ppkalg: [*c]?*ASN1_OBJECT, pk: [*c][*c]const u8, ppklen: [*c]c_int, pa: [*c][*c]X509_ALGOR, p8: ?*PKCS8_PRIV_KEY_INFO) c_int; +pub extern fn EVP_PKCS82PKEY(p8: ?*const PKCS8_PRIV_KEY_INFO) [*c]EVP_PKEY; +pub extern fn EVP_PKEY2PKCS8(pkey: [*c]const EVP_PKEY) ?*PKCS8_PRIV_KEY_INFO; pub extern fn X509_PUBKEY_set0_param(@"pub": ?*X509_PUBKEY, obj: ?*ASN1_OBJECT, param_type: c_int, param_value: ?*anyopaque, key: [*c]u8, key_len: c_int) c_int; pub extern fn X509_PUBKEY_get0_param(out_obj: [*c]?*ASN1_OBJECT, out_key: [*c][*c]const u8, out_key_len: [*c]c_int, out_alg: [*c][*c]X509_ALGOR, @"pub": ?*X509_PUBKEY) c_int; pub extern fn X509_PUBKEY_get0_public_key(@"pub": ?*const X509_PUBKEY) [*c]const ASN1_BIT_STRING; @@ -4428,353 +4395,354 @@ pub extern fn X509_TRUST_get_trust(xp: [*c]const X509_TRUST) c_int; pub extern fn RSA_PSS_PARAMS_new() [*c]RSA_PSS_PARAMS; pub extern fn RSA_PSS_PARAMS_free(a: [*c]RSA_PSS_PARAMS) void; pub extern fn d2i_RSA_PSS_PARAMS(a: [*c][*c]RSA_PSS_PARAMS, in: [*c][*c]const u8, len: c_long) [*c]RSA_PSS_PARAMS; -pub extern fn i2d_RSA_PSS_PARAMS(a: [*c]RSA_PSS_PARAMS, out: [*c][*c]u8) c_int; +pub extern fn i2d_RSA_PSS_PARAMS(a: [*c]const RSA_PSS_PARAMS, out: [*c][*c]u8) c_int; pub extern const RSA_PSS_PARAMS_it: ASN1_ITEM; pub const struct_stack_st_X509_LOOKUP = opaque {}; -pub const stack_X509_LOOKUP_free_func = ?*const fn (?*X509_LOOKUP) callconv(.C) void; -pub const stack_X509_LOOKUP_copy_func = ?*const fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP; -pub const stack_X509_LOOKUP_cmp_func = ?*const fn ([*c]?*const X509_LOOKUP, [*c]?*const X509_LOOKUP) callconv(.C) c_int; -pub fn sk_X509_LOOKUP_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_LOOKUP_free_func = ?*const fn (?*X509_LOOKUP) callconv(.C) void; +pub const sk_X509_LOOKUP_copy_func = ?*const fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP; +pub const sk_X509_LOOKUP_cmp_func = ?*const fn ([*c]?*const X509_LOOKUP, [*c]?*const X509_LOOKUP) callconv(.C) c_int; +pub fn sk_X509_LOOKUP_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_LOOKUP_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_LOOKUP) callconv(.C) void), free_func)).?(@ptrCast(?*X509_LOOKUP, ptr)); + @as(sk_X509_LOOKUP_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_LOOKUP, @ptrCast(ptr))); } -pub fn sk_X509_LOOKUP_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_LOOKUP_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_LOOKUP_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP), copy_func)).?(@ptrCast(?*X509_LOOKUP, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_LOOKUP_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_LOOKUP, @ptrCast(ptr))))); } -pub fn sk_X509_LOOKUP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_LOOKUP_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_LOOKUP = @ptrCast(?*const X509_LOOKUP, a.*); - var b_ptr: ?*const X509_LOOKUP = @ptrCast(?*const X509_LOOKUP, b.*); - return @ptrCast(stack_X509_LOOKUP_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_LOOKUP, [*c]?*const X509_LOOKUP) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_LOOKUP = @as(?*const X509_LOOKUP, @ptrCast(a.*)); + var b_ptr: ?*const X509_LOOKUP = @as(?*const X509_LOOKUP, @ptrCast(b.*)); + return @as(sk_X509_LOOKUP_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_LOOKUP_new(arg_comp: stack_X509_LOOKUP_cmp_func) callconv(.C) ?*struct_stack_st_X509_LOOKUP { +pub fn sk_X509_LOOKUP_new(arg_comp: sk_X509_LOOKUP_cmp_func) callconv(.C) ?*struct_stack_st_X509_LOOKUP { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_LOOKUP, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_LOOKUP, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_LOOKUP_new_null() callconv(.C) ?*struct_stack_st_X509_LOOKUP { - return @ptrCast(?*struct_stack_st_X509_LOOKUP, sk_new_null()); + return @as(?*struct_stack_st_X509_LOOKUP, @ptrCast(sk_new_null())); } pub fn sk_X509_LOOKUP_num(arg_sk: ?*const struct_stack_st_X509_LOOKUP) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_LOOKUP_zero(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_LOOKUP_value(arg_sk: ?*const struct_stack_st_X509_LOOKUP, arg_i: usize) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_LOOKUP, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_LOOKUP, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_LOOKUP_set(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_i: usize, arg_p: ?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_LOOKUP, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_LOOKUP, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_LOOKUP_free(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_LOOKUP_pop_free(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_free_func: stack_X509_LOOKUP_free_func) callconv(.C) void { +pub fn sk_X509_LOOKUP_pop_free(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_free_func: sk_X509_LOOKUP_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_LOOKUP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_LOOKUP_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_LOOKUP_insert(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_p: ?*X509_LOOKUP, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_LOOKUP_delete(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_where: usize) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_LOOKUP, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_LOOKUP, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_LOOKUP_delete_ptr(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_p: ?*const X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_LOOKUP, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_LOOKUP, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_LOOKUP_find(arg_sk: ?*const struct_stack_st_X509_LOOKUP, arg_out_index: [*c]usize, arg_p: ?*const X509_LOOKUP) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_LOOKUP_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_LOOKUP_call_cmp_func); } pub fn sk_X509_LOOKUP_shift(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; - return @ptrCast(?*X509_LOOKUP, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_LOOKUP, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_LOOKUP_push(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_p: ?*X509_LOOKUP) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_LOOKUP_pop(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; - return @ptrCast(?*X509_LOOKUP, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_LOOKUP, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_LOOKUP_dup(arg_sk: ?*const struct_stack_st_X509_LOOKUP) callconv(.C) ?*struct_stack_st_X509_LOOKUP { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_LOOKUP, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_LOOKUP, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_LOOKUP_sort(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_LOOKUP_call_cmp_func); } pub fn sk_X509_LOOKUP_is_sorted(arg_sk: ?*const struct_stack_st_X509_LOOKUP) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_LOOKUP_set_cmp_func(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_comp: stack_X509_LOOKUP_cmp_func) callconv(.C) stack_X509_LOOKUP_cmp_func { +pub fn sk_X509_LOOKUP_set_cmp_func(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_comp: sk_X509_LOOKUP_cmp_func) callconv(.C) sk_X509_LOOKUP_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_LOOKUP_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_LOOKUP, [*c]?*const X509_LOOKUP) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_LOOKUP_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_LOOKUP_deep_copy(arg_sk: ?*const struct_stack_st_X509_LOOKUP, arg_copy_func: ?*const fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP, arg_free_func: ?*const fn (?*X509_LOOKUP) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_LOOKUP { +pub fn sk_X509_LOOKUP_deep_copy(arg_sk: ?*const struct_stack_st_X509_LOOKUP, arg_copy_func: sk_X509_LOOKUP_copy_func, arg_free_func: sk_X509_LOOKUP_free_func) callconv(.C) ?*struct_stack_st_X509_LOOKUP { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_LOOKUP, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_LOOKUP_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_LOOKUP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_LOOKUP, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_LOOKUP_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_LOOKUP_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub const struct_stack_st_X509_OBJECT = opaque {}; -pub const stack_X509_OBJECT_free_func = ?*const fn (?*X509_OBJECT) callconv(.C) void; -pub const stack_X509_OBJECT_copy_func = ?*const fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT; -pub const stack_X509_OBJECT_cmp_func = ?*const fn ([*c]?*const X509_OBJECT, [*c]?*const X509_OBJECT) callconv(.C) c_int; -pub fn sk_X509_OBJECT_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_OBJECT_free_func = ?*const fn (?*X509_OBJECT) callconv(.C) void; +pub const sk_X509_OBJECT_copy_func = ?*const fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT; +pub const sk_X509_OBJECT_cmp_func = ?*const fn ([*c]?*const X509_OBJECT, [*c]?*const X509_OBJECT) callconv(.C) c_int; +pub fn sk_X509_OBJECT_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_OBJECT_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_OBJECT) callconv(.C) void), free_func)).?(@ptrCast(?*X509_OBJECT, ptr)); + @as(sk_X509_OBJECT_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_OBJECT, @ptrCast(ptr))); } -pub fn sk_X509_OBJECT_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_OBJECT_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_OBJECT_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT), copy_func)).?(@ptrCast(?*X509_OBJECT, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_OBJECT_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_OBJECT, @ptrCast(ptr))))); } -pub fn sk_X509_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_OBJECT_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_OBJECT = @ptrCast(?*const X509_OBJECT, a.*); - var b_ptr: ?*const X509_OBJECT = @ptrCast(?*const X509_OBJECT, b.*); - return @ptrCast(stack_X509_OBJECT_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_OBJECT, [*c]?*const X509_OBJECT) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_OBJECT = @as(?*const X509_OBJECT, @ptrCast(a.*)); + var b_ptr: ?*const X509_OBJECT = @as(?*const X509_OBJECT, @ptrCast(b.*)); + return @as(sk_X509_OBJECT_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_OBJECT_new(arg_comp: stack_X509_OBJECT_cmp_func) callconv(.C) ?*struct_stack_st_X509_OBJECT { +pub fn sk_X509_OBJECT_new(arg_comp: sk_X509_OBJECT_cmp_func) callconv(.C) ?*struct_stack_st_X509_OBJECT { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_OBJECT, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_OBJECT, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_OBJECT_new_null() callconv(.C) ?*struct_stack_st_X509_OBJECT { - return @ptrCast(?*struct_stack_st_X509_OBJECT, sk_new_null()); + return @as(?*struct_stack_st_X509_OBJECT, @ptrCast(sk_new_null())); } pub fn sk_X509_OBJECT_num(arg_sk: ?*const struct_stack_st_X509_OBJECT) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_OBJECT_zero(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_OBJECT_value(arg_sk: ?*const struct_stack_st_X509_OBJECT, arg_i: usize) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_OBJECT, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_OBJECT, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_OBJECT_set(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_i: usize, arg_p: ?*X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_OBJECT, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_OBJECT, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_OBJECT_free(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_OBJECT_pop_free(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_free_func: stack_X509_OBJECT_free_func) callconv(.C) void { +pub fn sk_X509_OBJECT_pop_free(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_free_func: sk_X509_OBJECT_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_OBJECT_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_OBJECT_insert(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_p: ?*X509_OBJECT, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_OBJECT_delete(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_where: usize) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_OBJECT, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_OBJECT, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_OBJECT_delete_ptr(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_p: ?*const X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_OBJECT, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_OBJECT, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_OBJECT_find(arg_sk: ?*const struct_stack_st_X509_OBJECT, arg_out_index: [*c]usize, arg_p: ?*const X509_OBJECT) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_OBJECT_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_OBJECT_call_cmp_func); } pub fn sk_X509_OBJECT_shift(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; - return @ptrCast(?*X509_OBJECT, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_OBJECT, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_OBJECT_push(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_p: ?*X509_OBJECT) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_OBJECT_pop(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; - return @ptrCast(?*X509_OBJECT, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_OBJECT, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_OBJECT_dup(arg_sk: ?*const struct_stack_st_X509_OBJECT) callconv(.C) ?*struct_stack_st_X509_OBJECT { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_OBJECT, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_OBJECT, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_OBJECT_sort(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_OBJECT_call_cmp_func); } pub fn sk_X509_OBJECT_is_sorted(arg_sk: ?*const struct_stack_st_X509_OBJECT) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_OBJECT_set_cmp_func(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_comp: stack_X509_OBJECT_cmp_func) callconv(.C) stack_X509_OBJECT_cmp_func { +pub fn sk_X509_OBJECT_set_cmp_func(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_comp: sk_X509_OBJECT_cmp_func) callconv(.C) sk_X509_OBJECT_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_OBJECT_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_OBJECT, [*c]?*const X509_OBJECT) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_OBJECT_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_X509_OBJECT, arg_copy_func: ?*const fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT, arg_free_func: ?*const fn (?*X509_OBJECT) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_OBJECT { +pub fn sk_X509_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_X509_OBJECT, arg_copy_func: sk_X509_OBJECT_copy_func, arg_free_func: sk_X509_OBJECT_free_func) callconv(.C) ?*struct_stack_st_X509_OBJECT { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_OBJECT, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_OBJECT_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_OBJECT, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_OBJECT_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_OBJECT_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub const struct_stack_st_X509_VERIFY_PARAM = opaque {}; -pub const stack_X509_VERIFY_PARAM_free_func = ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) void; -pub const stack_X509_VERIFY_PARAM_copy_func = ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM; -pub const stack_X509_VERIFY_PARAM_cmp_func = ?*const fn ([*c]?*const X509_VERIFY_PARAM, [*c]?*const X509_VERIFY_PARAM) callconv(.C) c_int; -pub fn sk_X509_VERIFY_PARAM_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_X509_VERIFY_PARAM_free_func = ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) void; +pub const sk_X509_VERIFY_PARAM_copy_func = ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM; +pub const sk_X509_VERIFY_PARAM_cmp_func = ?*const fn ([*c]?*const X509_VERIFY_PARAM, [*c]?*const X509_VERIFY_PARAM) callconv(.C) c_int; +pub fn sk_X509_VERIFY_PARAM_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_X509_VERIFY_PARAM_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_VERIFY_PARAM) callconv(.C) void), free_func)).?(@ptrCast(?*X509_VERIFY_PARAM, ptr)); + @as(sk_X509_VERIFY_PARAM_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*X509_VERIFY_PARAM, @ptrCast(ptr))); } -pub fn sk_X509_VERIFY_PARAM_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_X509_VERIFY_PARAM_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_X509_VERIFY_PARAM_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM), copy_func)).?(@ptrCast(?*X509_VERIFY_PARAM, ptr))); + return @as(?*anyopaque, @ptrCast(@as(sk_X509_VERIFY_PARAM_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*X509_VERIFY_PARAM, @ptrCast(ptr))))); } -pub fn sk_X509_VERIFY_PARAM_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_X509_VERIFY_PARAM_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const X509_VERIFY_PARAM = @ptrCast(?*const X509_VERIFY_PARAM, a.*); - var b_ptr: ?*const X509_VERIFY_PARAM = @ptrCast(?*const X509_VERIFY_PARAM, b.*); - return @ptrCast(stack_X509_VERIFY_PARAM_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_VERIFY_PARAM, [*c]?*const X509_VERIFY_PARAM) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const X509_VERIFY_PARAM = @as(?*const X509_VERIFY_PARAM, @ptrCast(a.*)); + var b_ptr: ?*const X509_VERIFY_PARAM = @as(?*const X509_VERIFY_PARAM, @ptrCast(b.*)); + return @as(sk_X509_VERIFY_PARAM_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_X509_VERIFY_PARAM_new(arg_comp: stack_X509_VERIFY_PARAM_cmp_func) callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { +pub fn sk_X509_VERIFY_PARAM_new(arg_comp: sk_X509_VERIFY_PARAM_cmp_func) callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509_VERIFY_PARAM, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_X509_VERIFY_PARAM, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_X509_VERIFY_PARAM_new_null() callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { - return @ptrCast(?*struct_stack_st_X509_VERIFY_PARAM, sk_new_null()); + return @as(?*struct_stack_st_X509_VERIFY_PARAM, @ptrCast(sk_new_null())); } pub fn sk_X509_VERIFY_PARAM_num(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_VERIFY_PARAM_zero(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_X509_VERIFY_PARAM_value(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM, arg_i: usize) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*X509_VERIFY_PARAM, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_X509_VERIFY_PARAM_set(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_i: usize, arg_p: ?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*X509_VERIFY_PARAM, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p))))); } pub fn sk_X509_VERIFY_PARAM_free(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_VERIFY_PARAM_pop_free(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_free_func: stack_X509_VERIFY_PARAM_free_func) callconv(.C) void { +pub fn sk_X509_VERIFY_PARAM_pop_free(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_free_func: sk_X509_VERIFY_PARAM_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_VERIFY_PARAM_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_VERIFY_PARAM_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_X509_VERIFY_PARAM_insert(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_p: ?*X509_VERIFY_PARAM, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_X509_VERIFY_PARAM_delete(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_where: usize) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*X509_VERIFY_PARAM, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_X509_VERIFY_PARAM_delete_ptr(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_p: ?*const X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*X509_VERIFY_PARAM, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_X509_VERIFY_PARAM_find(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM, arg_out_index: [*c]usize, arg_p: ?*const X509_VERIFY_PARAM) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_X509_VERIFY_PARAM_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_X509_VERIFY_PARAM_call_cmp_func); } pub fn sk_X509_VERIFY_PARAM_shift(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; - return @ptrCast(?*X509_VERIFY_PARAM, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_VERIFY_PARAM_push(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_p: ?*X509_VERIFY_PARAM) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_X509_VERIFY_PARAM_pop(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; - return @ptrCast(?*X509_VERIFY_PARAM, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*X509_VERIFY_PARAM, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_VERIFY_PARAM_dup(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM) callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_X509_VERIFY_PARAM, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_X509_VERIFY_PARAM, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_X509_VERIFY_PARAM_sort(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_X509_VERIFY_PARAM_call_cmp_func); } pub fn sk_X509_VERIFY_PARAM_is_sorted(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_X509_VERIFY_PARAM_set_cmp_func(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_comp: stack_X509_VERIFY_PARAM_cmp_func) callconv(.C) stack_X509_VERIFY_PARAM_cmp_func { +pub fn sk_X509_VERIFY_PARAM_set_cmp_func(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg_comp: sk_X509_VERIFY_PARAM_cmp_func) callconv(.C) sk_X509_VERIFY_PARAM_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_X509_VERIFY_PARAM_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const X509_VERIFY_PARAM, [*c]?*const X509_VERIFY_PARAM) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_X509_VERIFY_PARAM_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_X509_VERIFY_PARAM_deep_copy(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM, arg_copy_func: ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM, arg_free_func: ?*const fn (?*X509_VERIFY_PARAM) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { +pub fn sk_X509_VERIFY_PARAM_deep_copy(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM, arg_copy_func: sk_X509_VERIFY_PARAM_copy_func, arg_free_func: sk_X509_VERIFY_PARAM_free_func) callconv(.C) ?*struct_stack_st_X509_VERIFY_PARAM { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_X509_VERIFY_PARAM, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_X509_VERIFY_PARAM_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_X509_VERIFY_PARAM_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_X509_VERIFY_PARAM, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_X509_VERIFY_PARAM_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_X509_VERIFY_PARAM_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } +pub extern fn X509_check_ca(x: ?*X509) c_int; pub const X509_STORE_CTX_verify_cb = ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int; pub const X509_STORE_CTX_verify_fn = ?*const fn (?*X509_STORE_CTX) callconv(.C) c_int; pub const X509_STORE_CTX_get_issuer_fn = ?*const fn ([*c]?*X509, ?*X509_STORE_CTX, ?*X509) callconv(.C) c_int; @@ -4835,33 +4803,28 @@ pub extern fn X509_STORE_CTX_get1_issuer(issuer: [*c]?*X509, ctx: ?*X509_STORE_C pub extern fn X509_STORE_CTX_zero(ctx: ?*X509_STORE_CTX) void; pub extern fn X509_STORE_CTX_free(ctx: ?*X509_STORE_CTX) void; pub extern fn X509_STORE_CTX_init(ctx: ?*X509_STORE_CTX, store: ?*X509_STORE, x509: ?*X509, chain: ?*struct_stack_st_X509) c_int; +pub extern fn X509_STORE_CTX_set0_trusted_stack(ctx: ?*X509_STORE_CTX, sk: ?*struct_stack_st_X509) void; pub extern fn X509_STORE_CTX_trusted_stack(ctx: ?*X509_STORE_CTX, sk: ?*struct_stack_st_X509) void; pub extern fn X509_STORE_CTX_cleanup(ctx: ?*X509_STORE_CTX) void; pub extern fn X509_STORE_CTX_get0_store(ctx: ?*X509_STORE_CTX) ?*X509_STORE; pub extern fn X509_STORE_CTX_get0_cert(ctx: ?*X509_STORE_CTX) ?*X509; pub extern fn X509_STORE_add_lookup(v: ?*X509_STORE, m: ?*X509_LOOKUP_METHOD) ?*X509_LOOKUP; pub extern fn X509_LOOKUP_hash_dir() ?*X509_LOOKUP_METHOD; -pub extern fn X509_LOOKUP_file() ?*X509_LOOKUP_METHOD; +// pub extern fn X509_LOOKUP_file() ?*X509_LOOKUP_METHOD; pub extern fn X509_STORE_add_cert(ctx: ?*X509_STORE, x: ?*X509) c_int; pub extern fn X509_STORE_add_crl(ctx: ?*X509_STORE, x: ?*X509_CRL) c_int; pub extern fn X509_STORE_get_by_subject(vs: ?*X509_STORE_CTX, @"type": c_int, name: ?*X509_NAME, ret: ?*X509_OBJECT) c_int; pub extern fn X509_LOOKUP_ctrl(ctx: ?*X509_LOOKUP, cmd: c_int, argc: [*c]const u8, argl: c_long, ret: [*c][*c]u8) c_int; -pub extern fn X509_load_cert_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn X509_load_crl_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn X509_load_cert_crl_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn X509_load_cert_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn X509_load_crl_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn X509_load_cert_crl_file(ctx: ?*X509_LOOKUP, file: [*c]const u8, @"type": c_int) c_int; pub extern fn X509_LOOKUP_new(method: ?*X509_LOOKUP_METHOD) ?*X509_LOOKUP; pub extern fn X509_LOOKUP_free(ctx: ?*X509_LOOKUP) void; pub extern fn X509_LOOKUP_init(ctx: ?*X509_LOOKUP) c_int; pub extern fn X509_LOOKUP_by_subject(ctx: ?*X509_LOOKUP, @"type": c_int, name: ?*X509_NAME, ret: ?*X509_OBJECT) c_int; -pub extern fn X509_LOOKUP_by_issuer_serial(ctx: ?*X509_LOOKUP, @"type": c_int, name: ?*X509_NAME, serial: [*c]ASN1_INTEGER, ret: ?*X509_OBJECT) c_int; -pub extern fn X509_LOOKUP_by_fingerprint(ctx: ?*X509_LOOKUP, @"type": c_int, bytes: [*c]u8, len: c_int, ret: ?*X509_OBJECT) c_int; -pub extern fn X509_LOOKUP_by_alias(ctx: ?*X509_LOOKUP, @"type": c_int, str: [*c]u8, len: c_int, ret: ?*X509_OBJECT) c_int; pub extern fn X509_LOOKUP_shutdown(ctx: ?*X509_LOOKUP) c_int; -pub extern fn X509_STORE_load_locations(ctx: ?*X509_STORE, file: [*c]const u8, dir: [*c]const u8) c_int; +// pub extern fn X509_STORE_load_locations(ctx: ?*X509_STORE, file: [*c]const u8, dir: [*c]const u8) c_int; pub extern fn X509_STORE_set_default_paths(ctx: ?*X509_STORE) c_int; -pub extern fn X509_STORE_CTX_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn X509_STORE_CTX_set_ex_data(ctx: ?*X509_STORE_CTX, idx: c_int, data: ?*anyopaque) c_int; -pub extern fn X509_STORE_CTX_get_ex_data(ctx: ?*X509_STORE_CTX, idx: c_int) ?*anyopaque; pub extern fn X509_STORE_CTX_get_error(ctx: ?*X509_STORE_CTX) c_int; pub extern fn X509_STORE_CTX_set_error(ctx: ?*X509_STORE_CTX, s: c_int) void; pub extern fn X509_STORE_CTX_get_error_depth(ctx: ?*X509_STORE_CTX) c_int; @@ -4882,8 +4845,6 @@ pub extern fn X509_STORE_CTX_purpose_inherit(ctx: ?*X509_STORE_CTX, def_purpose: pub extern fn X509_STORE_CTX_set_flags(ctx: ?*X509_STORE_CTX, flags: c_ulong) void; pub extern fn X509_STORE_CTX_set_time(ctx: ?*X509_STORE_CTX, flags: c_ulong, t: time_t) void; pub extern fn X509_STORE_CTX_set_verify_cb(ctx: ?*X509_STORE_CTX, verify_cb: ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int) void; -pub extern fn X509_STORE_CTX_get0_policy_tree(ctx: ?*X509_STORE_CTX) ?*X509_POLICY_TREE; -pub extern fn X509_STORE_CTX_get_explicit_policy(ctx: ?*X509_STORE_CTX) c_int; pub extern fn X509_STORE_CTX_get0_param(ctx: ?*X509_STORE_CTX) ?*X509_VERIFY_PARAM; pub extern fn X509_STORE_CTX_set0_param(ctx: ?*X509_STORE_CTX, param: ?*X509_VERIFY_PARAM) void; pub extern fn X509_STORE_CTX_set_default(ctx: ?*X509_STORE_CTX, name: [*c]const u8) c_int; @@ -4900,7 +4861,7 @@ pub extern fn X509_VERIFY_PARAM_set_trust(param: ?*X509_VERIFY_PARAM, trust: c_i pub extern fn X509_VERIFY_PARAM_set_depth(param: ?*X509_VERIFY_PARAM, depth: c_int) void; pub extern fn X509_VERIFY_PARAM_set_time(param: ?*X509_VERIFY_PARAM, t: time_t) void; pub extern fn X509_VERIFY_PARAM_add0_policy(param: ?*X509_VERIFY_PARAM, policy: ?*ASN1_OBJECT) c_int; -pub extern fn X509_VERIFY_PARAM_set1_policies(param: ?*X509_VERIFY_PARAM, policies: ?*struct_stack_st_ASN1_OBJECT) c_int; +pub extern fn X509_VERIFY_PARAM_set1_policies(param: ?*X509_VERIFY_PARAM, policies: ?*const struct_stack_st_ASN1_OBJECT) c_int; pub extern fn X509_VERIFY_PARAM_set1_host(param: ?*X509_VERIFY_PARAM, name: [*c]const u8, namelen: usize) c_int; pub extern fn X509_VERIFY_PARAM_add1_host(param: ?*X509_VERIFY_PARAM, name: [*c]const u8, namelen: usize) c_int; pub extern fn X509_VERIFY_PARAM_set_hostflags(param: ?*X509_VERIFY_PARAM, flags: c_uint) void; @@ -4915,20 +4876,6 @@ pub extern fn X509_VERIFY_PARAM_get_count() c_int; pub extern fn X509_VERIFY_PARAM_get0(id: c_int) ?*const X509_VERIFY_PARAM; pub extern fn X509_VERIFY_PARAM_lookup(name: [*c]const u8) ?*const X509_VERIFY_PARAM; pub extern fn X509_VERIFY_PARAM_table_cleanup() void; -pub extern fn X509_policy_check(ptree: [*c]?*X509_POLICY_TREE, pexplicit_policy: [*c]c_int, certs: ?*struct_stack_st_X509, policy_oids: ?*struct_stack_st_ASN1_OBJECT, flags: c_uint) c_int; -pub extern fn X509_policy_tree_free(tree: ?*X509_POLICY_TREE) void; -pub extern fn X509_policy_tree_level_count(tree: ?*const X509_POLICY_TREE) c_int; -pub extern fn X509_policy_tree_get0_level(tree: ?*const X509_POLICY_TREE, i: c_int) ?*X509_POLICY_LEVEL; -pub const struct_stack_st_X509_POLICY_NODE = opaque {}; -pub extern fn X509_policy_tree_get0_policies(tree: ?*const X509_POLICY_TREE) ?*struct_stack_st_X509_POLICY_NODE; -pub extern fn X509_policy_tree_get0_user_policies(tree: ?*const X509_POLICY_TREE) ?*struct_stack_st_X509_POLICY_NODE; -pub extern fn X509_policy_level_node_count(level: ?*X509_POLICY_LEVEL) c_int; -pub extern fn X509_policy_level_get0_node(level: ?*X509_POLICY_LEVEL, i: c_int) ?*X509_POLICY_NODE; -pub extern fn X509_policy_node_get0_policy(node: ?*const X509_POLICY_NODE) ?*const ASN1_OBJECT; -pub const struct_stack_st_POLICYQUALINFO = opaque {}; -pub extern fn X509_policy_node_get0_qualifiers(node: ?*const X509_POLICY_NODE) ?*struct_stack_st_POLICYQUALINFO; -pub extern fn X509_policy_node_get0_parent(node: ?*const X509_POLICY_NODE) ?*const X509_POLICY_NODE; - pub extern fn OPENSSL_malloc(size: usize) ?*anyopaque; pub extern fn OPENSSL_free(ptr: ?*anyopaque) void; pub extern fn OPENSSL_realloc(ptr: ?*anyopaque, new_size: usize) ?*anyopaque; @@ -4944,17 +4891,23 @@ pub extern fn OPENSSL_strncasecmp(a: [*c]const u8, b: [*c]const u8, n: usize) c_ pub extern fn BIO_snprintf(buf: [*c]u8, n: usize, format: [*c]const u8, ...) c_int; pub extern fn BIO_vsnprintf(buf: [*c]u8, n: usize, format: [*c]const u8, args: va_list) c_int; pub extern fn OPENSSL_strndup(str: [*c]const u8, size: usize) [*c]u8; -pub extern fn OPENSSL_memdup(data: ?[*]const u8, size: usize) ?*anyopaque; +pub extern fn OPENSSL_memdup(data: ?*const anyopaque, size: usize) ?*anyopaque; pub extern fn OPENSSL_strlcpy(dst: [*c]u8, src: [*c]const u8, dst_size: usize) usize; pub extern fn OPENSSL_strlcat(dst: [*c]u8, src: [*c]const u8, dst_size: usize) usize; -pub extern fn CRYPTO_malloc(size: usize, file: [*c]const u8, line: c_int) ?*anyopaque; -pub extern fn CRYPTO_realloc(ptr: ?*anyopaque, new_size: usize, file: [*c]const u8, line: c_int) ?*anyopaque; -pub extern fn CRYPTO_free(ptr: ?*anyopaque, file: [*c]const u8, line: c_int) void; +// pub extern fn CRYPTO_malloc(size: usize, file: [*c]const u8, line: c_int) ?*anyopaque; +// pub extern fn CRYPTO_realloc(ptr: ?*anyopaque, new_size: usize, file: [*c]const u8, line: c_int) ?*anyopaque; +// pub extern fn CRYPTO_free(ptr: ?*anyopaque, file: [*c]const u8, line: c_int) void; pub extern fn OPENSSL_clear_free(ptr: ?*anyopaque, len: usize) void; +pub extern fn CRYPTO_secure_malloc_init(size: usize, min_size: usize) c_int; +pub extern fn CRYPTO_secure_malloc_initialized() c_int; +pub extern fn CRYPTO_secure_used() usize; +pub extern fn OPENSSL_secure_malloc(size: usize) ?*anyopaque; +pub extern fn OPENSSL_secure_clear_free(ptr: ?*anyopaque, len: usize) void; pub extern fn CRYPTO_library_init() void; pub extern fn CRYPTO_is_confidential_build() c_int; pub extern fn CRYPTO_has_asm() c_int; pub extern fn BORINGSSL_self_test() c_int; +pub extern fn BORINGSSL_integrity_test() c_int; pub extern fn CRYPTO_pre_sandbox_init() void; pub extern fn FIPS_mode() c_int; pub const fips_counter_evp_aes_128_gcm: c_int = 0; @@ -4976,118 +4929,122 @@ pub extern fn OPENSSL_load_builtin_modules() void; pub extern fn OPENSSL_init_crypto(opts: u64, settings: ?*const OPENSSL_INIT_SETTINGS) c_int; pub extern fn OPENSSL_cleanup() void; pub extern fn FIPS_mode_set(on: c_int) c_int; -pub const pem_password_cb = *const fn ([*c]u8, c_int, c_int, ?*anyopaque) callconv(.C) c_int; +pub extern fn FIPS_module_name() [*c]const u8; +pub extern fn FIPS_version() u32; +pub extern fn FIPS_query_algorithm_status(algorithm: [*c]const u8) c_int; +pub const pem_password_cb = fn ([*c]u8, c_int, c_int, ?*anyopaque) callconv(.C) c_int; pub extern fn PEM_get_EVP_CIPHER_INFO(header: [*c]u8, cipher: [*c]EVP_CIPHER_INFO) c_int; -pub extern fn PEM_do_header(cipher: [*c]EVP_CIPHER_INFO, data: [*c]u8, len: [*c]c_long, callback: ?pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_do_header(cipher: [*c]EVP_CIPHER_INFO, data: [*c]u8, len: [*c]c_long, callback: ?*const pem_password_cb, u: ?*anyopaque) c_int; pub extern fn PEM_read_bio(bp: [*c]BIO, name: [*c][*c]u8, header: [*c][*c]u8, data: [*c][*c]u8, len: [*c]c_long) c_int; pub extern fn PEM_write_bio(bp: [*c]BIO, name: [*c]const u8, hdr: [*c]const u8, data: [*c]const u8, len: c_long) c_int; -pub extern fn PEM_bytes_read_bio(pdata: [*c][*c]u8, plen: [*c]c_long, pnm: [*c][*c]u8, name: [*c]const u8, bp: [*c]BIO, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_ASN1_read_bio(d2i: ?d2i_of_void, name: [*c]const u8, bp: [*c]BIO, x: [*c]?*anyopaque, cb: ?pem_password_cb, u: ?*anyopaque) ?*anyopaque; -pub extern fn PEM_ASN1_write_bio(i2d: ?i2d_of_void, name: [*c]const u8, bp: [*c]BIO, x: ?*anyopaque, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_X509_INFO_read_bio(bp: [*c]BIO, sk: ?*struct_stack_st_X509_INFO, cb: ?pem_password_cb, u: ?*anyopaque) ?*struct_stack_st_X509_INFO; -pub extern fn PEM_X509_INFO_write_bio(bp: [*c]BIO, xi: [*c]X509_INFO, enc: [*c]EVP_CIPHER, kstr: [*c]u8, klen: c_int, cd: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_read(fp: [*c]FILE, name: [*c][*c]u8, header: [*c][*c]u8, data: [*c][*c]u8, len: [*c]c_long) c_int; -pub extern fn PEM_write(fp: [*c]FILE, name: [*c]const u8, hdr: [*c]const u8, data: [*c]const u8, len: c_long) c_int; -pub extern fn PEM_ASN1_read(d2i: ?d2i_of_void, name: [*c]const u8, fp: [*c]FILE, x: [*c]?*anyopaque, cb: ?pem_password_cb, u: ?*anyopaque) ?*anyopaque; -pub extern fn PEM_ASN1_write(i2d: ?i2d_of_void, name: [*c]const u8, fp: [*c]FILE, x: ?*anyopaque, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, callback: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_X509_INFO_read(fp: [*c]FILE, sk: ?*struct_stack_st_X509_INFO, cb: ?pem_password_cb, u: ?*anyopaque) ?*struct_stack_st_X509_INFO; +pub extern fn PEM_bytes_read_bio(pdata: [*c][*c]u8, plen: [*c]c_long, pnm: [*c][*c]u8, name: [*c]const u8, bp: [*c]BIO, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_ASN1_read_bio(d2i: ?*const d2i_of_void, name: [*c]const u8, bp: [*c]BIO, x: [*c]?*anyopaque, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*anyopaque; +pub extern fn PEM_ASN1_write_bio(i2d: ?*const i2d_of_void, name: [*c]const u8, bp: [*c]BIO, x: ?*anyopaque, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_X509_INFO_read_bio(bp: [*c]BIO, sk: ?*struct_stack_st_X509_INFO, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*struct_stack_st_X509_INFO; +// pub extern fn PEM_read(fp: [*c]FILE, name: [*c][*c]u8, header: [*c][*c]u8, data: [*c][*c]u8, len: [*c]c_long) c_int; +// pub extern fn PEM_write(fp: [*c]FILE, name: [*c]const u8, hdr: [*c]const u8, data: [*c]const u8, len: c_long) c_int; +// pub extern fn PEM_ASN1_read(d2i: ?*const d2i_of_void, name: [*c]const u8, fp: [*c]FILE, x: [*c]?*anyopaque, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*anyopaque; +// pub extern fn PEM_ASN1_write(i2d: ?*const i2d_of_void, name: [*c]const u8, fp: [*c]FILE, x: ?*anyopaque, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, callback: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_X509_INFO_read(fp: [*c]FILE, sk: ?*struct_stack_st_X509_INFO, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*struct_stack_st_X509_INFO; pub extern fn PEM_def_callback(buf: [*c]u8, size: c_int, rwflag: c_int, userdata: ?*anyopaque) c_int; pub extern fn PEM_proc_type(buf: [*c]u8, @"type": c_int) void; pub extern fn PEM_dek_info(buf: [*c]u8, @"type": [*c]const u8, len: c_int, str: [*c]u8) void; -pub extern fn PEM_read_bio_X509(bp: [*c]BIO, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509; -pub extern fn PEM_read_X509(fp: [*c]FILE, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509; +pub extern fn PEM_read_bio_X509(bp: [*c]BIO, x: [*c]?*X509, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509; +// pub extern fn PEM_read_X509(fp: [*c]FILE, x: [*c]?*X509, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509; pub extern fn PEM_write_bio_X509(bp: [*c]BIO, x: ?*X509) c_int; -pub extern fn PEM_write_X509(fp: [*c]FILE, x: ?*X509) c_int; -pub extern fn PEM_read_bio_X509_AUX(bp: [*c]BIO, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509; -pub extern fn PEM_read_X509_AUX(fp: [*c]FILE, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509; +// pub extern fn PEM_write_X509(fp: [*c]FILE, x: ?*X509) c_int; +pub extern fn PEM_read_bio_X509_AUX(bp: [*c]BIO, x: [*c]?*X509, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509; +// pub extern fn PEM_read_X509_AUX(fp: [*c]FILE, x: [*c]?*X509, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509; pub extern fn PEM_write_bio_X509_AUX(bp: [*c]BIO, x: ?*X509) c_int; -pub extern fn PEM_write_X509_AUX(fp: [*c]FILE, x: ?*X509) c_int; -pub extern fn PEM_read_bio_X509_REQ(bp: [*c]BIO, x: [*c]?*X509_REQ, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_REQ; -pub extern fn PEM_read_X509_REQ(fp: [*c]FILE, x: [*c]?*X509_REQ, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_REQ; +// pub extern fn PEM_write_X509_AUX(fp: [*c]FILE, x: ?*X509) c_int; +pub extern fn PEM_read_bio_X509_REQ(bp: [*c]BIO, x: [*c]?*X509_REQ, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_REQ; +// pub extern fn PEM_read_X509_REQ(fp: [*c]FILE, x: [*c]?*X509_REQ, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_REQ; pub extern fn PEM_write_bio_X509_REQ(bp: [*c]BIO, x: ?*X509_REQ) c_int; -pub extern fn PEM_write_X509_REQ(fp: [*c]FILE, x: ?*X509_REQ) c_int; +// pub extern fn PEM_write_X509_REQ(fp: [*c]FILE, x: ?*X509_REQ) c_int; pub extern fn PEM_write_bio_X509_REQ_NEW(bp: [*c]BIO, x: ?*X509_REQ) c_int; -pub extern fn PEM_write_X509_REQ_NEW(fp: [*c]FILE, x: ?*X509_REQ) c_int; -pub extern fn PEM_read_bio_X509_CRL(bp: [*c]BIO, x: [*c]?*X509_CRL, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_CRL; -pub extern fn PEM_read_X509_CRL(fp: [*c]FILE, x: [*c]?*X509_CRL, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_CRL; +// pub extern fn PEM_write_X509_REQ_NEW(fp: [*c]FILE, x: ?*X509_REQ) c_int; +pub extern fn PEM_read_bio_X509_CRL(bp: [*c]BIO, x: [*c]?*X509_CRL, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_CRL; +// pub extern fn PEM_read_X509_CRL(fp: [*c]FILE, x: [*c]?*X509_CRL, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_CRL; pub extern fn PEM_write_bio_X509_CRL(bp: [*c]BIO, x: ?*X509_CRL) c_int; -pub extern fn PEM_write_X509_CRL(fp: [*c]FILE, x: ?*X509_CRL) c_int; -pub extern fn PEM_read_bio_PKCS7(bp: [*c]BIO, x: [*c][*c]PKCS7, cb: ?pem_password_cb, u: ?*anyopaque) [*c]PKCS7; -pub extern fn PEM_read_PKCS7(fp: [*c]FILE, x: [*c][*c]PKCS7, cb: ?pem_password_cb, u: ?*anyopaque) [*c]PKCS7; +// pub extern fn PEM_write_X509_CRL(fp: [*c]FILE, x: ?*X509_CRL) c_int; +pub extern fn PEM_read_bio_PKCS7(bp: [*c]BIO, x: [*c][*c]PKCS7, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]PKCS7; +// pub extern fn PEM_read_PKCS7(fp: [*c]FILE, x: [*c][*c]PKCS7, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]PKCS7; pub extern fn PEM_write_bio_PKCS7(bp: [*c]BIO, x: [*c]PKCS7) c_int; -pub extern fn PEM_write_PKCS7(fp: [*c]FILE, x: [*c]PKCS7) c_int; -pub extern fn PEM_read_bio_PKCS8(bp: [*c]BIO, x: [*c]?*X509_SIG, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_SIG; -pub extern fn PEM_read_PKCS8(fp: [*c]FILE, x: [*c]?*X509_SIG, cb: ?pem_password_cb, u: ?*anyopaque) ?*X509_SIG; +// pub extern fn PEM_write_PKCS7(fp: [*c]FILE, x: [*c]PKCS7) c_int; +pub extern fn PEM_read_bio_PKCS8(bp: [*c]BIO, x: [*c]?*X509_SIG, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_SIG; +// pub extern fn PEM_read_PKCS8(fp: [*c]FILE, x: [*c]?*X509_SIG, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*X509_SIG; pub extern fn PEM_write_bio_PKCS8(bp: [*c]BIO, x: ?*X509_SIG) c_int; -pub extern fn PEM_write_PKCS8(fp: [*c]FILE, x: ?*X509_SIG) c_int; -pub extern fn PEM_read_bio_PKCS8_PRIV_KEY_INFO(bp: [*c]BIO, x: [*c]?*PKCS8_PRIV_KEY_INFO, cb: ?pem_password_cb, u: ?*anyopaque) ?*PKCS8_PRIV_KEY_INFO; -pub extern fn PEM_read_PKCS8_PRIV_KEY_INFO(fp: [*c]FILE, x: [*c]?*PKCS8_PRIV_KEY_INFO, cb: ?pem_password_cb, u: ?*anyopaque) ?*PKCS8_PRIV_KEY_INFO; +// pub extern fn PEM_write_PKCS8(fp: [*c]FILE, x: ?*X509_SIG) c_int; +pub extern fn PEM_read_bio_PKCS8_PRIV_KEY_INFO(bp: [*c]BIO, x: [*c]?*PKCS8_PRIV_KEY_INFO, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*PKCS8_PRIV_KEY_INFO; +// pub extern fn PEM_read_PKCS8_PRIV_KEY_INFO(fp: [*c]FILE, x: [*c]?*PKCS8_PRIV_KEY_INFO, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*PKCS8_PRIV_KEY_INFO; pub extern fn PEM_write_bio_PKCS8_PRIV_KEY_INFO(bp: [*c]BIO, x: ?*PKCS8_PRIV_KEY_INFO) c_int; -pub extern fn PEM_write_PKCS8_PRIV_KEY_INFO(fp: [*c]FILE, x: ?*PKCS8_PRIV_KEY_INFO) c_int; -pub extern fn PEM_read_bio_RSAPrivateKey(bp: [*c]BIO, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; -pub extern fn PEM_read_RSAPrivateKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; -pub extern fn PEM_write_bio_RSAPrivateKey(bp: [*c]BIO, x: ?*RSA, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_RSAPrivateKey(fp: [*c]FILE, x: ?*RSA, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_read_bio_RSAPublicKey(bp: [*c]BIO, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; -pub extern fn PEM_read_RSAPublicKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; +// pub extern fn PEM_write_PKCS8_PRIV_KEY_INFO(fp: [*c]FILE, x: ?*PKCS8_PRIV_KEY_INFO) c_int; +pub extern fn PEM_read_bio_RSAPrivateKey(bp: [*c]BIO, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; +// pub extern fn PEM_read_RSAPrivateKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; +pub extern fn PEM_write_bio_RSAPrivateKey(bp: [*c]BIO, x: ?*RSA, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_write_RSAPrivateKey(fp: [*c]FILE, x: ?*RSA, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_read_bio_RSAPublicKey(bp: [*c]BIO, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; +// pub extern fn PEM_read_RSAPublicKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; pub extern fn PEM_write_bio_RSAPublicKey(bp: [*c]BIO, x: ?*const RSA) c_int; -pub extern fn PEM_write_RSAPublicKey(fp: [*c]FILE, x: ?*const RSA) c_int; -pub extern fn PEM_read_bio_RSA_PUBKEY(bp: [*c]BIO, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; -pub extern fn PEM_read_RSA_PUBKEY(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*anyopaque) ?*RSA; +// pub extern fn PEM_write_RSAPublicKey(fp: [*c]FILE, x: ?*const RSA) c_int; +pub extern fn PEM_read_bio_RSA_PUBKEY(bp: [*c]BIO, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; +// pub extern fn PEM_read_RSA_PUBKEY(fp: [*c]FILE, x: [*c]?*RSA, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*RSA; pub extern fn PEM_write_bio_RSA_PUBKEY(bp: [*c]BIO, x: ?*RSA) c_int; -pub extern fn PEM_write_RSA_PUBKEY(fp: [*c]FILE, x: ?*RSA) c_int; -pub extern fn PEM_read_bio_DSAPrivateKey(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; -pub extern fn PEM_read_DSAPrivateKey(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; -pub extern fn PEM_write_bio_DSAPrivateKey(bp: [*c]BIO, x: [*c]DSA, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_DSAPrivateKey(fp: [*c]FILE, x: [*c]DSA, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_read_bio_DSA_PUBKEY(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; -pub extern fn PEM_read_DSA_PUBKEY(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; +// pub extern fn PEM_write_RSA_PUBKEY(fp: [*c]FILE, x: ?*RSA) c_int; +pub extern fn PEM_read_bio_DSAPrivateKey(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; +// pub extern fn PEM_read_DSAPrivateKey(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; +pub extern fn PEM_write_bio_DSAPrivateKey(bp: [*c]BIO, x: [*c]DSA, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_write_DSAPrivateKey(fp: [*c]FILE, x: [*c]DSA, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_read_bio_DSA_PUBKEY(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; +// pub extern fn PEM_read_DSA_PUBKEY(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; pub extern fn PEM_write_bio_DSA_PUBKEY(bp: [*c]BIO, x: [*c]DSA) c_int; -pub extern fn PEM_write_DSA_PUBKEY(fp: [*c]FILE, x: [*c]DSA) c_int; -pub extern fn PEM_read_bio_DSAparams(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; -pub extern fn PEM_read_DSAparams(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DSA; +// pub extern fn PEM_write_DSA_PUBKEY(fp: [*c]FILE, x: [*c]DSA) c_int; +pub extern fn PEM_read_bio_DSAparams(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; +// pub extern fn PEM_read_DSAparams(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]DSA; pub extern fn PEM_write_bio_DSAparams(bp: [*c]BIO, x: [*c]const DSA) c_int; -pub extern fn PEM_write_DSAparams(fp: [*c]FILE, x: [*c]const DSA) c_int; -pub extern fn PEM_read_bio_ECPrivateKey(bp: [*c]BIO, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*anyopaque) ?*EC_KEY; -pub extern fn PEM_read_ECPrivateKey(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*anyopaque) ?*EC_KEY; -pub extern fn PEM_write_bio_ECPrivateKey(bp: [*c]BIO, x: ?*EC_KEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_ECPrivateKey(fp: [*c]FILE, x: ?*EC_KEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_read_bio_EC_PUBKEY(bp: [*c]BIO, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*anyopaque) ?*EC_KEY; -pub extern fn PEM_read_EC_PUBKEY(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*anyopaque) ?*EC_KEY; +// pub extern fn PEM_write_DSAparams(fp: [*c]FILE, x: [*c]const DSA) c_int; +pub extern fn PEM_read_bio_ECPrivateKey(bp: [*c]BIO, x: [*c]?*EC_KEY, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*EC_KEY; +// pub extern fn PEM_read_ECPrivateKey(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*EC_KEY; +pub extern fn PEM_write_bio_ECPrivateKey(bp: [*c]BIO, x: ?*EC_KEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_write_ECPrivateKey(fp: [*c]FILE, x: ?*EC_KEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_read_bio_EC_PUBKEY(bp: [*c]BIO, x: [*c]?*EC_KEY, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*EC_KEY; +// pub extern fn PEM_read_EC_PUBKEY(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*EC_KEY; pub extern fn PEM_write_bio_EC_PUBKEY(bp: [*c]BIO, x: ?*EC_KEY) c_int; -pub extern fn PEM_write_EC_PUBKEY(fp: [*c]FILE, x: ?*EC_KEY) c_int; -pub extern fn PEM_read_bio_DHparams(bp: [*c]BIO, x: [*c][*c]DH, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DH; -pub extern fn PEM_read_DHparams(fp: [*c]FILE, x: [*c][*c]DH, cb: ?pem_password_cb, u: ?*anyopaque) [*c]DH; -pub extern fn PEM_write_bio_DHparams(bp: [*c]BIO, x: [*c]const DH) c_int; -pub extern fn PEM_write_DHparams(fp: [*c]FILE, x: [*c]const DH) c_int; -pub extern fn PEM_read_bio_PrivateKey(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; -pub extern fn PEM_read_PrivateKey(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; -pub extern fn PEM_write_bio_PrivateKey(bp: [*c]BIO, x: [*c]EVP_PKEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_PrivateKey(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_read_bio_PUBKEY(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; -pub extern fn PEM_read_PUBKEY(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +// pub extern fn PEM_write_EC_PUBKEY(fp: [*c]FILE, x: ?*EC_KEY) c_int; +pub extern fn PEM_read_bio_DHparams(bp: [*c]BIO, x: [*c]?*DH, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*DH; +// pub extern fn PEM_read_DHparams(fp: [*c]FILE, x: [*c]?*DH, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*DH; +pub extern fn PEM_write_bio_DHparams(bp: [*c]BIO, x: ?*const DH) c_int; +// pub extern fn PEM_write_DHparams(fp: [*c]FILE, x: ?*const DH) c_int; +pub extern fn PEM_read_bio_PrivateKey(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +// pub extern fn PEM_read_PrivateKey(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +pub extern fn PEM_write_bio_PrivateKey(bp: [*c]BIO, x: [*c]EVP_PKEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_write_PrivateKey(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_read_bio_PUBKEY(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +// pub extern fn PEM_read_PUBKEY(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; pub extern fn PEM_write_bio_PUBKEY(bp: [*c]BIO, x: [*c]EVP_PKEY) c_int; -pub extern fn PEM_write_PUBKEY(fp: [*c]FILE, x: [*c]EVP_PKEY) c_int; -pub extern fn PEM_write_bio_PKCS8PrivateKey_nid(bp: [*c]BIO, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_bio_PKCS8PrivateKey([*c]BIO, [*c]EVP_PKEY, [*c]const EVP_CIPHER, [*c]u8, c_int, ?pem_password_cb, ?*anyopaque) c_int; -pub extern fn i2d_PKCS8PrivateKey_bio(bp: [*c]BIO, x: [*c]EVP_PKEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn i2d_PKCS8PrivateKey_nid_bio(bp: [*c]BIO, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn d2i_PKCS8PrivateKey_bio(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; -pub extern fn i2d_PKCS8PrivateKey_fp(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn i2d_PKCS8PrivateKey_nid_fp(fp: [*c]FILE, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn PEM_write_PKCS8PrivateKey_nid(fp: [*c]FILE, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*anyopaque) c_int; -pub extern fn d2i_PKCS8PrivateKey_fp(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; -pub extern fn PEM_write_PKCS8PrivateKey(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cd: ?pem_password_cb, u: ?*anyopaque) c_int; // /Users/jarred/Code/bun/src/deps/boringssl/include/openssl/type_check.h:75:42: warning: ignoring StaticAssert declaration +// pub extern fn PEM_write_PUBKEY(fp: [*c]FILE, x: [*c]EVP_PKEY) c_int; +pub extern fn PEM_write_bio_PKCS8PrivateKey_nid(bp: [*c]BIO, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn PEM_write_bio_PKCS8PrivateKey([*c]BIO, [*c]EVP_PKEY, ?*const EVP_CIPHER, [*c]u8, c_int, ?*const pem_password_cb, ?*anyopaque) c_int; +pub extern fn i2d_PKCS8PrivateKey_bio(bp: [*c]BIO, x: [*c]EVP_PKEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn i2d_PKCS8PrivateKey_nid_bio(bp: [*c]BIO, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +pub extern fn d2i_PKCS8PrivateKey_bio(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +// pub extern fn i2d_PKCS8PrivateKey_fp(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn i2d_PKCS8PrivateKey_nid_fp(fp: [*c]FILE, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn PEM_write_PKCS8PrivateKey_nid(fp: [*c]FILE, x: [*c]EVP_PKEY, nid: c_int, kstr: [*c]u8, klen: c_int, cb: ?*const pem_password_cb, u: ?*anyopaque) c_int; +// pub extern fn d2i_PKCS8PrivateKey_fp(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?*const pem_password_cb, u: ?*anyopaque) [*c]EVP_PKEY; +// pub extern fn PEM_write_PKCS8PrivateKey(fp: [*c]FILE, x: [*c]EVP_PKEY, enc: ?*const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cd: ?*const pem_password_cb, u: ?*anyopaque) c_int; pub extern fn HMAC(evp_md: ?*const EVP_MD, key: ?*const anyopaque, key_len: usize, data: [*c]const u8, data_len: usize, out: [*c]u8, out_len: [*c]c_uint) [*c]u8; pub extern fn HMAC_CTX_init(ctx: [*c]HMAC_CTX) void; pub extern fn HMAC_CTX_new() [*c]HMAC_CTX; pub extern fn HMAC_CTX_cleanup(ctx: [*c]HMAC_CTX) void; +pub extern fn HMAC_CTX_cleanse(ctx: [*c]HMAC_CTX) void; pub extern fn HMAC_CTX_free(ctx: [*c]HMAC_CTX) void; pub extern fn HMAC_Init_ex(ctx: [*c]HMAC_CTX, key: ?*const anyopaque, key_len: usize, md: ?*const EVP_MD, impl: ?*ENGINE) c_int; pub extern fn HMAC_Update(ctx: [*c]HMAC_CTX, data: [*c]const u8, data_len: usize) c_int; pub extern fn HMAC_Final(ctx: [*c]HMAC_CTX, out: [*c]u8, out_len: [*c]c_uint) c_int; pub extern fn HMAC_size(ctx: [*c]const HMAC_CTX) usize; +pub extern fn HMAC_CTX_get_md(ctx: [*c]const HMAC_CTX) ?*const EVP_MD; pub extern fn HMAC_CTX_copy_ex(dest: [*c]HMAC_CTX, src: [*c]const HMAC_CTX) c_int; pub extern fn HMAC_CTX_reset(ctx: [*c]HMAC_CTX) void; pub extern fn HMAC_Init(ctx: [*c]HMAC_CTX, key: ?*const anyopaque, key_len: c_int, md: ?*const EVP_MD) c_int; @@ -5099,7 +5056,6 @@ pub extern fn DTLS_with_buffers_method() ?*const SSL_METHOD; pub extern fn SSL_CTX_new(method: ?*const SSL_METHOD) ?*SSL_CTX; pub extern fn SSL_CTX_up_ref(ctx: ?*SSL_CTX) c_int; pub extern fn SSL_CTX_free(ctx: ?*SSL_CTX) void; -pub extern fn SSL_new(ctx: ?*SSL_CTX) *SSL; pub extern fn SSL_free(ssl: ?*SSL) void; pub extern fn SSL_get_SSL_CTX(ssl: ?*const SSL) ?*SSL_CTX; pub extern fn SSL_set_connect_state(ssl: ?*SSL) void; @@ -5109,8 +5065,8 @@ pub extern fn SSL_is_dtls(ssl: ?*const SSL) c_int; pub extern fn SSL_set_bio(ssl: ?*SSL, rbio: [*c]BIO, wbio: [*c]BIO) void; pub extern fn SSL_set0_rbio(ssl: ?*SSL, rbio: [*c]BIO) void; pub extern fn SSL_set0_wbio(ssl: ?*SSL, wbio: [*c]BIO) void; -pub extern fn SSL_get_rbio(ssl: ?*const SSL) *BIO; -pub extern fn SSL_get_wbio(ssl: ?*const SSL) *BIO; +pub extern fn SSL_get_rbio(ssl: ?*const SSL) [*c]BIO; +pub extern fn SSL_get_wbio(ssl: ?*const SSL) [*c]BIO; pub extern fn SSL_get_fd(ssl: ?*const SSL) c_int; pub extern fn SSL_get_rfd(ssl: ?*const SSL) c_int; pub extern fn SSL_get_wfd(ssl: ?*const SSL) c_int; @@ -5211,134 +5167,134 @@ pub extern fn SSL_CTX_use_PrivateKey_ASN1(pk: c_int, ctx: ?*SSL_CTX, der: [*c]co pub extern fn SSL_use_PrivateKey_ASN1(@"type": c_int, ssl: ?*SSL, der: [*c]const u8, der_len: usize) c_int; pub extern fn SSL_CTX_use_RSAPrivateKey_ASN1(ctx: ?*SSL_CTX, der: [*c]const u8, der_len: usize) c_int; pub extern fn SSL_use_RSAPrivateKey_ASN1(ssl: ?*SSL, der: [*c]const u8, der_len: usize) c_int; -pub extern fn SSL_CTX_use_RSAPrivateKey_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_use_RSAPrivateKey_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_CTX_use_certificate_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_use_certificate_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_CTX_use_PrivateKey_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_use_PrivateKey_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; -pub extern fn SSL_CTX_use_certificate_chain_file(ctx: ?*SSL_CTX, file: [*c]const u8) c_int; -pub extern fn SSL_CTX_set_default_passwd_cb(ctx: ?*SSL_CTX, cb: ?pem_password_cb) void; -pub extern fn SSL_CTX_get_default_passwd_cb(ctx: ?*const SSL_CTX) ?pem_password_cb; +// pub extern fn SSL_CTX_use_RSAPrivateKey_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_use_RSAPrivateKey_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_CTX_use_certificate_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_use_certificate_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_CTX_use_PrivateKey_file(ctx: ?*SSL_CTX, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_use_PrivateKey_file(ssl: ?*SSL, file: [*c]const u8, @"type": c_int) c_int; +// pub extern fn SSL_CTX_use_certificate_chain_file(ctx: ?*SSL_CTX, file: [*c]const u8) c_int; +pub extern fn SSL_CTX_set_default_passwd_cb(ctx: ?*SSL_CTX, cb: ?*const pem_password_cb) void; +pub extern fn SSL_CTX_get_default_passwd_cb(ctx: ?*const SSL_CTX) ?*const pem_password_cb; pub extern fn SSL_CTX_set_default_passwd_cb_userdata(ctx: ?*SSL_CTX, data: ?*anyopaque) void; pub extern fn SSL_CTX_get_default_passwd_cb_userdata(ctx: ?*const SSL_CTX) ?*anyopaque; pub extern fn SSL_set_private_key_method(ssl: ?*SSL, key_method: [*c]const SSL_PRIVATE_KEY_METHOD) void; pub extern fn SSL_CTX_set_private_key_method(ctx: ?*SSL_CTX, key_method: [*c]const SSL_PRIVATE_KEY_METHOD) void; pub extern fn SSL_can_release_private_key(ssl: ?*const SSL) c_int; pub const struct_stack_st_SSL_CIPHER = opaque {}; -pub const stack_SSL_CIPHER_free_func = ?*const fn (?*const SSL_CIPHER) callconv(.C) void; -pub const stack_SSL_CIPHER_copy_func = ?*const fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER; -pub const stack_SSL_CIPHER_cmp_func = ?*const fn ([*c]?*const SSL_CIPHER, [*c]?*const SSL_CIPHER) callconv(.C) c_int; -pub fn sk_SSL_CIPHER_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_SSL_CIPHER_free_func = ?*const fn (?*const SSL_CIPHER) callconv(.C) void; +pub const sk_SSL_CIPHER_copy_func = ?*const fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER; +pub const sk_SSL_CIPHER_cmp_func = ?*const fn ([*c]?*const SSL_CIPHER, [*c]?*const SSL_CIPHER) callconv(.C) c_int; +pub fn sk_SSL_CIPHER_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_SSL_CIPHER_free_func, @alignCast(@import("std").meta.alignment(fn (?*const SSL_CIPHER) callconv(.C) void), free_func)).?(@ptrCast(?*const SSL_CIPHER, ptr)); + @as(sk_SSL_CIPHER_free_func, @ptrCast(@alignCast(free_func))).?(@as(?*const SSL_CIPHER, @ptrCast(ptr))); } -pub fn sk_SSL_CIPHER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_SSL_CIPHER_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrFromInt(?*anyopaque, @intFromPtr(@ptrCast(stack_SSL_CIPHER_copy_func, @alignCast(@import("std").meta.alignment(fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER), copy_func)).?(@ptrCast(?*const SSL_CIPHER, ptr)))); + return @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(@as(sk_SSL_CIPHER_copy_func, @ptrCast(@alignCast(copy_func))).?(@as(?*const SSL_CIPHER, @ptrCast(ptr))))))); } -pub fn sk_SSL_CIPHER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_SSL_CIPHER_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const SSL_CIPHER = @ptrCast(?*const SSL_CIPHER, a.*); - var b_ptr: ?*const SSL_CIPHER = @ptrCast(?*const SSL_CIPHER, b.*); - return @ptrCast(stack_SSL_CIPHER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const SSL_CIPHER, [*c]?*const SSL_CIPHER) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: ?*const SSL_CIPHER = @as(?*const SSL_CIPHER, @ptrCast(a.*)); + var b_ptr: ?*const SSL_CIPHER = @as(?*const SSL_CIPHER, @ptrCast(b.*)); + return @as(sk_SSL_CIPHER_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_SSL_CIPHER_new(arg_comp: stack_SSL_CIPHER_cmp_func) callconv(.C) ?*struct_stack_st_SSL_CIPHER { +pub fn sk_SSL_CIPHER_new(arg_comp: sk_SSL_CIPHER_cmp_func) callconv(.C) ?*struct_stack_st_SSL_CIPHER { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_SSL_CIPHER, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_SSL_CIPHER, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_SSL_CIPHER_new_null() callconv(.C) ?*struct_stack_st_SSL_CIPHER { - return @ptrCast(?*struct_stack_st_SSL_CIPHER, sk_new_null()); + return @as(?*struct_stack_st_SSL_CIPHER, @ptrCast(sk_new_null())); } pub fn sk_SSL_CIPHER_num(arg_sk: ?*const struct_stack_st_SSL_CIPHER) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SSL_CIPHER_zero(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SSL_CIPHER_value(arg_sk: ?*const struct_stack_st_SSL_CIPHER, arg_i: usize) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; var i = arg_i; - return @ptrCast(?*const SSL_CIPHER, sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i)); + return @as(?*const SSL_CIPHER, @ptrCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i))); } pub fn sk_SSL_CIPHER_set(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_i: usize, arg_p: ?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast(?*const SSL_CIPHER, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrFromInt(?*anyopaque, @intFromPtr(p)))); + return @as(?*const SSL_CIPHER, @ptrCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p))))))); } pub fn sk_SSL_CIPHER_free(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SSL_CIPHER_pop_free(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_free_func: stack_SSL_CIPHER_free_func) callconv(.C) void { +pub fn sk_SSL_CIPHER_pop_free(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_free_func: sk_SSL_CIPHER_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SSL_CIPHER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SSL_CIPHER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_SSL_CIPHER_insert(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_p: ?*const SSL_CIPHER, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrFromInt(?*anyopaque, @intFromPtr(p)), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p)))), where); } pub fn sk_SSL_CIPHER_delete(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_where: usize) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; var where = arg_where; - return @ptrCast(?*const SSL_CIPHER, sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where)); + return @as(?*const SSL_CIPHER, @ptrCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where))); } pub fn sk_SSL_CIPHER_delete_ptr(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_p: ?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; var p = arg_p; - return @ptrCast(?*const SSL_CIPHER, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p))); + return @as(?*const SSL_CIPHER, @ptrCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p))))); } pub fn sk_SSL_CIPHER_find(arg_sk: ?*const struct_stack_st_SSL_CIPHER, arg_out_index: [*c]usize, arg_p: ?*const SSL_CIPHER) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_SSL_CIPHER_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_SSL_CIPHER_call_cmp_func); } pub fn sk_SSL_CIPHER_shift(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; - return @ptrCast(?*const SSL_CIPHER, sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*const SSL_CIPHER, @ptrCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_SSL_CIPHER_push(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_p: ?*const SSL_CIPHER) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrFromInt(?*anyopaque, @intFromPtr(p))); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p))))); } pub fn sk_SSL_CIPHER_pop(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; - return @ptrCast(?*const SSL_CIPHER, sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*const SSL_CIPHER, @ptrCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_SSL_CIPHER_dup(arg_sk: ?*const struct_stack_st_SSL_CIPHER) callconv(.C) ?*struct_stack_st_SSL_CIPHER { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_SSL_CIPHER, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_SSL_CIPHER, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_SSL_CIPHER_sort(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SSL_CIPHER_call_cmp_func); } pub fn sk_SSL_CIPHER_is_sorted(arg_sk: ?*const struct_stack_st_SSL_CIPHER) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SSL_CIPHER_set_cmp_func(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_comp: stack_SSL_CIPHER_cmp_func) callconv(.C) stack_SSL_CIPHER_cmp_func { +pub fn sk_SSL_CIPHER_set_cmp_func(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_comp: sk_SSL_CIPHER_cmp_func) callconv(.C) sk_SSL_CIPHER_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_SSL_CIPHER_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const SSL_CIPHER, [*c]?*const SSL_CIPHER) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_SSL_CIPHER_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_SSL_CIPHER_deep_copy(arg_sk: ?*const struct_stack_st_SSL_CIPHER, arg_copy_func: ?*const fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER, arg_free_func: ?*const fn (?*const SSL_CIPHER) callconv(.C) void) callconv(.C) ?*struct_stack_st_SSL_CIPHER { +pub fn sk_SSL_CIPHER_deep_copy(arg_sk: ?*const struct_stack_st_SSL_CIPHER, arg_copy_func: sk_SSL_CIPHER_copy_func, arg_free_func: sk_SSL_CIPHER_free_func) callconv(.C) ?*struct_stack_st_SSL_CIPHER { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_SSL_CIPHER, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SSL_CIPHER_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_SSL_CIPHER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_SSL_CIPHER, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_SSL_CIPHER_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_SSL_CIPHER_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn SSL_get_cipher_by_value(value: u16) ?*const SSL_CIPHER; pub extern fn SSL_CIPHER_get_id(cipher: ?*const SSL_CIPHER) u32; @@ -5378,10 +5334,10 @@ pub extern fn SSL_get_current_cipher(ssl: ?*const SSL) ?*const SSL_CIPHER; pub extern fn SSL_session_reused(ssl: ?*const SSL) c_int; pub extern fn SSL_get_secure_renegotiation_support(ssl: ?*const SSL) c_int; pub extern fn SSL_export_keying_material(ssl: ?*SSL, out: [*c]u8, out_len: usize, label: [*c]const u8, label_len: usize, context: [*c]const u8, context_len: usize, use_context: c_int) c_int; -pub extern fn PEM_read_bio_SSL_SESSION(bp: [*c]BIO, x: [*c]?*SSL_SESSION, cb: ?pem_password_cb, u: ?*anyopaque) ?*SSL_SESSION; -pub extern fn PEM_read_SSL_SESSION(fp: [*c]FILE, x: [*c]?*SSL_SESSION, cb: ?pem_password_cb, u: ?*anyopaque) ?*SSL_SESSION; +pub extern fn PEM_read_bio_SSL_SESSION(bp: [*c]BIO, x: [*c]?*SSL_SESSION, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*SSL_SESSION; +// pub extern fn PEM_read_SSL_SESSION(fp: [*c]FILE, x: [*c]?*SSL_SESSION, cb: ?*const pem_password_cb, u: ?*anyopaque) ?*SSL_SESSION; pub extern fn PEM_write_bio_SSL_SESSION(bp: [*c]BIO, x: ?*SSL_SESSION) c_int; -pub extern fn PEM_write_SSL_SESSION(fp: [*c]FILE, x: ?*SSL_SESSION) c_int; +// pub extern fn PEM_write_SSL_SESSION(fp: [*c]FILE, x: ?*SSL_SESSION) c_int; pub extern fn SSL_SESSION_new(ctx: ?*const SSL_CTX) ?*SSL_SESSION; pub extern fn SSL_SESSION_up_ref(session: ?*SSL_SESSION) c_int; pub extern fn SSL_SESSION_free(session: ?*SSL_SESSION) void; @@ -5440,31 +5396,29 @@ pub extern fn SSL_CTX_set_tlsext_ticket_keys(ctx: ?*SSL_CTX, in: ?*const anyopaq pub extern fn SSL_CTX_set_tlsext_ticket_key_cb(ctx: ?*SSL_CTX, callback: ?*const fn (?*SSL, [*c]u8, [*c]u8, [*c]EVP_CIPHER_CTX, [*c]HMAC_CTX, c_int) callconv(.C) c_int) c_int; pub extern fn SSL_CTX_set_ticket_aead_method(ctx: ?*SSL_CTX, aead_method: [*c]const SSL_TICKET_AEAD_METHOD) void; pub extern fn SSL_process_tls13_new_session_ticket(ssl: ?*SSL, buf: [*c]const u8, buf_len: usize) ?*SSL_SESSION; +pub extern fn SSL_CTX_set_num_tickets(ctx: ?*SSL_CTX, num_tickets: usize) c_int; +pub extern fn SSL_CTX_get_num_tickets(ctx: ?*const SSL_CTX) usize; pub extern fn SSL_CTX_set1_curves(ctx: ?*SSL_CTX, curves: [*c]const c_int, curves_len: usize) c_int; pub extern fn SSL_set1_curves(ssl: ?*SSL, curves: [*c]const c_int, curves_len: usize) c_int; pub extern fn SSL_CTX_set1_curves_list(ctx: ?*SSL_CTX, curves: [*c]const u8) c_int; pub extern fn SSL_set1_curves_list(ssl: ?*SSL, curves: [*c]const u8) c_int; pub extern fn SSL_get_curve_id(ssl: ?*const SSL) u16; pub extern fn SSL_get_curve_name(curve_id: u16) [*c]const u8; +pub extern fn SSL_CTX_set1_groups(ctx: ?*SSL_CTX, groups: [*c]const c_int, groups_len: usize) c_int; +pub extern fn SSL_set1_groups(ssl: ?*SSL, groups: [*c]const c_int, groups_len: usize) c_int; +pub extern fn SSL_CTX_set1_groups_list(ctx: ?*SSL_CTX, groups: [*c]const u8) c_int; +pub extern fn SSL_set1_groups_list(ssl: ?*SSL, groups: [*c]const u8) c_int; pub extern fn SSL_CTX_set_verify(ctx: ?*SSL_CTX, mode: c_int, callback: ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int) void; pub extern fn SSL_set_verify(ssl: ?*SSL, mode: c_int, callback: ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int) void; -// pub const ssl_verify_ok: c_int = 0; -// pub const ssl_verify_invalid: c_int = 1; -// pub const ssl_verify_retry: c_int = 2; -// pub const enum_ssl_verify_result_t = c_uint; -pub const VerifyResult = enum(c_int) { - ok = 0, - invalid = 1, - retry = 2, -}; -pub const VerifyCallback = *const fn (*SSL, [*c]u8) callconv(.C) VerifyResult; - -pub extern fn SSL_CTX_set_custom_verify(ctx: ?*SSL_CTX, mode: c_int, callback: ?VerifyCallback) void; -pub extern fn SSL_set_custom_verify(ssl: ?*SSL, mode: c_int, callback: ?VerifyCallback) void; +pub const ssl_verify_ok: c_int = 0; +pub const ssl_verify_invalid: c_int = 1; +pub const ssl_verify_retry: c_int = 2; +pub extern fn SSL_set_custom_verify(ssl: ?*SSL, mode: c_int, callback: ?*const fn (?*SSL, [*c]u8) callconv(.C) enum_ssl_verify_result_t) void; pub extern fn SSL_CTX_get_verify_mode(ctx: ?*const SSL_CTX) c_int; pub extern fn SSL_get_verify_mode(ssl: ?*const SSL) c_int; pub extern fn SSL_CTX_get_verify_callback(ctx: ?*const SSL_CTX) ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int; pub extern fn SSL_get_verify_callback(ssl: ?*const SSL) ?*const fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int; +pub extern fn SSL_set1_host(ssl: ?*SSL, hostname: [*c]const u8) c_int; pub extern fn SSL_CTX_set_verify_depth(ctx: ?*SSL_CTX, depth: c_int) void; pub extern fn SSL_set_verify_depth(ssl: ?*SSL, depth: c_int) void; pub extern fn SSL_CTX_get_verify_depth(ctx: ?*const SSL_CTX) c_int; @@ -5480,7 +5434,7 @@ pub extern fn SSL_set_trust(ssl: ?*SSL, trust: c_int) c_int; pub extern fn SSL_CTX_set_cert_store(ctx: ?*SSL_CTX, store: ?*X509_STORE) void; pub extern fn SSL_CTX_get_cert_store(ctx: ?*const SSL_CTX) ?*X509_STORE; pub extern fn SSL_CTX_set_default_verify_paths(ctx: ?*SSL_CTX) c_int; -pub extern fn SSL_CTX_load_verify_locations(ctx: ?*SSL_CTX, ca_file: [*c]const u8, ca_dir: [*c]const u8) c_int; +// pub extern fn SSL_CTX_load_verify_locations(ctx: ?*SSL_CTX, ca_file: [*c]const u8, ca_dir: [*c]const u8) c_int; pub extern fn SSL_get_verify_result(ssl: ?*const SSL) c_long; pub extern fn SSL_alert_from_verify_result(result: c_long) c_int; pub extern fn SSL_get_ex_data_X509_STORE_CTX_idx() c_int; @@ -5495,6 +5449,7 @@ pub extern fn SSL_set0_verify_cert_store(ssl: ?*SSL, store: ?*X509_STORE) c_int; pub extern fn SSL_set1_verify_cert_store(ssl: ?*SSL, store: ?*X509_STORE) c_int; pub extern fn SSL_CTX_set_verify_algorithm_prefs(ctx: ?*SSL_CTX, prefs: [*c]const u16, num_prefs: usize) c_int; pub extern fn SSL_set_verify_algorithm_prefs(ssl: ?*SSL, prefs: [*c]const u16, num_prefs: usize) c_int; +pub extern fn SSL_set_hostflags(ssl: ?*SSL, flags: c_uint) void; pub extern fn SSL_set_client_CA_list(ssl: ?*SSL, name_list: ?*struct_stack_st_X509_NAME) void; pub extern fn SSL_CTX_set_client_CA_list(ctx: ?*SSL_CTX, name_list: ?*struct_stack_st_X509_NAME) void; pub extern fn SSL_set0_client_CAs(ssl: ?*SSL, name_list: ?*struct_stack_st_CRYPTO_BUFFER) void; @@ -5504,24 +5459,25 @@ pub extern fn SSL_get0_server_requested_CAs(ssl: ?*const SSL) ?*const struct_sta pub extern fn SSL_CTX_get_client_CA_list(ctx: ?*const SSL_CTX) ?*struct_stack_st_X509_NAME; pub extern fn SSL_add_client_CA(ssl: ?*SSL, x509: ?*X509) c_int; pub extern fn SSL_CTX_add_client_CA(ctx: ?*SSL_CTX, x509: ?*X509) c_int; -pub extern fn SSL_load_client_CA_file(file: [*c]const u8) ?*struct_stack_st_X509_NAME; +// pub extern fn SSL_load_client_CA_file(file: [*c]const u8) ?*struct_stack_st_X509_NAME; pub extern fn SSL_dup_CA_list(list: ?*struct_stack_st_X509_NAME) ?*struct_stack_st_X509_NAME; -pub extern fn SSL_add_file_cert_subjects_to_stack(out: ?*struct_stack_st_X509_NAME, file: [*c]const u8) c_int; +// pub extern fn SSL_add_file_cert_subjects_to_stack(out: ?*struct_stack_st_X509_NAME, file: [*c]const u8) c_int; +pub extern fn SSL_add_bio_cert_subjects_to_stack(out: ?*struct_stack_st_X509_NAME, bio: [*c]BIO) c_int; pub extern fn SSL_set_tlsext_host_name(ssl: ?*SSL, name: [*c]const u8) c_int; pub extern fn SSL_get_servername(ssl: ?*const SSL, @"type": c_int) [*c]const u8; pub extern fn SSL_get_servername_type(ssl: ?*const SSL) c_int; pub extern fn SSL_CTX_set_tlsext_servername_callback(ctx: ?*SSL_CTX, callback: ?*const fn (?*SSL, [*c]c_int, ?*anyopaque) callconv(.C) c_int) c_int; pub extern fn SSL_CTX_set_tlsext_servername_arg(ctx: ?*SSL_CTX, arg: ?*anyopaque) c_int; pub extern fn SSL_set_SSL_CTX(ssl: ?*SSL, ctx: ?*SSL_CTX) ?*SSL_CTX; -pub extern fn SSL_CTX_set_alpn_protos(ctx: ?*SSL_CTX, protos: [*c]const u8, protos_len: c_uint) c_int; -pub extern fn SSL_set_alpn_protos(ssl: ?*SSL, protos: [*c]const u8, protos_len: c_uint) c_int; +pub extern fn SSL_CTX_set_alpn_protos(ctx: ?*SSL_CTX, protos: [*c]const u8, protos_len: usize) c_int; +pub extern fn SSL_set_alpn_protos(ssl: ?*SSL, protos: [*c]const u8, protos_len: usize) c_int; pub extern fn SSL_CTX_set_alpn_select_cb(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, [*c][*c]const u8, [*c]u8, [*c]const u8, c_uint, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; pub extern fn SSL_get0_alpn_selected(ssl: ?*const SSL, out_data: [*c][*c]const u8, out_len: [*c]c_uint) void; pub extern fn SSL_CTX_set_allow_unknown_alpn_protos(ctx: ?*SSL_CTX, enabled: c_int) void; pub extern fn SSL_add_application_settings(ssl: ?*SSL, proto: [*c]const u8, proto_len: usize, settings: [*c]const u8, settings_len: usize) c_int; pub extern fn SSL_get0_peer_application_settings(ssl: ?*const SSL, out_data: [*c][*c]const u8, out_len: [*c]usize) void; pub extern fn SSL_has_application_settings(ssl: ?*const SSL) c_int; -pub const ssl_cert_compression_func_t = ?*const fn (?*SSL, [*c]CBB, [*c]const u8, usize) callconv(.C) c_int; +pub const ssl_cert_compression_func_t = ?*const fn (?*SSL, ?*CBB, [*c]const u8, usize) callconv(.C) c_int; pub const ssl_cert_decompression_func_t = ?*const fn (?*SSL, [*c]?*CRYPTO_BUFFER, usize, [*c]const u8, usize) callconv(.C) c_int; pub extern fn SSL_CTX_add_cert_compression_alg(ctx: ?*SSL_CTX, alg_id: u16, compress: ssl_cert_compression_func_t, decompress: ssl_cert_decompression_func_t) c_int; pub extern fn SSL_CTX_set_next_protos_advertised_cb(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, [*c][*c]const u8, [*c]c_uint, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; @@ -5534,124 +5490,124 @@ pub extern fn SSL_CTX_set1_tls_channel_id(ctx: ?*SSL_CTX, private_key: [*c]EVP_P pub extern fn SSL_set1_tls_channel_id(ssl: ?*SSL, private_key: [*c]EVP_PKEY) c_int; pub extern fn SSL_get_tls_channel_id(ssl: ?*SSL, out: [*c]u8, max_out: usize) usize; pub const struct_stack_st_SRTP_PROTECTION_PROFILE = opaque {}; -pub const stack_SRTP_PROTECTION_PROFILE_free_func = ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void; -pub const stack_SRTP_PROTECTION_PROFILE_copy_func = ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE; -pub const stack_SRTP_PROTECTION_PROFILE_cmp_func = ?*const fn ([*c][*c]const SRTP_PROTECTION_PROFILE, [*c][*c]const SRTP_PROTECTION_PROFILE) callconv(.C) c_int; -pub fn sk_SRTP_PROTECTION_PROFILE_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_SRTP_PROTECTION_PROFILE_free_func = ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void; +pub const sk_SRTP_PROTECTION_PROFILE_copy_func = ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE; +pub const sk_SRTP_PROTECTION_PROFILE_cmp_func = ?*const fn ([*c][*c]const SRTP_PROTECTION_PROFILE, [*c][*c]const SRTP_PROTECTION_PROFILE) callconv(.C) c_int; +pub fn sk_SRTP_PROTECTION_PROFILE_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_SRTP_PROTECTION_PROFILE_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void), free_func)).?(@ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), ptr))); + @as(sk_SRTP_PROTECTION_PROFILE_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(ptr)))); } -pub fn sk_SRTP_PROTECTION_PROFILE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_SRTP_PROTECTION_PROFILE_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrFromInt(?*anyopaque, @intFromPtr(@ptrCast(stack_SRTP_PROTECTION_PROFILE_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE), copy_func)).?(@ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), ptr))))); + return @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(@as(sk_SRTP_PROTECTION_PROFILE_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(ptr)))))))); } -pub fn sk_SRTP_PROTECTION_PROFILE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_SRTP_PROTECTION_PROFILE_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const SRTP_PROTECTION_PROFILE = @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), a.*)); - var b_ptr: [*c]const SRTP_PROTECTION_PROFILE = @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), b.*)); - return @ptrCast(stack_SRTP_PROTECTION_PROFILE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const SRTP_PROTECTION_PROFILE, [*c][*c]const SRTP_PROTECTION_PROFILE) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const SRTP_PROTECTION_PROFILE = @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const SRTP_PROTECTION_PROFILE = @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(b.*))); + return @as(sk_SRTP_PROTECTION_PROFILE_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_SRTP_PROTECTION_PROFILE_new(arg_comp: stack_SRTP_PROTECTION_PROFILE_cmp_func) callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { +pub fn sk_SRTP_PROTECTION_PROFILE_new(arg_comp: sk_SRTP_PROTECTION_PROFILE_cmp_func) callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_SRTP_PROTECTION_PROFILE, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_SRTP_PROTECTION_PROFILE, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_SRTP_PROTECTION_PROFILE_new_null() callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { - return @ptrCast(?*struct_stack_st_SRTP_PROTECTION_PROFILE, sk_new_null()); + return @as(?*struct_stack_st_SRTP_PROTECTION_PROFILE, @ptrCast(sk_new_null())); } pub fn sk_SRTP_PROTECTION_PROFILE_num(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SRTP_PROTECTION_PROFILE_zero(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SRTP_PROTECTION_PROFILE_value(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE, arg_i: usize) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_SRTP_PROTECTION_PROFILE_set(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_i: usize, arg_p: [*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrFromInt(?*anyopaque, @intFromPtr(p))))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p)))))))); } pub fn sk_SRTP_PROTECTION_PROFILE_free(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SRTP_PROTECTION_PROFILE_pop_free(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_free_func: stack_SRTP_PROTECTION_PROFILE_free_func) callconv(.C) void { +pub fn sk_SRTP_PROTECTION_PROFILE_pop_free(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_free_func: sk_SRTP_PROTECTION_PROFILE_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SRTP_PROTECTION_PROFILE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SRTP_PROTECTION_PROFILE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_SRTP_PROTECTION_PROFILE_insert(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_p: [*c]const SRTP_PROTECTION_PROFILE, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrFromInt(?*anyopaque, @intFromPtr(p)), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p)))), where); } pub fn sk_SRTP_PROTECTION_PROFILE_delete(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_where: usize) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_SRTP_PROTECTION_PROFILE_delete_ptr(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_p: [*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_SRTP_PROTECTION_PROFILE_find(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE, arg_out_index: [*c]usize, arg_p: [*c]const SRTP_PROTECTION_PROFILE) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_SRTP_PROTECTION_PROFILE_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_SRTP_PROTECTION_PROFILE_call_cmp_func); } pub fn sk_SRTP_PROTECTION_PROFILE_shift(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_SRTP_PROTECTION_PROFILE_push(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_p: [*c]const SRTP_PROTECTION_PROFILE) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrFromInt(?*anyopaque, @intFromPtr(p))); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(@volatileCast(@constCast(p))))); } pub fn sk_SRTP_PROTECTION_PROFILE_pop(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE { var sk = arg_sk; - return @ptrCast([*c]const SRTP_PROTECTION_PROFILE, @alignCast(@import("std").meta.alignment(SRTP_PROTECTION_PROFILE), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]const SRTP_PROTECTION_PROFILE, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_SRTP_PROTECTION_PROFILE_dup(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_SRTP_PROTECTION_PROFILE, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_SRTP_PROTECTION_PROFILE, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_SRTP_PROTECTION_PROFILE_sort(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SRTP_PROTECTION_PROFILE_call_cmp_func); } pub fn sk_SRTP_PROTECTION_PROFILE_is_sorted(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SRTP_PROTECTION_PROFILE_set_cmp_func(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_comp: stack_SRTP_PROTECTION_PROFILE_cmp_func) callconv(.C) stack_SRTP_PROTECTION_PROFILE_cmp_func { +pub fn sk_SRTP_PROTECTION_PROFILE_set_cmp_func(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE, arg_comp: sk_SRTP_PROTECTION_PROFILE_cmp_func) callconv(.C) sk_SRTP_PROTECTION_PROFILE_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_SRTP_PROTECTION_PROFILE_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const SRTP_PROTECTION_PROFILE, [*c][*c]const SRTP_PROTECTION_PROFILE) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_SRTP_PROTECTION_PROFILE_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_SRTP_PROTECTION_PROFILE_deep_copy(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE, arg_copy_func: ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE, arg_free_func: ?*const fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void) callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { +pub fn sk_SRTP_PROTECTION_PROFILE_deep_copy(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE, arg_copy_func: sk_SRTP_PROTECTION_PROFILE_copy_func, arg_free_func: sk_SRTP_PROTECTION_PROFILE_free_func) callconv(.C) ?*struct_stack_st_SRTP_PROTECTION_PROFILE { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_SRTP_PROTECTION_PROFILE, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SRTP_PROTECTION_PROFILE_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_SRTP_PROTECTION_PROFILE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_SRTP_PROTECTION_PROFILE, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_SRTP_PROTECTION_PROFILE_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_SRTP_PROTECTION_PROFILE_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } -pub extern fn SSL_CTX_set_srtp_profiles(ctx: ?*SSL_CTX, profiles: [*c]const u8) c_int; -pub extern fn SSL_set_srtp_profiles(ssl: ?*SSL, profiles: [*c]const u8) c_int; -pub extern fn SSL_get_srtp_profiles(ssl: ?*const SSL) ?*const struct_stack_st_SRTP_PROTECTION_PROFILE; -pub extern fn SSL_get_selected_srtp_profile(ssl: ?*SSL) [*c]const SRTP_PROTECTION_PROFILE; +// pub extern fn SSL_CTX_set_srtp_profiles(ctx: ?*SSL_CTX, profiles: [*c]const u8) c_int; +// pub extern fn SSL_set_srtp_profiles(ssl: ?*SSL, profiles: [*c]const u8) c_int; +// pub extern fn SSL_get_srtp_profiles(ssl: ?*const SSL) ?*const struct_stack_st_SRTP_PROTECTION_PROFILE; +// pub extern fn SSL_get_selected_srtp_profile(ssl: ?*SSL) [*c]const SRTP_PROTECTION_PROFILE; pub extern fn SSL_CTX_set_psk_client_callback(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, [*c]const u8, [*c]u8, c_uint, [*c]u8, c_uint) callconv(.C) c_uint) void; pub extern fn SSL_set_psk_client_callback(ssl: ?*SSL, cb: ?*const fn (?*SSL, [*c]const u8, [*c]u8, c_uint, [*c]u8, c_uint) callconv(.C) c_uint) void; pub extern fn SSL_CTX_set_psk_server_callback(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, [*c]const u8, [*c]u8, c_uint) callconv(.C) c_uint) void; @@ -5717,22 +5673,22 @@ pub extern fn SSL_alert_desc_string_long(value: c_int) [*c]const u8; pub extern fn SSL_send_fatal_alert(ssl: ?*SSL, alert: u8) c_int; pub extern fn SSL_set_ex_data(ssl: ?*SSL, idx: c_int, data: ?*anyopaque) c_int; pub extern fn SSL_get_ex_data(ssl: ?*const SSL, idx: c_int) ?*anyopaque; -pub extern fn SSL_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn SSL_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn SSL_SESSION_set_ex_data(session: ?*SSL_SESSION, idx: c_int, data: ?*anyopaque) c_int; pub extern fn SSL_SESSION_get_ex_data(session: ?*const SSL_SESSION, idx: c_int) ?*anyopaque; -pub extern fn SSL_SESSION_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn SSL_SESSION_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn SSL_CTX_set_ex_data(ctx: ?*SSL_CTX, idx: c_int, data: ?*anyopaque) c_int; pub extern fn SSL_CTX_get_ex_data(ctx: ?*const SSL_CTX, idx: c_int) ?*anyopaque; -pub extern fn SSL_CTX_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; +pub extern fn SSL_CTX_get_ex_new_index(argl: c_long, argp: ?*anyopaque, unused: [*c]CRYPTO_EX_unused, dup_unused: ?*const CRYPTO_EX_dup, free_func: ?*const CRYPTO_EX_free) c_int; pub extern fn SSL_get_ivs(ssl: ?*const SSL, out_read_iv: [*c][*c]const u8, out_write_iv: [*c][*c]const u8, out_iv_len: [*c]usize) c_int; pub extern fn SSL_get_key_block_len(ssl: ?*const SSL) usize; pub extern fn SSL_generate_key_block(ssl: ?*const SSL, out: [*c]u8, out_len: usize) c_int; pub extern fn SSL_get_read_sequence(ssl: ?*const SSL) u64; pub extern fn SSL_get_write_sequence(ssl: ?*const SSL) u64; pub extern fn SSL_CTX_set_record_protocol_version(ctx: ?*SSL_CTX, version: c_int) c_int; -pub extern fn SSL_serialize_capabilities(ssl: ?*const SSL, out: [*c]CBB) c_int; +pub extern fn SSL_serialize_capabilities(ssl: ?*const SSL, out: ?*CBB) c_int; pub extern fn SSL_request_handshake_hints(ssl: ?*SSL, client_hello: [*c]const u8, client_hello_len: usize, capabilities: [*c]const u8, capabilities_len: usize) c_int; -pub extern fn SSL_serialize_handshake_hints(ssl: ?*const SSL, out: [*c]CBB) c_int; +pub extern fn SSL_serialize_handshake_hints(ssl: ?*const SSL, out: ?*CBB) c_int; pub extern fn SSL_set_handshake_hints(ssl: ?*SSL, hints: [*c]const u8, hints_len: usize) c_int; pub extern fn SSL_CTX_set_msg_callback(ctx: ?*SSL_CTX, cb: ?*const fn (c_int, c_int, c_int, ?*const anyopaque, usize, ?*SSL, ?*anyopaque) callconv(.C) void) void; pub extern fn SSL_CTX_set_msg_callback_arg(ctx: ?*SSL_CTX, arg: ?*anyopaque) void; @@ -5767,6 +5723,7 @@ pub extern fn SSL_CTX_set_select_certificate_cb(ctx: ?*SSL_CTX, cb: ?*const fn ( pub extern fn SSL_CTX_set_dos_protection_cb(ctx: ?*SSL_CTX, cb: ?*const fn ([*c]const SSL_CLIENT_HELLO) callconv(.C) c_int) void; pub extern fn SSL_CTX_set_reverify_on_resume(ctx: ?*SSL_CTX, enabled: c_int) void; pub extern fn SSL_set_enforce_rsa_key_usage(ssl: ?*SSL, enabled: c_int) void; +pub extern fn SSL_was_key_usage_invalid(ssl: ?*const SSL) c_int; pub extern fn SSL_CTX_set_info_callback(ctx: ?*SSL_CTX, cb: ?*const fn (?*const SSL, c_int, c_int) callconv(.C) void) void; pub extern fn SSL_CTX_get_info_callback(ctx: ?*SSL_CTX) ?*const fn (?*const SSL, c_int, c_int) callconv(.C) void; pub extern fn SSL_set_info_callback(ssl: ?*SSL, cb: ?*const fn (?*const SSL, c_int, c_int) callconv(.C) void) void; @@ -5859,132 +5816,132 @@ pub extern fn i2d_SSL_SESSION_bio(bio: [*c]BIO, session: ?*const SSL_SESSION) c_ pub extern fn d2i_SSL_SESSION_bio(bio: [*c]BIO, out: [*c]?*SSL_SESSION) ?*SSL_SESSION; pub extern fn ERR_load_SSL_strings() void; pub extern fn SSL_load_error_strings() void; -pub extern fn SSL_CTX_set_tlsext_use_srtp(ctx: ?*SSL_CTX, profiles: [*c]const u8) c_int; -pub extern fn SSL_set_tlsext_use_srtp(ssl: ?*SSL, profiles: [*c]const u8) c_int; +// pub extern fn SSL_CTX_set_tlsext_use_srtp(ctx: ?*SSL_CTX, profiles: [*c]const u8) c_int; +// pub extern fn SSL_set_tlsext_use_srtp(ssl: ?*SSL, profiles: [*c]const u8) c_int; pub extern fn SSL_get_current_compression(ssl: ?*SSL) ?*const COMP_METHOD; pub extern fn SSL_get_current_expansion(ssl: ?*SSL) ?*const COMP_METHOD; pub extern fn SSL_get_server_tmp_key(ssl: ?*SSL, out_key: [*c][*c]EVP_PKEY) c_int; -pub extern fn SSL_CTX_set_tmp_dh(ctx: ?*SSL_CTX, dh: [*c]const DH) c_int; -pub extern fn SSL_set_tmp_dh(ssl: ?*SSL, dh: [*c]const DH) c_int; -pub extern fn SSL_CTX_set_tmp_dh_callback(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, c_int, c_int) callconv(.C) [*c]DH) void; -pub extern fn SSL_set_tmp_dh_callback(ssl: ?*SSL, cb: ?*const fn (?*SSL, c_int, c_int) callconv(.C) [*c]DH) void; +pub extern fn SSL_CTX_set_tmp_dh(ctx: ?*SSL_CTX, dh: ?*const DH) c_int; +pub extern fn SSL_set_tmp_dh(ssl: ?*SSL, dh: ?*const DH) c_int; +pub extern fn SSL_CTX_set_tmp_dh_callback(ctx: ?*SSL_CTX, cb: ?*const fn (?*SSL, c_int, c_int) callconv(.C) ?*DH) void; +pub extern fn SSL_set_tmp_dh_callback(ssl: ?*SSL, cb: ?*const fn (?*SSL, c_int, c_int) callconv(.C) ?*DH) void; pub extern fn SSL_CTX_set1_sigalgs(ctx: ?*SSL_CTX, values: [*c]const c_int, num_values: usize) c_int; pub extern fn SSL_set1_sigalgs(ssl: ?*SSL, values: [*c]const c_int, num_values: usize) c_int; pub extern fn SSL_CTX_set1_sigalgs_list(ctx: ?*SSL_CTX, str: [*c]const u8) c_int; pub extern fn SSL_set1_sigalgs_list(ssl: ?*SSL, str: [*c]const u8) c_int; -pub const stack_SSL_COMP_free_func = ?*const fn ([*c]SSL_COMP) callconv(.C) void; -pub const stack_SSL_COMP_copy_func = ?*const fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP; -pub const stack_SSL_COMP_cmp_func = ?*const fn ([*c][*c]const SSL_COMP, [*c][*c]const SSL_COMP) callconv(.C) c_int; -pub fn sk_SSL_COMP_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { +pub const sk_SSL_COMP_free_func = ?*const fn ([*c]SSL_COMP) callconv(.C) void; +pub const sk_SSL_COMP_copy_func = ?*const fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP; +pub const sk_SSL_COMP_cmp_func = ?*const fn ([*c][*c]const SSL_COMP, [*c][*c]const SSL_COMP) callconv(.C) c_int; +pub fn sk_SSL_COMP_call_free_func(arg_free_func: OPENSSL_sk_free_func, arg_ptr: ?*anyopaque) callconv(.C) void { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_SSL_COMP_free_func, @alignCast(@import("std").meta.alignment(fn ([*c]SSL_COMP) callconv(.C) void), free_func)).?(@ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), ptr))); + @as(sk_SSL_COMP_free_func, @ptrCast(@alignCast(free_func))).?(@as([*c]SSL_COMP, @ptrCast(@alignCast(ptr)))); } -pub fn sk_SSL_COMP_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { +pub fn sk_SSL_COMP_call_copy_func(arg_copy_func: OPENSSL_sk_copy_func, arg_ptr: ?*anyopaque) callconv(.C) ?*anyopaque { var copy_func = arg_copy_func; var ptr = arg_ptr; - return @ptrCast(?*anyopaque, @ptrCast(stack_SSL_COMP_copy_func, @alignCast(@import("std").meta.alignment(fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP), copy_func)).?(@ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), ptr)))); + return @as(?*anyopaque, @ptrCast(@as(sk_SSL_COMP_copy_func, @ptrCast(@alignCast(copy_func))).?(@as([*c]SSL_COMP, @ptrCast(@alignCast(ptr)))))); } -pub fn sk_SSL_COMP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const anyopaque, arg_b: [*c]?*const anyopaque) callconv(.C) c_int { +pub fn sk_SSL_COMP_call_cmp_func(arg_cmp_func: OPENSSL_sk_cmp_func, arg_a: [*c]const ?*const anyopaque, arg_b: [*c]const ?*const anyopaque) callconv(.C) c_int { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: [*c]const SSL_COMP = @ptrCast([*c]const SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), a.*)); - var b_ptr: [*c]const SSL_COMP = @ptrCast([*c]const SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), b.*)); - return @ptrCast(stack_SSL_COMP_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const SSL_COMP, [*c][*c]const SSL_COMP) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + var a_ptr: [*c]const SSL_COMP = @as([*c]const SSL_COMP, @ptrCast(@alignCast(a.*))); + var b_ptr: [*c]const SSL_COMP = @as([*c]const SSL_COMP, @ptrCast(@alignCast(b.*))); + return @as(sk_SSL_COMP_cmp_func, @ptrCast(@alignCast(cmp_func))).?(&a_ptr, &b_ptr); } -pub fn sk_SSL_COMP_new(arg_comp: stack_SSL_COMP_cmp_func) callconv(.C) ?*struct_stack_st_SSL_COMP { +pub fn sk_SSL_COMP_new(arg_comp: sk_SSL_COMP_cmp_func) callconv(.C) ?*struct_stack_st_SSL_COMP { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_SSL_COMP, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp)))); + return @as(?*struct_stack_st_SSL_COMP, @ptrCast(sk_new(@as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp)))))); } pub fn sk_SSL_COMP_new_null() callconv(.C) ?*struct_stack_st_SSL_COMP { - return @ptrCast(?*struct_stack_st_SSL_COMP, sk_new_null()); + return @as(?*struct_stack_st_SSL_COMP, @ptrCast(sk_new_null())); } pub fn sk_SSL_COMP_num(arg_sk: ?*const struct_stack_st_SSL_COMP) callconv(.C) usize { var sk = arg_sk; - return sk_num(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_num(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SSL_COMP_zero(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) void { var sk = arg_sk; - sk_zero(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_zero(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } pub fn sk_SSL_COMP_value(arg_sk: ?*const struct_stack_st_SSL_COMP, arg_i: usize) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; var i = arg_i; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_value(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_value(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), i)))); } pub fn sk_SSL_COMP_set(arg_sk: ?*struct_stack_st_SSL_COMP, arg_i: usize, arg_p: [*c]SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; var i = arg_i; var p = arg_p; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p)))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_set(@as([*c]_STACK, @ptrCast(@alignCast(sk))), i, @as(?*anyopaque, @ptrCast(p)))))); } pub fn sk_SSL_COMP_free(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) void { var sk = arg_sk; - sk_free(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_free(@as([*c]_STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SSL_COMP_pop_free(arg_sk: ?*struct_stack_st_SSL_COMP, arg_free_func: stack_SSL_COMP_free_func) callconv(.C) void { +pub fn sk_SSL_COMP_pop_free(arg_sk: ?*struct_stack_st_SSL_COMP, arg_free_func: sk_SSL_COMP_free_func) callconv(.C) void { var sk = arg_sk; var free_func = arg_free_func; - sk_pop_free_ex(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SSL_COMP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func))); + sk_pop_free_ex(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SSL_COMP_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))); } pub fn sk_SSL_COMP_insert(arg_sk: ?*struct_stack_st_SSL_COMP, arg_p: [*c]SSL_COMP, arg_where: usize) callconv(.C) usize { var sk = arg_sk; var p = arg_p; var where = arg_where; - return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); + return sk_insert(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p)), where); } pub fn sk_SSL_COMP_delete(arg_sk: ?*struct_stack_st_SSL_COMP, arg_where: usize) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; var where = arg_where; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_delete(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), where))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_delete(@as([*c]_STACK, @ptrCast(@alignCast(sk))), where)))); } pub fn sk_SSL_COMP_delete_ptr(arg_sk: ?*struct_stack_st_SSL_COMP, arg_p: [*c]const SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; var p = arg_p; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, p)))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_delete_ptr(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*const anyopaque, @ptrCast(p)))))); } pub fn sk_SSL_COMP_find(arg_sk: ?*const struct_stack_st_SSL_COMP, arg_out_index: [*c]usize, arg_p: [*c]const SSL_COMP) callconv(.C) c_int { var sk = arg_sk; var out_index = arg_out_index; var p = arg_p; - return sk_find(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), out_index, @ptrCast(?*const anyopaque, p), sk_SSL_COMP_call_cmp_func); + return sk_find(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), out_index, @as(?*const anyopaque, @ptrCast(p)), &sk_SSL_COMP_call_cmp_func); } pub fn sk_SSL_COMP_shift(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_shift(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_shift(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_SSL_COMP_push(arg_sk: ?*struct_stack_st_SSL_COMP, arg_p: [*c]SSL_COMP) callconv(.C) usize { var sk = arg_sk; var p = arg_p; - return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); + return sk_push(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(?*anyopaque, @ptrCast(p))); } pub fn sk_SSL_COMP_pop(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; - return @ptrCast([*c]SSL_COMP, @alignCast(@import("std").meta.alignment(SSL_COMP), sk_pop(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))))); + return @as([*c]SSL_COMP, @ptrCast(@alignCast(sk_pop(@as([*c]_STACK, @ptrCast(@alignCast(sk))))))); } pub fn sk_SSL_COMP_dup(arg_sk: ?*const struct_stack_st_SSL_COMP) callconv(.C) ?*struct_stack_st_SSL_COMP { var sk = arg_sk; - return @ptrCast(?*struct_stack_st_SSL_COMP, sk_dup(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)))); + return @as(?*struct_stack_st_SSL_COMP, @ptrCast(sk_dup(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))))); } pub fn sk_SSL_COMP_sort(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) void { var sk = arg_sk; - sk_sort(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + sk_sort(@as([*c]_STACK, @ptrCast(@alignCast(sk))), &sk_SSL_COMP_call_cmp_func); } pub fn sk_SSL_COMP_is_sorted(arg_sk: ?*const struct_stack_st_SSL_COMP) callconv(.C) c_int { var sk = arg_sk; - return sk_is_sorted(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk))); + return sk_is_sorted(@as([*c]const _STACK, @ptrCast(@alignCast(sk)))); } -pub fn sk_SSL_COMP_set_cmp_func(arg_sk: ?*struct_stack_st_SSL_COMP, arg_comp: stack_SSL_COMP_cmp_func) callconv(.C) stack_SSL_COMP_cmp_func { +pub fn sk_SSL_COMP_set_cmp_func(arg_sk: ?*struct_stack_st_SSL_COMP, arg_comp: sk_SSL_COMP_cmp_func) callconv(.C) sk_SSL_COMP_cmp_func { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_SSL_COMP_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c][*c]const SSL_COMP, [*c][*c]const SSL_COMP) callconv(.C) c_int), sk_set_cmp_func(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int), comp))))); + return @as(sk_SSL_COMP_cmp_func, @ptrCast(@alignCast(sk_set_cmp_func(@as([*c]_STACK, @ptrCast(@alignCast(sk))), @as(OPENSSL_sk_cmp_func, @ptrCast(@alignCast(comp))))))); } -pub fn sk_SSL_COMP_deep_copy(arg_sk: ?*const struct_stack_st_SSL_COMP, arg_copy_func: ?*const fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP, arg_free_func: ?*const fn ([*c]SSL_COMP) callconv(.C) void) callconv(.C) ?*struct_stack_st_SSL_COMP { +pub fn sk_SSL_COMP_deep_copy(arg_sk: ?*const struct_stack_st_SSL_COMP, arg_copy_func: sk_SSL_COMP_copy_func, arg_free_func: sk_SSL_COMP_free_func) callconv(.C) ?*struct_stack_st_SSL_COMP { var sk = arg_sk; var copy_func = arg_copy_func; var free_func = arg_free_func; - return @ptrCast(?*struct_stack_st_SSL_COMP, sk_deep_copy(@ptrCast([*c]const _STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), sk_SSL_COMP_call_copy_func, @ptrCast(stack_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)), sk_SSL_COMP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)))); + return @as(?*struct_stack_st_SSL_COMP, @ptrCast(sk_deep_copy(@as([*c]const _STACK, @ptrCast(@alignCast(sk))), &sk_SSL_COMP_call_copy_func, @as(OPENSSL_sk_copy_func, @ptrCast(@alignCast(copy_func))), &sk_SSL_COMP_call_free_func, @as(OPENSSL_sk_free_func, @ptrCast(@alignCast(free_func)))))); } pub extern fn SSL_cache_hit(ssl: ?*SSL) c_int; pub extern fn SSL_get_default_timeout(ssl: ?*const SSL) c_long; @@ -6018,9 +5975,119 @@ pub extern fn SSL_get_tlsext_status_ocsp_resp(ssl: ?*const SSL, out: [*c][*c]con pub extern fn SSL_CTX_set_tlsext_status_cb(ctx: ?*SSL_CTX, callback: ?*const fn (?*SSL, ?*anyopaque) callconv(.C) c_int) c_int; pub extern fn SSL_CTX_set_tlsext_status_arg(ctx: ?*SSL_CTX, arg: ?*anyopaque) c_int; pub extern fn SSL_CIPHER_get_value(cipher: ?*const SSL_CIPHER) u16; +pub const ssl_compliance_policy_fips_202205: c_int = 0; +pub const enum_ssl_compliance_policy_t = c_uint; +pub extern fn SSL_CTX_set_compliance_policy(ctx: ?*SSL_CTX, policy: enum_ssl_compliance_policy_t) c_int; +pub extern fn SSL_set_compliance_policy(ssl: ?*SSL, policy: enum_ssl_compliance_policy_t) c_int; +pub const OPENSSL_HEADER_OPENSSLCONF_H = ""; +pub const OPENSSL_NO_ASYNC = ""; +pub const OPENSSL_NO_BF = ""; +pub const OPENSSL_NO_BLAKE2 = ""; +pub const OPENSSL_NO_BUF_FREELISTS = ""; +pub const OPENSSL_NO_CAMELLIA = ""; +pub const OPENSSL_NO_CAPIENG = ""; +pub const OPENSSL_NO_CAST = ""; +pub const OPENSSL_NO_CMS = ""; +pub const OPENSSL_NO_COMP = ""; +pub const OPENSSL_NO_CT = ""; +pub const OPENSSL_NO_DANE = ""; +pub const OPENSSL_NO_DEPRECATED = ""; +pub const OPENSSL_NO_DGRAM = ""; +pub const OPENSSL_NO_DYNAMIC_ENGINE = ""; +pub const OPENSSL_NO_EC_NISTP_64_GCC_128 = ""; +pub const OPENSSL_NO_EC2M = ""; +pub const OPENSSL_NO_EGD = ""; +pub const OPENSSL_NO_ENGINE = ""; +pub const OPENSSL_NO_GMP = ""; +pub const OPENSSL_NO_GOST = ""; +pub const OPENSSL_NO_HEARTBEATS = ""; +pub const OPENSSL_NO_HW = ""; +pub const OPENSSL_NO_IDEA = ""; +pub const OPENSSL_NO_JPAKE = ""; +pub const OPENSSL_NO_KRB5 = ""; +pub const OPENSSL_NO_MD2 = ""; +pub const OPENSSL_NO_MDC2 = ""; +pub const OPENSSL_NO_OCB = ""; +pub const OPENSSL_NO_OCSP = ""; +pub const OPENSSL_NO_RC2 = ""; +pub const OPENSSL_NO_RC5 = ""; +pub const OPENSSL_NO_RFC3779 = ""; +pub const OPENSSL_NO_RIPEMD = ""; +pub const OPENSSL_NO_RMD160 = ""; +pub const OPENSSL_NO_SCTP = ""; +pub const OPENSSL_NO_SEED = ""; +pub const OPENSSL_NO_SM2 = ""; +pub const OPENSSL_NO_SM3 = ""; +pub const OPENSSL_NO_SM4 = ""; +pub const OPENSSL_NO_SRP = ""; +pub const OPENSSL_NO_SSL_TRACE = ""; +pub const OPENSSL_NO_SSL2 = ""; +pub const OPENSSL_NO_SSL3 = ""; +pub const OPENSSL_NO_SSL3_METHOD = ""; +pub const OPENSSL_NO_STATIC_ENGINE = ""; +pub const OPENSSL_NO_STORE = ""; +pub const OPENSSL_NO_WHIRLPOOL = ""; +pub const OPENSSL_64_BIT = ""; +pub const OPENSSL_AARCH64 = ""; +pub const OPENSSL_APPLE = ""; +pub const OPENSSL_MACOS = ""; +pub const OPENSSL_THREADS = ""; +pub const OPENSSL_IS_BORINGSSL = ""; pub const OPENSSL_VERSION_NUMBER = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x1010107f, .hexadecimal); pub const SSLEAY_VERSION_NUMBER = OPENSSL_VERSION_NUMBER; -pub const BORINGSSL_API_VERSION = @as(c_int, 16); +pub const BORINGSSL_API_VERSION = @as(c_int, 18); +pub const OPENSSL_EXPORT = ""; +pub const BORINGSSL_ENUM_INT = ""; +pub const BORINGSSL_NO_CXX = ""; +pub const OPENSSL_HEADER_BIO_H = ""; +pub const _STDIO_H_ = ""; +pub const __STDIO_H_ = ""; +pub const __TYPES_H_ = ""; +pub const _FORTIFY_SOURCE = @as(c_int, 2); +pub const _VA_LIST_T = ""; +pub const _SYS_STDIO_H_ = ""; +pub const RENAME_SECLUDE = @as(c_int, 0x00000001); +pub const RENAME_SWAP = @as(c_int, 0x00000002); +pub const RENAME_EXCL = @as(c_int, 0x00000004); +pub const RENAME_RESERVED1 = @as(c_int, 0x00000008); +pub const RENAME_NOFOLLOW_ANY = @as(c_int, 0x00000010); +pub const _FSTDIO = ""; +pub const __SLBF = @as(c_int, 0x0001); +pub const __SNBF = @as(c_int, 0x0002); +pub const __SRD = @as(c_int, 0x0004); +pub const __SWR = @as(c_int, 0x0008); +pub const __SRW = @as(c_int, 0x0010); +pub const __SEOF = @as(c_int, 0x0020); +pub const __SERR = @as(c_int, 0x0040); +pub const __SMBF = @as(c_int, 0x0080); +pub const __SAPP = @as(c_int, 0x0100); +pub const __SSTR = @as(c_int, 0x0200); +pub const __SOPT = @as(c_int, 0x0400); +pub const __SNPT = @as(c_int, 0x0800); +pub const __SOFF = @as(c_int, 0x1000); +pub const __SMOD = @as(c_int, 0x2000); +pub const __SALC = @as(c_int, 0x4000); +pub const __SIGN = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x8000, .hexadecimal); +pub const _IOFBF = @as(c_int, 0); +pub const _IOLBF = @as(c_int, 1); +pub const _IONBF = @as(c_int, 2); +pub const BUFSIZ = @as(c_int, 1024); +pub const EOF = -@as(c_int, 1); +pub const FOPEN_MAX = @as(c_int, 20); +pub const FILENAME_MAX = @as(c_int, 1024); +pub const P_tmpdir = "/var/tmp/"; +pub const L_tmpnam = @as(c_int, 1024); +pub const TMP_MAX = @import("std").zig.c_translation.promoteIntLiteral(c_int, 308915776, .decimal); +pub const SEEK_SET = @as(c_int, 0); +pub const SEEK_CUR = @as(c_int, 1); +pub const SEEK_END = @as(c_int, 2); +pub const L_ctermid = @as(c_int, 1024); +pub const _CTERMID_H_ = ""; +pub const _SECURE__STDIO_H_ = ""; +pub const _SECURE__COMMON_H_ = ""; +pub const _USE_FORTIFY_LEVEL = @as(c_int, 2); +pub const OPENSSL_HEADER_BUFFER_H = ""; +pub const OPENSSL_HEADER_ERR_H = ""; pub inline fn ERR_GET_LIB(packed_error: anytype) c_int { return @import("std").zig.c_translation.cast(c_int, (packed_error >> @as(c_int, 24)) & @as(c_int, 0xff)); } @@ -6028,6 +6095,7 @@ pub inline fn ERR_GET_REASON(packed_error: anytype) c_int { return @import("std").zig.c_translation.cast(c_int, packed_error & @as(c_int, 0xfff)); } pub const ERR_FLAG_STRING = @as(c_int, 1); +pub const ERR_FLAG_MALLOCED = @as(c_int, 2); pub const ERR_R_SYS_LIB = ERR_LIB_SYS; pub const ERR_R_BN_LIB = ERR_LIB_BN; pub const ERR_R_RSA_LIB = ERR_LIB_RSA; @@ -6048,19 +6116,13 @@ pub const ERR_R_PKCS7_LIB = ERR_LIB_PKCS7; pub const ERR_R_PKCS8_LIB = ERR_LIB_PKCS8; pub const ERR_R_X509V3_LIB = ERR_LIB_X509V3; pub const ERR_R_RAND_LIB = ERR_LIB_RAND; -pub const ERR_R_DSO_LIB = ERR_LIB_DSO; pub const ERR_R_ENGINE_LIB = ERR_LIB_ENGINE; pub const ERR_R_OCSP_LIB = ERR_LIB_OCSP; pub const ERR_R_UI_LIB = ERR_LIB_UI; pub const ERR_R_COMP_LIB = ERR_LIB_COMP; pub const ERR_R_ECDSA_LIB = ERR_LIB_ECDSA; pub const ERR_R_ECDH_LIB = ERR_LIB_ECDH; -pub const ERR_R_STORE_LIB = ERR_LIB_STORE; -pub const ERR_R_FIPS_LIB = ERR_LIB_FIPS; -pub const ERR_R_CMS_LIB = ERR_LIB_CMS; -pub const ERR_R_TS_LIB = ERR_LIB_TS; pub const ERR_R_HMAC_LIB = ERR_LIB_HMAC; -pub const ERR_R_JPAKE_LIB = ERR_LIB_JPAKE; pub const ERR_R_USER_LIB = ERR_LIB_USER; pub const ERR_R_DIGEST_LIB = ERR_LIB_DIGEST; pub const ERR_R_CIPHER_LIB = ERR_LIB_CIPHER; @@ -6074,17 +6136,21 @@ pub const ERR_R_INTERNAL_ERROR = @as(c_int, 4) | ERR_R_FATAL; pub const ERR_R_OVERFLOW = @as(c_int, 5) | ERR_R_FATAL; pub const ERR_ERROR_STRING_BUF_LEN = @as(c_int, 120); pub inline fn ERR_GET_FUNC(packed_error: anytype) @TypeOf(@as(c_int, 0)) { - _ = packed_error; + _ = @TypeOf(packed_error); return @as(c_int, 0); } pub const ERR_TXT_STRING = ERR_FLAG_STRING; +pub const ERR_TXT_MALLOCED = ERR_FLAG_MALLOCED; pub const ERR_NUM_ERRORS = @as(c_int, 16); pub inline fn ERR_PACK(lib: anytype, reason: anytype) @TypeOf(((@import("std").zig.c_translation.cast(u32, lib) & @as(c_int, 0xff)) << @as(c_int, 24)) | (@import("std").zig.c_translation.cast(u32, reason) & @as(c_int, 0xfff))) { return ((@import("std").zig.c_translation.cast(u32, lib) & @as(c_int, 0xff)) << @as(c_int, 24)) | (@import("std").zig.c_translation.cast(u32, reason) & @as(c_int, 0xfff)); } +pub const OPENSSL_HEADER_EX_DATA_H = ""; +pub const OPENSSL_HEADER_STACK_H = ""; pub inline fn DEFINE_STACK_OF(@"type": anytype) @TypeOf(DEFINE_NAMED_STACK_OF(@"type", @"type")) { return DEFINE_NAMED_STACK_OF(@"type", @"type"); } +pub const OPENSSL_HEADER_THREAD_H = ""; pub const CRYPTO_LOCK = @as(c_int, 1); pub const CRYPTO_UNLOCK = @as(c_int, 2); pub const CRYPTO_READ = @as(c_int, 4); @@ -6224,6 +6290,9 @@ pub const BIO_R_UNABLE_TO_CREATE_SOCKET = @as(c_int, 113); pub const BIO_R_UNINITIALIZED = @as(c_int, 114); pub const BIO_R_UNSUPPORTED_METHOD = @as(c_int, 115); pub const BIO_R_WRITE_TO_READ_ONLY_BIO = @as(c_int, 116); +pub const OPENSSL_HEADER_PEM_H = ""; +pub const OPENSSL_HEADER_BASE64_H = ""; +pub const OPENSSL_HEADER_CIPHER_H = ""; pub const EVP_CIPH_STREAM_CIPHER = @as(c_int, 0x0); pub const EVP_CIPH_ECB_MODE = @as(c_int, 0x1); pub const EVP_CIPH_CBC_MODE = @as(c_int, 0x2); @@ -6297,6 +6366,7 @@ pub const CIPHER_R_UNSUPPORTED_TAG_SIZE = @as(c_int, 122); pub const CIPHER_R_WRONG_FINAL_BLOCK_LENGTH = @as(c_int, 123); pub const CIPHER_R_NO_DIRECTION_SET = @as(c_int, 124); pub const CIPHER_R_INVALID_NONCE = @as(c_int, 125); +pub const OPENSSL_HEADER_DIGEST_H = ""; pub const EVP_MAX_MD_SIZE = @as(c_int, 64); pub const EVP_MAX_MD_BLOCK_SIZE = @as(c_int, 128); pub const EVP_MD_FLAG_PKEY_DIGEST = @as(c_int, 1); @@ -6306,6 +6376,8 @@ pub const EVP_MD_CTX_FLAG_NON_FIPS_ALLOW = @as(c_int, 0); pub const DIGEST_R_INPUT_NOT_INITIALIZED = @as(c_int, 100); pub const DIGEST_R_DECODE_ERROR = @as(c_int, 101); pub const DIGEST_R_UNKNOWN_HASH = @as(c_int, 102); +pub const OPENSSL_HEADER_EVP_H = ""; +pub const OPENSSL_HEADER_EVP_ERRORS_H = ""; pub const EVP_R_BUFFER_TOO_SMALL = @as(c_int, 100); pub const EVP_R_COMMAND_NOT_SUPPORTED = @as(c_int, 101); pub const EVP_R_DECODE_ERROR = @as(c_int, 102); @@ -6344,10 +6416,12 @@ pub const EVP_R_INVALID_PEER_KEY = @as(c_int, 134); pub const EVP_R_NOT_XOF_OR_INVALID_LENGTH = @as(c_int, 135); pub const EVP_R_EMPTY_PSK = @as(c_int, 136); pub const EVP_R_INVALID_BUFFER_SIZE = @as(c_int, 137); +pub const OPENSSL_HEADER_AEAD_H = ""; pub const EVP_AEAD_MAX_KEY_LENGTH = @as(c_int, 80); pub const EVP_AEAD_MAX_NONCE_LENGTH = @as(c_int, 24); pub const EVP_AEAD_MAX_OVERHEAD = @as(c_int, 64); pub const EVP_AEAD_DEFAULT_TAG_LENGTH = @as(c_int, 0); +pub const OPENSSL_HEADER_NID_H = ""; pub const SN_undef = "UNDEF"; pub const LN_undef = "undefined"; pub const NID_undef = @as(c_int, 0); @@ -14918,6 +14992,7 @@ pub const OBJ_id_HMACGostR3411_94 = blk: { pub const SN_id_GostR3410_2001 = "gost2001"; pub const LN_id_GostR3410_2001 = "GOST R 34.10-2001"; pub const NID_id_GostR3410_2001 = @as(c_int, 811); + pub const OBJ_id_GostR3410_2001 = blk: { _ = @as(c_long, 1); _ = @as(c_long, 2); @@ -14926,6 +15001,9 @@ pub const OBJ_id_GostR3410_2001 = blk: { _ = @as(c_long, 2); break :blk @as(c_long, 19); }; + +pub const NID_id_GostR3410_2012_256 = @as(c_int, 979); +pub const NID_id_GostR3410_2012_512 = @as(c_int, 980); pub const SN_id_GostR3410_94 = "gost94"; pub const LN_id_GostR3410_94 = "GOST R 34.10-94"; pub const NID_id_GostR3410_94 = @as(c_int, 812); @@ -16367,6 +16445,9 @@ pub const OBJ_sha512_256 = blk: { _ = @as(c_long, 2); break :blk @as(c_long, 6); }; +pub const SN_hkdf = "HKDF"; +pub const LN_hkdf = "hkdf"; +pub const NID_hkdf = @as(c_int, 963); pub const EVP_PKEY_NONE = NID_undef; pub const EVP_PKEY_RSA = NID_rsaEncryption; pub const EVP_PKEY_RSA_PSS = NID_rsassaPss; @@ -16374,10 +16455,12 @@ pub const EVP_PKEY_DSA = NID_dsa; pub const EVP_PKEY_EC = NID_X9_62_id_ecPublicKey; pub const EVP_PKEY_ED25519 = NID_ED25519; pub const EVP_PKEY_X25519 = NID_X25519; +pub const EVP_PKEY_HKDF = NID_hkdf; pub const EVP_PKEY_DH = NID_dhKeyAgreement; pub const EVP_PKEY_RSA2 = NID_rsa; pub const EVP_PKEY_X448 = NID_X448; pub const EVP_PKEY_ED448 = NID_ED448; +pub const OPENSSL_HEADER_PKCS7_H = ""; pub const PKCS7_DETACHED = @as(c_int, 0x40); pub const PKCS7_TEXT = @as(c_int, 0x1); pub const PKCS7_NOCERTS = @as(c_int, 0x2); @@ -16394,17 +16477,11 @@ pub const PKCS7_R_BAD_PKCS7_VERSION = @as(c_int, 100); pub const PKCS7_R_NOT_PKCS7_SIGNED_DATA = @as(c_int, 101); pub const PKCS7_R_NO_CERTIFICATES_INCLUDED = @as(c_int, 102); pub const PKCS7_R_NO_CRLS_INCLUDED = @as(c_int, 103); -pub const _STRUCT_TIMESPEC = struct_timespec; -pub const CLOCKS_PER_SEC = @import("std").zig.c_translation.promoteIntLiteral(c_int, 1000000, .decimal); -pub const CLOCK_REALTIME = _CLOCK_REALTIME; -pub const CLOCK_MONOTONIC = _CLOCK_MONOTONIC; -pub const CLOCK_MONOTONIC_RAW = _CLOCK_MONOTONIC_RAW; -pub const CLOCK_MONOTONIC_RAW_APPROX = _CLOCK_MONOTONIC_RAW_APPROX; -pub const CLOCK_UPTIME_RAW = _CLOCK_UPTIME_RAW; -pub const CLOCK_UPTIME_RAW_APPROX = _CLOCK_UPTIME_RAW_APPROX; -pub const CLOCK_PROCESS_CPUTIME_ID = _CLOCK_PROCESS_CPUTIME_ID; -pub const CLOCK_THREAD_CPUTIME_ID = _CLOCK_THREAD_CPUTIME_ID; -pub const TIME_UTC = @as(c_int, 1); +pub const HEADER_X509_H = ""; +pub const HEADER_ASN1_H = ""; +pub const OPENSSL_HEADER_BN_H = ""; +pub const __CLANG_INTTYPES_H = ""; +pub const _INTTYPES_H_ = ""; pub const __PRI_8_LENGTH_MODIFIER__ = "hh"; pub const __PRI_64_LENGTH_MODIFIER__ = "ll"; pub const __SCN_64_LENGTH_MODIFIER__ = "ll"; @@ -16564,7 +16641,6 @@ pub const SCNiMAX = __SCN_MAX_LENGTH_MODIFIER__ ++ "i"; pub const SCNoMAX = __SCN_MAX_LENGTH_MODIFIER__ ++ "o"; pub const SCNuMAX = __SCN_MAX_LENGTH_MODIFIER__ ++ "u"; pub const SCNxMAX = __SCN_MAX_LENGTH_MODIFIER__ ++ "x"; -pub const BN_ULONG = u64; pub const BN_BITS2 = @as(c_int, 64); pub const BN_DEC_FMT1 = "%" ++ PRIu64; pub const BN_DEC_FMT2 = "%019" ++ PRIu64; @@ -16718,9 +16794,9 @@ pub inline fn M_ASN1_BIT_STRING_dup(a: anytype) @TypeOf(ASN1_STRING_dup(a)) { pub inline fn M_ASN1_BIT_STRING_cmp(a: anytype, b: anytype) @TypeOf(ASN1_STRING_cmp(a, b)) { return ASN1_STRING_cmp(a, b); } -pub inline fn M_ASN1_BIT_STRING_set(a: anytype, b: anytype, c: anytype) @TypeOf(ASN1_BIT_STRING_set(a, b, c)) { - return ASN1_BIT_STRING_set(a, b, c); -} +// pub inline fn M_ASN1_BIT_STRING_set(a: anytype, b: anytype, c: anytype) @TypeOf(ASN1_BIT_STRING_set(a, b, c)) { +// return ASN1_BIT_STRING_set(a, b, c); +// } pub inline fn M_ASN1_INTEGER_new() @TypeOf(ASN1_INTEGER_new()) { return ASN1_INTEGER_new(); } @@ -16749,7 +16825,7 @@ pub inline fn M_ASN1_OCTET_STRING_new() @TypeOf(ASN1_OCTET_STRING_new()) { return ASN1_OCTET_STRING_new(); } pub inline fn M_ASN1_OCTET_STRING_free(a: anytype) @TypeOf(ASN1_OCTET_STRING_free()) { - _ = a; + _ = @TypeOf(a); return ASN1_OCTET_STRING_free(); } pub inline fn M_ASN1_OCTET_STRING_dup(a: anytype) @TypeOf(ASN1_OCTET_STRING_dup(a)) { @@ -16929,6 +17005,9 @@ pub const ASN1_R_WRONG_TYPE = @as(c_int, 191); pub const ASN1_R_NESTED_TOO_DEEP = @as(c_int, 192); pub const ASN1_R_BAD_TEMPLATE = @as(c_int, 193); pub const ASN1_R_INVALID_BIT_STRING_PADDING = @as(c_int, 194); +pub const ASN1_R_WRONG_INTEGER_TYPE = @as(c_int, 195); +pub const ASN1_R_INVALID_INTEGER = @as(c_int, 196); +pub const OPENSSL_HEADER_DH_H = ""; pub const DH_GENERATOR_2 = @as(c_int, 2); pub const DH_GENERATOR_5 = @as(c_int, 5); pub const DH_CHECK_P_NOT_PRIME = @as(c_int, 0x01); @@ -16937,7 +17016,6 @@ pub const DH_CHECK_UNABLE_TO_CHECK_GENERATOR = @as(c_int, 0x04); pub const DH_CHECK_NOT_SUITABLE_GENERATOR = @as(c_int, 0x08); pub const DH_CHECK_Q_NOT_PRIME = @as(c_int, 0x10); pub const DH_CHECK_INVALID_Q_VALUE = @as(c_int, 0x20); -pub const DH_CHECK_INVALID_J_VALUE = @as(c_int, 0x40); pub const DH_NOT_SUITABLE_GENERATOR = DH_CHECK_NOT_SUITABLE_GENERATOR; pub const DH_UNABLE_TO_CHECK_GENERATOR = DH_CHECK_UNABLE_TO_CHECK_GENERATOR; pub const DH_CHECK_PUBKEY_TOO_SMALL = @as(c_int, 0x1); @@ -16949,6 +17027,8 @@ pub const DH_R_MODULUS_TOO_LARGE = @as(c_int, 102); pub const DH_R_NO_PRIVATE_VALUE = @as(c_int, 103); pub const DH_R_DECODE_ERROR = @as(c_int, 104); pub const DH_R_ENCODE_ERROR = @as(c_int, 105); +pub const OPENSSL_HEADER_DSA_H = ""; +pub const OPENSSL_HEADER_ENGINE_H = ""; pub const ENGINE_R_OPERATION_NOT_SUPPORTED = @as(c_int, 100); pub const DSA_R_BAD_Q_VALUE = @as(c_int, 100); pub const DSA_R_MISSING_PARAMETERS = @as(c_int, 101); @@ -16958,8 +17038,10 @@ pub const DSA_R_BAD_VERSION = @as(c_int, 104); pub const DSA_R_DECODE_ERROR = @as(c_int, 105); pub const DSA_R_ENCODE_ERROR = @as(c_int, 106); pub const DSA_R_INVALID_PARAMETERS = @as(c_int, 107); +pub const OPENSSL_HEADER_EC_H = ""; pub const OPENSSL_EC_EXPLICIT_CURVE = @as(c_int, 0); pub const OPENSSL_EC_NAMED_CURVE = @as(c_int, 1); +pub const OPENSSL_HEADER_EC_KEY_H = ""; pub const EC_PKEY_NO_PARAMETERS = @as(c_int, 0x001); pub const EC_PKEY_NO_PUBKEY = @as(c_int, 0x002); pub const ECDSA_FLAG_OPAQUE = @as(c_int, 1); @@ -16997,16 +17079,21 @@ pub const EC_R_GROUP_MISMATCH = @as(c_int, 130); pub const EC_R_INVALID_COFACTOR = @as(c_int, 131); pub const EC_R_PUBLIC_KEY_VALIDATION_FAILED = @as(c_int, 132); pub const EC_R_INVALID_SCALAR = @as(c_int, 133); +pub const OPENSSL_HEADER_ECDH_H = ""; pub const ECDH_R_KDF_FAILED = @as(c_int, 100); pub const ECDH_R_NO_PRIVATE_VALUE = @as(c_int, 101); pub const ECDH_R_POINT_ARITHMETIC_FAILURE = @as(c_int, 102); pub const ECDH_R_UNKNOWN_DIGEST_LENGTH = @as(c_int, 103); +pub const OPENSSL_HEADER_ECDSA_H = ""; pub const ECDSA_R_BAD_SIGNATURE = @as(c_int, 100); pub const ECDSA_R_MISSING_PARAMETERS = @as(c_int, 101); pub const ECDSA_R_NEED_NEW_SETUP_VALUES = @as(c_int, 102); pub const ECDSA_R_NOT_IMPLEMENTED = @as(c_int, 103); pub const ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED = @as(c_int, 104); pub const ECDSA_R_ENCODE_ERROR = @as(c_int, 105); +pub const OPENSSL_HEADER_OBJ_H = ""; +pub const OPENSSL_HEADER_BYTESTRING_H = ""; +pub const OPENSSL_HEADER_SSL_SPAN_H = ""; pub const CBS_ASN1_TAG_SHIFT = @as(c_int, 24); pub const CBS_ASN1_CONSTRUCTED = @as(c_uint, 0x20) << CBS_ASN1_TAG_SHIFT; pub const CBS_ASN1_UNIVERSAL = @as(c_uint, 0) << CBS_ASN1_TAG_SHIFT; @@ -17041,6 +17128,8 @@ pub const OBJ_NAME_TYPE_MD_METH = @as(c_int, 1); pub const OBJ_NAME_TYPE_CIPHER_METH = @as(c_int, 2); pub const OBJ_R_UNKNOWN_NID = @as(c_int, 100); pub const OBJ_R_INVALID_OID_STRING = @as(c_int, 101); +pub const OPENSSL_HEADER_POOL_H = ""; +pub const OPENSSL_HEADER_RSA_H = ""; pub const RSA_PKCS1_PADDING = @as(c_int, 1); pub const RSA_NO_PADDING = @as(c_int, 3); pub const RSA_PKCS1_OAEP_PADDING = @as(c_int, 4); @@ -17100,6 +17189,7 @@ pub const RSA_R_WRONG_SIGNATURE_LENGTH = @as(c_int, 145); pub const RSA_R_PUBLIC_KEY_VALIDATION_FAILED = @as(c_int, 146); pub const RSA_R_D_OUT_OF_RANGE = @as(c_int, 147); pub const RSA_R_BLOCK_TYPE_IS_NOT_02 = @as(c_int, 148); +pub const OPENSSL_HEADER_SHA_H = ""; pub const SHA_CBLOCK = @as(c_int, 64); pub const SHA_DIGEST_LENGTH = @as(c_int, 20); pub const SHA224_CBLOCK = @as(c_int, 64); @@ -17111,6 +17201,23 @@ pub const SHA384_DIGEST_LENGTH = @as(c_int, 48); pub const SHA512_CBLOCK = @as(c_int, 128); pub const SHA512_DIGEST_LENGTH = @as(c_int, 64); pub const SHA512_256_DIGEST_LENGTH = @as(c_int, 32); +pub const X509_VERSION_1 = @as(c_int, 0); +pub const X509_VERSION_2 = @as(c_int, 1); +pub const X509_VERSION_3 = @as(c_int, 2); +pub const X509_CRL_VERSION_1 = @as(c_int, 0); +pub const X509_CRL_VERSION_2 = @as(c_int, 1); +pub const X509_REQ_VERSION_1 = @as(c_int, 0); +pub inline fn X509_extract_key(x: anytype) @TypeOf(X509_get_pubkey(x)) { + return X509_get_pubkey(x); +} +pub inline fn X509_REQ_extract_key(a: anytype) @TypeOf(X509_REQ_get_pubkey(a)) { + return X509_REQ_get_pubkey(a); +} +pub inline fn X509_name_cmp(a: anytype, b: anytype) @TypeOf(X509_NAME_cmp(a, b)) { + return X509_NAME_cmp(a, b); +} +pub const X509_CRL_set_lastUpdate = X509_CRL_set1_lastUpdate; +pub const X509_CRL_set_nextUpdate = X509_CRL_set1_nextUpdate; pub const X509_FILETYPE_PEM = @as(c_int, 1); pub const X509_FILETYPE_ASN1 = @as(c_int, 2); pub const X509_FILETYPE_DEFAULT = @as(c_int, 3); @@ -17172,32 +17279,9 @@ pub const XN_FLAG_FN_ALIGN = @as(c_int, 1) << @as(c_int, 25); pub const XN_FLAG_RFC2253 = (((ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS) | XN_FLAG_DN_REV) | XN_FLAG_FN_SN) | XN_FLAG_DUMP_UNKNOWN_FIELDS; pub const XN_FLAG_ONELINE = (((ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE) | XN_FLAG_SEP_CPLUS_SPC) | XN_FLAG_SPC_EQ) | XN_FLAG_FN_SN; pub const XN_FLAG_MULTILINE = ((((ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB) | XN_FLAG_SEP_MULTILINE) | XN_FLAG_SPC_EQ) | XN_FLAG_FN_LN) | XN_FLAG_FN_ALIGN; -pub const X509_VERSION_1 = @as(c_int, 0); -pub const X509_VERSION_2 = @as(c_int, 1); -pub const X509_VERSION_3 = @as(c_int, 2); -pub inline fn X509_extract_key(x: anytype) @TypeOf(X509_get_pubkey(x)) { - return X509_get_pubkey(x); -} -pub const X509_REQ_VERSION_1 = @as(c_int, 0); -pub inline fn X509_REQ_extract_key(a: anytype) @TypeOf(X509_REQ_get_pubkey(a)) { - return X509_REQ_get_pubkey(a); -} -pub inline fn X509_name_cmp(a: anytype, b: anytype) @TypeOf(X509_NAME_cmp(a, b)) { - return X509_NAME_cmp(a, b); -} -pub const X509_CRL_VERSION_1 = @as(c_int, 0); -pub const X509_CRL_VERSION_2 = @as(c_int, 1); -pub const X509_CRL_set_lastUpdate = X509_CRL_set1_lastUpdate; -pub const X509_CRL_set_nextUpdate = X509_CRL_set1_nextUpdate; pub const X509_LU_X509 = @as(c_int, 1); pub const X509_LU_CRL = @as(c_int, 2); pub const X509_LU_PKEY = @as(c_int, 3); -pub inline fn X509_STORE_CTX_set_app_data(ctx: anytype, data: anytype) @TypeOf(X509_STORE_CTX_set_ex_data(ctx, @as(c_int, 0), data)) { - return X509_STORE_CTX_set_ex_data(ctx, @as(c_int, 0), data); -} -pub inline fn X509_STORE_CTX_get_app_data(ctx: anytype) @TypeOf(X509_STORE_CTX_get_ex_data(ctx, @as(c_int, 0))) { - return X509_STORE_CTX_get_ex_data(ctx, @as(c_int, 0)); -} pub const X509_L_FILE_LOAD = @as(c_int, 1); pub const X509_L_ADD_DIR = @as(c_int, 2); pub inline fn X509_LOOKUP_load_file(x: anytype, name: anytype, @"type": anytype) @TypeOf(X509_LOOKUP_ctrl(x, X509_L_FILE_LOAD, name, @import("std").zig.c_translation.cast(c_long, @"type"), NULL)) { @@ -17261,12 +17345,6 @@ pub const X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE = @as(c_int, 51); pub const X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX = @as(c_int, 52); pub const X509_V_ERR_UNSUPPORTED_NAME_SYNTAX = @as(c_int, 53); pub const X509_V_ERR_CRL_PATH_VALIDATION_ERROR = @as(c_int, 54); -pub const X509_V_ERR_SUITE_B_INVALID_VERSION = @as(c_int, 56); -pub const X509_V_ERR_SUITE_B_INVALID_ALGORITHM = @as(c_int, 57); -pub const X509_V_ERR_SUITE_B_INVALID_CURVE = @as(c_int, 58); -pub const X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM = @as(c_int, 59); -pub const X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED = @as(c_int, 60); -pub const X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 = @as(c_int, 61); pub const X509_V_ERR_HOSTNAME_MISMATCH = @as(c_int, 62); pub const X509_V_ERR_EMAIL_MISMATCH = @as(c_int, 63); pub const X509_V_ERR_IP_ADDRESS_MISMATCH = @as(c_int, 64); @@ -17289,11 +17367,9 @@ pub const X509_V_FLAG_EXTENDED_CRL_SUPPORT = @as(c_int, 0x1000); pub const X509_V_FLAG_USE_DELTAS = @as(c_int, 0x2000); pub const X509_V_FLAG_CHECK_SS_SIGNATURE = @as(c_int, 0x4000); pub const X509_V_FLAG_TRUSTED_FIRST = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x8000, .hexadecimal); -pub const X509_V_FLAG_SUITEB_128_LOS_ONLY = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x10000, .hexadecimal); -pub const X509_V_FLAG_SUITEB_192_LOS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x20000, .hexadecimal); -pub const X509_V_FLAG_SUITEB_128_LOS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x30000, .hexadecimal); pub const X509_V_FLAG_PARTIAL_CHAIN = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x80000, .hexadecimal); pub const X509_V_FLAG_NO_ALT_CHAINS = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x100000, .hexadecimal); +pub const X509_V_FLAG_NO_CHECK_TIME = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x200000, .hexadecimal); pub const X509_VP_FLAG_DEFAULT = @as(c_int, 0x1); pub const X509_VP_FLAG_OVERWRITE = @as(c_int, 0x2); pub const X509_VP_FLAG_RESET_FLAGS = @as(c_int, 0x4); @@ -17350,6 +17426,11 @@ pub const X509_R_SIGNATURE_ALGORITHM_MISMATCH = @as(c_int, 137); pub const X509_R_DELTA_CRL_WITHOUT_CRL_NUMBER = @as(c_int, 138); pub const X509_R_INVALID_FIELD_FOR_VERSION = @as(c_int, 139); pub const X509_R_INVALID_VERSION = @as(c_int, 140); +pub const X509_R_NO_CERTIFICATE_FOUND = @as(c_int, 141); +pub const X509_R_NO_CERTIFICATE_OR_CRL_FOUND = @as(c_int, 142); +pub const X509_R_NO_CRL_FOUND = @as(c_int, 143); +pub const OPENSSL_HEADER_CRYPTO_H = ""; +pub const OPENSSL_HEADER_MEM_H = ""; pub const OPENSSL_VERSION_TEXT = "OpenSSL 1.1.1 (compatible; BoringSSL)"; pub const OPENSSL_VERSION = @as(c_int, 0); pub const OPENSSL_CFLAGS = @as(c_int, 1); @@ -17413,6 +17494,7 @@ pub const PEM_R_READ_KEY = @as(c_int, 111); pub const PEM_R_SHORT_HEADER = @as(c_int, 112); pub const PEM_R_UNSUPPORTED_CIPHER = @as(c_int, 113); pub const PEM_R_UNSUPPORTED_ENCRYPTION = @as(c_int, 114); +pub const OPENSSL_HEADER_SSL3_H = ""; pub const SSL2_MT_CLIENT_HELLO = @as(c_int, 1); pub const SSL2_VERSION = @as(c_int, 0x0002); pub const SSL3_CK_SCSV = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x030000FF, .hexadecimal); @@ -17495,6 +17577,7 @@ pub const SSL3_RT_ALERT = @as(c_int, 21); pub const SSL3_RT_HANDSHAKE = @as(c_int, 22); pub const SSL3_RT_APPLICATION_DATA = @as(c_int, 23); pub const SSL3_RT_HEADER = @as(c_int, 0x100); +pub const SSL3_RT_CLIENT_HELLO_INNER = @as(c_int, 0x101); pub const SSL3_AL_WARNING = @as(c_int, 1); pub const SSL3_AL_FATAL = @as(c_int, 2); pub const SSL3_AD_CLOSE_NOTIFY = @as(c_int, 0); @@ -17535,6 +17618,7 @@ pub const DTLS1_MT_HELLO_VERIFY_REQUEST = @as(c_int, 3); pub const SSL3_MT_SERVER_DONE = SSL3_MT_SERVER_HELLO_DONE; pub const SSL3_MT_NEWSESSION_TICKET = SSL3_MT_NEW_SESSION_TICKET; pub const SSL3_MT_CCS = @as(c_int, 1); +pub const OPENSSL_HEADER_TLS1_H = ""; pub const TLS1_AD_END_OF_EARLY_DATA = @as(c_int, 1); pub const TLS1_AD_DECRYPTION_FAILED = @as(c_int, 21); pub const TLS1_AD_RECORD_OVERFLOW = @as(c_int, 22); @@ -17727,9 +17811,12 @@ pub const TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 = @import("std").zig.c_transl pub const TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x0300CCA8, .hexadecimal); pub const TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x0300CCA9, .hexadecimal); pub const TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x0300CCAC, .hexadecimal); -pub const TLS1_CK_AES_128_GCM_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001301, .hexadecimal); -pub const TLS1_CK_AES_256_GCM_SHA384 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001302, .hexadecimal); -pub const TLS1_CK_CHACHA20_POLY1305_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001303, .hexadecimal); +pub const TLS1_3_CK_AES_128_GCM_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001301, .hexadecimal); +pub const TLS1_3_CK_AES_256_GCM_SHA384 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001302, .hexadecimal); +pub const TLS1_3_CK_CHACHA20_POLY1305_SHA256 = @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x03001303, .hexadecimal); +pub const TLS1_CK_AES_128_GCM_SHA256 = TLS1_3_CK_AES_128_GCM_SHA256; +pub const TLS1_CK_AES_256_GCM_SHA384 = TLS1_3_CK_AES_256_GCM_SHA384; +pub const TLS1_CK_CHACHA20_POLY1305_SHA256 = TLS1_3_CK_CHACHA20_POLY1305_SHA256; pub const TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 = "EXP1024-RC4-MD5"; pub const TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 = "EXP1024-RC2-CBC-MD5"; pub const TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA = "EXP1024-DES-CBC-SHA"; @@ -17851,9 +17938,12 @@ pub const TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 = "ECDH-RSA-AES256-GCM-SHA38 pub const TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = "ECDHE-RSA-CHACHA20-POLY1305"; pub const TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = "ECDHE-ECDSA-CHACHA20-POLY1305"; pub const TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = "ECDHE-PSK-CHACHA20-POLY1305"; -pub const TLS1_TXT_AES_128_GCM_SHA256 = "TLS_AES_128_GCM_SHA256"; -pub const TLS1_TXT_AES_256_GCM_SHA384 = "TLS_AES_256_GCM_SHA384"; -pub const TLS1_TXT_CHACHA20_POLY1305_SHA256 = "TLS_CHACHA20_POLY1305_SHA256"; +pub const TLS1_3_RFC_AES_128_GCM_SHA256 = "TLS_AES_128_GCM_SHA256"; +pub const TLS1_3_RFC_AES_256_GCM_SHA384 = "TLS_AES_256_GCM_SHA384"; +pub const TLS1_3_RFC_CHACHA20_POLY1305_SHA256 = "TLS_CHACHA20_POLY1305_SHA256"; +pub const TLS1_TXT_AES_128_GCM_SHA256 = TLS1_3_RFC_AES_128_GCM_SHA256; +pub const TLS1_TXT_AES_256_GCM_SHA384 = TLS1_3_RFC_AES_256_GCM_SHA384; +pub const TLS1_TXT_CHACHA20_POLY1305_SHA256 = TLS1_3_RFC_CHACHA20_POLY1305_SHA256; pub const TLS_CT_RSA_SIGN = @as(c_int, 1); pub const TLS_CT_DSS_SIGN = @as(c_int, 2); pub const TLS_CT_RSA_FIXED_DH = @as(c_int, 3); @@ -17862,6 +17952,8 @@ pub const TLS_CT_ECDSA_SIGN = @as(c_int, 64); pub const TLS_CT_RSA_FIXED_ECDH = @as(c_int, 65); pub const TLS_CT_ECDSA_FIXED_ECDH = @as(c_int, 66); pub const TLS_MD_MAX_CONST_SIZE = @as(c_int, 20); +pub const _SYS_TIME_H_ = ""; +pub const _STRUCT_TIMEVAL64 = ""; pub const ITIMER_REAL = @as(c_int, 0); pub const ITIMER_VIRTUAL = @as(c_int, 1); pub const ITIMER_PROF = @as(c_int, 2); @@ -17878,6 +17970,8 @@ pub inline fn timerisset(tvp: anytype) @TypeOf((tvp.*.tv_sec != 0) or (tvp.*.tv_ pub inline fn timevalcmp(l: anytype, r: anytype, cmp: anytype) @TypeOf(timercmp(l, r, cmp)) { return timercmp(l, r, cmp); } +pub const _SYS__SELECT_H_ = ""; +pub const OPENSSL_HEADER_HMAC_H = ""; pub const SSL_KEY_UPDATE_REQUESTED = @as(c_int, 1); pub const SSL_KEY_UPDATE_NOT_REQUESTED = @as(c_int, 0); pub const SSL_ERROR_NONE = @as(c_int, 0); @@ -18180,13 +18274,13 @@ pub inline fn SSL_get_state(ssl: anytype) @TypeOf(SSL_state(ssl)) { return SSL_state(ssl); } pub inline fn SSL_CTX_set_ecdh_auto(ctx: anytype, onoff: anytype) @TypeOf(@as(c_int, 1)) { - _ = ctx; - _ = onoff; + _ = @TypeOf(ctx); + _ = @TypeOf(onoff); return @as(c_int, 1); } pub inline fn SSL_set_ecdh_auto(ssl: anytype, onoff: anytype) @TypeOf(@as(c_int, 1)) { - _ = ssl; - _ = onoff; + _ = @TypeOf(ssl); + _ = @TypeOf(onoff); return @as(c_int, 1); } pub const SSL_get0_session = SSL_get_session; @@ -18202,55 +18296,6 @@ pub const SSL_R_TLSV1_UNRECOGNIZED_NAME = SSL_R_TLSV1_ALERT_UNRECOGNIZED_NAME; pub const SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE = SSL_R_TLSV1_ALERT_BAD_CERTIFICATE_STATUS_RESPONSE; pub const SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE = SSL_R_TLSV1_ALERT_BAD_CERTIFICATE_HASH_VALUE; pub const SSL_R_TLSV1_CERTIFICATE_REQUIRED = SSL_R_TLSV1_ALERT_CERTIFICATE_REQUIRED; -pub const DTLS_CTRL_GET_TIMEOUT = doesnt_exist; -pub const DTLS_CTRL_HANDLE_TIMEOUT = doesnt_exist; -pub const SSL_CTRL_CHAIN = doesnt_exist; -pub const SSL_CTRL_CHAIN_CERT = doesnt_exist; -pub const SSL_CTRL_CHANNEL_ID = doesnt_exist; -pub const SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS = doesnt_exist; -pub const SSL_CTRL_CLEAR_MODE = doesnt_exist; -pub const SSL_CTRL_CLEAR_OPTIONS = doesnt_exist; -pub const SSL_CTRL_EXTRA_CHAIN_CERT = doesnt_exist; -pub const SSL_CTRL_GET_CHAIN_CERTS = doesnt_exist; -pub const SSL_CTRL_GET_CHANNEL_ID = doesnt_exist; -pub const SSL_CTRL_GET_CLIENT_CERT_TYPES = doesnt_exist; -pub const SSL_CTRL_GET_EXTRA_CHAIN_CERTS = doesnt_exist; -pub const SSL_CTRL_GET_MAX_CERT_LIST = doesnt_exist; -pub const SSL_CTRL_GET_NUM_RENEGOTIATIONS = doesnt_exist; -pub const SSL_CTRL_GET_READ_AHEAD = doesnt_exist; -pub const SSL_CTRL_GET_RI_SUPPORT = doesnt_exist; -pub const SSL_CTRL_GET_SERVER_TMP_KEY = doesnt_exist; -pub const SSL_CTRL_GET_SESSION_REUSED = doesnt_exist; -pub const SSL_CTRL_GET_SESS_CACHE_MODE = doesnt_exist; -pub const SSL_CTRL_GET_SESS_CACHE_SIZE = doesnt_exist; -pub const SSL_CTRL_GET_TLSEXT_TICKET_KEYS = doesnt_exist; -pub const SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = doesnt_exist; -pub const SSL_CTRL_MODE = doesnt_exist; -pub const SSL_CTRL_NEED_TMP_RSA = doesnt_exist; -pub const SSL_CTRL_OPTIONS = doesnt_exist; -pub const SSL_CTRL_SESS_NUMBER = doesnt_exist; -pub const SSL_CTRL_SET_CURVES = doesnt_exist; -pub const SSL_CTRL_SET_CURVES_LIST = doesnt_exist; -pub const SSL_CTRL_SET_ECDH_AUTO = doesnt_exist; -pub const SSL_CTRL_SET_MAX_CERT_LIST = doesnt_exist; -pub const SSL_CTRL_SET_MAX_SEND_FRAGMENT = doesnt_exist; -pub const SSL_CTRL_SET_MSG_CALLBACK = doesnt_exist; -pub const SSL_CTRL_SET_MSG_CALLBACK_ARG = doesnt_exist; -pub const SSL_CTRL_SET_MTU = doesnt_exist; -pub const SSL_CTRL_SET_READ_AHEAD = doesnt_exist; -pub const SSL_CTRL_SET_SESS_CACHE_MODE = doesnt_exist; -pub const SSL_CTRL_SET_SESS_CACHE_SIZE = doesnt_exist; -pub const SSL_CTRL_SET_TLSEXT_HOSTNAME = doesnt_exist; -pub const SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG = doesnt_exist; -pub const SSL_CTRL_SET_TLSEXT_SERVERNAME_CB = doesnt_exist; -pub const SSL_CTRL_SET_TLSEXT_TICKET_KEYS = doesnt_exist; -pub const SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB = doesnt_exist; -pub const SSL_CTRL_SET_TMP_DH = doesnt_exist; -pub const SSL_CTRL_SET_TMP_DH_CB = doesnt_exist; -pub const SSL_CTRL_SET_TMP_ECDH = doesnt_exist; -pub const SSL_CTRL_SET_TMP_ECDH_CB = doesnt_exist; -pub const SSL_CTRL_SET_TMP_RSA = doesnt_exist; -pub const SSL_CTRL_SET_TMP_RSA_CB = doesnt_exist; pub const SSL_R_APP_DATA_IN_HANDSHAKE = @as(c_int, 100); pub const SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT = @as(c_int, 101); pub const SSL_R_BAD_ALERT = @as(c_int, 102); @@ -18470,7 +18515,7 @@ pub const SSL_R_COULD_NOT_PARSE_HINTS = @as(c_int, 316); pub const SSL_R_INVALID_ECH_PUBLIC_NAME = @as(c_int, 317); pub const SSL_R_INVALID_ECH_CONFIG_LIST = @as(c_int, 318); pub const SSL_R_ECH_REJECTED = @as(c_int, 319); -pub const SSL_R_OUTER_EXTENSION_NOT_FOUND = @as(c_int, 320); +pub const SSL_R_INVALID_OUTER_EXTENSION = @as(c_int, 320); pub const SSL_R_INCONSISTENT_ECH_NEGOTIATION = @as(c_int, 321); pub const SSL_R_SSLV3_ALERT_CLOSE_NOTIFY = @as(c_int, 1000); pub const SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE = @as(c_int, 1010); @@ -18525,10 +18570,6 @@ pub const Netscape_spkac_st = struct_Netscape_spkac_st; pub const X509_algor_st = struct_X509_algor_st; pub const Netscape_spki_st = struct_Netscape_spki_st; pub const RIPEMD160state_st = struct_RIPEMD160state_st; -pub const X509_POLICY_CACHE_st = struct_X509_POLICY_CACHE_st; -pub const X509_POLICY_LEVEL_st = struct_X509_POLICY_LEVEL_st; -pub const X509_POLICY_NODE_st = struct_X509_POLICY_NODE_st; -pub const X509_POLICY_TREE_st = struct_X509_POLICY_TREE_st; pub const X509_VERIFY_PARAM_st = struct_X509_VERIFY_PARAM_st; pub const X509_crl_st = struct_X509_crl_st; pub const X509_extension_st = struct_X509_extension_st; @@ -18545,7 +18586,6 @@ pub const dh_st = struct_dh_st; pub const ec_key_st = struct_ec_key_st; pub const evp_pkey_asn1_method_st = struct_evp_pkey_asn1_method_st; pub const evp_pkey_st = struct_evp_pkey_st; -pub const evp_cipher_ctx_st = struct_evp_cipher_ctx_st; pub const evp_cipher_st = struct_evp_cipher_st; pub const evp_cipher_info_st = struct_evp_cipher_info_st; pub const private_key_st = struct_private_key_st; @@ -18561,6 +18601,7 @@ pub const blake2b_state_st = struct_blake2b_state_st; pub const bn_gencb_st = struct_bn_gencb_st; pub const buf_mem_st = struct_buf_mem_st; pub const cbb_buffer_st = struct_cbb_buffer_st; +pub const cbb_child_st = struct_cbb_child_st; pub const cbb_st = struct_cbb_st; pub const cbs_st = struct_cbs_st; pub const cmac_ctx_st = struct_cmac_ctx_st; @@ -18568,6 +18609,7 @@ pub const conf_st = struct_conf_st; pub const conf_value_st = struct_conf_value_st; pub const crypto_buffer_pool_st = struct_crypto_buffer_pool_st; pub const crypto_buffer_st = struct_crypto_buffer_st; +pub const ctr_drbg_state_st = struct_ctr_drbg_state_st; pub const ec_group_st = struct_ec_group_st; pub const ec_point_st = struct_ec_point_st; pub const ecdsa_method_st = struct_ecdsa_method_st; @@ -18578,6 +18620,9 @@ pub const evp_pkey_ctx_st = struct_evp_pkey_ctx_st; pub const evp_md_pctx_ops = struct_evp_md_pctx_ops; pub const env_md_ctx_st = struct_env_md_ctx_st; pub const evp_aead_st = struct_evp_aead_st; +pub const evp_aead_ctx_st_state = union_evp_aead_ctx_st_state; +pub const evp_aead_ctx_st = struct_evp_aead_ctx_st; +pub const evp_cipher_ctx_st = struct_evp_cipher_ctx_st; pub const evp_encode_ctx_st = struct_evp_encode_ctx_st; pub const evp_hpke_aead_st = struct_evp_hpke_aead_st; pub const evp_hpke_ctx_st = struct_evp_hpke_ctx_st; @@ -18600,8 +18645,8 @@ pub const sha_state_st = struct_sha_state_st; pub const spake2_ctx_st = struct_spake2_ctx_st; pub const srtp_protection_profile_st = struct_srtp_protection_profile_st; pub const ssl_cipher_st = struct_ssl_cipher_st; -pub const ssl_ctx_st = SSL_CTX; -pub const ssl_st = SSL; +// pub const ssl_ctx_st = struct_ssl_ctx_st; +// pub const ssl_st = struct_ssl_st; pub const ssl_early_callback_ctx = struct_ssl_early_callback_ctx; pub const ssl_ech_keys_st = struct_ssl_ech_keys_st; pub const ssl_method_st = struct_ssl_method_st; @@ -18619,30 +18664,23 @@ pub const trust_token_issuer_st = struct_trust_token_issuer_st; pub const trust_token_method_st = struct_trust_token_method_st; pub const v3_ext_ctx = struct_v3_ext_ctx; pub const x509_attributes_st = struct_x509_attributes_st; -pub const x509_cert_aux_st = struct_x509_cert_aux_st; -pub const x509_crl_method_st = struct_x509_crl_method_st; pub const x509_lookup_st = struct_x509_lookup_st; pub const x509_lookup_method_st = struct_x509_lookup_method_st; pub const x509_object_st = struct_x509_object_st; -pub const stack_st_X509_EXTENSION = struct_stack_st_X509_EXTENSION; -pub const stack_st_GENERAL_NAME = struct_stack_st_GENERAL_NAME; pub const x509_revoked_st = struct_x509_revoked_st; pub const x509_store_ctx_st = struct_x509_store_ctx_st; pub const x509_store_st = struct_x509_store_st; pub const x509_trust_st = struct_x509_trust_st; pub const __sbuf = struct___sbuf; -pub const __sFILEX = struct___sFILEX; -pub const __sFILE = struct___sFILE; pub const stack_st = struct_stack_st; pub const stack_st_OPENSSL_STRING = struct_stack_st_OPENSSL_STRING; pub const CRYPTO_dynlock_value = struct_CRYPTO_dynlock_value; pub const stack_st_BIO = struct_stack_st_BIO; -pub const evp_aead_ctx_st_state = union_evp_aead_ctx_st_state; -pub const evp_aead_ctx_st = struct_evp_aead_ctx_st; pub const evp_aead_direction_t = enum_evp_aead_direction_t; pub const stack_st_CRYPTO_BUFFER = struct_stack_st_CRYPTO_BUFFER; pub const stack_st_X509 = struct_stack_st_X509; pub const stack_st_X509_CRL = struct_stack_st_X509_CRL; +pub const timespec = struct_timespec; pub const tm = struct_tm; pub const bn_primality_result_t = enum_bn_primality_result_t; pub const stack_st_ASN1_INTEGER = struct_stack_st_ASN1_INTEGER; @@ -18650,20 +18688,21 @@ pub const stack_st_ASN1_OBJECT = struct_stack_st_ASN1_OBJECT; pub const stack_st_ASN1_TYPE = struct_stack_st_ASN1_TYPE; pub const ec_method_st = struct_ec_method_st; pub const obj_name_st = struct_obj_name_st; -pub const stack_st_X509_ALGOR = struct_stack_st_X509_ALGOR; +pub const stack_st_X509_EXTENSION = struct_stack_st_X509_EXTENSION; +pub const stack_st_X509_REVOKED = struct_stack_st_X509_REVOKED; pub const stack_st_X509_NAME_ENTRY = struct_stack_st_X509_NAME_ENTRY; pub const stack_st_X509_NAME = struct_stack_st_X509_NAME; +pub const stack_st_X509_ALGOR = struct_stack_st_X509_ALGOR; pub const stack_st_X509_ATTRIBUTE = struct_stack_st_X509_ATTRIBUTE; pub const stack_st_DIST_POINT = struct_stack_st_DIST_POINT; +pub const stack_st_GENERAL_NAME = struct_stack_st_GENERAL_NAME; pub const stack_st_X509_TRUST = struct_stack_st_X509_TRUST; -pub const stack_st_X509_REVOKED = struct_stack_st_X509_REVOKED; pub const stack_st_GENERAL_NAMES = struct_stack_st_GENERAL_NAMES; +pub const AUTHORITY_INFO_ACCESS = struct_stack_st_ACCESS_DESCRIPTION; pub const stack_st_X509_INFO = struct_stack_st_X509_INFO; pub const stack_st_X509_LOOKUP = struct_stack_st_X509_LOOKUP; pub const stack_st_X509_OBJECT = struct_stack_st_X509_OBJECT; pub const stack_st_X509_VERIFY_PARAM = struct_stack_st_X509_VERIFY_PARAM; -pub const stack_st_X509_POLICY_NODE = struct_stack_st_X509_POLICY_NODE; -pub const stack_st_POLICYQUALINFO = struct_stack_st_POLICYQUALINFO; pub const fips_counter_t = enum_fips_counter_t; pub const stack_st_SSL_CIPHER = struct_stack_st_SSL_CIPHER; pub const ssl_verify_result_t = enum_ssl_verify_result_t; @@ -18674,6 +18713,7 @@ pub const ssl_select_cert_result_t = enum_ssl_select_cert_result_t; pub const ssl_comp_st = struct_ssl_comp_st; pub const stack_st_SSL_COMP = struct_stack_st_SSL_COMP; pub const ssl_conf_ctx_st = struct_ssl_conf_ctx_st; +pub const ssl_compliance_policy_t = enum_ssl_compliance_policy_t; pub extern fn RAND_bytes(buf: [*]u8, len: usize) c_int; @@ -18688,7 +18728,23 @@ pub extern fn RAND_bytes(buf: [*]u8, len: usize) c_int; /// Hence, this function should never be called by libraries. pub extern fn RAND_enable_fork_unsafe_buffering(c_int) void; -// Manual modification +pub extern fn SSL_new(ctx: ?*SSL_CTX) *SSL; + +pub extern fn EVP_md4() *const EVP_MD; +pub extern fn EVP_md5() *const EVP_MD; +pub extern fn EVP_sha1() *const EVP_MD; +pub extern fn EVP_sha224() *const EVP_MD; +pub extern fn EVP_sha256() *const EVP_MD; +pub extern fn EVP_sha384() *const EVP_MD; +pub extern fn EVP_sha512() *const EVP_MD; +pub extern fn EVP_sha512_256() *const EVP_MD; + +pub extern fn EVP_blake2b256() *const EVP_MD; + +pub extern fn ERR_clear_error() void; +pub extern fn ERR_set_mark() c_int; +pub extern fn ERR_pop_to_mark() c_int; +pub extern fn ERR_get_next_error_library() c_int; pub const struct_bio_st = extern struct { method: [*c]const BIO_METHOD, @@ -18732,18 +18788,18 @@ pub const struct_bio_st = extern struct { } pub fn write(this: *struct_bio_st, buffer: []const u8) !usize { - const rc = BIO_write(this, buffer.ptr, @intCast(c_int, buffer.len)); + const rc = BIO_write(this, buffer.ptr, @as(c_int, @intCast(buffer.len))); return if (rc > -1) - return @intCast(usize, rc) + return @as(usize, @intCast(rc)) else return error.Fail; } pub fn read(this: *struct_bio_st, buffer: []u8) !usize { - const rc = BIO_read(this, buffer.ptr, @intCast(c_int, buffer.len)); + const rc = BIO_read(this, buffer.ptr, @as(c_int, @intCast(buffer.len))); return if (rc > -1) - return @intCast(usize, rc) + return @as(usize, @intCast(rc)) else return error.Fail; } @@ -18789,7 +18845,7 @@ pub const SSL = opaque { } pub inline fn pending(ssl: *SSL) usize { - return @intCast(usize, SSL_pending(ssl)); + return @as(usize, @intCast(SSL_pending(ssl))); } pub inline fn hasPending(ssl: *SSL) bool { @@ -18866,7 +18922,7 @@ pub const SSL = opaque { const Environment = @import("root").bun.Environment; pub fn read(this: *SSL, buf: []u8) Error!usize { - const rc = SSL_read(this, buf.ptr, @intCast(c_int, buf.len)); + const rc = SSL_read(this, buf.ptr, @as(c_int, @intCast(buf.len))); return switch (SSL_get_error(this, rc)) { SSL_ERROR_SSL => error.SSL, SSL_ERROR_WANT_READ => error.WantRead, @@ -18887,12 +18943,12 @@ pub const SSL = opaque { SSL_ERROR_HANDBACK => error.Handback, SSL_ERROR_WANT_RENEGOTIATE => error.WantRenegotiate, SSL_ERROR_HANDSHAKE_HINTS_READY => error.HandshakeHintsReady, - else => @intCast(usize, rc), + else => @as(usize, @intCast(rc)), }; } pub fn write(this: *SSL, buf: []const u8) Error!u32 { - const rc = SSL_write(this, buf.ptr, @intCast(c_int, buf.len)); + const rc = SSL_write(this, buf.ptr, @as(c_int, @intCast(buf.len))); return switch (SSL_get_error(this, rc)) { SSL_ERROR_SSL => { if (comptime Environment.isDebug) { @@ -18919,7 +18975,7 @@ pub const SSL = opaque { SSL_ERROR_HANDBACK => error.Handback, SSL_ERROR_WANT_RENEGOTIATE => error.WantRenegotiate, SSL_ERROR_HANDSHAKE_HINTS_READY => error.HandshakeHintsReady, - else => @intCast(u32, rc), + else => @as(u32, @intCast(rc)), }; } @@ -18938,6 +18994,15 @@ pub const SSL = opaque { } }; +pub const VerifyResult = enum(c_int) { + ok = 0, + invalid = 1, + retry = 2, +}; +pub const VerifyCallback = *const fn (*SSL, [*c]u8) callconv(.C) VerifyResult; + +pub extern fn SSL_CTX_set_custom_verify(ctx: ?*SSL_CTX, mode: c_int, callback: ?VerifyCallback) void; + pub const SSL_CTX = opaque { pub fn init() ?*SSL_CTX { var ctx = SSL_CTX_new(TLS_with_buffers_method()) orelse return null; @@ -19032,6 +19097,6 @@ pub fn getError(this: *SSL, rc: c_int) SSL.Error!u32 { SSL_ERROR_HANDBACK => error.Handback, SSL_ERROR_WANT_RENEGOTIATE => error.WantRenegotiate, SSL_ERROR_HANDSHAKE_HINTS_READY => error.HandshakeHintsReady, - else => @intCast(u32, rc), + else => @as(u32, @intCast(rc)), }; } diff --git a/src/deps/c_ares.zig b/src/deps/c_ares.zig index 7813ff5e4..a8ad9f02b 100644 --- a/src/deps/c_ares.zig +++ b/src/deps/c_ares.zig @@ -400,7 +400,7 @@ pub const Channel = opaque { const SockStateWrap = struct { pub fn onSockState(ctx: ?*anyopaque, socket: ares_socket_t, readable: c_int, writable: c_int) callconv(.C) void { var container = bun.cast(*Container, ctx.?); - Container.onDNSSocketState(container, @intCast(i32, socket), readable != 0, writable != 0); + Container.onDNSSocketState(container, @as(i32, @intCast(socket)), readable != 0, writable != 0); } }; @@ -408,7 +408,7 @@ pub const Channel = opaque { opts.flags = ARES_FLAG_NOCHECKRESP; opts.sock_state_cb = &SockStateWrap.onSockState; - opts.sock_state_cb_data = @ptrCast(*anyopaque, this); + opts.sock_state_cb_data = @as(*anyopaque, @ptrCast(this)); opts.timeout = 1000; opts.tries = 3; @@ -1210,8 +1210,8 @@ pub const Error = enum(i32) { ESERVICE = ARES_ESERVICE, pub fn initEAI(rc: i32) ?Error { - return switch (@enumFromInt(std.os.system.EAI, rc)) { - @enumFromInt(std.os.system.EAI, 0) => return null, + return switch (@as(std.os.system.EAI, @enumFromInt(rc))) { + @as(std.os.system.EAI, @enumFromInt(0)) => return null, .ADDRFAMILY => Error.EBADFAMILY, .BADFLAGS => Error.EBADFLAGS, // Invalid hints .FAIL => Error.EBADRESP, @@ -1284,8 +1284,8 @@ pub const Error = enum(i32) { pub fn get(rc: i32) ?Error { return switch (rc) { 0 => null, - 1...ARES_ESERVICE => @enumFromInt(Error, rc), - -ARES_ESERVICE...-1 => @enumFromInt(Error, -rc), + 1...ARES_ESERVICE => @as(Error, @enumFromInt(rc)), + -ARES_ESERVICE...-1 => @as(Error, @enumFromInt(-rc)), else => unreachable, }; } diff --git a/src/deps/diffz/DiffMatchPatch.zig b/src/deps/diffz/DiffMatchPatch.zig index a5cc02af4..9ce736d15 100644 --- a/src/deps/diffz/DiffMatchPatch.zig +++ b/src/deps/diffz/DiffMatchPatch.zig @@ -106,7 +106,7 @@ pub fn diff( const deadline = if (dmp.diff_timeout == 0) std.math.maxInt(u64) else - @intCast(u64, std.time.milliTimestamp()) + dmp.diff_timeout; + @as(u64, @intCast(std.time.milliTimestamp())) + dmp.diff_timeout; return dmp.diffInternal(allocator, before, after, check_lines, deadline); } @@ -124,7 +124,7 @@ pub fn diffLines( const deadline = if (dmp.diff_timeout == 0) std.math.maxInt(u64) else - @intCast(u64, std.time.milliTimestamp()) + dmp.diff_timeout; + @as(u64, @intCast(std.time.milliTimestamp())) + dmp.diff_timeout; var a = try diffLinesToChars(allocator, text1_in, text2_in); var diffs = try dmp.diffInternal(allocator, a.chars_1, a.chars_2, false, deadline); @@ -389,20 +389,20 @@ fn diffHalfMatchInternal( var best_short_text_b: []const u8 = ""; while (j < short_text.len and b: { - j = @intCast(isize, std.mem.indexOf(u8, short_text[@intCast(usize, j + 1)..], seed) orelse break :b false) + j + 1; + j = @as(isize, @intCast(std.mem.indexOf(u8, short_text[@as(usize, @intCast(j + 1))..], seed) orelse break :b false)) + j + 1; break :b true; }) { - var prefix_length = diffCommonPrefix(long_text[i..], short_text[@intCast(usize, j)..]); - var suffix_length = diffCommonSuffix(long_text[0..i], short_text[0..@intCast(usize, j)]); + var prefix_length = diffCommonPrefix(long_text[i..], short_text[@as(usize, @intCast(j))..]); + var suffix_length = diffCommonSuffix(long_text[0..i], short_text[0..@as(usize, @intCast(j))]); if (best_common.items.len < suffix_length + prefix_length) { best_common.items.len = 0; - try best_common.appendSlice(allocator, short_text[@intCast(usize, j - @intCast(isize, suffix_length)) .. @intCast(usize, j - @intCast(isize, suffix_length)) + suffix_length]); - try best_common.appendSlice(allocator, short_text[@intCast(usize, j) .. @intCast(usize, j) + prefix_length]); + try best_common.appendSlice(allocator, short_text[@as(usize, @intCast(j - @as(isize, @intCast(suffix_length)))) .. @as(usize, @intCast(j - @as(isize, @intCast(suffix_length)))) + suffix_length]); + try best_common.appendSlice(allocator, short_text[@as(usize, @intCast(j)) .. @as(usize, @intCast(j)) + prefix_length]); best_long_text_a = long_text[0 .. i - suffix_length]; best_long_text_b = long_text[i + prefix_length ..]; - best_short_text_a = short_text[0..@intCast(usize, j - @intCast(isize, suffix_length))]; - best_short_text_b = short_text[@intCast(usize, j + @intCast(isize, prefix_length))..]; + best_short_text_a = short_text[0..@as(usize, @intCast(j - @as(isize, @intCast(suffix_length))))]; + best_short_text_b = short_text[@as(usize, @intCast(j + @as(isize, @intCast(prefix_length))))..]; } } if (best_common.items.len * 2 >= long_text.len) { @@ -432,24 +432,24 @@ fn diffBisect( after: []const u8, deadline: u64, ) DiffError!DiffList { - const before_length = @intCast(isize, before.len); - const after_length = @intCast(isize, after.len); - const max_d = @intCast(isize, (before.len + after.len + 1) / 2); + const before_length = @as(isize, @intCast(before.len)); + const after_length = @as(isize, @intCast(after.len)); + const max_d = @as(isize, @intCast((before.len + after.len + 1) / 2)); const v_offset = max_d; const v_length = 2 * max_d; - var v1 = try ArrayListUnmanaged(isize).initCapacity(allocator, @intCast(usize, v_length)); - v1.items.len = @intCast(usize, v_length); - var v2 = try ArrayListUnmanaged(isize).initCapacity(allocator, @intCast(usize, v_length)); - v2.items.len = @intCast(usize, v_length); + var v1 = try ArrayListUnmanaged(isize).initCapacity(allocator, @as(usize, @intCast(v_length))); + v1.items.len = @as(usize, @intCast(v_length)); + var v2 = try ArrayListUnmanaged(isize).initCapacity(allocator, @as(usize, @intCast(v_length))); + v2.items.len = @as(usize, @intCast(v_length)); var x: usize = 0; while (x < v_length) : (x += 1) { v1.items[x] = -1; v2.items[x] = -1; } - v1.items[@intCast(usize, v_offset + 1)] = 0; - v2.items[@intCast(usize, v_offset + 1)] = 0; + v1.items[@as(usize, @intCast(v_offset + 1))] = 0; + v2.items[@as(usize, @intCast(v_offset + 1))] = 0; const delta = before_length - after_length; // If the total number of characters is odd, then the front path will // collide with the reverse path. @@ -464,7 +464,7 @@ fn diffBisect( var d: isize = 0; while (d < max_d) : (d += 1) { // Bail out if deadline is reached. - if (@intCast(u64, std.time.milliTimestamp()) > deadline) { + if (@as(u64, @intCast(std.time.milliTimestamp())) > deadline) { break; } @@ -474,20 +474,20 @@ fn diffBisect( var k1_offset = v_offset + k1; var x1: isize = 0; if (k1 == -d or (k1 != d and - v1.items[@intCast(usize, k1_offset - 1)] < v1.items[@intCast(usize, k1_offset + 1)])) + v1.items[@as(usize, @intCast(k1_offset - 1))] < v1.items[@as(usize, @intCast(k1_offset + 1))])) { - x1 = v1.items[@intCast(usize, k1_offset + 1)]; + x1 = v1.items[@as(usize, @intCast(k1_offset + 1))]; } else { - x1 = v1.items[@intCast(usize, k1_offset - 1)] + 1; + x1 = v1.items[@as(usize, @intCast(k1_offset - 1))] + 1; } var y1 = x1 - k1; while (x1 < before_length and - y1 < after_length and before[@intCast(usize, x1)] == after[@intCast(usize, y1)]) + y1 < after_length and before[@as(usize, @intCast(x1))] == after[@as(usize, @intCast(y1))]) { x1 += 1; y1 += 1; } - v1.items[@intCast(usize, k1_offset)] = x1; + v1.items[@as(usize, @intCast(k1_offset))] = x1; if (x1 > before_length) { // Ran off the right of the graph. k1end += 2; @@ -496,9 +496,9 @@ fn diffBisect( k1start += 2; } else if (front) { var k2_offset = v_offset + delta - k1; - if (k2_offset >= 0 and k2_offset < v_length and v2.items[@intCast(usize, k2_offset)] != -1) { + if (k2_offset >= 0 and k2_offset < v_length and v2.items[@as(usize, @intCast(k2_offset))] != -1) { // Mirror x2 onto top-left coordinate system. - const x2 = before_length - v2.items[@intCast(usize, k2_offset)]; + const x2 = before_length - v2.items[@as(usize, @intCast(k2_offset))]; if (x1 >= x2) { // Overlap detected. return dmp.diffBisectSplit(allocator, before, after, x1, y1, deadline); @@ -513,21 +513,21 @@ fn diffBisect( const k2_offset = v_offset + k2; var x2: isize = 0; if (k2 == -d or (k2 != d and - v2.items[@intCast(usize, k2_offset - 1)] < v2.items[@intCast(usize, k2_offset + 1)])) + v2.items[@as(usize, @intCast(k2_offset - 1))] < v2.items[@as(usize, @intCast(k2_offset + 1))])) { - x2 = v2.items[@intCast(usize, k2_offset + 1)]; + x2 = v2.items[@as(usize, @intCast(k2_offset + 1))]; } else { - x2 = v2.items[@intCast(usize, k2_offset - 1)] + 1; + x2 = v2.items[@as(usize, @intCast(k2_offset - 1))] + 1; } var y2: isize = x2 - k2; while (x2 < before_length and y2 < after_length and - before[@intCast(usize, before_length - x2 - 1)] == - after[@intCast(usize, after_length - y2 - 1)]) + before[@as(usize, @intCast(before_length - x2 - 1))] == + after[@as(usize, @intCast(after_length - y2 - 1))]) { x2 += 1; y2 += 1; } - v2.items[@intCast(usize, k2_offset)] = x2; + v2.items[@as(usize, @intCast(k2_offset))] = x2; if (x2 > before_length) { // Ran off the left of the graph. k2end += 2; @@ -536,11 +536,11 @@ fn diffBisect( k2start += 2; } else if (!front) { const k1_offset = v_offset + delta - k2; - if (k1_offset >= 0 and k1_offset < v_length and v1.items[@intCast(usize, k1_offset)] != -1) { - const x1 = v1.items[@intCast(usize, k1_offset)]; + if (k1_offset >= 0 and k1_offset < v_length and v1.items[@as(usize, @intCast(k1_offset))] != -1) { + const x1 = v1.items[@as(usize, @intCast(k1_offset))]; const y1 = v_offset + x1 - k1_offset; // Mirror x2 onto top-left coordinate system. - x2 = before_length - v2.items[@intCast(usize, k2_offset)]; + x2 = before_length - v2.items[@as(usize, @intCast(k2_offset))]; if (x1 >= x2) { // Overlap detected. return dmp.diffBisectSplit(allocator, before, after, x1, y1, deadline); @@ -574,10 +574,10 @@ fn diffBisectSplit( y: isize, deadline: u64, ) DiffError!DiffList { - const text1a = text1[0..@intCast(usize, x)]; - const text2a = text2[0..@intCast(usize, y)]; - const text1b = text1[@intCast(usize, x)..]; - const text2b = text2[@intCast(usize, y)..]; + const text1a = text1[0..@as(usize, @intCast(x))]; + const text2a = text2[0..@as(usize, @intCast(y))]; + const text1b = text1[@as(usize, @intCast(x))..]; + const text2b = text2[@as(usize, @intCast(y))..]; // Compute both diffs serially. var diffs = try dmp.diffInternal(allocator, text1a, text2a, false, deadline); @@ -726,24 +726,24 @@ fn diffLinesToCharsMunge( // Walk the text, pulling out a Substring for each line. // text.split('\n') would would temporarily double our memory footprint. // Modifying text would create many large strings to garbage collect. - while (line_end < @intCast(isize, text.len) - 1) { + while (line_end < @as(isize, @intCast(text.len)) - 1) { line_end = b: { - break :b @intCast(isize, std.mem.indexOf(u8, text[@intCast(usize, line_start)..], "\n") orelse - break :b @intCast(isize, text.len - 1)) + line_start; + break :b @as(isize, @intCast(std.mem.indexOf(u8, text[@as(usize, @intCast(line_start))..], "\n") orelse + break :b @as(isize, @intCast(text.len - 1)))) + line_start; }; - line = text[@intCast(usize, line_start) .. @intCast(usize, line_start) + @intCast(usize, line_end + 1 - line_start)]; + line = text[@as(usize, @intCast(line_start)) .. @as(usize, @intCast(line_start)) + @as(usize, @intCast(line_end + 1 - line_start))]; if (line_hash.get(line)) |value| { - try chars.append(allocator, @intCast(u8, value)); + try chars.append(allocator, @as(u8, @intCast(value))); } else { if (line_array.items.len == max_lines) { // Bail out at 255 because char 256 == char 0. - line = text[@intCast(usize, line_start)..]; - line_end = @intCast(isize, text.len); + line = text[@as(usize, @intCast(line_start))..]; + line_end = @as(isize, @intCast(text.len)); } try line_array.append(allocator, line); try line_hash.put(allocator, line, line_array.items.len - 1); - try chars.append(allocator, @intCast(u8, line_array.items.len - 1)); + try chars.append(allocator, @as(u8, @intCast(line_array.items.len - 1))); } line_start = line_end + 1; } @@ -980,18 +980,18 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError var length_insertions2: usize = 0; var length_deletions2: usize = 0; while (pointer < diffs.items.len) { - if (diffs.items[@intCast(usize, pointer)].operation == .equal) { // Equality found. + if (diffs.items[@as(usize, @intCast(pointer))].operation == .equal) { // Equality found. try equalities.append(allocator, pointer); length_insertions1 = length_insertions2; length_deletions1 = length_deletions2; length_insertions2 = 0; length_deletions2 = 0; - last_equality = diffs.items[@intCast(usize, pointer)].text; + last_equality = diffs.items[@as(usize, @intCast(pointer))].text; } else { // an insertion or deletion - if (diffs.items[@intCast(usize, pointer)].operation == .insert) { - length_insertions2 += diffs.items[@intCast(usize, pointer)].text.len; + if (diffs.items[@as(usize, @intCast(pointer))].operation == .insert) { + length_insertions2 += diffs.items[@as(usize, @intCast(pointer))].text.len; } else { - length_deletions2 += diffs.items[@intCast(usize, pointer)].text.len; + length_deletions2 += diffs.items[@as(usize, @intCast(pointer))].text.len; } // Eliminate an equality that is smaller or equal to the edits on both // sides of it. @@ -1002,11 +1002,11 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError // Duplicate record. try diffs.insert( allocator, - @intCast(usize, equalities.items[equalities.items.len - 1]), + @as(usize, @intCast(equalities.items[equalities.items.len - 1])), Diff.init(.delete, try allocator.dupe(u8, last_equality.?)), ); // Change second copy to insert. - diffs.items[@intCast(usize, equalities.items[equalities.items.len - 1] + 1)].operation = .insert; + diffs.items[@as(usize, @intCast(equalities.items[equalities.items.len - 1] + 1))].operation = .insert; // Throw away the equality we just deleted. _ = equalities.pop(); if (equalities.items.len > 0) { @@ -1038,46 +1038,46 @@ fn diffCleanupSemantic(allocator: std.mem.Allocator, diffs: *DiffList) DiffError // Only extract an overlap if it is as big as the edit ahead or behind it. pointer = 1; while (pointer < diffs.items.len) { - if (diffs.items[@intCast(usize, pointer - 1)].operation == .delete and - diffs.items[@intCast(usize, pointer)].operation == .insert) + if (diffs.items[@as(usize, @intCast(pointer - 1))].operation == .delete and + diffs.items[@as(usize, @intCast(pointer))].operation == .insert) { - const deletion = diffs.items[@intCast(usize, pointer - 1)].text; - const insertion = diffs.items[@intCast(usize, pointer)].text; + const deletion = diffs.items[@as(usize, @intCast(pointer - 1))].text; + const insertion = diffs.items[@as(usize, @intCast(pointer))].text; var overlap_length1: usize = diffCommonOverlap(deletion, insertion); var overlap_length2: usize = diffCommonOverlap(insertion, deletion); if (overlap_length1 >= overlap_length2) { - if (@floatFromInt(f32, overlap_length1) >= @floatFromInt(f32, deletion.len) / 2.0 or - @floatFromInt(f32, overlap_length1) >= @floatFromInt(f32, insertion.len) / 2.0) + if (@as(f32, @floatFromInt(overlap_length1)) >= @as(f32, @floatFromInt(deletion.len)) / 2.0 or + @as(f32, @floatFromInt(overlap_length1)) >= @as(f32, @floatFromInt(insertion.len)) / 2.0) { // Overlap found. // Insert an equality and trim the surrounding edits. try diffs.insert( allocator, - @intCast(usize, pointer), + @as(usize, @intCast(pointer)), Diff.init(.equal, try allocator.dupe(u8, insertion[0..overlap_length1])), ); - diffs.items[@intCast(usize, pointer - 1)].text = + diffs.items[@as(usize, @intCast(pointer - 1))].text = try allocator.dupe(u8, deletion[0 .. deletion.len - overlap_length1]); - diffs.items[@intCast(usize, pointer + 1)].text = + diffs.items[@as(usize, @intCast(pointer + 1))].text = try allocator.dupe(u8, insertion[overlap_length1..]); pointer += 1; } } else { - if (@floatFromInt(f32, overlap_length2) >= @floatFromInt(f32, deletion.len) / 2.0 or - @floatFromInt(f32, overlap_length2) >= @floatFromInt(f32, insertion.len) / 2.0) + if (@as(f32, @floatFromInt(overlap_length2)) >= @as(f32, @floatFromInt(deletion.len)) / 2.0 or + @as(f32, @floatFromInt(overlap_length2)) >= @as(f32, @floatFromInt(insertion.len)) / 2.0) { // Reverse overlap found. // Insert an equality and swap and trim the surrounding edits. try diffs.insert( allocator, - @intCast(usize, pointer), + @as(usize, @intCast(pointer)), Diff.init(.equal, try allocator.dupe(u8, deletion[0..overlap_length2])), ); - diffs.items[@intCast(usize, pointer - 1)].operation = .insert; - diffs.items[@intCast(usize, pointer - 1)].text = + diffs.items[@as(usize, @intCast(pointer - 1))].operation = .insert; + diffs.items[@as(usize, @intCast(pointer - 1))].text = try allocator.dupe(u8, insertion[0 .. insertion.len - overlap_length2]); - diffs.items[@intCast(usize, pointer + 1)].operation = .delete; - diffs.items[@intCast(usize, pointer + 1)].text = + diffs.items[@as(usize, @intCast(pointer + 1))].operation = .delete; + diffs.items[@as(usize, @intCast(pointer + 1))].text = try allocator.dupe(u8, deletion[overlap_length2..]); pointer += 1; } @@ -1097,7 +1097,7 @@ pub fn diffCleanupSemanticLossless( ) DiffError!void { var pointer: usize = 1; // Intentionally ignore the first and last element (don't need checking). - while (pointer < @intCast(isize, diffs.items.len) - 1) { + while (pointer < @as(isize, @intCast(diffs.items.len)) - 1) { if (diffs.items[pointer - 1].operation == .equal and diffs.items[pointer + 1].operation == .equal) { diff --git a/src/deps/lol-html.zig b/src/deps/lol-html.zig index bac422fb0..cd183ee5f 100644 --- a/src/deps/lol-html.zig +++ b/src/deps/lol-html.zig @@ -257,7 +257,7 @@ pub const HTMLRewriter = opaque { auto_disable(); @setRuntimeSafety(false); - var this = @ptrCast(*OutputSinkType, @alignCast(@alignOf(*OutputSinkType), user_data)); + var this = @as(*OutputSinkType, @ptrCast(@alignCast(user_data))); switch (len) { 0 => Done(this), else => Writer(this, ptr[0..len]), @@ -374,7 +374,7 @@ pub const TextChunk = opaque { } pub fn getUserData(this: *const TextChunk, comptime Type: type) ?*Type { auto_disable(); - return @ptrCast(?*Type, @alignCast(@alignOf(?*Type), this.lol_html_text_chunk_user_data_get())); + return @as(?*Type, @ptrCast(@alignCast(this.lol_html_text_chunk_user_data_get()))); } }; pub const Element = opaque { @@ -499,7 +499,7 @@ pub const Element = opaque { } pub fn getUserData(element: *const Element, comptime Type: type) ?*Type { auto_disable(); - return @ptrCast(?*Element, @alignCast(@alignOf(?*Element), lol_html_element_user_data_get(element))); + return @as(?*Element, @ptrCast(@alignCast(lol_html_element_user_data_get(element)))); } pub fn onEndTag(element: *Element, end_tag_handler: lol_html_end_tag_handler_t, user_data: ?*anyopaque) Error!void { auto_disable(); @@ -567,7 +567,7 @@ pub const HTMLString = extern struct { fn deinit_external(ctx: *anyopaque, ptr: *anyopaque, len: u32) callconv(.C) void { _ = ctx; auto_disable(); - lol_html_str_free(.{ .ptr = @ptrCast([*]const u8, ptr), .len = len }); + lol_html_str_free(.{ .ptr = @as([*]const u8, @ptrCast(ptr)), .len = len }); } pub fn toString(this: HTMLString) bun.String { @@ -752,23 +752,22 @@ pub fn DirectiveHandler(comptime Container: type, comptime UserDataType: type, c return struct { pub fn callback(this: *Container, user_data: ?*anyopaque) callconv(.C) Directive { auto_disable(); - return @enumFromInt( + return @as( Directive, - @as( + @enumFromInt(@as( c_uint, @intFromBool( Callback( - @ptrCast( + @as( *UserDataType, - @alignCast( - @alignOf(*UserDataType), + @ptrCast(@alignCast( user_data.?, - ), + )), ), this, ), ), - ), + )), ); } }.callback; diff --git a/src/deps/picohttp.zig b/src/deps/picohttp.zig index 722475bb5..4155678c1 100644 --- a/src/deps/picohttp.zig +++ b/src/deps/picohttp.zig @@ -90,18 +90,18 @@ pub const Request = struct { const rc = c.phr_parse_request( buf.ptr, buf.len, - @ptrCast([*c][*c]const u8, &method.ptr), + @as([*c][*c]const u8, @ptrCast(&method.ptr)), &method.len, - @ptrCast([*c][*c]const u8, &path.ptr), + @as([*c][*c]const u8, @ptrCast(&path.ptr)), &path.len, &minor_version, - @ptrCast([*c]c.phr_header, src.ptr), + @as([*c]c.phr_header, @ptrCast(src.ptr)), &num_headers, 0, ); // Leave a sentinel value, for JavaScriptCore support. - if (rc > -1) @ptrFromInt([*]u8, @intFromPtr(path.ptr))[path.len] = 0; + if (rc > -1) @as([*]u8, @ptrFromInt(@intFromPtr(path.ptr)))[path.len] = 0; return switch (rc) { -1 => error.BadRequest, @@ -109,9 +109,9 @@ pub const Request = struct { else => Request{ .method = method, .path = path, - .minor_version = @intCast(usize, minor_version), + .minor_version = @as(usize, @intCast(minor_version)), .headers = src[0..num_headers], - .bytes_read = @intCast(u32, rc), + .bytes_read = @as(u32, @intCast(rc)), }, }; } @@ -164,9 +164,9 @@ pub const Response = struct { buf.len, &minor_version, &status_code, - @ptrCast([*c][*c]const u8, &status.ptr), + @as([*c][*c]const u8, @ptrCast(&status.ptr)), &status.len, - @ptrCast([*c]c.phr_header, src.ptr), + @as([*c]c.phr_header, @ptrCast(src.ptr)), &num_headers, offset.?.*, ); @@ -182,8 +182,8 @@ pub const Response = struct { break :brk error.ShortRead; }, else => Response{ - .minor_version = @intCast(usize, minor_version), - .status_code = @intCast(usize, status_code), + .minor_version = @as(usize, @intCast(minor_version)), + .status_code = @as(usize, @intCast(status_code)), .status = status, .headers = src[0..@min(num_headers, src.len)], .bytes_read = rc, @@ -237,8 +237,8 @@ pub const Headers = struct { const rc = c.phr_parse_headers( buf.ptr, buf.len, - @ptrCast([*c]c.phr_header, src.ptr), - @ptrCast([*c]usize, &num_headers), + @as([*c]c.phr_header, @ptrCast(src.ptr)), + @as([*c]usize, @ptrCast(&num_headers)), 0, ); diff --git a/src/deps/uws.zig b/src/deps/uws.zig index 83edbe410..6e9d43e5f 100644 --- a/src/deps/uws.zig +++ b/src/deps/uws.zig @@ -21,9 +21,9 @@ fn NativeSocketHandleType(comptime ssl: bool) type { return anyopaque; } } -pub fn NewSocketHandler(comptime ssl: bool) type { +pub fn NewSocketHandler(comptime is_ssl: bool) type { return struct { - const ssl_int: i32 = @intFromBool(ssl); + const ssl_int: i32 = @intFromBool(is_ssl); socket: *Socket, const ThisSocket = @This(); @@ -44,6 +44,13 @@ pub fn NewSocketHandler(comptime ssl: bool) type { _ = us_socket_open(comptime ssl_int, this.socket, @intFromBool(is_client), null, 0); } + pub fn ssl(this: ThisSocket) *BoringSSL.SSL { + if (comptime is_ssl) { + return @as(*BoringSSL.SSL, @ptrCast(this.getNativeHandle())); + } + @panic("socket is not a TLS socket"); + } + // Note: this assumes that the socket is non-TLS and will be adopted and wrapped with a new TLS context // context ext will not be copied to the new context, new context will contain us_wrapped_socket_context_t on ext pub fn wrapTLS( @@ -101,7 +108,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { Fields.onData( getValue(socket), TLSSocket{ .socket = socket }, - buf.?[0..@intCast(usize, len)], + buf.?[0..@as(usize, @intCast(len))], ); return socket; } @@ -154,20 +161,20 @@ pub fn NewSocketHandler(comptime ssl: bool) type { return NewSocketHandler(true).from(socket); } - pub fn getNativeHandle(this: ThisSocket) *NativeSocketHandleType(ssl) { - return @ptrCast(*NativeSocketHandleType(ssl), us_socket_get_native_handle(comptime ssl_int, this.socket).?); + pub fn getNativeHandle(this: ThisSocket) *NativeSocketHandleType(is_ssl) { + return @as(*NativeSocketHandleType(is_ssl), @ptrCast(us_socket_get_native_handle(comptime ssl_int, this.socket).?)); } pub fn fd(this: ThisSocket) i32 { - if (comptime ssl) { + if (comptime is_ssl) { @compileError("SSL sockets do not have a file descriptor accessible this way"); } - return @intCast(i32, @intFromPtr(us_socket_get_native_handle(0, this.socket))); + return @as(i32, @intCast(@intFromPtr(us_socket_get_native_handle(0, this.socket)))); } pub fn markNeedsMoreForSendfile(this: ThisSocket) void { - if (comptime ssl) { + if (comptime is_ssl) { @compileError("SSL sockets do not support sendfile yet"); } @@ -185,7 +192,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { this.socket, ) orelse return null; - return @ptrCast(*ContextType, @alignCast(alignment, ptr)); + return @as(*align(alignment) ContextType, @ptrCast(@alignCast(ptr))); } pub fn context(this: ThisSocket) *SocketContext { return us_socket_context( @@ -205,7 +212,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { this.socket, data.ptr, // truncate to 31 bits since sign bit exists - @intCast(i32, @truncate(u31, data.len)), + @as(i32, @intCast(@as(u31, @truncate(data.len)))), @as(i32, @intFromBool(msg_more)), ); } @@ -216,7 +223,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { this.socket, data.ptr, // truncate to 31 bits since sign bit exists - @intCast(i32, @truncate(u31, data.len)), + @as(i32, @intCast(@as(u31, @truncate(data.len)))), @as(i32, @intFromBool(msg_more)), ); } @@ -423,7 +430,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { Fields.onData( getValue(socket), SocketHandlerType{ .socket = socket }, - buf.?[0..@intCast(usize, len)], + buf.?[0..@as(usize, @intCast(len))], ); return socket; } @@ -533,7 +540,7 @@ pub fn NewSocketHandler(comptime ssl: bool) type { Fields.onData( getValue(socket), ThisSocket{ .socket = socket }, - buf.?[0..@intCast(usize, len)], + buf.?[0..@as(usize, @intCast(len))], ); return socket; } @@ -639,7 +646,7 @@ pub const Timer = opaque { us_timer_set(this, cb, ms, repeat_ms); var value_ptr = us_timer_ext(this); @setRuntimeSafety(false); - @ptrCast(*@TypeOf(ptr), @alignCast(@alignOf(*@TypeOf(ptr)), value_ptr)).* = ptr; + @as(*@TypeOf(ptr), @ptrCast(@alignCast(value_ptr))).* = ptr; } pub fn deinit(this: *Timer) void { @@ -648,12 +655,12 @@ pub const Timer = opaque { } pub fn ext(this: *Timer, comptime Type: type) ?*Type { - return @ptrCast(*Type, @alignCast(@alignOf(Type), us_timer_ext(this).*.?)); + return @as(*Type, @ptrCast(@alignCast(us_timer_ext(this).*.?))); } pub fn as(this: *Timer, comptime Type: type) Type { @setRuntimeSafety(false); - return @ptrCast(*?Type, @alignCast(@alignOf(Type), us_timer_ext(this))).*.?; + return @as(*?Type, @ptrCast(@alignCast(us_timer_ext(this)))).*.?; } }; @@ -699,7 +706,7 @@ pub const SocketContext = opaque { this, ) orelse return null; - return @ptrCast(*ContextType, @alignCast(alignment, ptr)); + return @as(*align(alignment) ContextType, @ptrCast(@alignCast(ptr))); } }; pub const Loop = extern struct { @@ -762,7 +769,7 @@ pub const Loop = extern struct { pub fn unrefCount(this: *Loop, count: i32) void { log("unref x {d}", .{count}); this.num_polls -|= count; - this.active -|= @intCast(u32, count); + this.active -|= @as(u32, @intCast(count)); } pub fn get() ?*Loop { @@ -790,7 +797,7 @@ pub const Loop = extern struct { pub fn nextTick(this: *Loop, comptime UserType: type, user_data: UserType, comptime deferCallback: fn (ctx: UserType) void) void { const Handler = struct { pub fn callback(data: *anyopaque) callconv(.C) void { - deferCallback(@ptrCast(UserType, @alignCast(@alignOf(std.meta.Child(UserType)), data))); + deferCallback(@as(UserType, @ptrCast(@alignCast(data)))); } }; uws_loop_defer(this, user_data, Handler.callback); @@ -806,7 +813,7 @@ pub const Loop = extern struct { return uws_loop_removePostHandler(handler.loop, callback); } pub fn callback(data: *anyopaque, _: *Loop) callconv(.C) void { - callback_fn(@ptrCast(UserType, @alignCast(@alignOf(std.meta.Child(UserType)), data))); + callback_fn(@as(UserType, @ptrCast(@alignCast(data)))); } }; } @@ -977,7 +984,7 @@ pub const Poll = opaque { } pub fn fd(self: *Poll) @import("std").os.fd_t { - return @intCast(@import("std").os.fd_t, us_poll_fd(self)); + return @as(@import("std").os.fd_t, @intCast(us_poll_fd(self))); } pub fn start(self: *Poll, loop: *Loop, flags: Flags) void { @@ -1132,7 +1139,7 @@ pub const AnyWebSocket = union(enum) { pub fn publishWithOptions(ssl: bool, app: *anyopaque, topic: []const u8, message: []const u8, opcode: Opcode, compress: bool) bool { return uws_publish( @intFromBool(ssl), - @ptrCast(*uws_app_t, app), + @as(*uws_app_t, @ptrCast(app)), topic.ptr, topic.len, message.ptr, @@ -1195,12 +1202,12 @@ pub const WebSocketBehavior = extern struct { const active_field_name = if (is_ssl) "ssl" else "tcp"; pub fn _open(raw_ws: *RawWebSocket) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call(.always_inline, Type.onOpen, .{ this, ws }); } pub fn _message(raw_ws: *RawWebSocket, message: [*c]const u8, length: usize, opcode: Opcode) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call( .always_inline, @@ -1209,7 +1216,7 @@ pub const WebSocketBehavior = extern struct { ); } pub fn _drain(raw_ws: *RawWebSocket) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call(.always_inline, Type.onDrain, .{ this, @@ -1217,7 +1224,7 @@ pub const WebSocketBehavior = extern struct { }); } pub fn _ping(raw_ws: *RawWebSocket, message: [*c]const u8, length: usize) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call(.always_inline, Type.onPing, .{ this, @@ -1226,7 +1233,7 @@ pub const WebSocketBehavior = extern struct { }); } pub fn _pong(raw_ws: *RawWebSocket, message: [*c]const u8, length: usize) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call(.always_inline, Type.onPong, .{ this, @@ -1235,7 +1242,7 @@ pub const WebSocketBehavior = extern struct { }); } pub fn _close(raw_ws: *RawWebSocket, code: i32, message: [*c]const u8, length: usize) callconv(.C) void { - var ws = @unionInit(AnyWebSocket, active_field_name, @ptrCast(*WebSocket, raw_ws)); + var ws = @unionInit(AnyWebSocket, active_field_name, @as(*WebSocket, @ptrCast(raw_ws))); var this = ws.as(Type).?; @call( .always_inline, @@ -1252,7 +1259,7 @@ pub const WebSocketBehavior = extern struct { @call( .always_inline, Server.onWebSocketUpgrade, - .{ bun.cast(*Server, ptr), @ptrCast(*NewApp(is_ssl).Response, res), req, context, id }, + .{ bun.cast(*Server, ptr), @as(*NewApp(is_ssl).Response, @ptrCast(res)), req, context, id }, ); } @@ -1315,7 +1322,7 @@ pub const Request = opaque { } pub fn parameter(req: *Request, index: u16) []const u8 { var ptr: [*]const u8 = undefined; - return ptr[0..req.uws_req_get_parameter(@intCast(c_ushort, index), &ptr)]; + return ptr[0..req.uws_req_get_parameter(@as(c_ushort, @intCast(index)), &ptr)]; } extern fn uws_req_is_ancient(res: *Request) bool; @@ -1333,7 +1340,7 @@ pub const ListenSocket = opaque { us_listen_socket_close(@intFromBool(ssl), this); } pub fn getLocalPort(this: *ListenSocket, ssl: bool) i32 { - return us_socket_local_port(@intFromBool(ssl), @ptrCast(*uws.Socket, this)); + return us_socket_local_port(@intFromBool(ssl), @as(*uws.Socket, @ptrCast(this))); } }; extern fn us_listen_socket_close(ssl: i32, ls: *ListenSocket) void; @@ -1350,21 +1357,21 @@ pub fn NewApp(comptime ssl: bool) type { unreachable; } - return uws_app_close(ssl_flag, @ptrCast(*uws_app_s, this)); + return uws_app_close(ssl_flag, @as(*uws_app_s, @ptrCast(this))); } pub fn create(opts: us_bun_socket_context_options_t) *ThisApp { if (comptime is_bindgen) { unreachable; } - return @ptrCast(*ThisApp, uws_create_app(ssl_flag, opts)); + return @as(*ThisApp, @ptrCast(uws_create_app(ssl_flag, opts))); } pub fn destroy(app: *ThisApp) void { if (comptime is_bindgen) { unreachable; } - return uws_app_destroy(ssl_flag, @ptrCast(*uws_app_s, app)); + return uws_app_destroy(ssl_flag, @as(*uws_app_s, @ptrCast(app))); } fn RouteHandler(comptime UserDataType: type, comptime handler: fn (UserDataType, *Request, *Response) void) type { @@ -1381,7 +1388,7 @@ pub fn NewApp(comptime ssl: bool) type { .{ {}, req, - @ptrCast(*Response, @alignCast(@alignOf(*Response), res)), + @as(*Response, @ptrCast(@alignCast(res))), }, ); } else { @@ -1389,9 +1396,9 @@ pub fn NewApp(comptime ssl: bool) type { .always_inline, handler, .{ - @ptrCast(UserDataType, @alignCast(@alignOf(UserDataType), user_data.?)), + @as(UserDataType, @ptrCast(@alignCast(user_data.?))), req, - @ptrCast(*Response, @alignCast(@alignOf(*Response), res)), + @as(*Response, @ptrCast(@alignCast(res))), }, ); } @@ -1404,13 +1411,13 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - return us_listen_socket_close(ssl_flag, @ptrCast(*uws.ListenSocket, this)); + return us_listen_socket_close(ssl_flag, @as(*uws.ListenSocket, @ptrCast(this))); } pub inline fn getLocalPort(this: *ThisApp.ListenSocket) i32 { if (comptime is_bindgen) { unreachable; } - return us_socket_local_port(ssl_flag, @ptrCast(*uws.Socket, this)); + return us_socket_local_port(ssl_flag, @as(*uws.Socket, @ptrCast(this))); } }; @@ -1424,7 +1431,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_get(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_get(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn post( app: *ThisApp, @@ -1436,7 +1443,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_post(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_post(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn options( app: *ThisApp, @@ -1448,7 +1455,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_options(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_options(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn delete( app: *ThisApp, @@ -1460,7 +1467,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_delete(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_delete(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn patch( app: *ThisApp, @@ -1472,7 +1479,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_patch(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_patch(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn put( app: *ThisApp, @@ -1484,7 +1491,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_put(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_put(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn head( app: *ThisApp, @@ -1496,7 +1503,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_head(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_head(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn connect( app: *ThisApp, @@ -1508,7 +1515,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_connect(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_connect(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn trace( app: *ThisApp, @@ -1520,7 +1527,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_trace(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_trace(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn any( app: *ThisApp, @@ -1532,13 +1539,13 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime is_bindgen) { unreachable; } - uws_app_any(ssl_flag, @ptrCast(*uws_app_t, app), pattern, RouteHandler(UserDataType, handler).handle, user_data); + uws_app_any(ssl_flag, @as(*uws_app_t, @ptrCast(app)), pattern, RouteHandler(UserDataType, handler).handle, user_data); } pub fn run(app: *ThisApp) void { if (comptime is_bindgen) { unreachable; } - return uws_app_run(ssl_flag, @ptrCast(*uws_app_t, app)); + return uws_app_run(ssl_flag, @as(*uws_app_t, @ptrCast(app))); } pub fn listen( app: *ThisApp, @@ -1553,17 +1560,17 @@ pub fn NewApp(comptime ssl: bool) type { const Wrapper = struct { pub fn handle(socket: ?*uws.ListenSocket, conf: uws_app_listen_config_t, data: ?*anyopaque) callconv(.C) void { if (comptime UserData == void) { - @call(.always_inline, handler, .{ {}, @ptrCast(?*ThisApp.ListenSocket, socket), conf }); + @call(.always_inline, handler, .{ {}, @as(?*ThisApp.ListenSocket, @ptrCast(socket)), conf }); } else { @call(.always_inline, handler, .{ - @ptrCast(UserData, @alignCast(@alignOf(UserData), data.?)), - @ptrCast(?*ThisApp.ListenSocket, socket), + @as(UserData, @ptrCast(@alignCast(data.?))), + @as(?*ThisApp.ListenSocket, @ptrCast(socket)), conf, }); } } }; - return uws_app_listen(ssl_flag, @ptrCast(*uws_app_t, app), port, Wrapper.handle, user_data); + return uws_app_listen(ssl_flag, @as(*uws_app_t, @ptrCast(app)), port, Wrapper.handle, user_data); } pub fn listenWithConfig( @@ -1576,56 +1583,56 @@ pub fn NewApp(comptime ssl: bool) type { const Wrapper = struct { pub fn handle(socket: ?*uws.ListenSocket, data: ?*anyopaque) callconv(.C) void { if (comptime UserData == void) { - @call(.always_inline, handler, .{ {}, @ptrCast(?*ThisApp.ListenSocket, socket) }); + @call(.always_inline, handler, .{ {}, @as(?*ThisApp.ListenSocket, @ptrCast(socket)) }); } else { @call(.always_inline, handler, .{ - @ptrCast(UserData, @alignCast(@alignOf(UserData), data.?)), - @ptrCast(?*ThisApp.ListenSocket, socket), + @as(UserData, @ptrCast(@alignCast(data.?))), + @as(?*ThisApp.ListenSocket, @ptrCast(socket)), }); } } }; - return uws_app_listen_with_config(ssl_flag, @ptrCast(*uws_app_t, app), config.host, @intCast(u16, config.port), config.options, Wrapper.handle, user_data); + return uws_app_listen_with_config(ssl_flag, @as(*uws_app_t, @ptrCast(app)), config.host, @as(u16, @intCast(config.port)), config.options, Wrapper.handle, user_data); } pub fn constructorFailed(app: *ThisApp) bool { return uws_constructor_failed(ssl_flag, app); } pub fn num_subscribers(app: *ThisApp, topic: []const u8) c_uint { - return uws_num_subscribers(ssl_flag, @ptrCast(*uws_app_t, app), topic.ptr, topic.len); + return uws_num_subscribers(ssl_flag, @as(*uws_app_t, @ptrCast(app)), topic.ptr, topic.len); } pub fn publish(app: *ThisApp, topic: []const u8, message: []const u8, opcode: Opcode, compress: bool) bool { - return uws_publish(ssl_flag, @ptrCast(*uws_app_t, app), topic.ptr, topic.len, message.ptr, message.len, opcode, compress); + return uws_publish(ssl_flag, @as(*uws_app_t, @ptrCast(app)), topic.ptr, topic.len, message.ptr, message.len, opcode, compress); } pub fn getNativeHandle(app: *ThisApp) ?*anyopaque { return uws_get_native_handle(ssl_flag, app); } pub fn removeServerName(app: *ThisApp, hostname_pattern: [*:0]const u8) void { - return uws_remove_server_name(ssl_flag, @ptrCast(*uws_app_t, app), hostname_pattern); + return uws_remove_server_name(ssl_flag, @as(*uws_app_t, @ptrCast(app)), hostname_pattern); } pub fn addServerName(app: *ThisApp, hostname_pattern: [*:0]const u8) void { - return uws_add_server_name(ssl_flag, @ptrCast(*uws_app_t, app), hostname_pattern); + return uws_add_server_name(ssl_flag, @as(*uws_app_t, @ptrCast(app)), hostname_pattern); } pub fn addServerNameWithOptions(app: *ThisApp, hostname_pattern: [:0]const u8, opts: us_bun_socket_context_options_t) void { - return uws_add_server_name_with_options(ssl_flag, @ptrCast(*uws_app_t, app), hostname_pattern, opts); + return uws_add_server_name_with_options(ssl_flag, @as(*uws_app_t, @ptrCast(app)), hostname_pattern, opts); } pub fn missingServerName(app: *ThisApp, handler: uws_missing_server_handler, user_data: ?*anyopaque) void { - return uws_missing_server_name(ssl_flag, @ptrCast(*uws_app_t, app), handler, user_data); + return uws_missing_server_name(ssl_flag, @as(*uws_app_t, @ptrCast(app)), handler, user_data); } pub fn filter(app: *ThisApp, handler: uws_filter_handler, user_data: ?*anyopaque) void { - return uws_filter(ssl_flag, @ptrCast(*uws_app_t, app), handler, user_data); + return uws_filter(ssl_flag, @as(*uws_app_t, @ptrCast(app)), handler, user_data); } pub fn ws(app: *ThisApp, pattern: []const u8, ctx: *anyopaque, id: usize, behavior_: WebSocketBehavior) void { var behavior = behavior_; - uws_ws(ssl_flag, @ptrCast(*uws_app_t, app), ctx, pattern.ptr, pattern.len, id, &behavior); + uws_ws(ssl_flag, @as(*uws_app_t, @ptrCast(app)), ctx, pattern.ptr, pattern.len, id, &behavior); } pub const Response = opaque { inline fn castRes(res: *uws_res) *Response { - return @ptrCast(*Response, @alignCast(@alignOf(*Response), res)); + return @as(*Response, @ptrCast(@alignCast(res))); } pub inline fn downcast(res: *Response) *uws_res { - return @ptrCast(*uws_res, @alignCast(@alignOf(*uws_res), res)); + return @as(*uws_res, @ptrCast(@alignCast(res))); } pub fn end(res: *Response, data: []const u8, close_connection: bool) void { @@ -1637,7 +1644,7 @@ pub fn NewApp(comptime ssl: bool) type { } pub fn state(res: *const Response) State { - return uws_res_state(ssl_flag, @ptrCast(*const uws_res, @alignCast(@alignOf(*const uws_res), res))); + return uws_res_state(ssl_flag, @as(*const uws_res, @ptrCast(@alignCast(res)))); } pub fn prepareForSendfile(res: *Response) void { @@ -1678,14 +1685,14 @@ pub fn NewApp(comptime ssl: bool) type { return uws_res_get_write_offset(ssl_flag, res.downcast()); } pub fn overrideWriteOffset(res: *Response, offset: anytype) void { - uws_res_override_write_offset(ssl_flag, res.downcast(), @intCast(uintmax_t, offset)); + uws_res_override_write_offset(ssl_flag, res.downcast(), @as(uintmax_t, @intCast(offset))); } pub fn hasResponded(res: *Response) bool { return uws_res_has_responded(ssl_flag, res.downcast()); } pub fn getNativeHandle(res: *Response) i32 { - return @intCast(i32, @intFromPtr(uws_res_get_native_handle(ssl_flag, res.downcast()))); + return @as(i32, @intCast(@intFromPtr(uws_res_get_native_handle(ssl_flag, res.downcast())))); } pub fn onWritable( res: *Response, @@ -1699,7 +1706,7 @@ pub fn NewApp(comptime ssl: bool) type { return @call(.always_inline, handler, .{ {}, amount, castRes(this) }); } else { return @call(.always_inline, handler, .{ - @ptrCast(UserDataType, @alignCast(@alignOf(UserDataType), data.?)), + @as(UserDataType, @ptrCast(@alignCast(data.?))), amount, castRes(this), }); @@ -1719,7 +1726,7 @@ pub fn NewApp(comptime ssl: bool) type { if (comptime UserDataType == void) { @call(.always_inline, handler, .{ {}, castRes(this), {} }); } else { - @call(.always_inline, handler, .{ @ptrCast(UserDataType, @alignCast(@alignOf(UserDataType), user_data.?)), castRes(this) }); + @call(.always_inline, handler, .{ @as(UserDataType, @ptrCast(@alignCast(user_data.?))), castRes(this) }); } } }; @@ -1751,7 +1758,7 @@ pub fn NewApp(comptime ssl: bool) type { }); } else { @call(.always_inline, handler, .{ - @ptrCast(UserDataType, @alignCast(@alignOf(UserDataType), user_data.?)), + @as(UserDataType, @ptrCast(@alignCast(user_data.?))), castRes(this), if (len > 0) chunk_ptr[0..len] else "", last, @@ -1801,7 +1808,7 @@ pub fn NewApp(comptime ssl: bool) type { }); } else { @call(.always_inline, handler, .{ - @ptrCast(UserDataType, @alignCast(@alignOf(UserDataType), user_data.?)), + @as(UserDataType, @ptrCast(@alignCast(user_data.?))), }); } } @@ -1827,7 +1834,7 @@ pub fn NewApp(comptime ssl: bool) type { // @call(.always_inline, handler, .{ // @ptrCast( // UserDataType, - // @alignCast(@alignOf(UserDataType), user_data.?), + // @alignCast( user_data.?), // ), // fd, // }); @@ -1846,7 +1853,7 @@ pub fn NewApp(comptime ssl: bool) type { // @call(.always_inline, handler, .{ // @ptrCast( // UserDataType, - // @alignCast(@alignOf(UserDataType), user_data.?), + // @alignCast( user_data.?), // ), // fd, // }); @@ -1896,11 +1903,11 @@ pub fn NewApp(comptime ssl: bool) type { pub const WebSocket = opaque { pub fn raw(this: *WebSocket) *RawWebSocket { - return @ptrCast(*RawWebSocket, this); + return @as(*RawWebSocket, @ptrCast(this)); } pub fn as(this: *WebSocket, comptime Type: type) ?*Type { @setRuntimeSafety(false); - return @ptrCast(?*Type, @alignCast(@alignOf(Type), uws_ws_get_user_data(ssl_flag, this.raw()))); + return @as(?*Type, @ptrCast(@alignCast(uws_ws_get_user_data(ssl_flag, this.raw())))); } pub fn close(this: *WebSocket) void { diff --git a/src/deps/zig-clap/clap.zig b/src/deps/zig-clap/clap.zig index 68cd2451c..37cc4814e 100644 --- a/src/deps/zig-clap/clap.zig +++ b/src/deps/zig-clap/clap.zig @@ -343,7 +343,7 @@ pub fn helpFull( var cs = io.countingWriter(io.null_writer); try printParam(cs.writer(), Id, param, Error, context, valueText); if (res < cs.bytes_written) - res = @intCast(usize, cs.bytes_written); + res = @as(usize, @intCast(cs.bytes_written)); } break :blk res; @@ -356,7 +356,7 @@ pub fn helpFull( var cs = io.countingWriter(stream); try stream.print("\t", .{}); try printParam(cs.writer(), Id, param, Error, context, valueText); - try stream.writeByteNTimes(' ', max_spacing - @intCast(usize, cs.bytes_written)); + try stream.writeByteNTimes(' ', max_spacing - @as(usize, @intCast(cs.bytes_written))); try stream.print("\t{s}\n", .{try helpText(context, param)}); } } @@ -482,7 +482,7 @@ pub fn usageFull( // Seems the zig compiler is being a little wierd. I doesn't allow me to write // @as(*const [1]u8, s) VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - const name = if (param.names.short) |*s| @ptrCast([*]const u8, s)[0..1] else param.names.long orelse { + const name = if (param.names.short) |*s| @as([*]const u8, @ptrCast(s))[0..1] else param.names.long orelse { positional = param; continue; }; diff --git a/src/deps/zig-datetime/src/datetime.zig b/src/deps/zig-datetime/src/datetime.zig index 1014863b8..89f57d583 100644 --- a/src/deps/zig-datetime/src/datetime.zig +++ b/src/deps/zig-datetime/src/datetime.zig @@ -47,7 +47,7 @@ pub const Month = enum(u4) { if (month.len == 3) { inline for (std.meta.fields(Month)) |f| { if (ascii.eqlIgnoreCase(f.name[0..3], month)) { - return @enumFromInt(Month, f.value); + return @as(Month, @enumFromInt(f.value)); } } } @@ -57,7 +57,7 @@ pub const Month = enum(u4) { pub fn parseName(month: []const u8) !Month { inline for (std.meta.fields(Month)) |f| { if (ascii.eqlIgnoreCase(f.name, month)) { - return @enumFromInt(Month, f.value); + return @as(Month, @enumFromInt(f.value)); } } return error.InvalidFormat; @@ -210,9 +210,9 @@ pub const Date = struct { if (day < 1 or day > daysInMonth(year, month)) return error.InvalidDate; // Since we just validated the ranges we can now savely cast return Date{ - .year = @intCast(u16, year), - .month = @intCast(u4, month), - .day = @intCast(u8, day), + .year = @as(u16, @intCast(year)), + .month = @as(u4, @intCast(month)), + .day = @as(u8, @intCast(day)), }; } @@ -313,30 +313,30 @@ pub const Date = struct { // Create a date from the number of seconds since 1 Jan 1970 pub fn fromSeconds(seconds: f64) Date { const r = math.modf(seconds); - const timestamp = @intFromFloat(i64, r.ipart); // Seconds + const timestamp = @as(i64, @intFromFloat(r.ipart)); // Seconds const days = @divFloor(timestamp, time.s_per_day) + @as(i64, EPOCH); assert(days >= 0 and days <= MAX_ORDINAL); - return Date.fromOrdinal(@intCast(u32, days)); + return Date.fromOrdinal(@as(u32, @intCast(days))); } // Return the number of seconds since 1 Jan 1970 pub fn toSeconds(self: Date) f64 { - const days = @intCast(i64, self.toOrdinal()) - @as(i64, EPOCH); - return @floatFromInt(f64, days * time.s_per_day); + const days = @as(i64, @intCast(self.toOrdinal())) - @as(i64, EPOCH); + return @as(f64, @floatFromInt(days * time.s_per_day)); } // Create a date from a UTC timestamp in milliseconds relative to Jan 1st 1970 pub fn fromTimestamp(timestamp: i64) Date { const days = @divFloor(timestamp, time.ms_per_day) + @as(i64, EPOCH); assert(days >= 0 and days <= MAX_ORDINAL); - return Date.fromOrdinal(@intCast(u32, days)); + return Date.fromOrdinal(@as(u32, @intCast(days))); } // Create a UTC timestamp in milliseconds relative to Jan 1st 1970 pub fn toTimestamp(self: Date) i64 { - const d = @intCast(i64, daysBeforeYear(self.year)); - const days = d - @as(i64, EPOCH) + @intCast(i64, self.dayOfYear()); - return @intCast(i64, days) * time.ms_per_day; + const d = @as(i64, @intCast(daysBeforeYear(self.year))); + const days = d - @as(i64, EPOCH) + @as(i64, @intCast(self.dayOfYear())); + return @as(i64, @intCast(days)) * time.ms_per_day; } // Convert to an ISOCalendar date contain the year, week number, and @@ -359,7 +359,7 @@ pub const Date = struct { } assert(week >= 0 and week < 53); assert(day >= 0 and day < 8); - return ISOCalendar{ .year = y, .week = @intCast(u6, week + 1), .weekday = @intCast(u3, day + 1) }; + return ISOCalendar{ .year = y, .week = @as(u6, @intCast(week + 1)), .weekday = @as(u3, @intCast(day + 1)) }; } // ------------------------------------------------------------------------ @@ -439,13 +439,13 @@ pub const Date = struct { pub fn dayOfYear(self: Date) u16 { var d = self.toOrdinal() - daysBeforeYear(self.year); assert(d >= 1 and d <= 366); - return @intCast(u16, d); + return @as(u16, @intCast(d)); } // Return day of week starting with Monday = 1 and Sunday = 7 pub fn dayOfWeek(self: Date) Weekday { - const dow = @intCast(u3, self.toOrdinal() % 7); - return @enumFromInt(Weekday, if (dow == 0) 7 else dow); + const dow = @as(u3, @intCast(self.toOrdinal() % 7)); + return @as(Weekday, @enumFromInt(if (dow == 0) 7 else dow)); } // Return the ISO calendar based week of year. With 1 being the first week. @@ -471,7 +471,7 @@ pub const Date = struct { // Return the name of the day of the month, eg "January" pub fn monthName(self: Date) []const u8 { assert(self.month >= 1 and self.month <= 12); - return @tagName(@enumFromInt(Month, self.month)); + return @tagName(@as(Month, @enumFromInt(self.month))); } // ------------------------------------------------------------------------ @@ -502,9 +502,9 @@ pub const Date = struct { // Shift year var year = self.year; if (delta.years < 0) { - year -= @intCast(u16, -delta.years); + year -= @as(u16, @intCast(-delta.years)); } else { - year += @intCast(u16, delta.years); + year += @as(u16, @intCast(delta.years)); } var ord = daysBeforeYear(year); var days = self.dayOfYear(); @@ -527,9 +527,9 @@ pub const Date = struct { // Shift days if (delta.days < 0) { - ord -= @intCast(u32, -delta.days); + ord -= @as(u32, @intCast(-delta.days)); } else { - ord += @intCast(u32, delta.days); + ord += @as(u32, @intCast(delta.days)); } return Date.fromOrdinal(ord); } @@ -827,9 +827,9 @@ pub const Time = struct { return error.InvalidTime; } return Time{ - .hour = @intCast(u8, hour), - .minute = @intCast(u8, minute), - .second = @intCast(u8, second), + .hour = @as(u8, @intCast(hour)), + .minute = @as(u8, @intCast(minute)), + .second = @as(u8, @intCast(second)), .nanosecond = nanosecond, }; } @@ -842,15 +842,15 @@ pub const Time = struct { // Create Time from a UTC Timestamp in milliseconds pub fn fromTimestamp(timestamp: i64) Time { const remainder = @mod(timestamp, time.ms_per_day); - var t = @intCast(u64, math.absInt(remainder) catch unreachable); + var t = @as(u64, @intCast(math.absInt(remainder) catch unreachable)); // t is now only the time part of the day - const h = @intCast(u32, @divFloor(t, time.ms_per_hour)); + const h = @as(u32, @intCast(@divFloor(t, time.ms_per_hour))); t -= h * time.ms_per_hour; - const m = @intCast(u32, @divFloor(t, time.ms_per_min)); + const m = @as(u32, @intCast(@divFloor(t, time.ms_per_min))); t -= m * time.ms_per_min; - const s = @intCast(u32, @divFloor(t, time.ms_per_s)); + const s = @as(u32, @intCast(@divFloor(t, time.ms_per_s))); t -= s * time.ms_per_s; - const ns = @intCast(u32, t * time.ns_per_ms); + const ns = @as(u32, @intCast(t * time.ns_per_ms)); return Time.create(h, m, s, ns) catch unreachable; } @@ -859,7 +859,7 @@ pub const Time = struct { assert(seconds >= 0); // Convert to s and us const r = math.modf(seconds); - var s = @intFromFloat(u32, @mod(r.ipart, time.s_per_day)); // s + var s = @as(u32, @intFromFloat(@mod(r.ipart, time.s_per_day))); // s const h = @divFloor(s, time.s_per_hour); s -= h * time.s_per_hour; const m = @divFloor(s, time.s_per_min); @@ -875,32 +875,32 @@ pub const Time = struct { s -= 1; frac += time.ns_per_s; } - const ns = @intFromFloat(u32, frac); + const ns = @as(u32, @intFromFloat(frac)); return Time.create(h, m, s, ns) catch unreachable; // If this fails it's a bug } // Convert to a time in seconds relative to the UTC timezones // including the nanosecond component pub fn toSeconds(self: Time) f64 { - const s = @floatFromInt(f64, self.totalSeconds()); - const ns = @floatFromInt(f64, self.nanosecond) / time.ns_per_s; + const s = @as(f64, @floatFromInt(self.totalSeconds())); + const ns = @as(f64, @floatFromInt(self.nanosecond)) / time.ns_per_s; return s + ns; } // Convert to a timestamp in milliseconds from UTC pub fn toTimestamp(self: Time) i64 { - const h = @intCast(i64, self.hour) * time.ms_per_hour; - const m = @intCast(i64, self.minute) * time.ms_per_min; - const s = @intCast(i64, self.second) * time.ms_per_s; - const ms = @intCast(i64, self.nanosecond / time.ns_per_ms); + const h = @as(i64, @intCast(self.hour)) * time.ms_per_hour; + const m = @as(i64, @intCast(self.minute)) * time.ms_per_min; + const s = @as(i64, @intCast(self.second)) * time.ms_per_s; + const ms = @as(i64, @intCast(self.nanosecond / time.ns_per_ms)); return h + m + s + ms; } // Total seconds from the start of day pub fn totalSeconds(self: Time) i32 { - const h = @intCast(i32, self.hour) * time.s_per_hour; - const m = @intCast(i32, self.minute) * time.s_per_min; - const s = @intCast(i32, self.second); + const h = @as(i32, @intCast(self.hour)) * time.s_per_hour; + const m = @as(i32, @intCast(self.minute)) * time.s_per_min; + const s = @as(i32, @intCast(self.second)); return h + m + s; } @@ -1097,14 +1097,14 @@ pub const Datetime = struct { const a = daysBeforeYear(dt.date.year); // Must always subtract greater of the two if (self.years > 0) { - const y = @intCast(u32, self.years); + const y = @as(u32, @intCast(self.years)); const b = daysBeforeYear(dt.date.year + y); - days += @intCast(i32, b - a); + days += @as(i32, @intCast(b - a)); } else { - const y = @intCast(u32, -self.years); + const y = @as(u32, @intCast(-self.years)); assert(y < dt.date.year); // Does not work below year 1 const b = daysBeforeYear(dt.date.year - y); - days -= @intCast(i32, a - b); + days -= @as(i32, @intCast(a - b)); } } } else { @@ -1176,19 +1176,19 @@ pub const Datetime = struct { // From POSIX timestamp in milliseconds relative to 1 Jan 1970 pub fn fromTimestamp(timestamp: i64) Datetime { const t = @divFloor(timestamp, time.ms_per_day); - const d = @intCast(u64, math.absInt(t) catch unreachable); + const d = @as(u64, @intCast(math.absInt(t) catch unreachable)); const days = if (timestamp >= 0) d + EPOCH else EPOCH - d; assert(days >= 0 and days <= MAX_ORDINAL); return Datetime{ - .date = Date.fromOrdinal(@intCast(u32, days)), - .time = Time.fromTimestamp(timestamp - @intCast(i64, d) * time.ns_per_day), + .date = Date.fromOrdinal(@as(u32, @intCast(days))), + .time = Time.fromTimestamp(timestamp - @as(i64, @intCast(d)) * time.ns_per_day), .zone = &timezones.UTC, }; } // From a file modified time in ns pub fn fromModifiedTime(mtime: i128) Datetime { - const ts = @intCast(i64, @divFloor(mtime, time.ns_per_ms)); + const ts = @as(i64, @intCast(@divFloor(mtime, time.ns_per_ms))); return Datetime.fromTimestamp(ts); } @@ -1248,13 +1248,13 @@ pub const Datetime = struct { // Return a Datetime.Delta relative to this date pub fn sub(self: Datetime, other: Datetime) Delta { - const days = @intCast(i32, self.date.toOrdinal()) - @intCast(i32, other.date.toOrdinal()); + const days = @as(i32, @intCast(self.date.toOrdinal())) - @as(i32, @intCast(other.date.toOrdinal())); var seconds = self.time.totalSeconds() - other.time.totalSeconds(); if (self.zone.offset != other.zone.offset) { const mins = (self.zone.offset - other.zone.offset); seconds += mins * time.s_per_min; } - const ns = @intCast(i32, self.time.nanosecond) - @intCast(i32, other.time.nanosecond); + const ns = @as(i32, @intCast(self.time.nanosecond)) - @as(i32, @intCast(other.time.nanosecond)); return Delta{ .days = days, .seconds = seconds, .nanoseconds = ns }; } @@ -1300,7 +1300,7 @@ pub const Datetime = struct { var s = delta.seconds + self.time.totalSeconds(); // Rollover ns to s - var ns = delta.nanoseconds + @intCast(i32, self.time.nanosecond); + var ns = delta.nanoseconds + @as(i32, @intCast(self.time.nanosecond)); if (ns >= time.ns_per_s) { s += 1; ns -= time.ns_per_s; @@ -1309,17 +1309,17 @@ pub const Datetime = struct { ns += time.ns_per_s; } assert(ns >= 0 and ns < time.ns_per_s); - const nanosecond = @intCast(u32, ns); + const nanosecond = @as(u32, @intCast(ns)); // Rollover s to days if (s >= time.s_per_day) { const d = @divFloor(s, time.s_per_day); - days += @intCast(i32, d); + days += @as(i32, @intCast(d)); s -= d * time.s_per_day; } else if (s < 0) { if (s < -time.s_per_day) { // Wrap multiple const d = @divFloor(s, -time.s_per_day); - days -= @intCast(i32, d); + days -= @as(i32, @intCast(d)); s += d * time.s_per_day; } days -= 1; @@ -1327,7 +1327,7 @@ pub const Datetime = struct { } assert(s >= 0 and s < time.s_per_day); - var second = @intCast(u32, s); + var second = @as(u32, @intCast(s)); const hour = @divFloor(second, time.s_per_hour); second -= hour * time.s_per_hour; const minute = @divFloor(second, time.s_per_min); @@ -1378,7 +1378,7 @@ pub const Datetime = struct { // From time in nanoseconds pub fn formatHttpFromModifiedDate(buf: []u8, mtime: i128) ![]const u8 { - const ts = @intCast(i64, @divFloor(mtime, time.ns_per_ms)); + const ts = @as(i64, @intCast(@divFloor(mtime, time.ns_per_ms))); return Datetime.formatHttpFromTimestamp(buf, ts); } diff --git a/src/env_loader.zig b/src/env_loader.zig index 74577e3f2..406002731 100644 --- a/src/env_loader.zig +++ b/src/env_loader.zig @@ -238,7 +238,7 @@ pub const Loader = struct { e_strings[0] = js_ast.E.String{ .data = if (value.len > 0) - @ptrFromInt([*]u8, @intFromPtr(value.ptr))[0..value.len] + @as([*]u8, @ptrFromInt(@intFromPtr(value.ptr)))[0..value.len] else &[_]u8{}, }; @@ -261,7 +261,7 @@ pub const Loader = struct { if (std.mem.indexOfScalar(u64, string_map_hashes, hash)) |key_i| { e_strings[0] = js_ast.E.String{ .data = if (value.len > 0) - @ptrFromInt([*]u8, @intFromPtr(value.ptr))[0..value.len] + @as([*]u8, @ptrFromInt(@intFromPtr(value.ptr)))[0..value.len] else &[_]u8{}, }; @@ -287,7 +287,7 @@ pub const Loader = struct { e_strings[0] = js_ast.E.String{ .data = if (entry.value_ptr.*.len > 0) - @ptrFromInt([*]u8, @intFromPtr(entry.value_ptr.*.ptr))[0..value.len] + @as([*]u8, @ptrFromInt(@intFromPtr(entry.value_ptr.*.ptr)))[0..value.len] else &[_]u8{}, }; @@ -425,17 +425,17 @@ pub const Loader = struct { pub fn printLoaded(this: *Loader, start: i128) void { const count = - @intCast(u8, @intFromBool(this.@".env.development.local" != null)) + - @intCast(u8, @intFromBool(this.@".env.production.local" != null)) + - @intCast(u8, @intFromBool(this.@".env.test.local" != null)) + - @intCast(u8, @intFromBool(this.@".env.local" != null)) + - @intCast(u8, @intFromBool(this.@".env.development" != null)) + - @intCast(u8, @intFromBool(this.@".env.production" != null)) + - @intCast(u8, @intFromBool(this.@".env.test" != null)) + - @intCast(u8, @intFromBool(this.@".env" != null)); + @as(u8, @intCast(@intFromBool(this.@".env.development.local" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.production.local" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.test.local" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.local" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.development" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.production" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env.test" != null))) + + @as(u8, @intCast(@intFromBool(this.@".env" != null))); if (count == 0) return; - const elapsed = @floatFromInt(f64, (std.time.nanoTimestamp() - start)) / std.time.ns_per_ms; + const elapsed = @as(f64, @floatFromInt((std.time.nanoTimestamp() - start))) / std.time.ns_per_ms; const all = [_]string{ ".env.development.local", diff --git a/src/fs.zig b/src/fs.zig index 98174fac3..df950fc5e 100644 --- a/src/fs.zig +++ b/src/fs.zig @@ -72,7 +72,7 @@ pub const FileSystem = struct { pub fn tmpname(_: *const FileSystem, extname: string, buf: []u8, hash: u64) ![*:0]u8 { // PRNG was...not so random - const hex_value = @truncate(u64, @intCast(u128, hash) * @intCast(u128, std.time.nanoTimestamp())); + const hex_value = @as(u64, @truncate(@as(u128, @intCast(hash)) * @as(u128, @intCast(std.time.nanoTimestamp())))); return try std.fmt.bufPrintZ(buf, ".{any}{s}", .{ bun.fmt.hexIntLower(hex_value), extname }); } @@ -767,7 +767,7 @@ pub const FileSystem = struct { std.mem.writeIntNative(@TypeOf(this.mtime), hash_bytes_remain[0..@sizeOf(@TypeOf(this.mtime))], this.mtime); hash_bytes_remain = hash_bytes_remain[@sizeOf(@TypeOf(this.mtime))..]; std.debug.assert(hash_bytes_remain.len == 8); - hash_bytes_remain[0..8].* = @bitCast([8]u8, @as(u64, 0)); + hash_bytes_remain[0..8].* = @as([8]u8, @bitCast(@as(u64, 0))); return bun.hash(&hash_bytes); } @@ -1370,11 +1370,11 @@ pub const PathName = struct { // so if dir does not have a trailing slash, but is spaced one apart from the basename // we can assume there is a trailing slash there // so we extend the original slice's length by one - return if (this.dir.len == 0) "./" else this.dir.ptr[0 .. this.dir.len + @intCast( + return if (this.dir.len == 0) "./" else this.dir.ptr[0 .. this.dir.len + @as( usize, - @intFromBool( + @intCast(@intFromBool( this.dir[this.dir.len - 1] != std.fs.path.sep_posix and (@intFromPtr(this.dir.ptr) + this.dir.len + 1) == @intFromPtr(this.base.ptr), - ), + )), )]; } diff --git a/src/futex.zig b/src/futex.zig index 9741032d2..06b0e49dc 100644 --- a/src/futex.zig +++ b/src/futex.zig @@ -105,12 +105,12 @@ const WindowsFutex = struct { // Positive values for timeouts are absolute time while negative is relative. if (timeout) |timeout_ns| { timeout_ptr = &timeout_value; - timeout_value = -@intCast(windows.LARGE_INTEGER, timeout_ns / 100); + timeout_value = -@as(windows.LARGE_INTEGER, @intCast(timeout_ns / 100)); } switch (windows.ntdll.RtlWaitOnAddress( - @ptrCast(?*const anyopaque, ptr), - @ptrCast(?*const anyopaque, &expect), + @as(?*const anyopaque, @ptrCast(ptr)), + @as(?*const anyopaque, @ptrCast(&expect)), @sizeOf(@TypeOf(expect)), timeout_ptr, )) { @@ -121,7 +121,7 @@ const WindowsFutex = struct { } fn wake(ptr: *const Atomic(u32), num_waiters: u32) void { - const address = @ptrCast(?*const anyopaque, ptr); + const address = @as(?*const anyopaque, @ptrCast(ptr)); switch (num_waiters) { 1 => windows.ntdll.RtlWakeAddressSingle(address), else => windows.ntdll.RtlWakeAddressAll(address), @@ -139,14 +139,14 @@ const LinuxFutex = struct { // Futex timespec timeout is already in relative time. if (timeout) |timeout_ns| { ts_ptr = &ts; - ts.tv_sec = @intCast(@TypeOf(ts.tv_sec), timeout_ns / std.time.ns_per_s); - ts.tv_nsec = @intCast(@TypeOf(ts.tv_nsec), timeout_ns % std.time.ns_per_s); + ts.tv_sec = @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); + ts.tv_nsec = @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); } switch (linux.getErrno(linux.futex_wait( - @ptrCast(*const i32, ptr), + @as(*const i32, @ptrCast(ptr)), linux.FUTEX.PRIVATE_FLAG | linux.FUTEX.WAIT, - @bitCast(i32, expect), + @as(i32, @bitCast(expect)), ts_ptr, ))) { .SUCCESS => {}, // notified by `wake()` @@ -161,7 +161,7 @@ const LinuxFutex = struct { fn wake(ptr: *const Atomic(u32), num_waiters: u32) void { switch (linux.getErrno(linux.futex_wake( - @ptrCast(*const i32, ptr), + @as(*const i32, @ptrCast(ptr)), linux.FUTEX.PRIVATE_FLAG | linux.FUTEX.WAKE, std.math.cast(i32, num_waiters) orelse std.math.maxInt(i32), ))) { @@ -191,7 +191,7 @@ const DarwinFutex = struct { assert(timeout_value != 0); timeout_ns = timeout_value; } - const addr = @ptrCast(*const anyopaque, ptr); + const addr = @as(*const anyopaque, @ptrCast(ptr)); const flags = darwin.UL_COMPARE_AND_WAIT | darwin.ULF_NO_ERRNO; // If we're using `__ulock_wait` and `timeout` is too big to fit inside a `u32` count of // micro-seconds (around 70min), we'll request a shorter timeout. This is fine (users @@ -209,7 +209,7 @@ const DarwinFutex = struct { }; if (status >= 0) return; - switch (@enumFromInt(std.os.E, -status)) { + switch (@as(std.os.E, @enumFromInt(-status))) { .INTR => {}, // Address of the futex is paged out. This is unlikely, but possible in theory, and // pthread/libdispatch on darwin bother to handle it. In this case we'll return @@ -227,11 +227,11 @@ const DarwinFutex = struct { } while (true) { - const addr = @ptrCast(*const anyopaque, ptr); + const addr = @as(*const anyopaque, @ptrCast(ptr)); const status = darwin.__ulock_wake(flags, addr, 0); if (status >= 0) return; - switch (@enumFromInt(std.os.E, -status)) { + switch (@as(std.os.E, @enumFromInt(-status))) { .INTR => continue, // spurious wake() .FAULT => continue, // address of the lock was paged out .NOENT => return, // nothing was woken up @@ -353,8 +353,8 @@ const PosixFutex = struct { if (timeout) |timeout_ns| { ts_ptr = &ts; std.os.clock_gettime(std.os.CLOCK_REALTIME, &ts) catch unreachable; - ts.tv_sec += @intCast(@TypeOf(ts.tv_sec), timeout_ns / std.time.ns_per_s); - ts.tv_nsec += @intCast(@TypeOf(ts.tv_nsec), timeout_ns % std.time.ns_per_s); + ts.tv_sec += @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); + ts.tv_nsec += @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); if (ts.tv_nsec >= std.time.ns_per_s) { ts.tv_sec += 1; ts.tv_nsec -= std.time.ns_per_s; @@ -473,7 +473,7 @@ test "Futex - Broadcast" { fn runSender(self: *@This()) !void { self.broadcast.store(BROADCAST_SENT, .Monotonic); - Futex.wake(&self.broadcast, @intCast(u32, self.threads.len)); + Futex.wake(&self.broadcast, @as(u32, @intCast(self.threads.len))); while (true) { const broadcast = self.broadcast.load(.Acquire); diff --git a/src/hive_array.zig b/src/hive_array.zig index 0213156fd..fd6835396 100644 --- a/src/hive_array.zig +++ b/src/hive_array.zig @@ -36,7 +36,7 @@ pub fn HiveArray(comptime T: type, comptime capacity: u16) type { pub fn indexOf(self: *const Self, value: *const T) ?u32 { const start = &self.buffer; - const end = @ptrCast([*]const T, start) + capacity; + const end = @as([*]const T, @ptrCast(start)) + capacity; if (!(@intFromPtr(value) >= @intFromPtr(start) and @intFromPtr(value) < @intFromPtr(end))) return null; @@ -44,12 +44,12 @@ pub fn HiveArray(comptime T: type, comptime capacity: u16) type { const index = (@intFromPtr(value) - @intFromPtr(start)) / @sizeOf(T); assert(index < capacity); assert(&self.buffer[index] == value); - return @intCast(u32, index); + return @as(u32, @intCast(index)); } pub fn in(self: *const Self, value: *const T) bool { const start = &self.buffer; - const end = @ptrCast([*]const T, start) + capacity; + const end = @as([*]const T, @ptrCast(start)) + capacity; return (@intFromPtr(value) >= @intFromPtr(start) and @intFromPtr(value) < @intFromPtr(end)); } diff --git a/src/http.zig b/src/http.zig index ff67d8ce5..c206fbf66 100644 --- a/src/http.zig +++ b/src/http.zig @@ -394,7 +394,7 @@ pub const RequestContext = struct { } if (this.bundler.router.?.routeIndexByHash(match.hash)) |ind| { - route_index = @intCast(i32, ind); + route_index = @as(i32, @intCast(ind)); } module_preload: { @@ -437,7 +437,7 @@ pub const RequestContext = struct { .reason = step, .cwd = this.bundler.fs.top_level_dir, .problems = Api.Problems{ - .code = @truncate(u16, @intFromError(err)), + .code = @as(u16, @truncate(@intFromError(err))), .name = @errorName(err), .exceptions = exceptions, .build = try log.toAPI(allocator), @@ -730,7 +730,7 @@ pub const RequestContext = struct { SOCKET_FLAGS, ); - ctx.status = @truncate(HTTPStatusCode, code); + ctx.status = @as(HTTPStatusCode, @truncate(code)); } pub fn init( @@ -1079,7 +1079,7 @@ pub const RequestContext = struct { .from_timestamp = from_timestamp, .loader = parse_result.loader.toAPI(), .module_path = this.bundler.fs.relativeTo(file_path_str), - .blob_length = @truncate(u32, written), + .blob_length = @as(u32, @truncate(written)), }, }, .id = id, @@ -1166,7 +1166,7 @@ pub const RequestContext = struct { .from_timestamp = from_timestamp, .loader = .css, .module_path = this.bundler.fs.relativeTo(file_path_str), - .blob_length = @truncate(u32, count.written), + .blob_length = @as(u32, @truncate(count.written)), // .log = std.mem.zeroes(Api.Log), }, }, @@ -1432,7 +1432,7 @@ pub const RequestContext = struct { JavaScript.API.Bun.flushCSSImports(); vm.flush(); - Output.printElapsed(@floatFromInt(f64, (handler.start_timer.read())) / std.time.ns_per_ms); + Output.printElapsed(@as(f64, @floatFromInt((handler.start_timer.read()))) / std.time.ns_per_ms); if (vm.bundler.options.framework.?.display_name.len > 0) { Output.prettyError( @@ -1716,11 +1716,11 @@ pub const RequestContext = struct { pub var to_close: []*WebsocketHandler = &[_]*WebsocketHandler{}; pub fn generateTimestamp(handler: *WebsocketHandler) u32 { - return @truncate(u32, handler.ctx.timer.read() / std.time.ns_per_ms); + return @as(u32, @truncate(handler.ctx.timer.read() / std.time.ns_per_ms)); } pub fn toTimestamp(timestamp: u64) u32 { - return @truncate(u32, timestamp / std.time.ns_per_ms); + return @as(u32, @truncate(timestamp / std.time.ns_per_ms)); } pub fn broadcast(message: []const u8) !void { @@ -1897,7 +1897,7 @@ pub const RequestContext = struct { const welcome_message = Api.WebsocketMessageWelcome{ .asset_prefix = handler.ctx.bundler.options.routes.asset_prefix_path, .epoch = WebsocketHandler.toTimestamp( - @intCast(u64, (handler.ctx.timer.started.timestamp.tv_sec * std.time.ns_per_s)) + @intCast(u64, handler.ctx.timer.started.timestamp.tv_nsec), + @as(u64, @intCast((handler.ctx.timer.started.timestamp.tv_sec * std.time.ns_per_s))) + @as(u64, @intCast(handler.ctx.timer.started.timestamp.tv_nsec)), ), .javascript_reloader = reloader, .cwd = handler.ctx.bundler.fs.top_level_dir, @@ -2085,7 +2085,7 @@ pub const RequestContext = struct { socket_buffers[2] = iovec(build_result.bytes); // we reuse the accept key buffer // so we have a pointer that is not stack memory - handler.accept_key[0..@sizeOf(usize)].* = @bitCast([@sizeOf(usize)]u8, bun.hash(build_result.bytes)); + handler.accept_key[0..@sizeOf(usize)].* = @as([@sizeOf(usize)]u8, @bitCast(bun.hash(build_result.bytes))); socket_buffers[3] = iovec(handler.accept_key[0..4]); socket_buffer_count = 4; } @@ -2271,7 +2271,7 @@ pub const RequestContext = struct { pub fn reserveNext(this: *SocketPrinterInternal, count: u32) anyerror![*]u8 { try this.buffer.growIfNeeded(count); - return @ptrCast([*]u8, &this.buffer.list.items.ptr[this.buffer.list.items.len]); + return @as([*]u8, @ptrCast(&this.buffer.list.items.ptr[this.buffer.list.items.len])); } pub fn advanceBy(this: *SocketPrinterInternal, count: u32) void { @@ -3491,8 +3491,8 @@ pub const Server = struct { } if (attempts >= 10) { - var random_number = std.rand.DefaultPrng.init(@intCast(u64, std.time.milliTimestamp())); - const default_port = @intCast(u16, server.bundler.options.origin.getPort() orelse 3000); + var random_number = std.rand.DefaultPrng.init(@as(u64, @intCast(std.time.milliTimestamp()))); + const default_port = @as(u16, @intCast(server.bundler.options.origin.getPort() orelse 3000)); Output.prettyErrorln( "<r><red>error<r>: bun can't start because <b>port {d} is already in use<r>. Tried {d} - {d}. Try closing the other apps or manually passing bun a port\n\n <r><cyan><b>bun --origin http://localhost:{d}/<r>\n", .{ @@ -3715,7 +3715,7 @@ pub const Server = struct { req_ctx.sendInternalError(error.InternalError) catch {}; } - const status = req_ctx.status orelse @intCast(HTTPStatusCode, 500); + const status = req_ctx.status orelse @as(HTTPStatusCode, @intCast(500)); if (log.msgs.items.len == 0) { if (!did_print) { diff --git a/src/http/header_builder.zig b/src/http/header_builder.zig index 82e0868d9..540484655 100644 --- a/src/http/header_builder.zig +++ b/src/http/header_builder.zig @@ -22,15 +22,15 @@ pub fn allocate(this: *HeaderBuilder, allocator: std.mem.Allocator) !void { } pub fn append(this: *HeaderBuilder, name: string, value: string) void { const name_ptr = Api.StringPointer{ - .offset = @truncate(u32, this.content.len), - .length = @truncate(u32, name.len), + .offset = @as(u32, @truncate(this.content.len)), + .length = @as(u32, @truncate(name.len)), }; _ = this.content.append(name); const value_ptr = Api.StringPointer{ - .offset = @truncate(u32, this.content.len), - .length = @truncate(u32, value.len), + .offset = @as(u32, @truncate(this.content.len)), + .length = @as(u32, @truncate(value.len)), }; _ = this.content.append(value); this.entries.appendAssumeCapacity(Headers.Kv{ .name = name_ptr, .value = value_ptr }); @@ -38,8 +38,8 @@ pub fn append(this: *HeaderBuilder, name: string, value: string) void { pub fn appendFmt(this: *HeaderBuilder, name: string, comptime fmt: string, args: anytype) void { const name_ptr = Api.StringPointer{ - .offset = @truncate(u32, this.content.len), - .length = @truncate(u32, name.len), + .offset = @as(u32, @truncate(this.content.len)), + .length = @as(u32, @truncate(name.len)), }; _ = this.content.append(name); @@ -47,8 +47,8 @@ pub fn appendFmt(this: *HeaderBuilder, name: string, comptime fmt: string, args: const value = this.content.fmt(fmt, args); const value_ptr = Api.StringPointer{ - .offset = @truncate(u32, this.content.len - value.len), - .length = @truncate(u32, value.len), + .offset = @as(u32, @truncate(this.content.len - value.len)), + .length = @as(u32, @truncate(value.len)), }; this.entries.appendAssumeCapacity(Headers.Kv{ .name = name_ptr, .value = value_ptr }); diff --git a/src/http/mime_type.zig b/src/http/mime_type.zig index 3d3d9a9a9..17f6821b3 100644 --- a/src/http/mime_type.zig +++ b/src/http/mime_type.zig @@ -26,7 +26,7 @@ pub fn createHashTable(allocator: std.mem.Allocator) !Map { const decls = comptime std.meta.declarations(all); var map = Map.init(allocator); - try map.ensureTotalCapacity(@truncate(u32, decls.len)); + try map.ensureTotalCapacity(@as(u32, @truncate(decls.len))); @setEvalBranchQuota(4000); inline for (decls) |decl| { map.putAssumeCapacityNoClobber(decl.name, @field(all, decl.name)); diff --git a/src/http/url_path.zig b/src/http/url_path.zig index ac31c740d..a48700671 100644 --- a/src/http/url_path.zig +++ b/src/http/url_path.zig @@ -91,10 +91,10 @@ pub fn parse(possibly_encoded_pathname_: string) !URLPath { var first_segment_end: i16 = std.math.maxInt(i16); var last_slash: i16 = -1; - var i: i16 = @intCast(i16, decoded_pathname.len) - 1; + var i: i16 = @as(i16, @intCast(decoded_pathname.len)) - 1; while (i >= 0) : (i -= 1) { - const c = decoded_pathname[@intCast(usize, i)]; + const c = decoded_pathname[@as(usize, @intCast(i))]; switch (c) { '?' => { @@ -130,18 +130,18 @@ pub fn parse(possibly_encoded_pathname_: string) !URLPath { const extname = brk: { if (question_mark_i > -1 and period_i > -1) { period_i += 1; - break :brk decoded_pathname[@intCast(usize, period_i)..@intCast(usize, question_mark_i)]; + break :brk decoded_pathname[@as(usize, @intCast(period_i))..@as(usize, @intCast(question_mark_i))]; } else if (period_i > -1) { period_i += 1; - break :brk decoded_pathname[@intCast(usize, period_i)..]; + break :brk decoded_pathname[@as(usize, @intCast(period_i))..]; } else { break :brk &([_]u8{}); } }; - var path = if (question_mark_i < 0) decoded_pathname[1..] else decoded_pathname[1..@intCast(usize, question_mark_i)]; + var path = if (question_mark_i < 0) decoded_pathname[1..] else decoded_pathname[1..@as(usize, @intCast(question_mark_i))]; - const first_segment = decoded_pathname[1..@min(@intCast(usize, first_segment_end), decoded_pathname.len)]; + const first_segment = decoded_pathname[1..@min(@as(usize, @intCast(first_segment_end)), decoded_pathname.len)]; const is_source_map = strings.eqlComptime(extname, "map"); var backup_extname: string = extname; if (is_source_map and path.len > ".map".len) { @@ -158,7 +158,7 @@ pub fn parse(possibly_encoded_pathname_: string) !URLPath { .pathname = decoded_pathname, .first_segment = first_segment, .path = if (decoded_pathname.len == 1) "." else path, - .query_string = if (question_mark_i > -1) decoded_pathname[@intCast(usize, question_mark_i)..@intCast(usize, decoded_pathname.len)] else "", + .query_string = if (question_mark_i > -1) decoded_pathname[@as(usize, @intCast(question_mark_i))..@as(usize, @intCast(decoded_pathname.len))] else "", .needs_redirect = needs_redirect, }; } diff --git a/src/http/websocket.zig b/src/http/websocket.zig index 48a4cebf5..2fdd28451 100644 --- a/src/http/websocket.zig +++ b/src/http/websocket.zig @@ -53,20 +53,20 @@ pub const WebsocketHeader = packed struct { if (comptime Environment.allow_assert) { var buf_ = [2]u8{ 0, 0 }; var stream = std.io.fixedBufferStream(&buf_); - stream.writer().writeIntBig(u16, @bitCast(u16, header)) catch unreachable; + stream.writer().writeIntBig(u16, @as(u16, @bitCast(header))) catch unreachable; stream.pos = 0; const casted = stream.reader().readIntBig(u16) catch unreachable; - std.debug.assert(casted == @bitCast(u16, header)); - std.debug.assert(std.meta.eql(@bitCast(WebsocketHeader, casted), header)); + std.debug.assert(casted == @as(u16, @bitCast(header))); + std.debug.assert(std.meta.eql(@as(WebsocketHeader, @bitCast(casted)), header)); } - try writer.writeIntBig(u16, @bitCast(u16, header)); + try writer.writeIntBig(u16, @as(u16, @bitCast(header))); std.debug.assert(header.len == packLength(n)); } pub fn packLength(length: usize) u7 { return switch (length) { - 0...125 => @truncate(u7, length), + 0...125 => @as(u7, @truncate(length)), 126...0xFFFF => 126, else => 127, }; @@ -156,7 +156,7 @@ pub const Websocket = struct { var socket = Websocket{ .read_stream = undefined, .reader = undefined, - .stream = std.net.Stream{ .handle = @intCast(std.os.socket_t, fd) }, + .stream = std.net.Stream{ .handle = @as(std.os.socket_t, @intCast(fd)) }, .flags = flags, }; @@ -185,7 +185,7 @@ pub const Websocket = struct { // Close and send the status pub fn close(self: *Websocket, code: u16) !void { const c = if (native_endian == .Big) code else @byteSwap(code); - const data = @bitCast([2]u8, c); + const data = @as([2]u8, @bitCast(c)); _ = try self.writeMessage(.Close, &data); } @@ -230,13 +230,13 @@ pub const Websocket = struct { if (!dataframe.isValid()) return error.InvalidMessage; - try stream.writeIntBig(u16, @bitCast(u16, dataframe.header)); + try stream.writeIntBig(u16, @as(u16, @bitCast(dataframe.header))); // Write extended length if needed const n = dataframe.data.len; switch (n) { 0...126 => {}, // Included in header - 127...0xFFFF => try stream.writeIntBig(u16, @truncate(u16, n)), + 127...0xFFFF => try stream.writeIntBig(u16, @as(u16, @truncate(n))), else => try stream.writeIntBig(u64, n), } @@ -292,9 +292,9 @@ pub const Websocket = struct { // header.rsv1 = header_bytes[0] & 0x40 == 0x40; // header.rsv2 = header_bytes[0] & 0x20; // header.rsv3 = header_bytes[0] & 0x10; - header.opcode = @enumFromInt(Opcode, @truncate(u4, header_bytes[0])); + header.opcode = @as(Opcode, @enumFromInt(@as(u4, @truncate(header_bytes[0])))); header.mask = header_bytes[1] & 0x80 == 0x80; - header.len = @truncate(u7, header_bytes[1]); + header.len = @as(u7, @truncate(header_bytes[1])); // Decode length var length: u64 = header.len; diff --git a/src/http/websocket_http_client.zig b/src/http/websocket_http_client.zig index 80f29525c..5bbc0a5fd 100644 --- a/src/http/websocket_http_client.zig +++ b/src/http/websocket_http_client.zig @@ -194,8 +194,8 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { pub fn register(global: *JSC.JSGlobalObject, loop_: *anyopaque, ctx_: *anyopaque) callconv(.C) void { var vm = global.bunVM(); - var loop = @ptrCast(*uws.Loop, @alignCast(@alignOf(uws.Loop), loop_)); - var ctx: *uws.SocketContext = @ptrCast(*uws.SocketContext, ctx_); + var loop = @as(*uws.Loop, @ptrCast(@alignCast(loop_))); + var ctx: *uws.SocketContext = @as(*uws.SocketContext, @ptrCast(ctx_)); if (vm.uws_event_loop) |other| { std.debug.assert(other == loop); @@ -268,7 +268,7 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { if (Socket.connect( display_host, port, - @ptrCast(*uws.SocketContext, socket_ctx), + @as(*uws.SocketContext, @ptrCast(socket_ctx)), HTTPClient, client, "tcp", @@ -366,7 +366,7 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { return; } - this.to_send = this.input_body_buf[@intCast(usize, wrote)..]; + this.to_send = this.input_body_buf[@as(usize, @intCast(wrote))..]; } pub fn handleData(this: *HTTPClient, socket: Socket, data: []const u8) void { @@ -410,7 +410,7 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { } }; - this.processResponse(response, body[@intCast(usize, response.bytes_read)..]); + this.processResponse(response, body[@as(usize, @intCast(response.bytes_read))..]); } pub fn handleEnd(this: *HTTPClient, socket: Socket) void { @@ -547,7 +547,7 @@ pub fn NewHTTPUpgradeClient(comptime ssl: bool) type { this.terminate(ErrorCode.failed_to_write); return; } - this.to_send = this.to_send[@min(@intCast(usize, wrote), this.to_send.len)..]; + this.to_send = this.to_send[@min(@as(usize, @intCast(wrote)), this.to_send.len)..]; } pub fn handleTimeout( this: *HTTPClient, @@ -586,7 +586,7 @@ pub const Mask = struct { mask_buf.* = globalThis.bunVM().rareData().entropySlice(4)[0..4].*; const mask = mask_buf.*; - const skip_mask = @bitCast(u32, mask) == 0; + const skip_mask = @as(u32, @bitCast(mask)) == 0; if (!skip_mask) { fillWithSkipMask(mask, output_, input_, false); } else { @@ -711,7 +711,7 @@ fn parseWebSocketHeader( // + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + // | Payload Data continued ... | // +---------------------------------------------------------------+ - const header = @bitCast(WebsocketHeader, @byteSwap(@bitCast(u16, bytes))); + const header = @as(WebsocketHeader, @bitCast(@byteSwap(@as(u16, @bitCast(bytes))))); const payload = @as(usize, header.len); payload_length.* = payload; receiving_type.* = header.opcode; @@ -787,13 +787,13 @@ const Copy = union(enum) { // 0, 2, 8 byte length var to_mask = buf[content_offset..]; - var header = @bitCast(WebsocketHeader, @as(u16, 0)); + var header = @as(WebsocketHeader, @bitCast(@as(u16, 0))); // Write extended length if needed switch (how_big_is_the_length_integer) { 0 => {}, - 2 => std.mem.writeIntBig(u16, buf[2..][0..2], @truncate(u16, content_byte_len)), - 8 => std.mem.writeIntBig(u64, buf[2..][0..8], @truncate(u64, content_byte_len)), + 2 => std.mem.writeIntBig(u16, buf[2..][0..2], @as(u16, @truncate(content_byte_len))), + 8 => std.mem.writeIntBig(u64, buf[2..][0..8], @as(u64, @truncate(content_byte_len))), else => unreachable, } @@ -846,7 +846,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { outgoing_websocket: ?*CppWebSocket = null, receive_state: ReceiveState = ReceiveState.need_header, - receive_header: WebsocketHeader = @bitCast(WebsocketHeader, @as(u16, 0)), + receive_header: WebsocketHeader = @as(WebsocketHeader, @bitCast(@as(u16, 0))), receiving_type: Opcode = Opcode.ResB, ping_frame_bytes: [128 + 6]u8 = [_]u8{0} ** (128 + 6), @@ -874,9 +874,9 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { pub fn register(global: *JSC.JSGlobalObject, loop_: *anyopaque, ctx_: *anyopaque) callconv(.C) void { var vm = global.bunVM(); - var loop = @ptrCast(*uws.Loop, @alignCast(@alignOf(uws.Loop), loop_)); + var loop = @as(*uws.Loop, @ptrCast(@alignCast(loop_))); - var ctx: *uws.SocketContext = @ptrCast(*uws.SocketContext, ctx_); + var ctx: *uws.SocketContext = @as(*uws.SocketContext, @ptrCast(ctx_)); if (vm.uws_event_loop) |other| { std.debug.assert(other == loop); @@ -1312,7 +1312,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { // fast path: no backpressure, no queue, just send the bytes. if (!this.hasBackpressure()) { const wrote = socket.write(bytes, !is_closing); - const expected = @intCast(c_int, bytes.len); + const expected = @as(c_int, @intCast(bytes.len)); if (wrote == expected) { return true; } @@ -1322,7 +1322,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { return false; } - _ = this.copyToSendBuffer(bytes[@intCast(usize, wrote)..], false, is_closing); + _ = this.copyToSendBuffer(bytes[@as(usize, @intCast(wrote))..], false, is_closing); return true; } @@ -1369,7 +1369,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { this.terminate(ErrorCode.failed_to_write); return false; } - const expected = @intCast(usize, wrote); + const expected = @as(usize, @intCast(wrote)); var readable = this.send_buffer.readableSlice(0); if (readable.ptr == out_buf.ptr) { this.send_buffer.discard(expected); @@ -1388,15 +1388,15 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { return false; } - var header = @bitCast(WebsocketHeader, @as(u16, 0)); + var header = @as(WebsocketHeader, @bitCast(@as(u16, 0))); header.final = true; header.opcode = .Pong; var to_mask = this.ping_frame_bytes[6..][0..this.ping_len]; header.mask = to_mask.len > 0; - header.len = @truncate(u7, this.ping_len); - this.ping_frame_bytes[0..2].* = @bitCast([2]u8, header); + header.len = @as(u7, @truncate(this.ping_len)); + this.ping_frame_bytes[0..2].* = @as([2]u8, @bitCast(header)); if (to_mask.len > 0) { Mask.fill(this.globalThis, this.ping_frame_bytes[2..6], to_mask, to_mask); @@ -1422,12 +1422,12 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { socket.shutdownRead(); var final_body_bytes: [128 + 8]u8 = undefined; - var header = @bitCast(WebsocketHeader, @as(u16, 0)); + var header = @as(WebsocketHeader, @bitCast(@as(u16, 0))); header.final = true; header.opcode = .Close; header.mask = true; - header.len = @truncate(u7, body_len + 2); - final_body_bytes[0..2].* = @bitCast([2]u8, @bitCast(u16, header)); + header.len = @as(u7, @truncate(body_len + 2)); + final_body_bytes[0..2].* = @as([2]u8, @bitCast(@as(u16, @bitCast(header)))); var mask_buf: *[4]u8 = final_body_bytes[2..6]; std.mem.writeIntSliceBig(u16, final_body_bytes[6..8], code); @@ -1489,7 +1489,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { return; } - const opcode = @enumFromInt(Opcode, @truncate(u4, op)); + const opcode = @as(Opcode, @enumFromInt(@as(u4, @truncate(op)))); const slice = ptr[0..len]; const bytes = Copy{ .bytes = slice }; // fast path: small frame, no backpressure, attempt to send without allocating @@ -1516,7 +1516,7 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { // Note: 0 is valid - const opcode = @enumFromInt(Opcode, @truncate(u4, op)); + const opcode = @as(Opcode, @enumFromInt(@as(u4, @truncate(op)))); { var inline_buf: [stack_frame_size]u8 = undefined; @@ -1622,8 +1622,8 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { buffered_data: [*]u8, buffered_data_len: usize, ) callconv(.C) ?*anyopaque { - var tcp = @ptrCast(*uws.Socket, input_socket); - var ctx = @ptrCast(*uws.SocketContext, socket_ctx); + var tcp = @as(*uws.Socket, @ptrCast(input_socket)); + var ctx = @as(*uws.SocketContext, @ptrCast(socket_ctx)); var adopted = Socket.adopt( tcp, ctx, @@ -1657,9 +1657,9 @@ pub fn NewWebSocketClient(comptime ssl: bool) type { // before the initial data handler is called outgoing.ref(); } - return @ptrCast( + return @as( *anyopaque, - adopted, + @ptrCast(adopted), ); } diff --git a/src/http_client_async.zig b/src/http_client_async.zig index 2cb534ed2..441c8ae47 100644 --- a/src/http_client_async.zig +++ b/src/http_client_async.zig @@ -42,7 +42,7 @@ const HiveArray = @import("./hive_array.zig").HiveArray; const Batch = NetworkThread.Batch; const TaggedPointerUnion = @import("./tagged_pointer.zig").TaggedPointerUnion; const DeadSocket = opaque {}; -var dead_socket = @ptrFromInt(*DeadSocket, 1); +var dead_socket = @as(*DeadSocket, @ptrFromInt(1)); //TODO: this needs to be freed when Worker Threads are implemented var socket_async_http_abort_tracker = std.AutoArrayHashMap(u32, *uws.Socket).init(bun.default_allocator); var async_http_id: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(0); @@ -99,19 +99,19 @@ pub const Sendfile = struct { ) Status { const adjusted_count_temporary = @min(@as(u64, this.remain), @as(u63, std.math.maxInt(u63))); // TODO we should not need this int cast; improve the return type of `@min` - const adjusted_count = @intCast(u63, adjusted_count_temporary); + const adjusted_count = @as(u63, @intCast(adjusted_count_temporary)); if (Environment.isLinux) { - var signed_offset = @intCast(i64, this.offset); + var signed_offset = @as(i64, @intCast(this.offset)); const begin = this.offset; const val = // this does the syscall directly, without libc std.os.linux.sendfile(socket.fd(), this.fd, &signed_offset, this.remain); - this.offset = @intCast(u64, signed_offset); + this.offset = @as(u64, @intCast(signed_offset)); const errcode = std.os.linux.getErrno(val); - this.remain -|= @intCast(u64, this.offset -| begin); + this.remain -|= @as(u64, @intCast(this.offset -| begin)); if (errcode != .SUCCESS or this.remain == 0 or val == 0) { if (errcode == .SUCCESS) { @@ -122,7 +122,7 @@ pub const Sendfile = struct { } } else { var sbytes: std.os.off_t = adjusted_count; - const signed_offset = @bitCast(i64, @as(u64, this.offset)); + const signed_offset = @as(i64, @bitCast(@as(u64, this.offset))); const errcode = std.c.getErrno(std.c.sendfile( this.fd, socket.fd(), @@ -132,7 +132,7 @@ pub const Sendfile = struct { null, 0, )); - const wrote = @intCast(u64, sbytes); + const wrote = @as(u64, @intCast(sbytes)); this.offset +|= wrote; this.remain -|= wrote; if (errcode != .AGAIN or this.remain == 0 or sbytes == 0) { @@ -200,7 +200,7 @@ const ProxyTunnel = struct { var out_bio: *BoringSSL.BIO = undefined; if (comptime is_ssl) { //TLS -> TLS - var proxy_ssl: *BoringSSL.SSL = @ptrCast(*BoringSSL.SSL, socket.getNativeHandle()); + var proxy_ssl: *BoringSSL.SSL = @as(*BoringSSL.SSL, @ptrCast(socket.getNativeHandle())); //create new SSL BIO out_bio = BoringSSL.BIO_new(BoringSSL.BIO_f_ssl()) orelse unreachable; //chain SSL bio with proxy BIO @@ -208,7 +208,7 @@ const ProxyTunnel = struct { _ = BoringSSL.BIO_push(out_bio, proxy_bio); } else { // socket output bio for non-TLS -> TLS - var fd = @intCast(c_int, @intFromPtr(socket.getNativeHandle())); + var fd = @as(c_int, @intCast(@intFromPtr(socket.getNativeHandle()))); out_bio = BoringSSL.BIO_new_fd(fd, BoringSSL.BIO_NOCLOSE); } @@ -315,13 +315,13 @@ fn NewHTTPContext(comptime ssl: bool) type { unreachable; } - return @ptrCast(*BoringSSL.SSL_CTX, this.us_socket_context.getNativeHandle(true)); + return @as(*BoringSSL.SSL_CTX, @ptrCast(this.us_socket_context.getNativeHandle(true))); } pub fn init(this: *@This()) !void { var opts: uws.us_socket_context_options_t = undefined; const size = @sizeOf(uws.us_socket_context_options_t); - @memset(@ptrCast([*]u8, &opts)[0..size], 0); + @memset(@as([*]u8, @ptrCast(&opts))[0..size], 0); this.us_socket_context = uws.us_create_socket_context(ssl_int, http_thread.loop, @sizeOf(usize), opts).?; if (comptime ssl) { this.sslCtx().setup(); @@ -356,7 +356,7 @@ fn NewHTTPContext(comptime ssl: bool) type { pending.http_socket = socket; @memcpy(pending.hostname_buf[0..hostname.len], hostname); - pending.hostname_len = @truncate(u8, hostname.len); + pending.hostname_len = @as(u8, @truncate(hostname.len)); pending.port = port; log("Keep-Alive release {s}:{d} (0x{})", .{ hostname, port, @intFromPtr(socket.socket) }); @@ -484,10 +484,10 @@ fn NewHTTPContext(comptime ssl: bool) type { ptr: *anyopaque, socket: HTTPSocket, ) void { - var tagged = ActiveSocket.from(@ptrCast(**anyopaque, @alignCast(@alignOf(**anyopaque), ptr)).*); + var tagged = ActiveSocket.from(@as(**anyopaque, @ptrCast(@alignCast(ptr))).*); { @setRuntimeSafety(false); - socket.ext(**anyopaque).?.* = @ptrCast(**anyopaque, @alignCast(@alignOf(**anyopaque), ActiveSocket.init(dead_socket).ptrUnsafe())); + socket.ext(**anyopaque).?.* = @as(**anyopaque, @ptrCast(@alignCast(ActiveSocket.init(dead_socket).ptrUnsafe()))); } if (tagged.get(HTTPClient)) |client| { @@ -512,7 +512,7 @@ fn NewHTTPContext(comptime ssl: bool) type { var iter = this.pending_sockets.available.iterator(.{ .kind = .unset }); while (iter.next()) |pending_socket_index| { - var socket = this.pending_sockets.at(@intCast(u16, pending_socket_index)); + var socket = this.pending_sockets.at(@as(u16, @intCast(pending_socket_index))); if (socket.port != port) { continue; } @@ -708,7 +708,7 @@ pub const HTTPThread = struct { this.loop.run(); if (comptime Environment.isDebug) { var end = std.time.nanoTimestamp(); - threadlog("Waited {any}\n", .{std.fmt.fmtDurationSigned(@truncate(i64, end - start_time))}); + threadlog("Waited {any}\n", .{std.fmt.fmtDurationSigned(@as(i64, @truncate(end - start_time)))}); Output.flush(); } } @@ -768,7 +768,7 @@ pub fn onOpen( } if (comptime is_ssl) { - var ssl: *BoringSSL.SSL = @ptrCast(*BoringSSL.SSL, socket.getNativeHandle()); + var ssl: *BoringSSL.SSL = @as(*BoringSSL.SSL, @ptrCast(socket.getNativeHandle())); if (!ssl.isInitFinished()) { var _hostname = client.hostname orelse client.url.hostname; if (client.http_proxy) |proxy| { @@ -1095,7 +1095,7 @@ pub const InternalState = struct { this.content_encoding_i = std.math.maxInt(@TypeOf(this.content_encoding_i)); } - this.body_size = @truncate(usize, body_out_str.list.items.len); + this.body_size = @as(usize, @truncate(body_out_str.list.items.len)); } }; @@ -1897,7 +1897,7 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s return; } - this.state.request_sent_len += @intCast(usize, amount); + this.state.request_sent_len += @as(usize, @intCast(amount)); const has_sent_headers = this.state.request_sent_len >= headers_len; if (has_sent_headers and this.state.request_body.len > 0) { @@ -1923,7 +1923,7 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s ); // we sent everything, but there's some body leftover - if (amount == @intCast(c_int, to_send.len)) { + if (amount == @as(c_int, @intCast(to_send.len))) { this.onWritable(false, is_ssl, socket); } } else { @@ -1942,8 +1942,8 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s return; } - this.state.request_sent_len += @intCast(usize, amount); - this.state.request_body = this.state.request_body[@intCast(usize, amount)..]; + this.state.request_sent_len += @as(usize, @intCast(amount)); + this.state.request_body = this.state.request_body[@as(usize, @intCast(amount))..]; if (this.state.request_body.len == 0) { this.state.request_stage = .done; @@ -1985,8 +1985,8 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s return; }; - this.state.request_sent_len += @intCast(usize, amount); - this.state.request_body = this.state.request_body[@intCast(usize, amount)..]; + this.state.request_sent_len += @as(usize, @intCast(amount)); + this.state.request_body = this.state.request_body[@as(usize, @intCast(amount))..]; if (this.state.request_body.len == 0) { this.state.request_stage = .done; @@ -2046,7 +2046,7 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s } } - this.state.request_sent_len += @intCast(usize, amount); + this.state.request_sent_len += @as(usize, @intCast(amount)); const has_sent_headers = this.state.request_sent_len >= headers_len; if (has_sent_headers and this.state.request_body.len > 0) { @@ -2065,7 +2065,7 @@ pub fn onWritable(this: *HTTPClient, comptime is_first_call: bool, comptime is_s std.debug.assert(this.state.request_body.len > 0); // we sent everything, but there's some body leftover - if (amount == @intCast(c_int, to_send.len)) { + if (amount == @as(c_int, @intCast(to_send.len))) { this.onWritable(false, is_ssl, socket); } } else { @@ -2200,7 +2200,7 @@ pub fn onData(this: *HTTPClient, comptime is_ssl: bool, incoming_data: []const u this.state.pending_response = response; - var body_buf = to_read[@min(@intCast(usize, response.bytes_read), to_read.len)..]; + var body_buf = to_read[@min(@as(usize, @intCast(response.bytes_read)), to_read.len)..]; var deferred_redirect: ?*URLBufferPool.Node = null; const can_continue = this.handleResponseMetadata( @@ -2540,7 +2540,7 @@ pub const HTTPClientResult = struct { } pub fn wrapped_callback(ptr: *anyopaque, result: HTTPClientResult) void { - var casted = @ptrCast(Type, @alignCast(std.meta.alignment(Type), ptr)); + var casted = @as(Type, @ptrCast(@alignCast(ptr))); @call(.always_inline, callback, .{ casted, result }); } }; @@ -2582,8 +2582,8 @@ fn handleResponseBodyFromSinglePacket(this: *HTTPClient, incoming_data: []const if (this.state.encoding.isCompressed()) { var body_buffer = this.state.body_out_str.?; if (body_buffer.list.capacity == 0) { - const min = @min(@ceil(@floatFromInt(f64, incoming_data.len) * 1.5), @as(f64, 1024 * 1024 * 2)); - try body_buffer.growBy(@max(@intFromFloat(usize, min), 32)); + const min = @min(@ceil(@as(f64, @floatFromInt(incoming_data.len)) * 1.5), @as(f64, 1024 * 1024 * 2)); + try body_buffer.growBy(@max(@as(usize, @intFromFloat(min)), 32)); } try ZlibPool.decompress(incoming_data, body_buffer, default_allocator); @@ -2798,10 +2798,10 @@ pub fn handleResponseMetadata( hashHeaderConst("Content-Encoding") => { if (strings.eqlComptime(header.value, "gzip")) { this.state.encoding = Encoding.gzip; - this.state.content_encoding_i = @truncate(u8, header_i); + this.state.content_encoding_i = @as(u8, @truncate(header_i)); } else if (strings.eqlComptime(header.value, "deflate")) { this.state.encoding = Encoding.deflate; - this.state.content_encoding_i = @truncate(u8, header_i); + this.state.content_encoding_i = @as(u8, @truncate(header_i)); } else if (!strings.eqlComptime(header.value, "identity")) { return error.UnsupportedContentEncoding; } diff --git a/src/install/bin.zig b/src/install/bin.zig index f8117c1e8..adbd5f4d3 100644 --- a/src/install/bin.zig +++ b/src/install/bin.zig @@ -56,7 +56,7 @@ pub const Bin = extern struct { for (list) |*extern_string| { builder.count(extern_string.slice(buf)); } - return @truncate(u32, list.len); + return @as(u32, @truncate(list.len)); }, else => {}, } @@ -461,7 +461,7 @@ pub const Bin = extern struct { var dir = std.fs.Dir{ .fd = this.package_installed_node_modules }; var joined = Path.joinStringBuf(&target_buf, &parts, .auto); - @ptrFromInt([*]u8, @intFromPtr(joined.ptr))[joined.len] = 0; + @as([*]u8, @ptrFromInt(@intFromPtr(joined.ptr)))[joined.len] = 0; var joined_: [:0]const u8 = joined.ptr[0..joined.len :0]; var child_dir = bun.openDir(dir, joined_) catch |err| { this.err = err; @@ -613,7 +613,7 @@ pub const Bin = extern struct { var dir = std.fs.Dir{ .fd = this.package_installed_node_modules }; var joined = Path.joinStringBuf(&target_buf, &parts, .auto); - @ptrFromInt([*]u8, @intFromPtr(joined.ptr))[joined.len] = 0; + @as([*]u8, @ptrFromInt(@intFromPtr(joined.ptr)))[joined.len] = 0; var joined_: [:0]const u8 = joined.ptr[0..joined.len :0]; var child_dir = bun.openDir(dir, joined_) catch |err| { this.err = err; diff --git a/src/install/dependency.zig b/src/install/dependency.zig index 6ef02bbfc..8578e998a 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -146,8 +146,8 @@ pub fn toDependency( }; return Dependency{ .name = name, - .name_hash = @bitCast(u64, this[8..16].*), - .behavior = @enumFromInt(Dependency.Behavior, this[16]), + .name_hash = @as(u64, @bitCast(this[8..16].*)), + .behavior = @as(Dependency.Behavior, @enumFromInt(this[16])), .version = Dependency.Version.toVersion(name, this[17..this.len].*, ctx), }; } @@ -155,7 +155,7 @@ pub fn toDependency( pub fn toExternal(this: Dependency) External { var bytes: External = undefined; bytes[0..this.name.bytes.len].* = this.name.bytes; - bytes[8..16].* = @bitCast([8]u8, this.name_hash); + bytes[8..16].* = @as([8]u8, @bitCast(this.name_hash)); bytes[16] = @intFromEnum(this.behavior); bytes[17..bytes.len].* = this.version.toExternal(); return bytes; @@ -265,7 +265,7 @@ pub const Version = struct { ctx: Dependency.Context, ) Dependency.Version { const slice = String{ .bytes = bytes[1..9].* }; - const tag = @enumFromInt(Dependency.Version.Tag, bytes[0]); + const tag = @as(Dependency.Version.Tag, @enumFromInt(bytes[0])); const sliced = &slice.sliced(ctx.buffer); return Dependency.parseWithTag( ctx.allocator, @@ -920,41 +920,41 @@ pub const Behavior = enum(u8) { pub inline fn setNormal(this: Behavior, value: bool) Behavior { if (value) { - return @enumFromInt(Behavior, @intFromEnum(this) | Behavior.normal); + return @as(Behavior, @enumFromInt(@intFromEnum(this) | Behavior.normal)); } else { - return @enumFromInt(Behavior, @intFromEnum(this) & ~Behavior.normal); + return @as(Behavior, @enumFromInt(@intFromEnum(this) & ~Behavior.normal)); } } pub inline fn setOptional(this: Behavior, value: bool) Behavior { if (value) { - return @enumFromInt(Behavior, @intFromEnum(this) | Behavior.optional); + return @as(Behavior, @enumFromInt(@intFromEnum(this) | Behavior.optional)); } else { - return @enumFromInt(Behavior, @intFromEnum(this) & ~Behavior.optional); + return @as(Behavior, @enumFromInt(@intFromEnum(this) & ~Behavior.optional)); } } pub inline fn setDev(this: Behavior, value: bool) Behavior { if (value) { - return @enumFromInt(Behavior, @intFromEnum(this) | Behavior.dev); + return @as(Behavior, @enumFromInt(@intFromEnum(this) | Behavior.dev)); } else { - return @enumFromInt(Behavior, @intFromEnum(this) & ~Behavior.dev); + return @as(Behavior, @enumFromInt(@intFromEnum(this) & ~Behavior.dev)); } } pub inline fn setPeer(this: Behavior, value: bool) Behavior { if (value) { - return @enumFromInt(Behavior, @intFromEnum(this) | Behavior.peer); + return @as(Behavior, @enumFromInt(@intFromEnum(this) | Behavior.peer)); } else { - return @enumFromInt(Behavior, @intFromEnum(this) & ~Behavior.peer); + return @as(Behavior, @enumFromInt(@intFromEnum(this) & ~Behavior.peer)); } } pub inline fn setWorkspace(this: Behavior, value: bool) Behavior { if (value) { - return @enumFromInt(Behavior, @intFromEnum(this) | Behavior.workspace); + return @as(Behavior, @enumFromInt(@intFromEnum(this) | Behavior.workspace)); } else { - return @enumFromInt(Behavior, @intFromEnum(this) & ~Behavior.workspace); + return @as(Behavior, @enumFromInt(@intFromEnum(this) & ~Behavior.workspace)); } } diff --git a/src/install/extract_tarball.zig b/src/install/extract_tarball.zig index 3be00853f..a533a92a7 100644 --- a/src/install/extract_tarball.zig +++ b/src/install/extract_tarball.zig @@ -341,7 +341,7 @@ fn extract(this: *const ExtractTarball, tgz_bytes: []const u8) !Install.ExtractD if (switch (this.resolution.tag) { // TODO remove extracted files not matching any globs under "files" .github, .local_tarball, .remote_tarball => true, - else => this.package_manager.lockfile.trusted_dependencies.contains(@truncate(u32, Semver.String.Builder.stringHash(name))), + else => this.package_manager.lockfile.trusted_dependencies.contains(@as(u32, @truncate(Semver.String.Builder.stringHash(name)))), }) { const json_file = final_dir.openFileZ("package.json", .{ .mode = .read_only }) catch |err| { this.package_manager.log.addErrorFmt( diff --git a/src/install/install.zig b/src/install/install.zig index 65f4a35e9..a71ad6a5a 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -151,8 +151,8 @@ pub fn ExternalSliceAligned(comptime Type: type, comptime alignment_: ?u29) type // } return Slice{ - .off = @truncate(u32, (@intFromPtr(in.ptr) - @intFromPtr(buf.ptr)) / @sizeOf(Type)), - .len = @truncate(u32, in.len), + .off = @as(u32, @truncate((@intFromPtr(in.ptr) - @intFromPtr(buf.ptr)) / @sizeOf(Type))), + .len = @as(u32, @truncate(in.len)), }; } }; @@ -346,12 +346,12 @@ const NetworkTask = struct { try header_builder.entries.append( allocator, .{ - .name = .{ .offset = 0, .length = @truncate(u32, "Accept".len) }, - .value = .{ .offset = "Accept".len, .length = @truncate(u32, default_headers_buf.len - "Accept".len) }, + .name = .{ .offset = 0, .length = @as(u32, @truncate("Accept".len)) }, + .value = .{ .offset = "Accept".len, .length = @as(u32, @truncate(default_headers_buf.len - "Accept".len)) }, }, ); header_builder.header_count = 1; - header_builder.content = GlobalStringBuilder{ .ptr = @ptrFromInt([*]u8, @intFromPtr(bun.span(default_headers_buf).ptr)), .len = default_headers_buf.len, .cap = default_headers_buf.len }; + header_builder.content = GlobalStringBuilder{ .ptr = @as([*]u8, @ptrFromInt(@intFromPtr(bun.span(default_headers_buf).ptr))), .len = default_headers_buf.len, .cap = default_headers_buf.len }; } this.response_buffer = try MutableString.init(allocator, 0); @@ -479,7 +479,7 @@ pub const Features = struct { out |= @as(u8, @intFromBool(this.dev_dependencies)) << 3; out |= @as(u8, @intFromBool(this.peer_dependencies)) << 4; out |= @as(u8, @intFromBool(this.workspaces)) << 5; - return @enumFromInt(Behavior, out); + return @as(Behavior, @enumFromInt(out)); } pub const main = Features{ @@ -545,28 +545,28 @@ const Task = struct { hasher.update(package_name); hasher.update("@"); hasher.update(std.mem.asBytes(&package_version)); - return @as(u64, 0 << 61) | @as(u64, @truncate(u61, hasher.final())); + return @as(u64, 0 << 61) | @as(u64, @as(u61, @truncate(hasher.final()))); } pub fn forBinLink(package_id: PackageID) u64 { const hash = bun.Wyhash.hash(0, std.mem.asBytes(&package_id)); - return @as(u64, 1 << 61) | @as(u64, @truncate(u61, hash)); + return @as(u64, 1 << 61) | @as(u64, @as(u61, @truncate(hash))); } pub fn forManifest(name: string) u64 { - return @as(u64, 2 << 61) | @as(u64, @truncate(u61, bun.Wyhash.hash(0, name))); + return @as(u64, 2 << 61) | @as(u64, @as(u61, @truncate(bun.Wyhash.hash(0, name)))); } pub fn forTarball(url: string) u64 { var hasher = bun.Wyhash.init(0); hasher.update(url); - return @as(u64, 3 << 61) | @as(u64, @truncate(u61, hasher.final())); + return @as(u64, 3 << 61) | @as(u64, @as(u61, @truncate(hasher.final()))); } pub fn forGitClone(url: string) u64 { var hasher = bun.Wyhash.init(0); hasher.update(url); - return @as(u64, 4 << 61) | @as(u64, @truncate(u61, hasher.final())); + return @as(u64, 4 << 61) | @as(u64, @as(u61, @truncate(hasher.final()))); } pub fn forGitCheckout(url: string, resolved: string) u64 { @@ -574,7 +574,7 @@ const Task = struct { hasher.update(url); hasher.update("@"); hasher.update(resolved); - return @as(u64, 5 << 61) | @as(u64, @truncate(u61, hasher.final())); + return @as(u64, 5 << 61) | @as(u64, @as(u61, @truncate(hasher.final()))); } }; @@ -1408,7 +1408,7 @@ const PackageInstall = struct { const rc = Syscall.system.open(path, @as(u32, std.os.O.PATH | 0), @as(u32, 0)); switch (Syscall.getErrno(rc)) { .SUCCESS => { - const fd = @intCast(std.os.fd_t, rc); + const fd = @as(std.os.fd_t, @intCast(rc)); _ = Syscall.system.close(fd); return false; }, @@ -1746,7 +1746,7 @@ pub const PackageManager = struct { version_buf: []const u8, behavior: Dependency.Behavior, ) DependencyToEnqueue { - const dep_id = @truncate(DependencyID, brk: { + const dep_id = @as(DependencyID, @truncate(brk: { const str_buf = this.lockfile.buffers.string_bytes.items; for (this.lockfile.buffers.dependencies.items, 0..) |dep, id| { if (!strings.eqlLong(dep.name.slice(str_buf), name, true)) continue; @@ -1772,7 +1772,7 @@ pub const PackageManager = struct { this.lockfile.buffers.resolutions.append(this.allocator, invalid_package_id) catch unreachable; if (comptime Environment.allow_assert) std.debug.assert(this.lockfile.buffers.dependencies.items.len == this.lockfile.buffers.resolutions.items.len); break :brk index; - }); + })); if (this.lockfile.buffers.resolutions.items[dep_id] == invalid_package_id) { this.enqueueDependencyWithMainAndSuccessFn( @@ -2806,7 +2806,7 @@ pub const PackageManager = struct { tmpname_buf[0..8].* = "tmplock-".*; var tmpfile = FileSystem.RealFS.Tmpfile{}; var secret: [32]u8 = undefined; - std.mem.writeIntNative(u64, secret[0..8], @intCast(u64, std.time.milliTimestamp())); + std.mem.writeIntNative(u64, secret[0..8], @as(u64, @intCast(std.time.milliTimestamp()))); var base64_bytes: [64]u8 = undefined; std.crypto.random.bytes(&base64_bytes); @@ -3340,8 +3340,8 @@ pub const PackageManager = struct { pub fn scheduleTasks(manager: *PackageManager) usize { const count = manager.task_batch.len + manager.network_resolve_batch.len + manager.network_tarball_batch.len; - manager.pending_tasks += @truncate(u32, count); - manager.total_tasks += @truncate(u32, count); + manager.pending_tasks += @as(u32, @truncate(count)); + manager.total_tasks += @as(u32, @truncate(count)); manager.thread_pool.schedule(manager.task_batch); manager.network_resolve_batch.push(manager.network_tarball_batch); HTTP.http_thread.schedule(manager.network_resolve_batch); @@ -3799,7 +3799,7 @@ pub const PackageManager = struct { if (comptime log_level.isVerbose()) { Output.prettyError(" ", .{}); - Output.printElapsed(@floatFromInt(f64, task.http.elapsed) / std.time.ns_per_ms); + Output.printElapsed(@as(f64, @floatFromInt(task.http.elapsed)) / std.time.ns_per_ms); Output.prettyError("\n <d>Downloaded <r><green>{s}<r> versions\n", .{name.slice()}); Output.flush(); } @@ -3811,7 +3811,7 @@ pub const PackageManager = struct { entry.value_ptr.* = manifest; if (timestamp_this_tick == null) { - timestamp_this_tick = @truncate(u32, @intCast(u64, @max(0, std.time.timestamp()))) +| 300; + timestamp_this_tick = @as(u32, @truncate(@as(u64, @intCast(@max(0, std.time.timestamp()))))) +| 300; } entry.value_ptr.*.pkg.public_max_age = timestamp_this_tick.?; @@ -3933,7 +3933,7 @@ pub const PackageManager = struct { if (comptime log_level.isVerbose()) { Output.prettyError(" ", .{}); - Output.printElapsed(@floatCast(f64, @floatFromInt(f64, task.http.elapsed) / std.time.ns_per_ms)); + Output.printElapsed(@as(f64, @floatCast(@as(f64, @floatFromInt(task.http.elapsed)) / std.time.ns_per_ms))); Output.prettyError(" <d>Downloaded <r><green>{s}<r> tarball\n", .{extract.name.slice()}); Output.flush(); } @@ -5219,7 +5219,7 @@ pub const PackageManager = struct { Output.flush(); } - var cpu_count = @truncate(u32, ((try std.Thread.getCpuCount()) + 1)); + var cpu_count = @as(u32, @truncate(((try std.Thread.getCpuCount()) + 1))); if (env.map.get("GOMAXPROCS")) |max_procs| { if (std.fmt.parseInt(u32, max_procs, 10)) |cpu_count_| { @@ -5275,7 +5275,7 @@ pub const PackageManager = struct { ctx.install, ); - manager.timestamp_for_manifest_cache_control = @truncate(u32, @intCast(u64, @max(std.time.timestamp(), 0))); + manager.timestamp_for_manifest_cache_control = @as(u32, @truncate(@as(u64, @intCast(@max(std.time.timestamp(), 0))))); return manager; } @@ -5290,7 +5290,7 @@ pub const PackageManager = struct { PackageManager.verbose_install = true; } - var cpu_count = @truncate(u32, ((try std.Thread.getCpuCount()) + 1)); + var cpu_count = @as(u32, @truncate(((try std.Thread.getCpuCount()) + 1))); if (env.map.get("GOMAXPROCS")) |max_procs| { if (std.fmt.parseInt(u32, max_procs, 10)) |cpu_count_| { @@ -5360,15 +5360,15 @@ pub const PackageManager = struct { bun_install, ); - manager.timestamp_for_manifest_cache_control = @truncate( + manager.timestamp_for_manifest_cache_control = @as( u32, - @intCast( + @truncate(@as( u64, - @max( + @intCast(@max( std.time.timestamp(), 0, - ), - ), + )), + )), // When using "bun install", we check for updates with a 300 second cache. // When using bun, we only do staleness checks once per day ) -| std.time.s_per_day; @@ -6101,15 +6101,15 @@ pub const PackageManager = struct { if (manager.options.positionals.len == 1) { var examples_to_print: [3]string = undefined; - const off = @intCast(u64, std.time.milliTimestamp()); + const off = @as(u64, @intCast(std.time.milliTimestamp())); switch (op) { .update, .add => { const filler = @import("../cli.zig").HelpCommand.packages_to_add_filler; - examples_to_print[0] = filler[@intCast(usize, (off) % filler.len)]; - examples_to_print[1] = filler[@intCast(usize, (off + 1) % filler.len)]; - examples_to_print[2] = filler[@intCast(usize, (off + 2) % filler.len)]; + examples_to_print[0] = filler[@as(usize, @intCast((off) % filler.len))]; + examples_to_print[1] = filler[@as(usize, @intCast((off + 1) % filler.len))]; + examples_to_print[2] = filler[@as(usize, @intCast((off + 2) % filler.len))]; Output.prettyErrorln( \\ @@ -6145,9 +6145,9 @@ pub const PackageManager = struct { .remove => { const filler = @import("../cli.zig").HelpCommand.packages_to_remove_filler; - examples_to_print[0] = filler[@intCast(usize, (off) % filler.len)]; - examples_to_print[1] = filler[@intCast(usize, (off + 1) % filler.len)]; - examples_to_print[2] = filler[@intCast(usize, (off + 2) % filler.len)]; + examples_to_print[0] = filler[@as(usize, @intCast((off) % filler.len))]; + examples_to_print[1] = filler[@as(usize, @intCast((off + 1) % filler.len))]; + examples_to_print[2] = filler[@as(usize, @intCast((off + 2) % filler.len))]; Output.prettyErrorln( \\ @@ -6308,7 +6308,7 @@ pub const PackageManager = struct { const changed = new_len != dependencies.len; if (changed) { - query.expr.data.e_object.properties.len = @truncate(u32, new_len); + query.expr.data.e_object.properties.len = @as(u32, @truncate(new_len)); // If the dependencies list is now empty, remove it from the package.json // since we're swapRemove, we have to re-sort it @@ -6781,7 +6781,7 @@ pub const PackageManager = struct { } } - if (resolution.tag == .workspace or this.lockfile.trusted_dependencies.contains(@truncate(u32, String.Builder.stringHash(name)))) { + if (resolution.tag == .workspace or this.lockfile.trusted_dependencies.contains(@as(u32, @truncate(String.Builder.stringHash(name))))) { var scripts = this.lockfile.packages.items(.scripts)[package_id]; if (scripts.hasAny()) { var path_buf: [bun.MAX_PATH_BYTES]u8 = undefined; @@ -7497,8 +7497,8 @@ pub const PackageManager = struct { new_dep.count(lockfile.buffers.string_bytes.items, *Lockfile.StringBuilder, builder); } - const off = @truncate(u32, manager.lockfile.buffers.dependencies.items.len); - const len = @truncate(u32, new_dependencies.len); + const off = @as(u32, @truncate(manager.lockfile.buffers.dependencies.items.len)); + const len = @as(u32, @truncate(new_dependencies.len)); var packages = manager.lockfile.packages.slice(); var dep_lists = packages.items(.dependencies); var resolution_lists = packages.items(.resolutions); @@ -7536,7 +7536,7 @@ pub const PackageManager = struct { if (manager.summary.add > 0 or manager.summary.update > 0) { var remaining = mapping; var dependency_i: PackageID = off; - const changes = @truncate(PackageID, mapping.len); + const changes = @as(PackageID, @truncate(mapping.len)); _ = manager.getCacheDirectory(); _ = manager.getTemporaryDirectory(); @@ -7763,7 +7763,7 @@ pub const PackageManager = struct { } if (needs_new_lockfile) { - manager.summary.add = @truncate(u32, manager.lockfile.packages.len); + manager.summary.add = @as(u32, @truncate(manager.lockfile.packages.len)); } if (manager.options.do.save_yarn_lock) { @@ -7812,9 +7812,9 @@ pub const PackageManager = struct { // it's confusing when it shows 3 packages and says it installed 1 Output.pretty("\n <green>{d}<r> packages<r> installed ", .{@max( install_summary.success, - @truncate( + @as( u32, - manager.package_json_updates.len, + @truncate(manager.package_json_updates.len), ), )}); Output.printStartEndStdout(ctx.start_time, std.time.nanoTimestamp()); @@ -7838,7 +7838,7 @@ pub const PackageManager = struct { } else if (install_summary.skipped > 0 and install_summary.fail == 0 and manager.package_json_updates.len == 0) { Output.pretty("\n", .{}); - const count = @truncate(PackageID, manager.lockfile.packages.len); + const count = @as(PackageID, @truncate(manager.lockfile.packages.len)); if (count != install_summary.skipped) { Output.pretty("Checked <green>{d} installs<r> across {d} packages <d>(no changes)<r> ", .{ install_summary.skipped, diff --git a/src/install/integrity.zig b/src/install/integrity.zig index 4634c2dfd..dd11140de 100644 --- a/src/install/integrity.zig +++ b/src/install/integrity.zig @@ -61,7 +61,7 @@ pub const Integrity = extern struct { }); // parse hex integer - integrity.value[out_i] = @truncate(u8, x0 << 4 | x1); + integrity.value[out_i] = @as(u8, @truncate(x0 << 4 | x1)); out_i += 1; i += 1; diff --git a/src/install/lockfile.zig b/src/install/lockfile.zig index 843381228..cf0ee8267 100644 --- a/src/install/lockfile.zig +++ b/src/install/lockfile.zig @@ -226,23 +226,23 @@ pub const Tree = struct { pub fn toExternal(this: Tree) External { var out = External{}; - out[0..4].* = @bitCast(Id, this.id); - out[4..8].* = @bitCast(Id, this.dependency_id); - out[8..12].* = @bitCast(Id, this.parent); - out[12..16].* = @bitCast(u32, this.dependencies.off); - out[16..20].* = @bitCast(u32, this.dependencies.len); + out[0..4].* = @as(Id, @bitCast(this.id)); + out[4..8].* = @as(Id, @bitCast(this.dependency_id)); + out[8..12].* = @as(Id, @bitCast(this.parent)); + out[12..16].* = @as(u32, @bitCast(this.dependencies.off)); + out[16..20].* = @as(u32, @bitCast(this.dependencies.len)); if (out.len != 20) @compileError("Tree.External is not 20 bytes"); return out; } pub fn toTree(out: External) Tree { return .{ - .id = @bitCast(Id, out[0..4].*), - .dependency_id = @bitCast(Id, out[4..8].*), - .parent = @bitCast(Id, out[8..12].*), + .id = @as(Id, @bitCast(out[0..4].*)), + .dependency_id = @as(Id, @bitCast(out[4..8].*)), + .parent = @as(Id, @bitCast(out[8..12].*)), .dependencies = .{ - .off = @bitCast(u32, out[12..16].*), - .len = @bitCast(u32, out[16..20].*), + .off = @as(u32, @bitCast(out[12..16].*)), + .len = @as(u32, @bitCast(out[16..20].*)), }, }; } @@ -306,7 +306,7 @@ pub const Tree = struct { if (tree.id > 0) { var depth_buf_len: usize = 1; - while (parent_id > 0 and parent_id < @intCast(Id, this.trees.len)) { + while (parent_id > 0 and parent_id < @as(Id, @intCast(this.trees.len))) { this.depth_stack[depth_buf_len] = parent_id; parent_id = this.trees[parent_id].parent; depth_buf_len += 1; @@ -374,7 +374,7 @@ pub const Tree = struct { /// Flatten the multi-dimensional ArrayList of package IDs into a single easily serializable array pub fn clean(this: *Builder) !DependencyIDList { - const end = @truncate(Id, this.list.len); + const end = @as(Id, @truncate(this.list.len)); var i: Id = 0; var total: u32 = 0; var trees = this.list.items(.tree); @@ -389,7 +389,7 @@ pub const Tree = struct { for (trees, dependencies) |*tree, *child| { if (tree.dependencies.len > 0) { - const len = @truncate(PackageID, child.items.len); + const len = @as(PackageID, @truncate(child.items.len)); next.off += next.len; next.len = len; tree.dependencies = next; @@ -419,7 +419,7 @@ pub const Tree = struct { try builder.list.append(builder.allocator, .{ .tree = .{ .parent = this.id, - .id = @truncate(Id, builder.list.len), + .id = @as(Id, @truncate(builder.list.len)), .dependency_id = dependency_id, }, .dependencies = .{}, @@ -430,7 +430,7 @@ pub const Tree = struct { const dependency_lists = list_slice.items(.dependencies); const next: *Tree = &trees[builder.list.len - 1]; const name_hashes: []const PackageNameHash = builder.name_hashes; - const max_package_id = @truncate(PackageID, name_hashes.len); + const max_package_id = @as(PackageID, @truncate(name_hashes.len)); var dep_id = resolution_list.off; const end = dep_id + resolution_list.len; @@ -545,7 +545,7 @@ pub fn maybeCloneFilteringRootPackages( const root_dependencies = old_root_dependenices_list.get(old.buffers.dependencies.items); var resolutions = old_root_resolutions.mut(old.buffers.resolutions.items); var any_changes = false; - const end = @truncate(PackageID, old.packages.len); + const end = @as(PackageID, @truncate(old.packages.len)); for (root_dependencies, resolutions) |dependency, *resolution| { if (!dependency.behavior.isEnabled(features) and resolution.* < end) { @@ -1022,7 +1022,7 @@ pub const Printer = struct { defer if (id_map.len > 0) default_allocator.free(id_map); visited.set(0); - const end = @truncate(PackageID, resolved.len); + const end = @as(PackageID, @truncate(resolved.len)); if (this.successfully_installed) |installed| { var dep_id = resolutions_list[0].off; @@ -1039,7 +1039,7 @@ pub const Printer = struct { if (update.failed) return; if (update.matches(dependency, string_buf)) { if (dependency_id.* == invalid_package_id) { - dependency_id.* = @truncate(DependencyID, dep_id); + dependency_id.* = @as(DependencyID, @truncate(dep_id)); } continue :outer; @@ -1076,7 +1076,7 @@ pub const Printer = struct { if (update.failed) return; if (update.matches(dependency, string_buf)) { if (dependency_id.* == invalid_package_id) { - dependency_id.* = @truncate(DependencyID, dep_id); + dependency_id.* = @as(DependencyID, @truncate(dep_id)); } continue :outer; @@ -1202,7 +1202,7 @@ pub const Printer = struct { var requested_versions = RequestedVersion.init(this.lockfile.allocator); var all_requested_versions = try this.lockfile.allocator.alloc(Dependency.Version, resolutions_buffer.len); defer this.lockfile.allocator.free(all_requested_versions); - const package_count = @truncate(PackageID, names.len); + const package_count = @as(PackageID, @truncate(names.len)); var alphabetized_names = try this.lockfile.allocator.alloc(PackageID, package_count - 1); defer this.lockfile.allocator.free(alphabetized_names); @@ -1393,7 +1393,7 @@ pub fn verifyResolutions(this: *Lockfile, local_features: Features, remote_featu const dependency_lists: []const DependencySlice = this.packages.items(.dependencies); const dependencies_buffer = this.buffers.dependencies.items; const resolutions_buffer = this.buffers.resolutions.items; - const end = @truncate(PackageID, this.packages.len); + const end = @as(PackageID, @truncate(this.packages.len)); var any_failed = false; const string_buf = this.buffers.string_bytes.items; @@ -1403,7 +1403,7 @@ pub fn verifyResolutions(this: *Lockfile, local_features: Features, remote_featu for (resolution_list.get(resolutions_buffer), dependency_list.get(dependencies_buffer)) |package_id, failed_dep| { if (package_id < end) continue; if (failed_dep.behavior.isPeer() or !failed_dep.behavior.isEnabled( - if (root_list.contains(@truncate(PackageID, parent_id))) + if (root_list.contains(@as(PackageID, @truncate(parent_id)))) local_features else remote_features, @@ -1446,7 +1446,7 @@ pub fn saveToDisk(this: *Lockfile, filename: stringZ) void { tmpname_buf[0..8].* = "bunlock-".*; var tmpfile = FileSystem.RealFS.Tmpfile{}; var secret: [32]u8 = undefined; - std.mem.writeIntNative(u64, secret[0..8], @intCast(u64, std.time.milliTimestamp())); + std.mem.writeIntNative(u64, secret[0..8], @as(u64, @intCast(std.time.milliTimestamp()))); var base64_bytes: [64]u8 = undefined; std.crypto.random.bytes(&base64_bytes); @@ -1588,7 +1588,7 @@ pub fn getOrPutID(this: *Lockfile, id: PackageID, name_hash: PackageNameHash) !v } pub fn appendPackage(this: *Lockfile, package_: Lockfile.Package) !Lockfile.Package { - const id = @truncate(PackageID, this.packages.len); + const id = @as(PackageID, @truncate(this.packages.len)); return try appendPackageWithID(this, package_, id); } @@ -1929,11 +1929,11 @@ pub const Package = extern struct { field: string, behavior: Behavior, - pub const dependencies = DependencyGroup{ .prop = "dependencies", .field = "dependencies", .behavior = @enumFromInt(Behavior, Behavior.normal) }; - pub const dev = DependencyGroup{ .prop = "devDependencies", .field = "dev_dependencies", .behavior = @enumFromInt(Behavior, Behavior.dev) }; - pub const optional = DependencyGroup{ .prop = "optionalDependencies", .field = "optional_dependencies", .behavior = @enumFromInt(Behavior, Behavior.optional) }; - pub const peer = DependencyGroup{ .prop = "peerDependencies", .field = "peer_dependencies", .behavior = @enumFromInt(Behavior, Behavior.peer) }; - pub const workspaces = DependencyGroup{ .prop = "workspaces", .field = "workspaces", .behavior = @enumFromInt(Behavior, Behavior.workspace) }; + pub const dependencies = DependencyGroup{ .prop = "dependencies", .field = "dependencies", .behavior = @as(Behavior, @enumFromInt(Behavior.normal)) }; + pub const dev = DependencyGroup{ .prop = "devDependencies", .field = "dev_dependencies", .behavior = @as(Behavior, @enumFromInt(Behavior.dev)) }; + pub const optional = DependencyGroup{ .prop = "optionalDependencies", .field = "optional_dependencies", .behavior = @as(Behavior, @enumFromInt(Behavior.optional)) }; + pub const peer = DependencyGroup{ .prop = "peerDependencies", .field = "peer_dependencies", .behavior = @as(Behavior, @enumFromInt(Behavior.peer)) }; + pub const workspaces = DependencyGroup{ .prop = "workspaces", .field = "workspaces", .behavior = @as(Behavior, @enumFromInt(Behavior.workspace)) }; }; pub inline fn isDisabled(this: *const Lockfile.Package) bool { @@ -1988,9 +1988,9 @@ pub const Package = extern struct { try new.buffers.resolutions.ensureUnusedCapacity(new.allocator, old_dependencies.len); try new.buffers.extern_strings.ensureUnusedCapacity(new.allocator, new_extern_string_count); - const prev_len = @truncate(u32, new.buffers.dependencies.items.len); - const end = prev_len + @truncate(u32, old_dependencies.len); - const max_package_id = @truncate(PackageID, old.packages.len); + const prev_len = @as(u32, @truncate(new.buffers.dependencies.items.len)); + const end = prev_len + @as(u32, @truncate(old_dependencies.len)); + const max_package_id = @as(PackageID, @truncate(old.packages.len)); new.buffers.dependencies.items = new.buffers.dependencies.items.ptr[0..end]; new.buffers.resolutions.items = new.buffers.resolutions.items.ptr[0..end]; @@ -2001,7 +2001,7 @@ pub const Package = extern struct { var dependencies: []Dependency = new.buffers.dependencies.items[prev_len..end]; var resolutions: []PackageID = new.buffers.resolutions.items[prev_len..end]; - const id = @truncate(PackageID, new.packages.len); + const id = @as(PackageID, @truncate(new.packages.len)); const new_package = try new.appendPackageWithID( .{ .name = builder.appendWithHash( @@ -2068,7 +2068,7 @@ pub const Package = extern struct { try cloner.clone_queue.append(.{ .old_resolution = old_resolution, .parent = new_package.meta.id, - .resolve_id = new_package.resolutions.off + @intCast(PackageID, i), + .resolve_id = new_package.resolutions.off + @as(PackageID, @intCast(i)), }); } } @@ -2150,8 +2150,8 @@ pub const Package = extern struct { package.meta.arch = package_json.arch; package.meta.os = package_json.os; - package.dependencies.off = @truncate(u32, dependencies_list.items.len); - package.dependencies.len = total_dependencies_count - @truncate(u32, dependencies.len); + package.dependencies.off = @as(u32, @truncate(dependencies_list.items.len)); + package.dependencies.len = total_dependencies_count - @as(u32, @truncate(dependencies.len)); package.resolutions.off = package.dependencies.off; package.resolutions.len = package.dependencies.len; @@ -2338,7 +2338,7 @@ pub const Package = extern struct { package.meta.integrity = package_version.integrity; - package.dependencies.off = @truncate(u32, dependencies_list.items.len); + package.dependencies.off = @as(u32, @truncate(dependencies_list.items.len)); package.dependencies.len = total_dependencies_count; package.resolutions.off = package.dependencies.off; package.resolutions.len = package.dependencies.len; @@ -2407,7 +2407,7 @@ pub const Package = extern struct { }; if (to_deps[to_i].eql(from_dep, to_lockfile.buffers.string_bytes.items, from_lockfile.buffers.string_bytes.items)) { - mapping[to_i] = @truncate(PackageID, i); + mapping[to_i] = @as(PackageID, @truncate(i)); continue; } @@ -2533,7 +2533,7 @@ pub const Package = extern struct { dependency_version.value.workspace = path; } else { const workspace = dependency_version.value.workspace.slice(buf); - const path = string_builder.append( + var path = string_builder.append( String, if (strings.eqlComptime(workspace, "*")) "*" else Path.relative( FileSystem.instance.top_level_dir, @@ -2547,13 +2547,32 @@ pub const Package = extern struct { ), ), ); - dependency_version.value.workspace = path; - var workspace_entry = try lockfile.workspace_paths.getOrPut(allocator, @truncate(u32, external_name.hash)); + defer dependency_version.value.workspace = path; + var workspace_entry = try lockfile.workspace_paths.getOrPut(allocator, @as(u32, @truncate(external_name.hash))); if (workspace_entry.found_existing) { - log.addErrorFmt(&source, logger.Loc.Empty, allocator, "Workspace name \"{s}\" already exists", .{ - external_name.slice(buf), - }) catch {}; - return error.InstallFailed; + const old_path = workspace_entry.value_ptr.*; + + if (strings.eqlComptime(workspace, "*")) { + path = old_path; + return null; + } else if (strings.eqlComptime(old_path.slice(buf), "*")) brk: { + workspace_entry.value_ptr.* = path; + for (package_dependencies[0..dependencies_count]) |*package_dep| { + if (package_dep.name_hash == external_name.hash) { + if (package_dep.version.tag != .workspace) break :brk; + package_dep.version.value.workspace = path; + return null; + } + } + return error.InstallFailed; + } else if (strings.eql(old_path.slice(buf), path.slice(buf))) { + return null; + } else { + log.addErrorFmt(&source, logger.Loc.Empty, allocator, "Workspace name \"{s}\" already exists", .{ + external_name.slice(buf), + }) catch {}; + return error.InstallFailed; + } } workspace_entry.value_ptr.* = path; }, @@ -2912,7 +2931,7 @@ pub const Package = extern struct { .values = workspace_names.values(), }); - return @truncate(u32, workspace_names.count()); + return @as(u32, @truncate(workspace_names.count())); } fn parseWithJSON( @@ -3109,7 +3128,7 @@ pub const Package = extern struct { else => {}, } } - total_dependencies_count += @truncate(u32, obj.properties.len); + total_dependencies_count += @as(u32, @truncate(obj.properties.len)); }, else => { if (group.behavior.isWorkspace()) { @@ -3148,7 +3167,7 @@ pub const Package = extern struct { , .{}) catch {}; return error.InvalidPackageJSON; }; - lockfile.trusted_dependencies.putAssumeCapacity(@truncate(u32, String.Builder.stringHash(name)), {}); + lockfile.trusted_dependencies.putAssumeCapacity(@as(u32, @truncate(String.Builder.stringHash(name))), {}); } }, else => { @@ -3294,7 +3313,7 @@ pub const Package = extern struct { } total_dependencies_count = 0; - const in_workspace = lockfile.workspace_paths.contains(@truncate(u32, package.name_hash)); + const in_workspace = lockfile.workspace_paths.contains(@as(u32, @truncate(package.name_hash))); inline for (dependency_groups) |group| { if (group.behavior.isWorkspace()) { @@ -3335,7 +3354,7 @@ pub const Package = extern struct { var tag: ?Dependency.Version.Tag = null; var workspace_path: ?String = null; - if (lockfile.workspace_paths.get(@truncate(u32, external_name.hash))) |path| { + if (lockfile.workspace_paths.get(@as(u32, @truncate(external_name.hash)))) |path| { tag = .workspace; workspace_path = path; } @@ -3376,10 +3395,10 @@ pub const Package = extern struct { Dependency.isLessThan, ); - package.dependencies.off = @truncate(u32, off); - package.dependencies.len = @truncate(u32, total_dependencies_count); + package.dependencies.off = @as(u32, @truncate(off)); + package.dependencies.len = @as(u32, @truncate(total_dependencies_count)); - package.resolutions = @bitCast(@TypeOf(package.resolutions), package.dependencies); + package.resolutions = @as(@TypeOf(package.resolutions), @bitCast(package.dependencies)); @memset(lockfile.buffers.resolutions.items.ptr[off..total_len], invalid_package_id); @@ -3439,14 +3458,20 @@ pub const Package = extern struct { .alignment = if (@sizeOf(field_info.type) == 0) 1 else field_info.alignment, }; } - const Sort = struct { - fn lessThan(trash: *i32, comptime lhs: Data, comptime rhs: Data) bool { - _ = trash; - return lhs.alignment > rhs.alignment; + const SortContext = struct { + data: []Data, + pub fn swap(comptime ctx: @This(), comptime lhs: usize, comptime rhs: usize) void { + const tmp = ctx.data[lhs]; + ctx.data[lhs] = ctx.data[rhs]; + ctx.data[rhs] = tmp; + } + pub fn lessThan(comptime ctx: @This(), comptime lhs: usize, comptime rhs: usize) bool { + return ctx.data[lhs].alignment > ctx.data[rhs].alignment; } }; - var trash: i32 = undefined; // workaround for stage1 compiler bug - std.sort.block(Data, &data, &trash, Sort.lessThan); + std.sort.insertionContext(0, fields.len, SortContext{ + .data = &data, + }); var sizes_bytes: [fields.len]usize = undefined; var field_indexes: [fields.len]usize = undefined; var Types: [fields.len]type = undefined; @@ -3466,7 +3491,7 @@ pub const Package = extern struct { pub fn byteSize(list: Lockfile.Package.List) usize { const sizes_vector: std.meta.Vector(sizes.bytes.len, usize) = sizes.bytes; - const capacity_vector = @splat(sizes.bytes.len, list.len); + const capacity_vector: @Vector(sizes.bytes.len, usize) = @splat(list.len); return @reduce(.Add, capacity_vector * sizes_vector); } @@ -3607,14 +3632,22 @@ const Buffers = struct { .type = field_info.type.Slice, }; } - const Sort = struct { - fn lessThan(trash: *i32, comptime lhs: Data, comptime rhs: Data) bool { - _ = trash; - return lhs.alignment > rhs.alignment; + + const SortContext = struct { + data: []Data, + pub fn swap(comptime ctx: @This(), comptime lhs: usize, comptime rhs: usize) void { + const tmp = ctx.data[lhs]; + ctx.data[lhs] = ctx.data[rhs]; + ctx.data[rhs] = tmp; + } + pub fn lessThan(comptime ctx: @This(), comptime lhs: usize, comptime rhs: usize) bool { + return ctx.data[lhs].alignment > ctx.data[rhs].alignment; } }; - var trash: i32 = undefined; // workaround for stage1 compiler bug - std.sort.block(Data, &data, &trash, Sort.lessThan); + + std.sort.insertionContext(0, fields.len, SortContext{ + .data = &data, + }); var sizes_bytes: [fields.len]usize = undefined; var names: [fields.len][]const u8 = undefined; var types: [fields.len]type = undefined; @@ -3654,7 +3687,7 @@ const Buffers = struct { const misaligned = std.mem.bytesAsSlice(PointerType, stream.buffer[start_pos..end_pos]); return ArrayList{ - .items = try allocator.dupe(PointerType, @alignCast(@alignOf([*]PointerType), misaligned.ptr)[0..misaligned.len]), + .items = try allocator.dupe(PointerType, @as([*]PointerType, @alignCast(misaligned.ptr))[0..misaligned.len]), .capacity = misaligned.len, }; } @@ -3755,7 +3788,7 @@ const Buffers = struct { if (visited.isSet(dep_id)) continue; visited.set(dep_id); } - return @truncate(DependencyID, dep_id); + return @as(DependencyID, @truncate(dep_id)); } }, } @@ -3921,16 +3954,16 @@ pub const Serializer = struct { { lockfile.package_index = PackageIndex.Map.initContext(allocator, .{}); lockfile.string_pool = StringPool.initContext(allocator, .{}); - try lockfile.package_index.ensureTotalCapacity(@truncate(u32, lockfile.packages.len)); + try lockfile.package_index.ensureTotalCapacity(@as(u32, @truncate(lockfile.packages.len))); const slice = lockfile.packages.slice(); const name_hashes = slice.items(.name_hash); const resolutions = slice.items(.resolution); for (name_hashes, resolutions, 0..) |name_hash, resolution, id| { - try lockfile.getOrPutID(@truncate(PackageID, id), name_hash); + try lockfile.getOrPutID(@as(PackageID, @truncate(id)), name_hash); switch (resolution.tag) { .workspace => { - try lockfile.workspace_paths.put(allocator, @truncate(u32, name_hash), resolution.value.workspace); + try lockfile.workspace_paths.put(allocator, @as(u32, @truncate(name_hash)), resolution.value.workspace); }, else => {}, } @@ -3967,13 +4000,13 @@ fn generateMetaHash(this: *Lockfile, print_name_version_string: bool) !MetaHash while (i + 16 < this.packages.len) : (i += 16) { comptime var j: usize = 0; inline while (j < 16) : (j += 1) { - alphabetized_names[(i + j) - 1] = @truncate(PackageID, (i + j)); + alphabetized_names[(i + j) - 1] = @as(PackageID, @truncate((i + j))); string_builder.fmtCount("{s}@{}\n", .{ names[i + j].slice(bytes), resolutions[i + j].fmt(bytes) }); } } while (i < this.packages.len) : (i += 1) { - alphabetized_names[i - 1] = @truncate(PackageID, i); + alphabetized_names[i - 1] = @as(PackageID, @truncate(i)); string_builder.fmtCount("{s}@{}\n", .{ names[i].slice(bytes), resolutions[i].fmt(bytes) }); } } diff --git a/src/install/npm.zig b/src/install/npm.zig index 6edb6dcb4..0a25fe636 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -204,7 +204,7 @@ pub const Registry = struct { package_name, newly_last_modified, new_etag, - @truncate(u32, @intCast(u64, @max(0, std.time.timestamp()))) + 300, + @as(u32, @truncate(@as(u64, @intCast(@max(0, std.time.timestamp()))))) + 300, )) |package| { if (package_manager.options.enable.manifest_cache) { PackageManifest.Serializer.save(&package, package_manager.getTemporaryDirectory(), package_manager.getCacheDirectory()) catch {}; @@ -231,7 +231,7 @@ const ExternVersionMap = extern struct { pub fn findKeyIndex(this: ExternVersionMap, buf: []const Semver.Version, find: Semver.Version) ?u32 { for (this.keys.get(buf), 0..) |key, i| { if (key.eql(find)) { - return @truncate(u32, i); + return @as(u32, @truncate(i)); } } @@ -290,9 +290,9 @@ pub const OperatingSystem = enum(u16) { const field: u16 = NameMap.get(str[offset..]) orelse return this_; if (is_not) { - return @enumFromInt(OperatingSystem, this & ~field); + return @as(OperatingSystem, @enumFromInt(this & ~field)); } else { - return @enumFromInt(OperatingSystem, this | field); + return @as(OperatingSystem, @enumFromInt(this | field)); } } }; @@ -355,9 +355,9 @@ pub const Architecture = enum(u16) { const field: u16 = NameMap.get(input) orelse return this_; if (is_not) { - return @enumFromInt(Architecture, this & ~field); + return @as(Architecture, @enumFromInt(this & ~field)); } else { - return @enumFromInt(Architecture, this | field); + return @as(Architecture, @enumFromInt(this | field)); } } }; @@ -536,7 +536,7 @@ pub const PackageManifest = struct { stream.pos += Aligner.skipAmount(Type, stream.pos); const result_bytes = stream.buffer[stream.pos..][0..byte_len]; - const result = @ptrCast([*]const Type, @alignCast(@alignOf([*]const Type), result_bytes.ptr))[0 .. result_bytes.len / @sizeOf(Type)]; + const result = @as([*]const Type, @ptrCast(@alignCast(result_bytes.ptr)))[0 .. result_bytes.len / @sizeOf(Type)]; stream.pos += result_bytes.len; return result; } @@ -577,7 +577,7 @@ pub const PackageManifest = struct { var dest_path_stream = std.io.fixedBufferStream(&dest_path_buf); var dest_path_stream_writer = dest_path_stream.writer(); const hex_fmt = bun.fmt.hexIntLower(file_id); - const hex_timestamp = @intCast(usize, @max(std.time.milliTimestamp(), 0)); + const hex_timestamp = @as(usize, @intCast(@max(std.time.milliTimestamp(), 0))); const hex_timestamp_fmt = bun.fmt.hexIntLower(hex_timestamp); try dest_path_stream_writer.print("{any}.npm-{any}", .{ hex_fmt, hex_timestamp_fmt }); try dest_path_stream_writer.writeByte(0); @@ -1306,15 +1306,15 @@ pub const PackageManifest = struct { } if (optional_peer_dep_names.items.len == 0) { - const names_hash_bytes = @bitCast([8]u8, this_names[i].hash); + const names_hash_bytes = @as([8]u8, @bitCast(this_names[i].hash)); name_hasher.update(&names_hash_bytes); - const versions_hash_bytes = @bitCast([8]u8, this_versions[i].hash); + const versions_hash_bytes = @as([8]u8, @bitCast(this_versions[i].hash)); version_hasher.update(&versions_hash_bytes); } } else { - const names_hash_bytes = @bitCast([8]u8, this_names[i].hash); + const names_hash_bytes = @as([8]u8, @bitCast(this_names[i].hash)); name_hasher.update(&names_hash_bytes); - const versions_hash_bytes = @bitCast([8]u8, this_versions[i].hash); + const versions_hash_bytes = @as([8]u8, @bitCast(this_versions[i].hash)); version_hasher.update(&versions_hash_bytes); } @@ -1327,7 +1327,7 @@ pub const PackageManifest = struct { var version_list = ExternalStringList.init(version_extern_strings, this_versions); if (comptime is_peer) { - package_version.optional_peer_dependencies_len = @truncate(u32, peer_dependency_len); + package_version.optional_peer_dependencies_len = @as(u32, @truncate(peer_dependency_len)); } if (count > 0 and @@ -1502,10 +1502,10 @@ pub const PackageManifest = struct { } result.pkg.string_lists_buf.off = 0; - result.pkg.string_lists_buf.len = @truncate(u32, all_extern_strings.len); + result.pkg.string_lists_buf.len = @as(u32, @truncate(all_extern_strings.len)); result.pkg.versions_buf.off = 0; - result.pkg.versions_buf.len = @truncate(u32, all_semver_versions.len); + result.pkg.versions_buf.len = @as(u32, @truncate(all_semver_versions.len)); result.versions = all_semver_versions; result.external_strings = all_extern_strings; @@ -1518,7 +1518,7 @@ pub const PackageManifest = struct { result.string_buf = ptr[0..string_builder.len]; result.pkg.string_buf = BigExternalString{ .off = 0, - .len = @truncate(u32, string_builder.len), + .len = @as(u32, @truncate(string_builder.len)), .hash = 0, }; } diff --git a/src/install/semver.zig b/src/install/semver.zig index c2730e7c7..1ec76b370 100644 --- a/src/install/semver.zig +++ b/src/install/semver.zig @@ -65,7 +65,7 @@ pub const String = extern struct { if (out.isInline()) { out.assertDefined(); } else { - std.debug.assert(@bitCast(u64, out.slice(buf)[0..8].*) != undefined); + std.debug.assert(@as(u64, @bitCast(out.slice(buf)[0..8].*)) != undefined); } return out; @@ -76,8 +76,8 @@ pub const String = extern struct { pub fn isUndefined(this: *const String) bool { var num: u64 = undefined; - var bytes = @bitCast(u64, this.bytes); - return @truncate(u63, bytes) == @truncate(u63, num); + var bytes = @as(u64, @bitCast(this.bytes)); + return @as(u63, @truncate(bytes)) == @as(u63, @truncate(num)); } pub const Formatter = struct { @@ -153,7 +153,7 @@ pub const String = extern struct { pub fn hash(ctx: ArrayHashContext, a: String) u32 { const str = a.slice(ctx.a_buf); - return @truncate(u32, bun.hash(str)); + return @as(u32, @truncate(bun.hash(str))); } }; @@ -175,44 +175,44 @@ pub const String = extern struct { // This should only happen for non-ascii strings that are exactly 8 bytes. // so that's an edge-case if ((in[max_inline_len - 1]) >= 128) - @bitCast(String, (@as( + @as(String, @bitCast((@as( u64, 0, ) | @as( u64, - @truncate( + @as( max_addressable_space, - @bitCast( + @truncate(@as( u64, - Pointer.init(buf, in), - ), + @bitCast(Pointer.init(buf, in)), + )), ), - )) | 1 << 63) + )) | 1 << 63)) else String{ .bytes = .{ in[0], in[1], in[2], in[3], in[4], in[5], in[6], in[7] } }, - else => @bitCast( + else => @as( String, - (@as( + @bitCast((@as( u64, 0, ) | @as( u64, - @truncate( + @as( max_addressable_space, - @bitCast( + @truncate(@as( u64, - Pointer.init(buf, in), - ), + @bitCast(Pointer.init(buf, in)), + )), ), - )) | 1 << 63, + )) | 1 << 63), ), }; } pub fn eql(this: String, that: String, this_buf: []const u8, that_buf: []const u8) bool { if (this.isInline() and that.isInline()) { - return @bitCast(u64, this.bytes) == @bitCast(u64, that.bytes); + return @as(u64, @bitCast(this.bytes)) == @as(u64, @bitCast(that.bytes)); } else if (this.isInline() != that.isInline()) { return false; } else { @@ -223,7 +223,7 @@ pub const String = extern struct { } pub inline fn isEmpty(this: String) bool { - return @bitCast(u64, this.bytes) == @as(u64, 0); + return @as(u64, @bitCast(this.bytes)) == @as(u64, 0); } pub fn len(this: String) usize { @@ -263,14 +263,14 @@ pub const String = extern struct { std.debug.assert(bun.isSliceInBuffer(in, buf)); return Pointer{ - .off = @truncate(u32, @intFromPtr(in.ptr) - @intFromPtr(buf.ptr)), - .len = @truncate(u32, in.len), + .off = @as(u32, @truncate(@intFromPtr(in.ptr) - @intFromPtr(buf.ptr))), + .len = @as(u32, @truncate(in.len)), }; } }; pub inline fn ptr(this: String) Pointer { - return @bitCast(Pointer, @as(u64, @truncate(u63, @bitCast(u64, this)))); + return @as(Pointer, @bitCast(@as(u64, @as(u63, @truncate(@as(u64, @bitCast(this))))))); } // String must be a pointer because we reference it as a slice. It will become a dead pointer if it is copied. @@ -483,7 +483,7 @@ test "String works" { world, ); try std.testing.expectEqualStrings("hello", str.slice(buf)); - try std.testing.expectEqual(@bitCast(u64, str), @bitCast(u64, [8]u8{ 'h', 'e', 'l', 'l', 'o', 0, 0, 0 })); + try std.testing.expectEqual(@as(u64, @bitCast(str)), @as(u64, @bitCast([8]u8{ 'h', 'e', 'l', 'l', 'o', 0, 0, 0 }))); } { @@ -551,7 +551,7 @@ pub const BigExternalString = extern struct { pub fn from(in: string) BigExternalString { return BigExternalString{ .off = 0, - .len = @truncate(u32, in.len), + .len = @as(u32, @truncate(in.len)), .hash = bun.Wyhash.hash(0, in), }; } @@ -560,8 +560,8 @@ pub const BigExternalString = extern struct { std.debug.assert(@intFromPtr(buf.ptr) <= @intFromPtr(in.ptr) and ((@intFromPtr(in.ptr) + in.len) <= (@intFromPtr(buf.ptr) + buf.len))); return BigExternalString{ - .off = @truncate(u32, @intFromPtr(in.ptr) - @intFromPtr(buf.ptr)), - .len = @truncate(u32, in.len), + .off = @as(u32, @truncate(@intFromPtr(in.ptr) - @intFromPtr(buf.ptr))), + .len = @as(u32, @truncate(in.len)), .hash = hash, }; } @@ -709,7 +709,7 @@ pub const Version = extern struct { pub const HashContext = struct { pub fn hash(_: @This(), lhs: Version) u32 { - return @truncate(u32, lhs.hash()); + return @as(u32, @truncate(lhs.hash())); } pub fn eql(_: @This(), lhs: Version, rhs: Version) bool { @@ -871,7 +871,7 @@ pub const Version = extern struct { state = State.none; }, } - result.len = @truncate(u32, i); + result.len = @as(u32, @truncate(i)); break; }, '+' => { @@ -919,7 +919,7 @@ pub const Version = extern struct { state = State.none; }, } - result.len = @truncate(u32, i); + result.len = @as(u32, @truncate(i)); return result; } @@ -955,7 +955,7 @@ pub const Version = extern struct { break; } - stopped_at = @intCast(i32, i); + stopped_at = @as(i32, @intCast(i)); switch (input[i]) { ' ' => { is_done = true; @@ -1104,7 +1104,7 @@ pub const Version = extern struct { } } - result.stopped_at = @intCast(u32, i); + result.stopped_at = @as(u32, @intCast(i)); if (comptime RawType != void) { result.version.raw = sliced_string.sub(input[0..i]).external(); diff --git a/src/io/io_darwin.zig b/src/io/io_darwin.zig index 9ebc6f4d6..c44b285c2 100644 --- a/src/io/io_darwin.zig +++ b/src/io/io_darwin.zig @@ -250,7 +250,7 @@ pub fn asError(err: anytype) Errno { err; return switch (int) { - 1...errno_map.len => |val| errno_map[@intCast(u8, val)], + 1...errno_map.len => |val| errno_map[@as(u8, @intCast(val))], else => error.Unexpected, }; } @@ -402,7 +402,7 @@ pub const Syscall = struct { pub fn fcntl(fd: fd_t, cmd: i32, arg: usize) Errno!usize { const rc = darwin.@"fcntl$NOCANCEL"(fd, cmd, arg); return switch (darwin.getErrno(rc)) { - .SUCCESS => @intCast(usize, rc), + .SUCCESS => @as(usize, @intCast(rc)), else => |err| asError(err), }; } @@ -445,7 +445,7 @@ pub const Syscall = struct { } || Errno; pub fn setsockopt(fd: socket_t, level: u32, optname: u32, opt: []const u8) SetSockOptError!void { - switch (darwin.getErrno(darwin.setsockopt(fd, level, optname, opt.ptr, @intCast(socklen_t, opt.len)))) { + switch (darwin.getErrno(darwin.setsockopt(fd, level, optname, opt.ptr, @as(socklen_t, @intCast(opt.len))))) { .SUCCESS => {}, .DOM => return error.TimeoutTooBig, .ISCONN => return error.AlreadyConnected, @@ -462,7 +462,7 @@ pub const Syscall = struct { const rc = darwin.socket(domain, filtered_sock_type, protocol); switch (darwin.getErrno(rc)) { .SUCCESS => { - const fd = @intCast(fd_t, rc); + const fd = @as(fd_t, @intCast(rc)); try setSockFlags(fd, socket_type); return fd; }, @@ -540,7 +540,7 @@ pub const Waker = struct { return asError(std.c.getErrno(count)); } - return @intCast(usize, count); + return @as(usize, @intCast(count)); } extern fn io_darwin_create_machport( @@ -627,7 +627,7 @@ pub const UserFilterWaker = struct { return asError(std.c.getErrno(errno)); } - return @intCast(u64, errno); + return @as(u64, @intCast(errno)); } pub fn init(_: std.mem.Allocator) !UserFilterWaker { @@ -646,7 +646,7 @@ pub const UserFilterWaker = struct { &events, 1, &events, - @intCast(c_int, events.len), + @as(c_int, @intCast(events.len)), 0, ×pec, ); @@ -742,16 +742,16 @@ fn flush(self: *IO, comptime _: @Type(.EnumLiteral)) !void { // We need to wait (not poll) on kevent if there's nothing to submit or complete. if (next_timeout) |timeout_ns| { - ts.tv_nsec = @intCast(@TypeOf(ts.tv_nsec), timeout_ns % std.time.ns_per_s); - ts.tv_sec = @intCast(@TypeOf(ts.tv_sec), timeout_ns / std.time.ns_per_s); + ts.tv_nsec = @as(@TypeOf(ts.tv_nsec), @intCast(timeout_ns % std.time.ns_per_s)); + ts.tv_sec = @as(@TypeOf(ts.tv_sec), @intCast(timeout_ns / std.time.ns_per_s)); } const new_events_ = std.os.system.kevent64( self.waker.kq, &events, - @intCast(c_int, change_events), + @as(c_int, @intCast(change_events)), &events, - @intCast(c_int, events.len), + @as(c_int, @intCast(events.len)), 0, if (next_timeout != null) &ts else null, ); @@ -759,7 +759,7 @@ fn flush(self: *IO, comptime _: @Type(.EnumLiteral)) !void { if (new_events_ < 0) { return std.debug.panic("kevent() failed {s}", .{@tagName(std.c.getErrno(new_events_))}); } - const new_events = @intCast(usize, new_events_); + const new_events = @as(usize, @intCast(new_events_)); // Mark the io events submitted only after kevent() successfully processed them self.io_pending.out = io_pending; @@ -776,7 +776,7 @@ fn flush(self: *IO, comptime _: @Type(.EnumLiteral)) !void { continue; } - const completion = @ptrFromInt(*Completion, kevent.udata); + const completion = @as(*Completion, @ptrFromInt(kevent.udata)); completion.next = null; self.completed.push(completion); } @@ -836,9 +836,9 @@ fn flush_io(_: *IO, events: []Kevent64, io_pending_top: *?*Completion) usize { kevent.* = .{ .ext = [2]u64{ 0, 0 }, - .ident = @intCast(u32, event_info[0]), - .filter = @intCast(i16, event_info[1]), - .flags = @intCast(u16, event_info[2]), + .ident = @as(u32, @intCast(event_info[0])), + .filter = @as(i16, @intCast(event_info[1])), + .flags = @as(u16, @intCast(event_info[2])), .fflags = 0, .data = 0, .udata = @intFromPtr(completion), @@ -999,7 +999,7 @@ fn submitWithIncrementPending( // Complete the Completion return callback( - @ptrFromInt(Context, @intFromPtr(_completion.context)), + @as(Context, @ptrFromInt(@intFromPtr(_completion.context))), _completion, result, ); @@ -1023,7 +1023,7 @@ pub const AcceptError = os.AcceptError || os.SetSockOptError; // -- NOT DONE YET pub fn eventfd(self: *IO) os.fd_t { - return @intCast(os.fd_t, self.last_event_fd.fetchAdd(1, .Monotonic)); + return @as(os.fd_t, @intCast(self.last_event_fd.fetchAdd(1, .Monotonic))); } // -- NOT DONE YET @@ -1204,10 +1204,10 @@ pub fn connect( true => brk: { var err_code: i32 = undefined; var size: u32 = @sizeOf(u32); - const rc = system.getsockopt(op.socket, os.SOL.SOCKET, os.SO.ERROR, @ptrCast([*]u8, &err_code), &size); + const rc = system.getsockopt(op.socket, os.SOL.SOCKET, os.SO.ERROR, @as([*]u8, @ptrCast(&err_code)), &size); assert(size == 4); break :brk switch (darwin.getErrno(rc)) { - .SUCCESS => switch (@enumFromInt(os.E, err_code)) { + .SUCCESS => switch (@as(os.E, @enumFromInt(err_code))) { .SUCCESS => {}, .ACCES => error.PermissionDenied, .PERM => error.PermissionDenied, @@ -1306,7 +1306,7 @@ pub fn openSync( file_path: [:0]const u8, flags: os.mode_t, ) OpenError!fd_t { - return Syscall.open(file_path, @intCast(c_uint, flags)); + return Syscall.open(file_path, @as(c_uint, @intCast(flags))); } pub const ReadError = error{ @@ -1343,7 +1343,7 @@ pub fn read( .{ .fd = fd, .buf = buffer.ptr, - .len = @intCast(u32, buffer_limit(buffer.len)), + .len = @as(u32, @intCast(buffer_limit(buffer.len))), .offset = offset_, .positional = offset != null, }, @@ -1356,7 +1356,7 @@ pub fn read( op.len, ); return switch (@intFromEnum(os.errno(rc))) { - 0 => @intCast(usize, rc), + 0 => @as(usize, @intCast(rc)), os.EINTR => continue, os.EAGAIN => error.WouldBlock, os.EBADF => error.NotOpenForReading, @@ -1405,13 +1405,13 @@ pub fn recv( .{ .socket = socket, .buf = buffer.ptr, - .len = @intCast(u32, buffer_limit(buffer.len)), + .len = @as(u32, @intCast(buffer_limit(buffer.len))), }, struct { fn doOperation(op: anytype) RecvError!usize { const rc = system.@"recvfrom$NOCANCEL"(op.socket, op.buf, op.len, 0, null, null); return switch (system.getErrno(rc)) { - .SUCCESS => @intCast(usize, rc), + .SUCCESS => @as(usize, @intCast(rc)), .AGAIN => error.WouldBlock, .NOMEM => error.SystemResources, .CONNREFUSED => error.ConnectionRefused, @@ -1463,14 +1463,14 @@ pub fn send( .{ .socket = socket, .buf = buffer.ptr, - .len = @intCast(u32, buffer_limit(buffer.len)), + .len = @as(u32, @intCast(buffer_limit(buffer.len))), .flags = 0, }, struct { fn doOperation(op: anytype) SendError!usize { const rc = system.@"sendto$NOCANCEL"(op.socket, op.buf, op.len, op.flags, null, 0); return switch (system.getErrno(rc)) { - .SUCCESS => @intCast(usize, rc), + .SUCCESS => @as(usize, @intCast(rc)), .ACCES => error.AccessDenied, .AGAIN => error.WouldBlock, .ALREADY => error.FastOpenAlreadyInProgress, @@ -1578,7 +1578,7 @@ pub fn write( .{ .fd = fd, .buf = buffer.ptr, - .len = @intCast(u32, buffer_limit(buffer.len)), + .len = @as(u32, @intCast(buffer_limit(buffer.len))), .offset = offset, }, struct { diff --git a/src/io/io_linux.zig b/src/io/io_linux.zig index 7603eabfd..8f054490b 100644 --- a/src/io/io_linux.zig +++ b/src/io/io_linux.zig @@ -432,7 +432,7 @@ pub fn asError(err: anytype) Errno { else err; return switch (errnum) { - 1...errno_map.len => errno_map[@intCast(u8, errnum)], + 1...errno_map.len => errno_map[@as(u8, @intCast(errnum))], else => error.Unexpected, }; } @@ -660,7 +660,7 @@ fn flush_completions(self: *IO, wait_nr: u32, timeouts: *usize, etime: *bool) !v if (-cqe.res == os.ETIME) etime.* = true; continue; } - const completion = @ptrFromInt(*Completion, @intCast(usize, cqe.user_data)); + const completion = @as(*Completion, @ptrFromInt(@as(usize, @intCast(cqe.user_data)))); completion.result = cqe.res; // We do not run the completion here (instead appending to a linked list) to avoid: // * recursion through `flush_submissions()` and `flush_completions()`, @@ -804,7 +804,7 @@ pub const Completion = struct { os.EPERM => error.PermissionDenied, os.EPROTO => error.ProtocolFailure, else => |errno| asError(errno), - } else @intCast(os.socket_t, completion.result); + } else @as(os.socket_t, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, @@ -843,7 +843,7 @@ pub const Completion = struct { os.EEXIST => error.PathAlreadyExists, os.EBUSY => error.DeviceBusy, else => |errno| asError(errno), - } else @intCast(linux.fd_t, completion.result); + } else @as(linux.fd_t, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, .connect => { @@ -904,7 +904,7 @@ pub const Completion = struct { os.EOVERFLOW => error.Unseekable, os.ESPIPE => error.Unseekable, else => |errno| asError(errno), - } else @intCast(usize, completion.result); + } else @as(usize, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, .readev, .recv => { @@ -920,7 +920,7 @@ pub const Completion = struct { os.ENOTSOCK => error.FileDescriptorNotASocket, os.ECONNRESET => error.ConnectionResetByPeer, else => |errno| asError(errno), - } else @intCast(usize, completion.result); + } else @as(usize, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, .writev, .send => { @@ -942,7 +942,7 @@ pub const Completion = struct { os.EOPNOTSUPP => error.OperationNotSupported, os.EPIPE => error.BrokenPipe, else => |errno| asError(errno), - } else @intCast(usize, completion.result); + } else @as(usize, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, .timeout => { @@ -977,7 +977,7 @@ pub const Completion = struct { os.EPIPE => error.BrokenPipe, os.ESPIPE => error.Unseekable, else => |errno| asError(errno), - } else @intCast(usize, completion.result); + } else @as(usize, @intCast(completion.result)); completion.callback(completion.context, completion, &result); }, } @@ -988,7 +988,7 @@ pub const Waker = struct { fd: os.fd_t, pub fn init(allocator: std.mem.Allocator) !Waker { - return initWithFileDescriptor(allocator, @intCast(os.fd_t, try std.os.eventfd(0, 0))); + return initWithFileDescriptor(allocator, @as(os.fd_t, @intCast(try std.os.eventfd(0, 0)))); } pub fn initWithFileDescriptor(_: std.mem.Allocator, fd: os.fd_t) Waker { @@ -999,15 +999,15 @@ pub const Waker = struct { pub fn wait(this: Waker) !u64 { var bytes: usize = 0; - _ = std.os.read(this.fd, @ptrCast(*[8]u8, &bytes)) catch 0; - return @intCast(u64, bytes); + _ = std.os.read(this.fd, @as(*[8]u8, @ptrCast(&bytes))) catch 0; + return @as(u64, @intCast(bytes)); } pub fn wake(this: *const Waker) !void { var bytes: usize = 1; _ = std.os.write( this.fd, - @ptrCast(*[8]u8, &bytes), + @as(*[8]u8, @ptrCast(&bytes)), ) catch 0; } }; @@ -1107,9 +1107,9 @@ pub fn accept( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const AcceptError!os.socket_t, @intFromPtr(res)).*, + @as(*const AcceptError!os.socket_t, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1149,9 +1149,9 @@ pub fn close( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const CloseError!void, @intFromPtr(res)).*, + @as(*const CloseError!void, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1160,7 +1160,7 @@ pub fn close( if (features.close_blocking) { const rc = linux.close(fd); - completion.result = @intCast(i32, rc); + completion.result = @as(i32, @intCast(rc)); self.next_tick.push(completion); return; } @@ -1206,9 +1206,9 @@ pub fn connect( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const ConnectError!void, @intFromPtr(res)).*, + @as(*const ConnectError!void, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1222,7 +1222,7 @@ pub fn connect( if (features.connect_blocking) { const rc = linux.connect(socket, &address.any, address.getOsSockLen()); - completion.result = @intCast(i32, rc); + completion.result = @as(i32, @intCast(rc)); self.completed.push(completion); return; } @@ -1257,9 +1257,9 @@ pub fn fsync( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const FsyncError!void, @intFromPtr(res)).*, + @as(*const FsyncError!void, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1303,9 +1303,9 @@ pub fn read( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const ReadError!usize, @intFromPtr(res)).*, + @as(*const ReadError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1355,9 +1355,9 @@ pub fn recv( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const RecvError!usize, @intFromPtr(res)).*, + @as(*const RecvError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1390,9 +1390,9 @@ pub fn readev( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const RecvError!usize, @intFromPtr(res)).*, + @as(*const RecvError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1446,9 +1446,9 @@ pub fn send( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const SendError!usize, @intFromPtr(res)).*, + @as(*const SendError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1538,16 +1538,16 @@ pub fn open( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const OpenError!linux.fd_t, @intFromPtr(res)).*, + @as(*const OpenError!linux.fd_t, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, .operation = .{ .open = .{ .path = path, - .flags = @intCast(u32, flags), + .flags = @as(u32, @intCast(flags)), .mode = mode, }, }, @@ -1575,9 +1575,9 @@ pub fn writev( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const SendError!usize, @intFromPtr(res)).*, + @as(*const SendError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1613,9 +1613,9 @@ pub fn timeout( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const TimeoutError!void, @intFromPtr(res)).*, + @as(*const TimeoutError!void, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1662,9 +1662,9 @@ pub fn write( .callback = struct { fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( - @ptrFromInt(Context, @intFromPtr(ctx)), + @as(Context, @ptrFromInt(@intFromPtr(ctx))), comp, - @ptrFromInt(*const WriteError!usize, @intFromPtr(res)).*, + @as(*const WriteError!usize, @ptrFromInt(@intFromPtr(res))).*, ); } }.wrapper, @@ -1702,7 +1702,7 @@ const Syscall = struct { pub fn socket(domain: u32, socket_type: u32, protocol: u32) SocketError!os.socket_t { const rc = linux.socket(domain, socket_type, protocol); return switch (linux.getErrno((rc))) { - .SUCCESS => @intCast(os.fd_t, rc), + .SUCCESS => @as(os.fd_t, @intCast(rc)), .ACCES => return error.PermissionDenied, .AFNOSUPPORT => return error.AddressFamilyNotSupported, .INVAL => return error.ProtocolFamilyNotAvailable, diff --git a/src/io/time.zig b/src/io/time.zig index 8ebf5de6e..1454d009b 100644 --- a/src/io/time.zig +++ b/src/io/time.zig @@ -40,7 +40,7 @@ pub const Time = struct { // see https://github.com/ziglang/zig/pull/933#discussion_r656021295. var ts: std.os.timespec = undefined; std.os.clock_gettime(std.os.CLOCK_BOOTTIME, &ts) catch @panic("CLOCK_BOOTTIME required"); - break :blk @intCast(u64, ts.tv_sec) * std.time.ns_per_s + @intCast(u64, ts.tv_nsec); + break :blk @as(u64, @intCast(ts.tv_sec)) * std.time.ns_per_s + @as(u64, @intCast(ts.tv_nsec)); }; // "Oops!...I Did It Again" diff --git a/src/js/builtins/ProcessObjectInternals.ts b/src/js/builtins/ProcessObjectInternals.ts index 9670886bd..f6990dc5e 100644 --- a/src/js/builtins/ProcessObjectInternals.ts +++ b/src/js/builtins/ProcessObjectInternals.ts @@ -47,7 +47,7 @@ export function binding(bindingName) { return constants; } -export function getStdioWriteStream(fd_) { +export function getStdioWriteStream(fd_, getWindowSize) { var require = path => { var existing = $requireMap.get(path); if (existing) return existing.exports; @@ -223,8 +223,9 @@ export function getStdioWriteStream(fd_) { } var readline; + var windowSizeArray = [0, 0]; - var FastStdioWriteStream = class StdioWriteStream extends EventEmitter { + var FastStdioWriteStreamInternal = class StdioWriteStream extends EventEmitter { #fd; #innerStream; #writer; @@ -271,31 +272,6 @@ export function getStdioWriteStream(fd_) { return this.#fd; } - get isTTY() { - return (this.#isTTY ??= require("node:tty").isatty(this.#fd)); - } - - cursorTo(x, y, callback) { - return (readline ??= require("node:readline")).cursorTo(this, x, y, callback); - } - - moveCursor(dx, dy, callback) { - return (readline ??= require("node:readline")).moveCursor(this, dx, dy, callback); - } - - clearLine(dir, callback) { - return (readline ??= require("node:readline")).clearLine(this, dir, callback); - } - - clearScreenDown(callback) { - return (readline ??= require("node:readline")).clearScreenDown(this, callback); - } - - // TODO: once implemented this.columns and this.rows should be uncommented - // getWindowSize() { - // return [this.columns, this.rows]; - // } - ref() { this.#getWriter().ref(); } @@ -408,6 +384,10 @@ export function getStdioWriteStream(fd_) { return !!(writeResult || flushResult); } + get isTTY() { + return false; + } + write(chunk, encoding, callback) { const result = this._write(chunk, encoding, callback); @@ -471,8 +451,51 @@ export function getStdioWriteStream(fd_) { return this; } }; + if (getWindowSize(fd_, windowSizeArray)) { + var WriteStream = class WriteStream extends FastStdioWriteStreamInternal { + get isTTY() { + return true; + } + + cursorTo(x, y, callback) { + return (readline ??= require("node:readline")).cursorTo(this, x, y, callback); + } + + moveCursor(dx, dy, callback) { + return (readline ??= require("node:readline")).moveCursor(this, dx, dy, callback); + } + + clearLine(dir, callback) { + return (readline ??= require("node:readline")).clearLine(this, dir, callback); + } + + clearScreenDown(callback) { + return (readline ??= require("node:readline")).clearScreenDown(this, callback); + } + + getWindowSize() { + if (getWindowSize(fd_, windowSizeArray) === true) { + return [windowSizeArray[0], windowSizeArray[1]]; + } + } + + get columns() { + if (getWindowSize(fd_, windowSizeArray) === true) { + return windowSizeArray[0]; + } + } + + get rows() { + if (getWindowSize(fd_, windowSizeArray) === true) { + return windowSizeArray[1]; + } + } + }; + + return new WriteStream(fd_); + } - return new FastStdioWriteStream(fd_); + return new FastStdioWriteStreamInternal(fd_); } export function getStdinStream(fd_) { diff --git a/src/js/node/net.js b/src/js/node/net.js index d45bb23a1..5501d327b 100644 --- a/src/js/node/net.js +++ b/src/js/node/net.js @@ -65,6 +65,7 @@ const bunSocketServerHandlers = Symbol.for("::bunsocket_serverhandlers::"); const bunSocketServerConnections = Symbol.for("::bunnetserverconnections::"); const bunSocketServerOptions = Symbol.for("::bunnetserveroptions::"); const bunSocketInternal = Symbol.for("::bunnetsocketinternal::"); +const bunTLSConnectOptions = Symbol.for("::buntlsconnectoptions::"); var SocketClass; const Socket = (function (InternalSocket) { @@ -91,7 +92,6 @@ const Socket = (function (InternalSocket) { close: Socket.#Close, connectError(socket, error) { const self = socket.data; - self.emit("error", error); }, data({ data: self }, buffer) { @@ -120,11 +120,21 @@ const Socket = (function (InternalSocket) { socket.ref(); self[bunSocketInternal] = socket; self.connecting = false; + const options = self[bunTLSConnectOptions]; + + if (options) { + const { session } = options; + if (session) { + self.setSession(session); + } + } + if (!self.#upgraded) { // this is not actually emitted on nodejs when socket used on the connection - // this is already emmited on non-TLS socket and on TLS socket is emmited secureConnect on handshake + // this is already emmited on non-TLS socket and on TLS socket is emmited secureConnect after handshake self.emit("connect", self); } + Socket.#Drain(socket); }, handshake(socket, success, verifyError) { @@ -133,16 +143,13 @@ const Socket = (function (InternalSocket) { self._securePending = false; self.secureConnecting = false; self._secureEstablished = !!success; + self.emit("secure", self); - // Needs getPeerCertificate support (not implemented yet) - // if (!verifyError && !this.isSessionReused()) { - // const hostname = options.servername || - // options.host || - // (options.socket && options.socket._host) || - // 'localhost'; - // const cert = this.getPeerCertificate(true); - // verifyError = options.checkServerIdentity(hostname, cert); - // } + const { checkServerIdentity } = self[bunTLSConnectOptions]; + if (!verifyError && typeof checkServerIdentity === "function" && self.servername) { + const cert = self.getPeerCertificate(true); + verifyError = checkServerIdentity(self.servername, cert); + } if (self._requestCert || self._rejectUnauthorized) { if (verifyError) { @@ -250,19 +257,13 @@ const Socket = (function (InternalSocket) { self.emit("connection", _socket); }, - handshake({ data: self }, success, verifyError) { + handshake(socket, success, verifyError) { + const { data: self } = socket; + self.emit("secure", self); + self._securePending = false; self.secureConnecting = false; self._secureEstablished = !!success; - // Needs getPeerCertificate support (not implemented yet) - // if (!verifyError && !this.isSessionReused()) { - // const hostname = options.servername || - // options.host || - // (options.socket && options.socket._host) || - // 'localhost'; - // const cert = this.getPeerCertificate(true); - // verifyError = options.checkServerIdentity(hostname, cert); - // } if (self._requestCert || self._rejectUnauthorized) { if (verifyError) { @@ -276,7 +277,7 @@ const Socket = (function (InternalSocket) { } else { self.authorized = true; } - self.emit("secureConnect", verifyError); + self.emit("secureConnection", verifyError); }, error(socket, error) { Socket.#Handlers.error(socket, error); @@ -296,6 +297,7 @@ const Socket = (function (InternalSocket) { #readQueue = createFIFO(); remotePort; [bunSocketInternal] = null; + [bunTLSConnectOptions] = null; timeout = 0; #writeCallback; #writeChunk; @@ -347,13 +349,18 @@ const Socket = (function (InternalSocket) { socket.ref(); this[bunSocketInternal] = socket; this.connecting = false; - this.emit("connect", this); + if (!this.#upgraded) { + // this is not actually emitted on nodejs when socket used on the connection + // this is already emmited on non-TLS socket and on TLS socket is emmited secureConnect after handshake + this.emit("connect", this); + } Socket.#Drain(socket); } connect(port, host, connectListener) { var path; var connection = this.#socket; + var _checkServerIdentity = undefined; if (typeof port === "string") { path = port; port = undefined; @@ -390,8 +397,10 @@ const Socket = (function (InternalSocket) { rejectUnauthorized, pauseOnConnect, servername, + checkServerIdentity, + session, } = port; - + _checkServerIdentity = checkServerIdentity; this.servername = servername; if (socket) { connection = socket; @@ -414,18 +423,14 @@ const Socket = (function (InternalSocket) { this._rejectUnauthorized = rejectUnauthorized; if (tls) { - // TLS can true/false or options - if (typeof tls !== "object") { - tls = { - rejectUnauthorized: rejectUnauthorized, - requestCert: true, - }; - } else { - tls.rejectUnauthorized = rejectUnauthorized; - tls.requestCert = true; - if (!connection && tls.socket) { - connection = tls.socket; - } + tls.rejectUnauthorized = rejectUnauthorized; + tls.requestCert = true; + tls.session = session || tls.session; + this.servername = tls.servername; + tls.checkServerIdentity = _checkServerIdentity || tls.checkServerIdentity; + this[bunTLSConnectOptions] = tls; + if (!connection && tls.socket) { + connection = tls.socket; } } if (connection) { @@ -441,6 +446,7 @@ const Socket = (function (InternalSocket) { this.secureConnecting = true; this._secureEstablished = false; this._securePending = true; + if (connectListener) this.on("secureConnect", connectListener); } else if (connectListener) this.on("connect", connectListener); // start using existing connection @@ -809,12 +815,16 @@ class Server extends EventEmitter { var tls = undefined; var TLSSocketClass = undefined; const bunTLS = this[bunTlsSymbol]; + const options = this[bunSocketServerOptions]; + if (typeof bunTLS === "function") { [tls, TLSSocketClass] = bunTLS.call(this, port, hostname, false); + options.servername = tls.serverName; + options.InternalSocketClass = TLSSocketClass; + } else { + options.InternalSocketClass = SocketClass; } - this[bunSocketServerOptions].InternalSocketClass = TLSSocketClass || SocketClass; - this.#server = Bun.listen( path ? { diff --git a/src/js/node/tls.js b/src/js/node/tls.js index 60903239b..259e6e832 100644 --- a/src/js/node/tls.js +++ b/src/js/node/tls.js @@ -16,6 +16,8 @@ const StringPrototypeSplit = String.prototype.split; const StringPrototypeIndexOf = String.prototype.indexOf; const StringPrototypeSubstring = String.prototype.substring; const StringPrototypeEndsWith = String.prototype.endsWith; +const StringFromCharCode = String.fromCharCode; +const StringPrototypeCharCodeAt = String.prototype.charCodeAt; const ArrayPrototypeIncludes = Array.prototype.includes; const ArrayPrototypeJoin = Array.prototype.join; @@ -40,11 +42,16 @@ function isValidTLSArray(obj) { } function unfqdn(host) { - return RegExpPrototypeSymbolReplace(/[.]$/, host, ""); + return RegExpPrototypeSymbolReplace.call(/[.]$/, host, ""); +} +// String#toLowerCase() is locale-sensitive so we use +// a conservative version that only lowercases A-Z. +function toLowerCase(c) { + return StringFromCharCode.call(32 + StringPrototypeCharCodeAt.call(c, 0)); } function splitHost(host) { - return StringPrototypeSplit.call(RegExpPrototypeSymbolReplace(/[A-Z]/g, unfqdn(host), toLowerCase), "."); + return StringPrototypeSplit.call(RegExpPrototypeSymbolReplace.call(/[A-Z]/g, unfqdn(host), toLowerCase), "."); } function check(hostParts, pattern, wildcards) { @@ -163,7 +170,6 @@ function checkServerIdentity(hostname, cert) { let reason = "Unknown reason"; hostname = unfqdn(hostname); // Remove trailing dot for error messages. - if (net.isIP(hostname)) { valid = ArrayPrototypeIncludes.call(ips, canonicalizeIP(hostname)); if (!valid) reason = `IP: ${hostname} is not in the cert's list: ` + ArrayPrototypeJoin.call(ips, ", "); @@ -178,7 +184,7 @@ function checkServerIdentity(hostname, cert) { // Match against Common Name only if no supported identifiers exist. const cn = subject.CN; - if (ArrayIsArray(cn)) valid = ArrayPrototypeSome.call(cn, wildcard); + if (Array.isArray(cn)) valid = ArrayPrototypeSome.call(cn, wildcard); else if (cn) valid = wildcard(cn); if (!valid) reason = `Host: ${hostname}. is not cert's CN: ${cn}`; @@ -186,7 +192,6 @@ function checkServerIdentity(hostname, cert) { } else { reason = "Cert does not contain a DNS name"; } - if (!valid) { let error = new Error(`ERR_TLS_CERT_ALTNAME_INVALID: Hostname/IP does not match certificate's altnames: ${reason}`); error.name = "ERR_TLS_CERT_ALTNAME_INVALID"; @@ -274,9 +279,8 @@ function translatePeerCertificate(c) { if (c.infoAccess != null) { const info = c.infoAccess; c.infoAccess = { __proto__: null }; - // XXX: More key validation? - RegExpPrototypeSymbolReplace(/([^\n:]*):([^\n]*)(?:\n|$)/g, info, (all, key, val) => { + RegExpPrototypeSymbolReplace.call(/([^\n:]*):([^\n]*)(?:\n|$)/g, info, (all, key, val) => { if (val.charCodeAt(0) === 0x22) { // The translatePeerCertificate function is only // used on internally created legacy certificate @@ -318,6 +322,8 @@ const TLSSocket = (function (InternalTLSSocket) { #secureContext; ALPNProtocols; #socket; + #checkServerIdentity; + #session; constructor(socket, options) { super(socket instanceof InternalTCPSocket ? options : options || socket); @@ -337,6 +343,8 @@ const TLSSocket = (function (InternalTLSSocket) { this.secureConnecting = true; this._secureEstablished = false; this._securePending = true; + this.#checkServerIdentity = options.checkServerIdentity || checkServerIdentity; + this.#session = options.session || null; } _secureEstablished = false; @@ -348,22 +356,76 @@ const TLSSocket = (function (InternalTLSSocket) { servername; authorized = false; authorizationError; + #renegotiationDisabled = false; encrypted = true; _start() { - // some frameworks uses this _start internal implementation is suposed to start TLS handshake - // on Bun we auto start this after on_open callback and when wrapping we start it after the socket is attached to the net.Socket/tls.Socket + // some frameworks uses this _start internal implementation is suposed to start TLS handshake/connect + this.connect(); } - exportKeyingMaterial(length, label, context) { - //SSL_export_keying_material + getSession() { + return this[bunSocketInternal]?.getSession(); + } + + getEphemeralKeyInfo() { + return this[bunSocketInternal]?.getEphemeralKeyInfo(); + } + + getCipher() { + return this[bunSocketInternal]?.getCipher(); + } + + getSharedSigalgs() { + return this[bunSocketInternal]?.getSharedSigalgs(); + } + + getProtocol() { + return this[bunSocketInternal]?.getTLSVersion(); + } + + getFinished() { + return this[bunSocketInternal]?.getTLSFinishedMessage() || undefined; + } + + getPeerFinished() { + return this[bunSocketInternal]?.getTLSPeerFinishedMessage() || undefined; + } + + isSessionReused() { + return !!this.#session; + } + + renegotiate() { + if (this.#renegotiationDisabled) { + const error = new Error("ERR_TLS_RENEGOTIATION_DISABLED: TLS session renegotiation disabled for this socket"); + error.name = "ERR_TLS_RENEGOTIATION_DISABLED"; + throw error; + } + throw Error("Not implented in Bun yet"); } + disableRenegotiation() { + this.#renegotiationDisabled = true; + } + getTLSTicket() { + return this[bunSocketInternal]?.getTLSTicket(); + } + exportKeyingMaterial(length, label, context) { + if (context) { + return this[bunSocketInternal]?.exportKeyingMaterial(length, label, context); + } + return this[bunSocketInternal]?.exportKeyingMaterial(length, label); + } + setMaxSendFragment(size) { - // SSL_set_max_send_fragment - throw Error("Not implented in Bun yet"); + return this[bunSocketInternal]?.setMaxSendFragment(size) || false; } + + // only for debug purposes so we just mock for now + enableTrace() {} + setServername(name) { if (this.isServer) { let error = new Error("ERR_TLS_SNI_FROM_SERVER: Cannot issue SNI from a TLS server-side socket"); @@ -374,25 +436,27 @@ const TLSSocket = (function (InternalTLSSocket) { this.servername = name; this[bunSocketInternal]?.setServername(name); } - setSession() { - throw Error("Not implented in Bun yet"); + setSession(session) { + this.#session = session; + if (typeof session === "string") session = Buffer.from(session, "latin1"); + return this[bunSocketInternal]?.setSession(session); } - getPeerCertificate() { - // need to implement peerCertificate on socket.zig - // const cert = this[bunSocketInternal]?.peerCertificate; - // if(cert) { - // return translatePeerCertificate(cert); - // } - throw Error("Not implented in Bun yet"); + getPeerCertificate(abbreviated) { + const cert = + arguments.length < 1 + ? this[bunSocketInternal]?.getPeerCertificate() + : this[bunSocketInternal]?.getPeerCertificate(abbreviated); + if (cert) { + return translatePeerCertificate(cert); + } } getCertificate() { // need to implement certificate on socket.zig - // const cert = this[bunSocketInternal]?.certificate; - // if(cert) { - // It's not a peer cert, but the formatting is identical. - // return translatePeerCertificate(cert); - // } - throw Error("Not implented in Bun yet"); + const cert = this[bunSocketInternal]?.getCertificate(); + if (cert) { + // It's not a peer cert, but the formatting is identical. + return translatePeerCertificate(cert); + } } getPeerX509Certificate() { throw Error("Not implented in Bun yet"); @@ -410,6 +474,8 @@ const TLSSocket = (function (InternalTLSSocket) { socket: this.#socket, ALPNProtocols: this.ALPNProtocols, serverName: this.servername || host || "localhost", + checkServerIdentity: this.#checkServerIdentity, + session: this.#session, ...this.#secureContext, }; } @@ -426,23 +492,11 @@ class Server extends NetServer { _requestCert; servername; ALPNProtocols; - #checkServerIdentity; constructor(options, secureConnectionListener) { super(options, secureConnectionListener); - this.#checkServerIdentity = options?.checkServerIdentity || checkServerIdentity; this.setSecureContext(options); } - emit(event, args) { - super.emit(event, args); - - if (event === "connection") { - // grabs secureConnect to emit secureConnection - args.once("secureConnect", () => { - super.emit("secureConnection", args); - }); - } - } setSecureContext(options) { if (options instanceof InternalSecureContext) { options = options.context; @@ -535,7 +589,6 @@ class Server extends NetServer { rejectUnauthorized: isClient ? false : this._rejectUnauthorized, requestCert: isClient ? false : this._requestCert, ALPNProtocols: this.ALPNProtocols, - checkServerIdentity: this.#checkServerIdentity, }, SocketClass, ]; diff --git a/src/js/out/WebCoreJSBuiltins.cpp b/src/js/out/WebCoreJSBuiltins.cpp index a380322a6..310d23505 100644 --- a/src/js/out/WebCoreJSBuiltins.cpp +++ b/src/js/out/WebCoreJSBuiltins.cpp @@ -16,7 +16,7 @@ const JSC::ConstructorKind s_bundlerPluginRunSetupFunctionCodeConstructorKind = const JSC::ImplementationVisibility s_bundlerPluginRunSetupFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_bundlerPluginRunSetupFunctionCodeLength = 2165; static const JSC::Intrinsic s_bundlerPluginRunSetupFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunSetupFunctionCode = "(function (J,_){\"use strict\";var D=new Map,F=new Map;function H(q,h,E){if(!q||!@isObject(q))@throwTypeError('Expected an object with \"filter\" RegExp');if(!h||!@isCallable(h))@throwTypeError(\"callback must be a function\");var{filter:w,namespace:z=\"file\"}=q;if(!w)@throwTypeError('Expected an object with \"filter\" RegExp');if(!@isRegExpObject(w))@throwTypeError(\"filter must be a RegExp\");if(z&&typeof z!==\"string\")@throwTypeError(\"namespace must be a string\");if((z\?.length\?\?0)===0)z=\"file\";if(!/^([/@a-zA-Z0-9_\\\\-]+)$/.test(z))@throwTypeError(\"namespace can only contain $a-zA-Z0-9_\\\\-\");var A=E.@get(z);if(!A)E.@set(z,[[w,h]]);else @arrayPush(A,[w,h])}function K(q,h){H(q,h,D)}function M(q,h){H(q,h,F)}const I=()=>{var q=!1,h=!1;for(var[E,w]of D.entries())for(var[z]of w)this.addFilter(z,E,1),q=!0;for(var[E,w]of F.entries())for(var[z]of w)this.addFilter(z,E,0),h=!0;if(h){var A=this.onResolve;if(!A)this.onResolve=F;else for(var[E,w]of F.entries()){var C=A.@get(E);if(!C)A.@set(E,w);else A.@set(E,C.concat(w))}}if(q){var G=this.onLoad;if(!G)this.onLoad=D;else for(var[E,w]of D.entries()){var C=G.@get(E);if(!C)G.@set(E,w);else G.@set(E,C.concat(w))}}return q||h};var B=J({config:_,onDispose:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onEnd:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onLoad:K,onResolve:M,onStart:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),resolve:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),initialOptions:{..._,bundle:!0,entryPoints:_.entrypoints\?\?_.entryPoints\?\?[],minify:typeof _.minify===\"boolean\"\?_.minify:!1,minifyIdentifiers:_.minify===!0||_.minify\?.identifiers,minifyWhitespace:_.minify===!0||_.minify\?.whitespace,minifySyntax:_.minify===!0||_.minify\?.syntax,outbase:_.root,platform:_.target===\"bun\"\?\"node\":_.target},esbuild:{}});if(B&&@isPromise(B))if(@getPromiseInternalField(B,@promiseFieldFlags)&@promiseStateFulfilled)B=@getPromiseInternalField(B,@promiseFieldReactionsOrResult);else return B.@then(I);return I()})\n"; +const char* const s_bundlerPluginRunSetupFunctionCode = "(function (_,E){\"use strict\";var w=new Map,h=new Map;function q(D,F,G){if(!D||!@isObject(D))@throwTypeError('Expected an object with \"filter\" RegExp');if(!F||!@isCallable(F))@throwTypeError(\"callback must be a function\");var{filter:H,namespace:I=\"file\"}=D;if(!H)@throwTypeError('Expected an object with \"filter\" RegExp');if(!@isRegExpObject(H))@throwTypeError(\"filter must be a RegExp\");if(I&&typeof I!==\"string\")@throwTypeError(\"namespace must be a string\");if((I\?.length\?\?0)===0)I=\"file\";if(!/^([/@a-zA-Z0-9_\\\\-]+)$/.test(I))@throwTypeError(\"namespace can only contain $a-zA-Z0-9_\\\\-\");var J=G.@get(I);if(!J)G.@set(I,[[H,F]]);else @arrayPush(J,[H,F])}function z(D,F){q(D,F,w)}function A(D,F){q(D,F,h)}const B=()=>{var D=!1,F=!1;for(var[G,H]of w.entries())for(var[I]of H)this.addFilter(I,G,1),D=!0;for(var[G,H]of h.entries())for(var[I]of H)this.addFilter(I,G,0),F=!0;if(F){var J=this.onResolve;if(!J)this.onResolve=h;else for(var[G,H]of h.entries()){var K=J.@get(G);if(!K)J.@set(G,H);else J.@set(G,K.concat(H))}}if(D){var M=this.onLoad;if(!M)this.onLoad=w;else for(var[G,H]of w.entries()){var K=M.@get(G);if(!K)M.@set(G,H);else M.@set(G,K.concat(H))}}return D||F};var C=_({config:E,onDispose:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onEnd:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),onLoad:z,onResolve:A,onStart:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),resolve:()=>@throwTypeError(`@{@2} is not implemented yet. See https://github.com/oven-sh/bun/issues/@1`),initialOptions:{...E,bundle:!0,entryPoints:E.entrypoints\?\?E.entryPoints\?\?[],minify:typeof E.minify===\"boolean\"\?E.minify:!1,minifyIdentifiers:E.minify===!0||E.minify\?.identifiers,minifyWhitespace:E.minify===!0||E.minify\?.whitespace,minifySyntax:E.minify===!0||E.minify\?.syntax,outbase:E.root,platform:E.target===\"bun\"\?\"node\":E.target},esbuild:{}});if(C&&@isPromise(C))if(@getPromiseInternalField(C,@promiseFieldFlags)&@promiseStateFulfilled)C=@getPromiseInternalField(C,@promiseFieldReactionsOrResult);else return C.@then(B);return B()})\n"; // runOnResolvePlugins const JSC::ConstructAbility s_bundlerPluginRunOnResolvePluginsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -24,7 +24,7 @@ const JSC::ConstructorKind s_bundlerPluginRunOnResolvePluginsCodeConstructorKind const JSC::ImplementationVisibility s_bundlerPluginRunOnResolvePluginsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_bundlerPluginRunOnResolvePluginsCodeLength = 1711; static const JSC::Intrinsic s_bundlerPluginRunOnResolvePluginsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunOnResolvePluginsCode = "(function (C,E,F,b,G){\"use strict\";const H=[\"entry-point\",\"import-statement\",\"require-call\",\"dynamic-import\",\"require-resolve\",\"import-rule\",\"url-token\",\"internal\"][G];var g=(async(j,q,J,K)=>{var{onResolve:M,onLoad:A}=this,B=M.@get(q);if(!B)return this.onResolveAsync(b,null,null,null),null;for(let[O,Q]of B)if(O.test(j)){var _=Q({path:j,importer:J,namespace:q,kind:K});while(_&&@isPromise(_)&&(@getPromiseInternalField(_,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)_=@getPromiseInternalField(_,@promiseFieldReactionsOrResult);if(_&&@isPromise(_))_=await _;if(!_||!@isObject(_))continue;var{path:y,namespace:w=q,external:z}=_;if(typeof y!==\"string\"||typeof w!==\"string\")@throwTypeError(\"onResolve plugins must return an object with a string 'path' and string 'loader' field\");if(!y)continue;if(!w)w=q;if(typeof z!==\"boolean\"&&!@isUndefinedOrNull(z))@throwTypeError('onResolve plugins \"external\" field must be boolean or unspecified');if(!z){if(w===\"file\"){if(darwin!==\"win32\"){if(y[0]!==\"/\"||y.includes(\"..\"))@throwTypeError('onResolve plugin \"path\" must be absolute when the namespace is \"file\"')}}if(w===\"dataurl\"){if(!y.startsWith(\"data:\"))@throwTypeError('onResolve plugin \"path\" must start with \"data:\" when the namespace is \"dataurl\"')}if(w&&w!==\"file\"&&(!A||!A.@has(w)))@throwTypeError(`Expected onLoad plugin for namespace ${w} to exist`)}return this.onResolveAsync(b,y,w,z),null}return this.onResolveAsync(b,null,null,null),null})(C,E,F,H);while(g&&@isPromise(g)&&(@getPromiseInternalField(g,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)g=@getPromiseInternalField(g,@promiseFieldReactionsOrResult);if(g&&@isPromise(g))g.then(()=>{},(j)=>{this.addError(b,j,0)})})\n"; +const char* const s_bundlerPluginRunOnResolvePluginsCode = "(function (_,w,g,y,b){\"use strict\";const j=[\"entry-point\",\"import-statement\",\"require-call\",\"dynamic-import\",\"require-resolve\",\"import-rule\",\"url-token\",\"internal\"][b];var q=(async(z,A,B,C)=>{var{onResolve:E,onLoad:F}=this,G=E.@get(A);if(!G)return this.onResolveAsync(y,null,null,null),null;for(let[O,Q]of G)if(O.test(z)){var H=Q({path:z,importer:B,namespace:A,kind:C});while(H&&@isPromise(H)&&(@getPromiseInternalField(H,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)H=@getPromiseInternalField(H,@promiseFieldReactionsOrResult);if(H&&@isPromise(H))H=await H;if(!H||!@isObject(H))continue;var{path:J,namespace:K=A,external:M}=H;if(typeof J!==\"string\"||typeof K!==\"string\")@throwTypeError(\"onResolve plugins must return an object with a string 'path' and string 'loader' field\");if(!J)continue;if(!K)K=A;if(typeof M!==\"boolean\"&&!@isUndefinedOrNull(M))@throwTypeError('onResolve plugins \"external\" field must be boolean or unspecified');if(!M){if(K===\"file\"){if(darwin!==\"win32\"){if(J[0]!==\"/\"||J.includes(\"..\"))@throwTypeError('onResolve plugin \"path\" must be absolute when the namespace is \"file\"')}}if(K===\"dataurl\"){if(!J.startsWith(\"data:\"))@throwTypeError('onResolve plugin \"path\" must start with \"data:\" when the namespace is \"dataurl\"')}if(K&&K!==\"file\"&&(!F||!F.@has(K)))@throwTypeError(`Expected onLoad plugin for namespace ${K} to exist`)}return this.onResolveAsync(y,J,K,M),null}return this.onResolveAsync(y,null,null,null),null})(_,w,g,j);while(q&&@isPromise(q)&&(@getPromiseInternalField(q,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)q=@getPromiseInternalField(q,@promiseFieldReactionsOrResult);if(q&&@isPromise(q))q.then(()=>{},(z)=>{this.addError(y,z,0)})})\n"; // runOnLoadPlugins const JSC::ConstructAbility s_bundlerPluginRunOnLoadPluginsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -32,7 +32,7 @@ const JSC::ConstructorKind s_bundlerPluginRunOnLoadPluginsCodeConstructorKind = const JSC::ImplementationVisibility s_bundlerPluginRunOnLoadPluginsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_bundlerPluginRunOnLoadPluginsCodeLength = 1325; static const JSC::Intrinsic s_bundlerPluginRunOnLoadPluginsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_bundlerPluginRunOnLoadPluginsCode = "(function (w,F,G,H){\"use strict\";const J={jsx:0,js:1,ts:2,tsx:3,css:4,file:5,json:6,toml:7,wasm:8,napi:9,base64:10,dataurl:11,text:12},K=[\"jsx\",\"js\",\"ts\",\"tsx\",\"css\",\"file\",\"json\",\"toml\",\"wasm\",\"napi\",\"base64\",\"dataurl\",\"text\"][H];var g=(async(j,x,y,z)=>{var B=this.onLoad.@get(y);if(!B)return this.onLoadAsync(j,null,null),null;for(let[Q,T]of B)if(Q.test(x)){var b=T({path:x,namespace:y,loader:z});while(b&&@isPromise(b)&&(@getPromiseInternalField(b,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)b=@getPromiseInternalField(b,@promiseFieldReactionsOrResult);if(b&&@isPromise(b))b=await b;if(!b||!@isObject(b))continue;var{contents:q,loader:v=z}=b;if(typeof q!==\"string\"&&!@isTypedArrayView(q))@throwTypeError('onLoad plugins must return an object with \"contents\" as a string or Uint8Array');if(typeof v!==\"string\")@throwTypeError('onLoad plugins must return an object with \"loader\" as a string');const C=J[v];if(C===@undefined)@throwTypeError(`Loader ${v} is not supported.`);return this.onLoadAsync(j,q,C),null}return this.onLoadAsync(j,null,null),null})(w,F,G,K);while(g&&@isPromise(g)&&(@getPromiseInternalField(g,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)g=@getPromiseInternalField(g,@promiseFieldReactionsOrResult);if(g&&@isPromise(g))g.then(()=>{},(j)=>{this.addError(w,j,1)})})\n"; +const char* const s_bundlerPluginRunOnLoadPluginsCode = "(function (b,g,j,q){\"use strict\";const v={jsx:0,js:1,ts:2,tsx:3,css:4,file:5,json:6,toml:7,wasm:8,napi:9,base64:10,dataurl:11,text:12},w=[\"jsx\",\"js\",\"ts\",\"tsx\",\"css\",\"file\",\"json\",\"toml\",\"wasm\",\"napi\",\"base64\",\"dataurl\",\"text\"][q];var x=(async(y,z,B,C)=>{var F=this.onLoad.@get(B);if(!F)return this.onLoadAsync(y,null,null),null;for(let[K,Q]of F)if(K.test(z)){var G=Q({path:z,namespace:B,loader:C});while(G&&@isPromise(G)&&(@getPromiseInternalField(G,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)G=@getPromiseInternalField(G,@promiseFieldReactionsOrResult);if(G&&@isPromise(G))G=await G;if(!G||!@isObject(G))continue;var{contents:H,loader:J=C}=G;if(typeof H!==\"string\"&&!@isTypedArrayView(H))@throwTypeError('onLoad plugins must return an object with \"contents\" as a string or Uint8Array');if(typeof J!==\"string\")@throwTypeError('onLoad plugins must return an object with \"loader\" as a string');const T=v[J];if(T===@undefined)@throwTypeError(`Loader ${J} is not supported.`);return this.onLoadAsync(y,H,T),null}return this.onLoadAsync(y,null,null),null})(b,g,j,w);while(x&&@isPromise(x)&&(@getPromiseInternalField(x,@promiseFieldFlags)&@promiseStateMask)===@promiseStateFulfilled)x=@getPromiseInternalField(x,@promiseFieldReactionsOrResult);if(x&&@isPromise(x))x.then(()=>{},(y)=>{this.addError(b,y,1)})})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -108,7 +108,7 @@ const JSC::ConstructorKind s_writableStreamInternalsCreateWritableStreamCodeCons const JSC::ImplementationVisibility s_writableStreamInternalsCreateWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsCreateWritableStreamCodeLength = 278; static const JSC::Intrinsic s_writableStreamInternalsCreateWritableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsCreateWritableStreamCode = "(function (p,N,_,f,u,j){\"use strict\";@assert(typeof u===\"number\"&&!@isNaN(u)&&u>=0);const d={};@initializeWritableStreamSlots(d,{});const q=new @WritableStreamDefaultController;return @setUpWritableStreamDefaultController(d,q,p,N,_,f,u,j),@createWritableStreamFromInternal(d)})\n"; +const char* const s_writableStreamInternalsCreateWritableStreamCode = "(function (u,d,p,N,_,f){\"use strict\";@assert(typeof _===\"number\"&&!@isNaN(_)&&_>=0);const j={};@initializeWritableStreamSlots(j,{});const q=new @WritableStreamDefaultController;return @setUpWritableStreamDefaultController(j,q,u,d,p,N,_,f),@createWritableStreamFromInternal(j)})\n"; // createInternalWritableStreamFromUnderlyingSink const JSC::ConstructAbility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -116,7 +116,7 @@ const JSC::ConstructorKind s_writableStreamInternalsCreateInternalWritableStream const JSC::ImplementationVisibility s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeLength = 920; static const JSC::Intrinsic s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCode = "(function (f,w){\"use strict\";const C={};if(f===@undefined)f={};if(w===@undefined)w={};if(!@isObject(f))@throwTypeError(\"WritableStream constructor takes an object as first argument\");if(\"type\"in f)@throwRangeError(\"Invalid type is specified\");const E=@extractSizeAlgorithm(w),_=@extractHighWaterMark(w,1),o={};if(\"start\"in f){if(o.start=f.start,typeof o.start!==\"function\")@throwTypeError(\"underlyingSink.start should be a function\")}if(\"write\"in f){if(o.write=f.write,typeof o.write!==\"function\")@throwTypeError(\"underlyingSink.write should be a function\")}if(\"close\"in f){if(o.close=f.close,typeof o.close!==\"function\")@throwTypeError(\"underlyingSink.close should be a function\")}if(\"abort\"in f){if(o.abort=f.abort,typeof o.abort!==\"function\")@throwTypeError(\"underlyingSink.abort should be a function\")}return @initializeWritableStreamSlots(C,f),@setUpWritableStreamDefaultControllerFromUnderlyingSink(C,f,o,_,E),C})\n"; +const char* const s_writableStreamInternalsCreateInternalWritableStreamFromUnderlyingSinkCode = "(function (f,o){\"use strict\";const w={};if(f===@undefined)f={};if(o===@undefined)o={};if(!@isObject(f))@throwTypeError(\"WritableStream constructor takes an object as first argument\");if(\"type\"in f)@throwRangeError(\"Invalid type is specified\");const C=@extractSizeAlgorithm(o),E=@extractHighWaterMark(o,1),_={};if(\"start\"in f){if(_.start=f.start,typeof _.start!==\"function\")@throwTypeError(\"underlyingSink.start should be a function\")}if(\"write\"in f){if(_.write=f.write,typeof _.write!==\"function\")@throwTypeError(\"underlyingSink.write should be a function\")}if(\"close\"in f){if(_.close=f.close,typeof _.close!==\"function\")@throwTypeError(\"underlyingSink.close should be a function\")}if(\"abort\"in f){if(_.abort=f.abort,typeof _.abort!==\"function\")@throwTypeError(\"underlyingSink.abort should be a function\")}return @initializeWritableStreamSlots(w,f),@setUpWritableStreamDefaultControllerFromUnderlyingSink(w,f,_,E,C),w})\n"; // initializeWritableStreamSlots const JSC::ConstructAbility s_writableStreamInternalsInitializeWritableStreamSlotsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -156,7 +156,7 @@ const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultWr const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeLength = 887; static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultWriterCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultWriterCode = "(function (g,n){\"use strict\";if(@isWritableStreamLocked(n))@throwTypeError(\"WritableStream is locked\");@putByIdDirectPrivate(g,\"stream\",n),@putByIdDirectPrivate(n,\"writer\",g);const v=@newPromiseCapability(@Promise),h=@newPromiseCapability(@Promise);@putByIdDirectPrivate(g,\"readyPromise\",v),@putByIdDirectPrivate(g,\"closedPromise\",h);const B=@getByIdDirectPrivate(n,\"state\");if(B===\"writable\"){if(@writableStreamCloseQueuedOrInFlight(n)||!@getByIdDirectPrivate(n,\"backpressure\"))v.@resolve.@call()}else if(B===\"erroring\")v.@reject.@call(@undefined,@getByIdDirectPrivate(n,\"storedError\")),@markPromiseAsHandled(v.@promise);else if(B===\"closed\")v.@resolve.@call(),h.@resolve.@call();else{@assert(B===\"errored\");const _=@getByIdDirectPrivate(n,\"storedError\");v.@reject.@call(@undefined,_),@markPromiseAsHandled(v.@promise),h.@reject.@call(@undefined,_),@markPromiseAsHandled(h.@promise)}})\n"; +const char* const s_writableStreamInternalsSetUpWritableStreamDefaultWriterCode = "(function (n,v){\"use strict\";if(@isWritableStreamLocked(v))@throwTypeError(\"WritableStream is locked\");@putByIdDirectPrivate(n,\"stream\",v),@putByIdDirectPrivate(v,\"writer\",n);const g=@newPromiseCapability(@Promise),h=@newPromiseCapability(@Promise);@putByIdDirectPrivate(n,\"readyPromise\",g),@putByIdDirectPrivate(n,\"closedPromise\",h);const B=@getByIdDirectPrivate(v,\"state\");if(B===\"writable\"){if(@writableStreamCloseQueuedOrInFlight(v)||!@getByIdDirectPrivate(v,\"backpressure\"))g.@resolve.@call()}else if(B===\"erroring\")g.@reject.@call(@undefined,@getByIdDirectPrivate(v,\"storedError\")),@markPromiseAsHandled(g.@promise);else if(B===\"closed\")g.@resolve.@call(),h.@resolve.@call();else{@assert(B===\"errored\");const _=@getByIdDirectPrivate(v,\"storedError\");g.@reject.@call(@undefined,_),@markPromiseAsHandled(g.@promise),h.@reject.@call(@undefined,_),@markPromiseAsHandled(h.@promise)}})\n"; // writableStreamAbort const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAbortCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -164,7 +164,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamAbortCodeConst const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamAbortCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamAbortCodeLength = 501; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamAbortCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamAbortCode = "(function (h,B){\"use strict\";const c=@getByIdDirectPrivate(h,\"state\");if(c===\"closed\"||c===\"errored\")return @Promise.@resolve();const f=@getByIdDirectPrivate(h,\"pendingAbortRequest\");if(f!==@undefined)return f.promise.@promise;@assert(c===\"writable\"||c===\"erroring\");let _=!1;if(c===\"erroring\")_=!0,B=@undefined;const j=@newPromiseCapability(@Promise);if(@putByIdDirectPrivate(h,\"pendingAbortRequest\",{promise:j,reason:B,wasAlreadyErroring:_}),!_)@writableStreamStartErroring(h,B);return j.@promise})\n"; +const char* const s_writableStreamInternalsWritableStreamAbortCode = "(function (h,B){\"use strict\";const _=@getByIdDirectPrivate(h,\"state\");if(_===\"closed\"||_===\"errored\")return @Promise.@resolve();const f=@getByIdDirectPrivate(h,\"pendingAbortRequest\");if(f!==@undefined)return f.promise.@promise;@assert(_===\"writable\"||_===\"erroring\");let j=!1;if(_===\"erroring\")j=!0,B=@undefined;const c=@newPromiseCapability(@Promise);if(@putByIdDirectPrivate(h,\"pendingAbortRequest\",{promise:c,reason:B,wasAlreadyErroring:j}),!j)@writableStreamStartErroring(h,B);return c.@promise})\n"; // writableStreamClose const JSC::ConstructAbility s_writableStreamInternalsWritableStreamCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -172,7 +172,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamCloseCodeConst const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamCloseCodeLength = 642; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamCloseCode = "(function (n){\"use strict\";const _=@getByIdDirectPrivate(n,\"state\");if(_===\"closed\"||_===\"errored\")return @Promise.@reject(@makeTypeError(\"Cannot close a writable stream that is closed or errored\"));@assert(_===\"writable\"||_===\"erroring\"),@assert(!@writableStreamCloseQueuedOrInFlight(n));const u=@newPromiseCapability(@Promise);@putByIdDirectPrivate(n,\"closeRequest\",u);const d=@getByIdDirectPrivate(n,\"writer\");if(d!==@undefined&&@getByIdDirectPrivate(n,\"backpressure\")&&_===\"writable\")@getByIdDirectPrivate(d,\"readyPromise\").@resolve.@call();return @writableStreamDefaultControllerClose(@getByIdDirectPrivate(n,\"controller\")),u.@promise})\n"; +const char* const s_writableStreamInternalsWritableStreamCloseCode = "(function (_){\"use strict\";const u=@getByIdDirectPrivate(_,\"state\");if(u===\"closed\"||u===\"errored\")return @Promise.@reject(@makeTypeError(\"Cannot close a writable stream that is closed or errored\"));@assert(u===\"writable\"||u===\"erroring\"),@assert(!@writableStreamCloseQueuedOrInFlight(_));const d=@newPromiseCapability(@Promise);@putByIdDirectPrivate(_,\"closeRequest\",d);const n=@getByIdDirectPrivate(_,\"writer\");if(n!==@undefined&&@getByIdDirectPrivate(_,\"backpressure\")&&u===\"writable\")@getByIdDirectPrivate(n,\"readyPromise\").@resolve.@call();return @writableStreamDefaultControllerClose(@getByIdDirectPrivate(_,\"controller\")),d.@promise})\n"; // writableStreamAddWriteRequest const JSC::ConstructAbility s_writableStreamInternalsWritableStreamAddWriteRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -196,7 +196,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDealWithReject const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDealWithRejectionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDealWithRejectionCodeLength = 189; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDealWithRejectionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDealWithRejectionCode = "(function (i,c){\"use strict\";const n=@getByIdDirectPrivate(i,\"state\");if(n===\"writable\"){@writableStreamStartErroring(i,c);return}@assert(n===\"erroring\"),@writableStreamFinishErroring(i)})\n"; +const char* const s_writableStreamInternalsWritableStreamDealWithRejectionCode = "(function (n,c){\"use strict\";const i=@getByIdDirectPrivate(n,\"state\");if(i===\"writable\"){@writableStreamStartErroring(n,c);return}@assert(i===\"erroring\"),@writableStreamFinishErroring(n)})\n"; // writableStreamFinishErroring const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishErroringCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -204,7 +204,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishErroring const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishErroringCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamFinishErroringCodeLength = 1058; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishErroringCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishErroringCode = "(function (i){\"use strict\";@assert(@getByIdDirectPrivate(i,\"state\")===\"erroring\"),@assert(!@writableStreamHasOperationMarkedInFlight(i)),@putByIdDirectPrivate(i,\"state\",\"errored\");const h=@getByIdDirectPrivate(i,\"controller\");@getByIdDirectPrivate(h,\"errorSteps\").@call();const A=@getByIdDirectPrivate(i,\"storedError\"),B=@getByIdDirectPrivate(i,\"writeRequests\");for(var p=B.shift();p;p=B.shift())p.@reject.@call(@undefined,A);@putByIdDirectPrivate(i,\"writeRequests\",@createFIFO());const _=@getByIdDirectPrivate(i,\"pendingAbortRequest\");if(_===@undefined){@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}if(@putByIdDirectPrivate(i,\"pendingAbortRequest\",@undefined),_.wasAlreadyErroring){_.promise.@reject.@call(@undefined,A),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}@getByIdDirectPrivate(h,\"abortSteps\").@call(@undefined,_.reason).@then(()=>{_.promise.@resolve.@call(),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)},(I)=>{_.promise.@reject.@call(@undefined,I),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)})})\n"; +const char* const s_writableStreamInternalsWritableStreamFinishErroringCode = "(function (i){\"use strict\";@assert(@getByIdDirectPrivate(i,\"state\")===\"erroring\"),@assert(!@writableStreamHasOperationMarkedInFlight(i)),@putByIdDirectPrivate(i,\"state\",\"errored\");const _=@getByIdDirectPrivate(i,\"controller\");@getByIdDirectPrivate(_,\"errorSteps\").@call();const p=@getByIdDirectPrivate(i,\"storedError\"),h=@getByIdDirectPrivate(i,\"writeRequests\");for(var A=h.shift();A;A=h.shift())A.@reject.@call(@undefined,p);@putByIdDirectPrivate(i,\"writeRequests\",@createFIFO());const B=@getByIdDirectPrivate(i,\"pendingAbortRequest\");if(B===@undefined){@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}if(@putByIdDirectPrivate(i,\"pendingAbortRequest\",@undefined),B.wasAlreadyErroring){B.promise.@reject.@call(@undefined,p),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i);return}@getByIdDirectPrivate(_,\"abortSteps\").@call(@undefined,B.reason).@then(()=>{B.promise.@resolve.@call(),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)},(I)=>{B.promise.@reject.@call(@undefined,I),@writableStreamRejectCloseAndClosedPromiseIfNeeded(i)})})\n"; // writableStreamFinishInFlightClose const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -212,7 +212,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlight const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeLength = 751; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseCode = "(function (d){\"use strict\";@getByIdDirectPrivate(d,\"inFlightCloseRequest\").@resolve.@call(),@putByIdDirectPrivate(d,\"inFlightCloseRequest\",@undefined);const i=@getByIdDirectPrivate(d,\"state\");if(@assert(i===\"writable\"||i===\"erroring\"),i===\"erroring\"){@putByIdDirectPrivate(d,\"storedError\",@undefined);const _=@getByIdDirectPrivate(d,\"pendingAbortRequest\");if(_!==@undefined)_.promise.@resolve.@call(),@putByIdDirectPrivate(d,\"pendingAbortRequest\",@undefined)}@putByIdDirectPrivate(d,\"state\",\"closed\");const n=@getByIdDirectPrivate(d,\"writer\");if(n!==@undefined)@getByIdDirectPrivate(n,\"closedPromise\").@resolve.@call();@assert(@getByIdDirectPrivate(d,\"pendingAbortRequest\")===@undefined),@assert(@getByIdDirectPrivate(d,\"storedError\")===@undefined)})\n"; +const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseCode = "(function (d){\"use strict\";@getByIdDirectPrivate(d,\"inFlightCloseRequest\").@resolve.@call(),@putByIdDirectPrivate(d,\"inFlightCloseRequest\",@undefined);const n=@getByIdDirectPrivate(d,\"state\");if(@assert(n===\"writable\"||n===\"erroring\"),n===\"erroring\"){@putByIdDirectPrivate(d,\"storedError\",@undefined);const c=@getByIdDirectPrivate(d,\"pendingAbortRequest\");if(c!==@undefined)c.promise.@resolve.@call(),@putByIdDirectPrivate(d,\"pendingAbortRequest\",@undefined)}@putByIdDirectPrivate(d,\"state\",\"closed\");const _=@getByIdDirectPrivate(d,\"writer\");if(_!==@undefined)@getByIdDirectPrivate(_,\"closedPromise\").@resolve.@call();@assert(@getByIdDirectPrivate(d,\"pendingAbortRequest\")===@undefined),@assert(@getByIdDirectPrivate(d,\"storedError\")===@undefined)})\n"; // writableStreamFinishInFlightCloseWithError const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -220,7 +220,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamFinishInFlight const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeLength = 488; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCode = "(function (_,c){\"use strict\";const d=@getByIdDirectPrivate(_,\"inFlightCloseRequest\");@assert(d!==@undefined),d.@reject.@call(@undefined,c),@putByIdDirectPrivate(_,\"inFlightCloseRequest\",@undefined);const n=@getByIdDirectPrivate(_,\"state\");@assert(n===\"writable\"||n===\"erroring\");const p=@getByIdDirectPrivate(_,\"pendingAbortRequest\");if(p!==@undefined)p.promise.@reject.@call(@undefined,c),@putByIdDirectPrivate(_,\"pendingAbortRequest\",@undefined);@writableStreamDealWithRejection(_,c)})\n"; +const char* const s_writableStreamInternalsWritableStreamFinishInFlightCloseWithErrorCode = "(function (c,_){\"use strict\";const n=@getByIdDirectPrivate(c,\"inFlightCloseRequest\");@assert(n!==@undefined),n.@reject.@call(@undefined,_),@putByIdDirectPrivate(c,\"inFlightCloseRequest\",@undefined);const p=@getByIdDirectPrivate(c,\"state\");@assert(p===\"writable\"||p===\"erroring\");const d=@getByIdDirectPrivate(c,\"pendingAbortRequest\");if(d!==@undefined)d.promise.@reject.@call(@undefined,_),@putByIdDirectPrivate(c,\"pendingAbortRequest\",@undefined);@writableStreamDealWithRejection(c,_)})\n"; // writableStreamFinishInFlightWrite const JSC::ConstructAbility s_writableStreamInternalsWritableStreamFinishInFlightWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -260,7 +260,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamMarkFirstWrite const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeLength = 240; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCode = "(function (c){\"use strict\";const d=@getByIdDirectPrivate(c,\"writeRequests\");@assert(@getByIdDirectPrivate(c,\"inFlightWriteRequest\")===@undefined),@assert(d.isNotEmpty());const h=d.shift();@putByIdDirectPrivate(c,\"inFlightWriteRequest\",h)})\n"; +const char* const s_writableStreamInternalsWritableStreamMarkFirstWriteRequestInFlightCode = "(function (d){\"use strict\";const h=@getByIdDirectPrivate(d,\"writeRequests\");@assert(@getByIdDirectPrivate(d,\"inFlightWriteRequest\")===@undefined),@assert(h.isNotEmpty());const c=h.shift();@putByIdDirectPrivate(d,\"inFlightWriteRequest\",c)})\n"; // writableStreamRejectCloseAndClosedPromiseIfNeeded const JSC::ConstructAbility s_writableStreamInternalsWritableStreamRejectCloseAndClosedPromiseIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -292,7 +292,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterA const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeLength = 130; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterAbortCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterAbortCode = "(function (d,f){\"use strict\";const c=@getByIdDirectPrivate(d,\"stream\");return @assert(c!==@undefined),@writableStreamAbort(c,f)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterAbortCode = "(function (c,f){\"use strict\";const d=@getByIdDirectPrivate(c,\"stream\");return @assert(d!==@undefined),@writableStreamAbort(d,f)})\n"; // writableStreamDefaultWriterClose const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -300,7 +300,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterC const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeLength = 126; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseCode = "(function (c){\"use strict\";const _=@getByIdDirectPrivate(c,\"stream\");return @assert(_!==@undefined),@writableStreamClose(_)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseCode = "(function (_){\"use strict\";const c=@getByIdDirectPrivate(_,\"stream\");return @assert(c!==@undefined),@writableStreamClose(c)})\n"; // writableStreamDefaultWriterCloseWithErrorPropagation const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -308,7 +308,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterC const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeLength = 385; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCode = "(function (u){\"use strict\";const c=@getByIdDirectPrivate(u,\"stream\");@assert(c!==@undefined);const l=@getByIdDirectPrivate(c,\"state\");if(@writableStreamCloseQueuedOrInFlight(c)||l===\"closed\")return @Promise.@resolve();if(l===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(c,\"storedError\"));return @assert(l===\"writable\"||l===\"erroring\"),@writableStreamDefaultWriterClose(u)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterCloseWithErrorPropagationCode = "(function (c){\"use strict\";const u=@getByIdDirectPrivate(c,\"stream\");@assert(u!==@undefined);const l=@getByIdDirectPrivate(u,\"state\");if(@writableStreamCloseQueuedOrInFlight(u)||l===\"closed\")return @Promise.@resolve();if(l===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(u,\"storedError\"));return @assert(l===\"writable\"||l===\"erroring\"),@writableStreamDefaultWriterClose(c)})\n"; // writableStreamDefaultWriterEnsureClosedPromiseRejected const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -316,7 +316,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterE const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeLength = 329; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCode = "(function (h,u){\"use strict\";let _=@getByIdDirectPrivate(h,\"closedPromise\"),n=_.@promise;if((@getPromiseInternalField(n,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)_=@newPromiseCapability(@Promise),n=_.@promise,@putByIdDirectPrivate(h,\"closedPromise\",_);_.@reject.@call(@undefined,u),@markPromiseAsHandled(n)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureClosedPromiseRejectedCode = "(function (n,_){\"use strict\";let h=@getByIdDirectPrivate(n,\"closedPromise\"),u=h.@promise;if((@getPromiseInternalField(u,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)h=@newPromiseCapability(@Promise),u=h.@promise,@putByIdDirectPrivate(n,\"closedPromise\",h);h.@reject.@call(@undefined,_),@markPromiseAsHandled(u)})\n"; // writableStreamDefaultWriterEnsureReadyPromiseRejected const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -324,7 +324,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterE const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeLength = 327; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCode = "(function (h,n){\"use strict\";let c=@getByIdDirectPrivate(h,\"readyPromise\"),g=c.@promise;if((@getPromiseInternalField(g,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)c=@newPromiseCapability(@Promise),g=c.@promise,@putByIdDirectPrivate(h,\"readyPromise\",c);c.@reject.@call(@undefined,n),@markPromiseAsHandled(g)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterEnsureReadyPromiseRejectedCode = "(function (c,g){\"use strict\";let n=@getByIdDirectPrivate(c,\"readyPromise\"),h=n.@promise;if((@getPromiseInternalField(h,@promiseFieldFlags)&@promiseStateMask)!==@promiseStatePending)n=@newPromiseCapability(@Promise),h=n.@promise,@putByIdDirectPrivate(c,\"readyPromise\",n);n.@reject.@call(@undefined,g),@markPromiseAsHandled(h)})\n"; // writableStreamDefaultWriterGetDesiredSize const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -332,7 +332,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterG const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeLength = 299; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCode = "(function (_){\"use strict\";const c=@getByIdDirectPrivate(_,\"stream\");@assert(c!==@undefined);const l=@getByIdDirectPrivate(c,\"state\");if(l===\"errored\"||l===\"erroring\")return null;if(l===\"closed\")return 0;return @writableStreamDefaultControllerGetDesiredSize(@getByIdDirectPrivate(c,\"controller\"))})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterGetDesiredSizeCode = "(function (c){\"use strict\";const l=@getByIdDirectPrivate(c,\"stream\");@assert(l!==@undefined);const _=@getByIdDirectPrivate(l,\"state\");if(_===\"errored\"||_===\"erroring\")return null;if(_===\"closed\")return 0;return @writableStreamDefaultControllerGetDesiredSize(@getByIdDirectPrivate(l,\"controller\"))})\n"; // writableStreamDefaultWriterRelease const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultWriterReleaseCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -348,7 +348,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultWriterW const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeLength = 919; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultWriterWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultWriterWriteCode = "(function (W,_){\"use strict\";const d=@getByIdDirectPrivate(W,\"stream\");@assert(d!==@undefined);const P=@getByIdDirectPrivate(d,\"controller\");@assert(P!==@undefined);const b=@writableStreamDefaultControllerGetChunkSize(P,_);if(d!==@getByIdDirectPrivate(W,\"stream\"))return @Promise.@reject(@makeTypeError(\"writer is not stream's writer\"));const g=@getByIdDirectPrivate(d,\"state\");if(g===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(d,\"storedError\"));if(@writableStreamCloseQueuedOrInFlight(d)||g===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(@writableStreamCloseQueuedOrInFlight(d)||g===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(g===\"erroring\")return @Promise.@reject(@getByIdDirectPrivate(d,\"storedError\"));@assert(g===\"writable\");const f=@writableStreamAddWriteRequest(d);return @writableStreamDefaultControllerWrite(P,_,b),f})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultWriterWriteCode = "(function (d,g){\"use strict\";const P=@getByIdDirectPrivate(d,\"stream\");@assert(P!==@undefined);const W=@getByIdDirectPrivate(P,\"controller\");@assert(W!==@undefined);const _=@writableStreamDefaultControllerGetChunkSize(W,g);if(P!==@getByIdDirectPrivate(d,\"stream\"))return @Promise.@reject(@makeTypeError(\"writer is not stream's writer\"));const b=@getByIdDirectPrivate(P,\"state\");if(b===\"errored\")return @Promise.@reject(@getByIdDirectPrivate(P,\"storedError\"));if(@writableStreamCloseQueuedOrInFlight(P)||b===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(@writableStreamCloseQueuedOrInFlight(P)||b===\"closed\")return @Promise.@reject(@makeTypeError(\"stream is closing or closed\"));if(b===\"erroring\")return @Promise.@reject(@getByIdDirectPrivate(P,\"storedError\"));@assert(b===\"writable\");const f=@writableStreamAddWriteRequest(P);return @writableStreamDefaultControllerWrite(W,g,_),f})\n"; // setUpWritableStreamDefaultController const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -356,7 +356,7 @@ const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultCo const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeLength = 700; static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerCode = "(function (B,_,v,P,U,d,f,j){\"use strict\";@assert(@isWritableStream(B)),@assert(@getByIdDirectPrivate(B,\"controller\")===@undefined),@putByIdDirectPrivate(_,\"stream\",B),@putByIdDirectPrivate(B,\"controller\",_),@resetQueue(@getByIdDirectPrivate(_,\"queue\")),@putByIdDirectPrivate(_,\"started\",-1),@putByIdDirectPrivate(_,\"startAlgorithm\",v),@putByIdDirectPrivate(_,\"strategySizeAlgorithm\",j),@putByIdDirectPrivate(_,\"strategyHWM\",f),@putByIdDirectPrivate(_,\"writeAlgorithm\",P),@putByIdDirectPrivate(_,\"closeAlgorithm\",U),@putByIdDirectPrivate(_,\"abortAlgorithm\",d);const q=@writableStreamDefaultControllerGetBackpressure(_);@writableStreamUpdateBackpressure(B,q),@writableStreamDefaultControllerStart(_)})\n"; +const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerCode = "(function (_,d,B,f,v,j,P,q){\"use strict\";@assert(@isWritableStream(_)),@assert(@getByIdDirectPrivate(_,\"controller\")===@undefined),@putByIdDirectPrivate(d,\"stream\",_),@putByIdDirectPrivate(_,\"controller\",d),@resetQueue(@getByIdDirectPrivate(d,\"queue\")),@putByIdDirectPrivate(d,\"started\",-1),@putByIdDirectPrivate(d,\"startAlgorithm\",B),@putByIdDirectPrivate(d,\"strategySizeAlgorithm\",q),@putByIdDirectPrivate(d,\"strategyHWM\",P),@putByIdDirectPrivate(d,\"writeAlgorithm\",f),@putByIdDirectPrivate(d,\"closeAlgorithm\",v),@putByIdDirectPrivate(d,\"abortAlgorithm\",j);const U=@writableStreamDefaultControllerGetBackpressure(d);@writableStreamUpdateBackpressure(_,U),@writableStreamDefaultControllerStart(d)})\n"; // writableStreamDefaultControllerStart const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -364,7 +364,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControl const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerStartCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultControllerStartCodeLength = 647; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerStartCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerStartCode = "(function (i){\"use strict\";if(@getByIdDirectPrivate(i,\"started\")!==-1)return;@putByIdDirectPrivate(i,\"started\",0);const p=@getByIdDirectPrivate(i,\"startAlgorithm\");@putByIdDirectPrivate(i,\"startAlgorithm\",@undefined);const d=@getByIdDirectPrivate(i,\"stream\");return @Promise.@resolve(p.@call()).@then(()=>{const _=@getByIdDirectPrivate(d,\"state\");@assert(_===\"writable\"||_===\"erroring\"),@putByIdDirectPrivate(i,\"started\",1),@writableStreamDefaultControllerAdvanceQueueIfNeeded(i)},(_)=>{const u=@getByIdDirectPrivate(d,\"state\");@assert(u===\"writable\"||u===\"erroring\"),@putByIdDirectPrivate(i,\"started\",1),@writableStreamDealWithRejection(d,_)})})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultControllerStartCode = "(function (i){\"use strict\";if(@getByIdDirectPrivate(i,\"started\")!==-1)return;@putByIdDirectPrivate(i,\"started\",0);const _=@getByIdDirectPrivate(i,\"startAlgorithm\");@putByIdDirectPrivate(i,\"startAlgorithm\",@undefined);const d=@getByIdDirectPrivate(i,\"stream\");return @Promise.@resolve(_.@call()).@then(()=>{const u=@getByIdDirectPrivate(d,\"state\");@assert(u===\"writable\"||u===\"erroring\"),@putByIdDirectPrivate(i,\"started\",1),@writableStreamDefaultControllerAdvanceQueueIfNeeded(i)},(u)=>{const p=@getByIdDirectPrivate(d,\"state\");@assert(p===\"writable\"||p===\"erroring\"),@putByIdDirectPrivate(i,\"started\",1),@writableStreamDealWithRejection(d,u)})})\n"; // setUpWritableStreamDefaultControllerFromUnderlyingSink const JSC::ConstructAbility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -372,7 +372,7 @@ const JSC::ConstructorKind s_writableStreamInternalsSetUpWritableStreamDefaultCo const JSC::ImplementationVisibility s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeLength = 561; static const JSC::Intrinsic s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCode = "(function (C,O,_,E,F){\"use strict\";const f=new @WritableStreamDefaultController;let q=()=>{},v=()=>{return @Promise.@resolve()},x=()=>{return @Promise.@resolve()},B=()=>{return @Promise.@resolve()};if(\"start\"in _){const p=_.start;q=()=>@promiseInvokeOrNoopMethodNoCatch(O,p,[f])}if(\"write\"in _){const p=_.write;v=(j)=>@promiseInvokeOrNoopMethod(O,p,[j,f])}if(\"close\"in _){const p=_.close;x=()=>@promiseInvokeOrNoopMethod(O,p,[])}if(\"abort\"in _){const p=_.abort;B=(j)=>@promiseInvokeOrNoopMethod(O,p,[j])}@setUpWritableStreamDefaultController(C,f,q,v,x,B,E,F)})\n"; +const char* const s_writableStreamInternalsSetUpWritableStreamDefaultControllerFromUnderlyingSinkCode = "(function (_,p,x,O,B){\"use strict\";const f=new @WritableStreamDefaultController;let C=()=>{},j=()=>{return @Promise.@resolve()},E=()=>{return @Promise.@resolve()},q=()=>{return @Promise.@resolve()};if(\"start\"in x){const F=x.start;C=()=>@promiseInvokeOrNoopMethodNoCatch(p,F,[f])}if(\"write\"in x){const F=x.write;j=(v)=>@promiseInvokeOrNoopMethod(p,F,[v,f])}if(\"close\"in x){const F=x.close;E=()=>@promiseInvokeOrNoopMethod(p,F,[])}if(\"abort\"in x){const F=x.abort;q=(v)=>@promiseInvokeOrNoopMethod(p,F,[v])}@setUpWritableStreamDefaultController(_,f,C,j,E,q,O,B)})\n"; // writableStreamDefaultControllerAdvanceQueueIfNeeded const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerAdvanceQueueIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -412,7 +412,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControl const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeLength = 237; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorCode = "(function (h,b){\"use strict\";const i=@getByIdDirectPrivate(h,\"stream\");@assert(i!==@undefined),@assert(@getByIdDirectPrivate(i,\"state\")===\"writable\"),@writableStreamDefaultControllerClearAlgorithms(h),@writableStreamStartErroring(i,b)})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultControllerErrorCode = "(function (i,b){\"use strict\";const h=@getByIdDirectPrivate(i,\"stream\");@assert(h!==@undefined),@assert(@getByIdDirectPrivate(h,\"state\")===\"writable\"),@writableStreamDefaultControllerClearAlgorithms(i),@writableStreamStartErroring(h,b)})\n"; // writableStreamDefaultControllerErrorIfNeeded const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerErrorIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -460,7 +460,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControl const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeLength = 734; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCode = "(function (d,v){\"use strict\";const i=@getByIdDirectPrivate(d,\"stream\");@writableStreamMarkFirstWriteRequestInFlight(i),@getByIdDirectPrivate(d,\"writeAlgorithm\").@call(@undefined,v).@then(()=>{@writableStreamFinishInFlightWrite(i);const _=@getByIdDirectPrivate(i,\"state\");if(@assert(_===\"writable\"||_===\"erroring\"),@dequeueValue(@getByIdDirectPrivate(d,\"queue\")),!@writableStreamCloseQueuedOrInFlight(i)&&_===\"writable\"){const q=@writableStreamDefaultControllerGetBackpressure(d);@writableStreamUpdateBackpressure(i,q)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(d)},(_)=>{if(@getByIdDirectPrivate(i,\"state\")===\"writable\")@writableStreamDefaultControllerClearAlgorithms(d);@writableStreamFinishInFlightWriteWithError(i,_)})})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultControllerProcessWriteCode = "(function (d,_){\"use strict\";const q=@getByIdDirectPrivate(d,\"stream\");@writableStreamMarkFirstWriteRequestInFlight(q),@getByIdDirectPrivate(d,\"writeAlgorithm\").@call(@undefined,_).@then(()=>{@writableStreamFinishInFlightWrite(q);const M=@getByIdDirectPrivate(q,\"state\");if(@assert(M===\"writable\"||M===\"erroring\"),@dequeueValue(@getByIdDirectPrivate(d,\"queue\")),!@writableStreamCloseQueuedOrInFlight(q)&&M===\"writable\"){const i=@writableStreamDefaultControllerGetBackpressure(d);@writableStreamUpdateBackpressure(q,i)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(d)},(M)=>{if(@getByIdDirectPrivate(q,\"state\")===\"writable\")@writableStreamDefaultControllerClearAlgorithms(d);@writableStreamFinishInFlightWriteWithError(q,M)})})\n"; // writableStreamDefaultControllerWrite const JSC::ConstructAbility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -468,7 +468,7 @@ const JSC::ConstructorKind s_writableStreamInternalsWritableStreamDefaultControl const JSC::ImplementationVisibility s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeLength = 450; static const JSC::Intrinsic s_writableStreamInternalsWritableStreamDefaultControllerWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamInternalsWritableStreamDefaultControllerWriteCode = "(function (d,B,D){\"use strict\";try{@enqueueValueWithSize(@getByIdDirectPrivate(d,\"queue\"),B,D);const y=@getByIdDirectPrivate(d,\"stream\"),I=@getByIdDirectPrivate(y,\"state\");if(!@writableStreamCloseQueuedOrInFlight(y)&&I===\"writable\"){const _=@writableStreamDefaultControllerGetBackpressure(d);@writableStreamUpdateBackpressure(y,_)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(d)}catch(y){@writableStreamDefaultControllerErrorIfNeeded(d,y)}})\n"; +const char* const s_writableStreamInternalsWritableStreamDefaultControllerWriteCode = "(function (y,D,B){\"use strict\";try{@enqueueValueWithSize(@getByIdDirectPrivate(y,\"queue\"),D,B);const I=@getByIdDirectPrivate(y,\"stream\"),d=@getByIdDirectPrivate(I,\"state\");if(!@writableStreamCloseQueuedOrInFlight(I)&&d===\"writable\"){const _=@writableStreamDefaultControllerGetBackpressure(y);@writableStreamUpdateBackpressure(I,_)}@writableStreamDefaultControllerAdvanceQueueIfNeeded(y)}catch(I){@writableStreamDefaultControllerErrorIfNeeded(y,I)}})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -502,7 +502,7 @@ const JSC::ConstructorKind s_transformStreamInternalsCreateTransformStreamCodeCo const JSC::ImplementationVisibility s_transformStreamInternalsCreateTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsCreateTransformStreamCodeLength = 513; static const JSC::Intrinsic s_transformStreamInternalsCreateTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsCreateTransformStreamCode = "(function (D,E,F,_,j,c,q){\"use strict\";if(_===@undefined)_=1;if(j===@undefined)j=()=>1;if(c===@undefined)c=0;if(q===@undefined)q=()=>1;@assert(_>=0),@assert(c>=0);const B={};@putByIdDirectPrivate(B,\"TransformStream\",!0);const v=new @TransformStream(B),x=@newPromiseCapability(@Promise);@initializeTransformStream(v,x.@promise,_,j,c,q);const G=new @TransformStreamDefaultController;return @setUpTransformStreamDefaultController(v,G,E,F),D().@then(()=>{x.@resolve.@call()},(I)=>{x.@reject.@call(@undefined,I)}),v})\n"; +const char* const s_transformStreamInternalsCreateTransformStreamCode = "(function (j,x,_,B,c,D,q){\"use strict\";if(B===@undefined)B=1;if(c===@undefined)c=()=>1;if(D===@undefined)D=0;if(q===@undefined)q=()=>1;@assert(B>=0),@assert(D>=0);const E={};@putByIdDirectPrivate(E,\"TransformStream\",!0);const F=new @TransformStream(E),v=@newPromiseCapability(@Promise);@initializeTransformStream(F,v.@promise,B,c,D,q);const G=new @TransformStreamDefaultController;return @setUpTransformStreamDefaultController(F,G,x,_),j().@then(()=>{v.@resolve.@call()},(I)=>{v.@reject.@call(@undefined,I)}),F})\n"; // initializeTransformStream const JSC::ConstructAbility s_transformStreamInternalsInitializeTransformStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -510,7 +510,7 @@ const JSC::ConstructorKind s_transformStreamInternalsInitializeTransformStreamCo const JSC::ImplementationVisibility s_transformStreamInternalsInitializeTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsInitializeTransformStreamCodeLength = 1015; static const JSC::Intrinsic s_transformStreamInternalsInitializeTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsInitializeTransformStreamCode = "(function (f,x,C,D,E,F){\"use strict\";const q=()=>{return x},G=(B)=>{return @transformStreamDefaultSinkWriteAlgorithm(f,B)},I=(B)=>{return @transformStreamDefaultSinkAbortAlgorithm(f,B)},J=()=>{return @transformStreamDefaultSinkCloseAlgorithm(f)},v=@createWritableStream(q,G,J,I,C,D),K=()=>{return @transformStreamDefaultSourcePullAlgorithm(f)},L=(B)=>{return @transformStreamErrorWritableAndUnblockWrite(f,B),@Promise.@resolve()},T={};@putByIdDirectPrivate(T,\"start\",q),@putByIdDirectPrivate(T,\"pull\",K),@putByIdDirectPrivate(T,\"cancel\",L);const j={};@putByIdDirectPrivate(j,\"size\",F),@putByIdDirectPrivate(j,\"highWaterMark\",E);const N=new @ReadableStream(T,j);@putByIdDirectPrivate(f,\"writable\",v),@putByIdDirectPrivate(f,\"internalWritable\",@getInternalWritableStream(v)),@putByIdDirectPrivate(f,\"readable\",N),@putByIdDirectPrivate(f,\"backpressure\",@undefined),@putByIdDirectPrivate(f,\"backpressureChangePromise\",@undefined),@transformStreamSetBackpressure(f,!0),@putByIdDirectPrivate(f,\"controller\",@undefined)})\n"; +const char* const s_transformStreamInternalsInitializeTransformStreamCode = "(function (v,F,C,D,T,J){\"use strict\";const j=()=>{return F},K=(q)=>{return @transformStreamDefaultSinkWriteAlgorithm(v,q)},L=(q)=>{return @transformStreamDefaultSinkAbortAlgorithm(v,q)},x=()=>{return @transformStreamDefaultSinkCloseAlgorithm(v)},G=@createWritableStream(j,K,x,L,C,D),f=()=>{return @transformStreamDefaultSourcePullAlgorithm(v)},B=(q)=>{return @transformStreamErrorWritableAndUnblockWrite(v,q),@Promise.@resolve()},I={};@putByIdDirectPrivate(I,\"start\",j),@putByIdDirectPrivate(I,\"pull\",f),@putByIdDirectPrivate(I,\"cancel\",B);const E={};@putByIdDirectPrivate(E,\"size\",J),@putByIdDirectPrivate(E,\"highWaterMark\",T);const N=new @ReadableStream(I,E);@putByIdDirectPrivate(v,\"writable\",G),@putByIdDirectPrivate(v,\"internalWritable\",@getInternalWritableStream(G)),@putByIdDirectPrivate(v,\"readable\",N),@putByIdDirectPrivate(v,\"backpressure\",@undefined),@putByIdDirectPrivate(v,\"backpressureChangePromise\",@undefined),@transformStreamSetBackpressure(v,!0),@putByIdDirectPrivate(v,\"controller\",@undefined)})\n"; // transformStreamError const JSC::ConstructAbility s_transformStreamInternalsTransformStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -534,7 +534,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamSetBackpress const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamSetBackpressureCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamSetBackpressureCodeLength = 309; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamSetBackpressureCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamSetBackpressureCode = "(function (_,d){\"use strict\";@assert(@getByIdDirectPrivate(_,\"backpressure\")!==d);const f=@getByIdDirectPrivate(_,\"backpressureChangePromise\");if(f!==@undefined)f.@resolve.@call();@putByIdDirectPrivate(_,\"backpressureChangePromise\",@newPromiseCapability(@Promise)),@putByIdDirectPrivate(_,\"backpressure\",d)})\n"; +const char* const s_transformStreamInternalsTransformStreamSetBackpressureCode = "(function (_,f){\"use strict\";@assert(@getByIdDirectPrivate(_,\"backpressure\")!==f);const d=@getByIdDirectPrivate(_,\"backpressureChangePromise\");if(d!==@undefined)d.@resolve.@call();@putByIdDirectPrivate(_,\"backpressureChangePromise\",@newPromiseCapability(@Promise)),@putByIdDirectPrivate(_,\"backpressure\",f)})\n"; // setUpTransformStreamDefaultController const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -542,7 +542,7 @@ const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefault const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeLength = 294; static const JSC::Intrinsic s_transformStreamInternalsSetUpTransformStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerCode = "(function (d,P,_,b){\"use strict\";@assert(@isTransformStream(d)),@assert(@getByIdDirectPrivate(d,\"controller\")===@undefined),@putByIdDirectPrivate(P,\"stream\",d),@putByIdDirectPrivate(d,\"controller\",P),@putByIdDirectPrivate(P,\"transformAlgorithm\",_),@putByIdDirectPrivate(P,\"flushAlgorithm\",b)})\n"; +const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerCode = "(function (d,_,P,b){\"use strict\";@assert(@isTransformStream(d)),@assert(@getByIdDirectPrivate(d,\"controller\")===@undefined),@putByIdDirectPrivate(_,\"stream\",d),@putByIdDirectPrivate(d,\"controller\",_),@putByIdDirectPrivate(_,\"transformAlgorithm\",P),@putByIdDirectPrivate(_,\"flushAlgorithm\",b)})\n"; // setUpTransformStreamDefaultControllerFromTransformer const JSC::ConstructAbility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -550,7 +550,7 @@ const JSC::ConstructorKind s_transformStreamInternalsSetUpTransformStreamDefault const JSC::ImplementationVisibility s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeLength = 443; static const JSC::Intrinsic s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCode = "(function (q,v,_){\"use strict\";const d=new @TransformStreamDefaultController;let b=(p)=>{try{@transformStreamDefaultControllerEnqueue(d,p)}catch(w){return @Promise.@reject(w)}return @Promise.@resolve()},j=()=>{return @Promise.@resolve()};if(\"transform\"in _)b=(p)=>{return @promiseInvokeOrNoopMethod(v,_.transform,[p,d])};if(\"flush\"in _)j=()=>{return @promiseInvokeOrNoopMethod(v,_.flush,[d])};@setUpTransformStreamDefaultController(q,d,b,j)})\n"; +const char* const s_transformStreamInternalsSetUpTransformStreamDefaultControllerFromTransformerCode = "(function (_,d,p){\"use strict\";const v=new @TransformStreamDefaultController;let b=(q)=>{try{@transformStreamDefaultControllerEnqueue(v,q)}catch(w){return @Promise.@reject(w)}return @Promise.@resolve()},j=()=>{return @Promise.@resolve()};if(\"transform\"in p)b=(q)=>{return @promiseInvokeOrNoopMethod(d,p.transform,[q,v])};if(\"flush\"in p)j=()=>{return @promiseInvokeOrNoopMethod(d,p.flush,[v])};@setUpTransformStreamDefaultController(_,v,b,j)})\n"; // transformStreamDefaultControllerClearAlgorithms const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerClearAlgorithmsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -566,7 +566,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultContr const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeLength = 622; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCode = "(function (g,i){\"use strict\";const _=@getByIdDirectPrivate(g,\"stream\"),W=@getByIdDirectPrivate(_,\"readable\"),S=@getByIdDirectPrivate(W,\"readableStreamController\");if(@assert(S!==@undefined),!@readableStreamDefaultControllerCanCloseOrEnqueue(S))@throwTypeError(\"TransformStream.readable cannot close or enqueue\");try{@readableStreamDefaultControllerEnqueue(S,i)}catch(j){throw @transformStreamErrorWritableAndUnblockWrite(_,j),@getByIdDirectPrivate(W,\"storedError\")}const f=!@readableStreamDefaultControllerShouldCallPull(S);if(f!==@getByIdDirectPrivate(_,\"backpressure\"))@assert(f),@transformStreamSetBackpressure(_,!0)})\n"; +const char* const s_transformStreamInternalsTransformStreamDefaultControllerEnqueueCode = "(function (_,W){\"use strict\";const f=@getByIdDirectPrivate(_,\"stream\"),g=@getByIdDirectPrivate(f,\"readable\"),i=@getByIdDirectPrivate(g,\"readableStreamController\");if(@assert(i!==@undefined),!@readableStreamDefaultControllerCanCloseOrEnqueue(i))@throwTypeError(\"TransformStream.readable cannot close or enqueue\");try{@readableStreamDefaultControllerEnqueue(i,W)}catch(S){throw @transformStreamErrorWritableAndUnblockWrite(f,S),@getByIdDirectPrivate(g,\"storedError\")}const j=!@readableStreamDefaultControllerShouldCallPull(i);if(j!==@getByIdDirectPrivate(f,\"backpressure\"))@assert(j),@transformStreamSetBackpressure(f,!0)})\n"; // transformStreamDefaultControllerError const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -582,7 +582,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultContr const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeLength = 277; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCode = "(function (d,g){\"use strict\";const _=@newPromiseCapability(@Promise);return @getByIdDirectPrivate(d,\"transformAlgorithm\").@call(@undefined,g).@then(()=>{_.@resolve()},(f)=>{@transformStreamError(@getByIdDirectPrivate(d,\"stream\"),f),_.@reject.@call(@undefined,f)}),_.@promise})\n"; +const char* const s_transformStreamInternalsTransformStreamDefaultControllerPerformTransformCode = "(function (_,d){\"use strict\";const j=@newPromiseCapability(@Promise);return @getByIdDirectPrivate(_,\"transformAlgorithm\").@call(@undefined,d).@then(()=>{j.@resolve()},(f)=>{@transformStreamError(@getByIdDirectPrivate(_,\"stream\"),f),j.@reject.@call(@undefined,f)}),j.@promise})\n"; // transformStreamDefaultControllerTerminate const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -590,7 +590,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultContr const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeLength = 367; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultControllerTerminateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultControllerTerminateCode = "(function (f){\"use strict\";const i=@getByIdDirectPrivate(f,\"stream\"),k=@getByIdDirectPrivate(i,\"readable\"),_=@getByIdDirectPrivate(k,\"readableStreamController\");if(@readableStreamDefaultControllerCanCloseOrEnqueue(_))@readableStreamDefaultControllerClose(_);const u=@makeTypeError(\"the stream has been terminated\");@transformStreamErrorWritableAndUnblockWrite(i,u)})\n"; +const char* const s_transformStreamInternalsTransformStreamDefaultControllerTerminateCode = "(function (i){\"use strict\";const _=@getByIdDirectPrivate(i,\"stream\"),f=@getByIdDirectPrivate(_,\"readable\"),k=@getByIdDirectPrivate(f,\"readableStreamController\");if(@readableStreamDefaultControllerCanCloseOrEnqueue(k))@readableStreamDefaultControllerClose(k);const u=@makeTypeError(\"the stream has been terminated\");@transformStreamErrorWritableAndUnblockWrite(_,u)})\n"; // transformStreamDefaultSinkWriteAlgorithm const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -598,7 +598,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkW const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeLength = 764; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCode = "(function (d,j){\"use strict\";const f=@getByIdDirectPrivate(d,\"internalWritable\");@assert(@getByIdDirectPrivate(f,\"state\")===\"writable\");const q=@getByIdDirectPrivate(d,\"controller\");if(@getByIdDirectPrivate(d,\"backpressure\")){const _=@newPromiseCapability(@Promise),x=@getByIdDirectPrivate(d,\"backpressureChangePromise\");return @assert(x!==@undefined),x.@promise.@then(()=>{const v=@getByIdDirectPrivate(f,\"state\");if(v===\"erroring\"){_.@reject.@call(@undefined,@getByIdDirectPrivate(f,\"storedError\"));return}@assert(v===\"writable\"),@transformStreamDefaultControllerPerformTransform(q,j).@then(()=>{_.@resolve()},(z)=>{_.@reject.@call(@undefined,z)})},(v)=>{_.@reject.@call(@undefined,v)}),_.@promise}return @transformStreamDefaultControllerPerformTransform(q,j)})\n"; +const char* const s_transformStreamInternalsTransformStreamDefaultSinkWriteAlgorithmCode = "(function (_,d){\"use strict\";const v=@getByIdDirectPrivate(_,\"internalWritable\");@assert(@getByIdDirectPrivate(v,\"state\")===\"writable\");const f=@getByIdDirectPrivate(_,\"controller\");if(@getByIdDirectPrivate(_,\"backpressure\")){const j=@newPromiseCapability(@Promise),q=@getByIdDirectPrivate(_,\"backpressureChangePromise\");return @assert(q!==@undefined),q.@promise.@then(()=>{const x=@getByIdDirectPrivate(v,\"state\");if(x===\"erroring\"){j.@reject.@call(@undefined,@getByIdDirectPrivate(v,\"storedError\"));return}@assert(x===\"writable\"),@transformStreamDefaultControllerPerformTransform(f,d).@then(()=>{j.@resolve()},(z)=>{j.@reject.@call(@undefined,z)})},(x)=>{j.@reject.@call(@undefined,x)}),j.@promise}return @transformStreamDefaultControllerPerformTransform(f,d)})\n"; // transformStreamDefaultSinkAbortAlgorithm const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSinkAbortAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -614,7 +614,7 @@ const JSC::ConstructorKind s_transformStreamInternalsTransformStreamDefaultSinkC const JSC::ImplementationVisibility s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeLength = 789; static const JSC::Intrinsic s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCode = "(function (f){\"use strict\";const _=@getByIdDirectPrivate(f,\"readable\"),q=@getByIdDirectPrivate(f,\"controller\"),j=@getByIdDirectPrivate(_,\"readableStreamController\"),k=@getByIdDirectPrivate(q,\"flushAlgorithm\");@assert(k!==@undefined);const u=@getByIdDirectPrivate(q,\"flushAlgorithm\").@call();@transformStreamDefaultControllerClearAlgorithms(q);const I=@newPromiseCapability(@Promise);return u.@then(()=>{if(@getByIdDirectPrivate(_,\"state\")===@streamErrored){I.@reject.@call(@undefined,@getByIdDirectPrivate(_,\"storedError\"));return}if(@readableStreamDefaultControllerCanCloseOrEnqueue(j))@readableStreamDefaultControllerClose(j);I.@resolve()},(v)=>{@transformStreamError(@getByIdDirectPrivate(q,\"stream\"),v),I.@reject.@call(@undefined,@getByIdDirectPrivate(_,\"storedError\"))}),I.@promise})\n"; +const char* const s_transformStreamInternalsTransformStreamDefaultSinkCloseAlgorithmCode = "(function (_){\"use strict\";const q=@getByIdDirectPrivate(_,\"readable\"),f=@getByIdDirectPrivate(_,\"controller\"),j=@getByIdDirectPrivate(q,\"readableStreamController\"),k=@getByIdDirectPrivate(f,\"flushAlgorithm\");@assert(k!==@undefined);const u=@getByIdDirectPrivate(f,\"flushAlgorithm\").@call();@transformStreamDefaultControllerClearAlgorithms(f);const I=@newPromiseCapability(@Promise);return u.@then(()=>{if(@getByIdDirectPrivate(q,\"state\")===@streamErrored){I.@reject.@call(@undefined,@getByIdDirectPrivate(q,\"storedError\"));return}if(@readableStreamDefaultControllerCanCloseOrEnqueue(j))@readableStreamDefaultControllerClose(j);I.@resolve()},(v)=>{@transformStreamError(@getByIdDirectPrivate(f,\"stream\"),v),I.@reject.@call(@undefined,@getByIdDirectPrivate(q,\"storedError\"))}),I.@promise})\n"; // transformStreamDefaultSourcePullAlgorithm const JSC::ConstructAbility s_transformStreamInternalsTransformStreamDefaultSourcePullAlgorithmCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -646,9 +646,9 @@ const char* const s_processObjectInternalsBindingCode = "(function (u){\"use str const JSC::ConstructAbility s_processObjectInternalsGetStdioWriteStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_processObjectInternalsGetStdioWriteStreamCodeConstructorKind = JSC::ConstructorKind::None; const JSC::ImplementationVisibility s_processObjectInternalsGetStdioWriteStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_processObjectInternalsGetStdioWriteStreamCodeLength = 4331; +const int s_processObjectInternalsGetStdioWriteStreamCodeLength = 4505; static const JSC::Intrinsic s_processObjectInternalsGetStdioWriteStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_processObjectInternalsGetStdioWriteStreamCode = "(function (Z){\"use strict\";var L=(M)=>{var j=@requireMap.get(M);if(j)return j.exports;return @internalRequire(M)},D={path:\"node:process\",require:L};function Y(M){var{Duplex:j,eos:z,destroy:B}=L(\"node:stream\"),J=class O extends j{#z;#$;#M=!0;#N=!0;#J;#B;#j;#G;#H;#K;get isTTY(){return this.#K\?\?=L(\"node:tty\").isatty(M)}get fd(){return M}constructor(G){super({readable:!0,writable:!0});this.#J=`/dev/fd/${G}`}#L(G){const H=this.#B;if(this.#B=null,H)H(G);else if(G)this.destroy(G);else if(!this.#M&&!this.#N)this.destroy()}_destroy(G,H){if(!G&&this.#B!==null){var N=class X extends Error{code;name;constructor(Q=\"The operation was aborted\",K=void 0){if(K!==void 0&&typeof K!==\"object\")throw new Error(`Invalid AbortError options:\\n\\n${JSON.stringify(K,null,2)}`);super(Q,K);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}};G=new N}if(this.#j=null,this.#G=null,this.#B===null)H(G);else{if(this.#B=H,this.#z)B(this.#z,G);if(this.#$)B(this.#$,G)}}_write(G,H,N){if(!this.#z){var{createWriteStream:X}=L(\"node:fs\"),Q=this.#z=X(this.#J);Q.on(\"finish\",()=>{if(this.#G){const K=this.#G;this.#G=null,K()}}),Q.on(\"drain\",()=>{if(this.#j){const K=this.#j;this.#j=null,K()}}),z(Q,(K)=>{if(this.#N=!1,K)B(Q,K);this.#L(K)})}if(Q.write(G,H))N();else this.#j=N}_final(G){this.#z&&this.#z.end(),this.#G=G}#O(){var{createReadStream:G}=L(\"node:fs\"),H=this.#$=G(this.#J);return H.on(\"readable\",()=>{if(this.#H){const N=this.#H;this.#H=null,N()}else this.read()}),H.on(\"end\",()=>{this.push(null)}),z(H,(N)=>{if(this.#M=!1,N)B(H,N);this.#L(N)}),H}_read(){var G=this.#$;if(!G)G=this.#O();while(!0){const H=G.read();if(H===null||!this.push(H))return}}};return new J(M)}var{EventEmitter:P}=L(\"node:events\");function V(M){if(!M)return!0;var j=M.toLowerCase();return j===\"utf8\"||j===\"utf-8\"||j===\"buffer\"||j===\"binary\"}var U,A=class M extends P{#z;#$;#M;#N;bytesWritten=0;setDefaultEncoding(j){if(this.#$||!V(j))return this.#j(),this.#$.setDefaultEncoding(j)}#J(){switch(this.#z){case 1:{var j=@Bun.stdout.writer({highWaterMark:0});return j.unref(),j}case 2:{var j=@Bun.stderr.writer({highWaterMark:0});return j.unref(),j}default:throw new Error(\"Unsupported writer\")}}#B(){return this.#M\?\?=this.#J()}constructor(j){super();this.#z=j}get fd(){return this.#z}get isTTY(){return this.#N\?\?=L(\"node:tty\").isatty(this.#z)}cursorTo(j,z,B){return(U\?\?=L(\"node:readline\")).cursorTo(this,j,z,B)}moveCursor(j,z,B){return(U\?\?=L(\"node:readline\")).moveCursor(this,j,z,B)}clearLine(j,z){return(U\?\?=L(\"node:readline\")).clearLine(this,j,z)}clearScreenDown(j){return(U\?\?=L(\"node:readline\")).clearScreenDown(this,j)}ref(){this.#B().ref()}unref(){this.#B().unref()}on(j,z){if(j===\"close\"||j===\"finish\")return this.#j(),this.#$.on(j,z);if(j===\"drain\")return super.on(\"drain\",z);if(j===\"error\")return super.on(\"error\",z);return super.on(j,z)}get _writableState(){return this.#j(),this.#$._writableState}get _readableState(){return this.#j(),this.#$._readableState}pipe(j){return this.#j(),this.#$.pipe(j)}unpipe(j){return this.#j(),this.#$.unpipe(j)}#j(){if(this.#$)return;this.#$=Y(this.#z);const j=this.eventNames();for(let z of j)this.#$.on(z,(...B)=>{this.emit(z,...B)})}#G(j){var z=this.#B();const B=z.write(j);this.bytesWritten+=B;const J=z.flush(!1);return!!(B||J)}#H(j,z){if(!V(z))return this.#j(),this.#$.write(j,z);return this.#G(j)}#K(j,z){if(z)this.emit(\"error\",z);try{j(z\?z:null)}catch(B){this.emit(\"error\",B)}}#L(j,z,B){if(!V(z))return this.#j(),this.#$.write(j,z,B);var J=this.#B();const O=J.write(j),G=J.flush(!0);if(G\?.then)return G.then(()=>{this.#K(B),this.emit(\"drain\")},(H)=>this.#K(B,H)),!1;return queueMicrotask(()=>{this.#K(B)}),!!(O||G)}write(j,z,B){const J=this._write(j,z,B);if(J)this.emit(\"drain\");return J}get hasColors(){return @Bun.tty[this.#z].hasColors}_write(j,z,B){var J=this.#$;if(J)return J.write(j,z,B);switch(arguments.length){case 0:{var O=new Error(\"Invalid arguments\");throw O.code=\"ERR_INVALID_ARG_TYPE\",O}case 1:return this.#G(j);case 2:if(typeof z===\"function\")return this.#L(j,\"\",z);else if(typeof z===\"string\")return this.#H(j,z);default:{if(typeof z!==\"undefined\"&&typeof z!==\"string\"||typeof B!==\"undefined\"&&typeof B!==\"function\"){var O=new Error(\"Invalid arguments\");throw O.code=\"ERR_INVALID_ARG_TYPE\",O}if(typeof B===\"undefined\")return this.#H(j,z);return this.#L(j,z,B)}}}destroy(){return this}end(){return this}};return new A(Z)})\n"; +const char* const s_processObjectInternalsGetStdioWriteStreamCode = "(function (X,Z){\"use strict\";var N=(J)=>{var L=@requireMap.get(J);if(L)return L.exports;return @internalRequire(J)},I={path:\"node:process\",require:N};function q(J){var{Duplex:L,eos:j,destroy:B}=N(\"node:stream\"),K=class Q extends L{#j;#$;#N=!0;#O=!0;#J;#B;#L;#G;#H;#K;get isTTY(){return this.#K\?\?=N(\"node:tty\").isatty(J)}get fd(){return J}constructor(G){super({readable:!0,writable:!0});this.#J=`/dev/fd/${G}`}#M(G){const H=this.#B;if(this.#B=null,H)H(G);else if(G)this.destroy(G);else if(!this.#N&&!this.#O)this.destroy()}_destroy(G,H){if(!G&&this.#B!==null){var O=class P extends Error{code;name;constructor(V=\"The operation was aborted\",M=void 0){if(M!==void 0&&typeof M!==\"object\")throw new Error(`Invalid AbortError options:\\n\\n${JSON.stringify(M,null,2)}`);super(V,M);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}};G=new O}if(this.#L=null,this.#G=null,this.#B===null)H(G);else{if(this.#B=H,this.#j)B(this.#j,G);if(this.#$)B(this.#$,G)}}_write(G,H,O){if(!this.#j){var{createWriteStream:P}=N(\"node:fs\"),V=this.#j=P(this.#J);V.on(\"finish\",()=>{if(this.#G){const M=this.#G;this.#G=null,M()}}),V.on(\"drain\",()=>{if(this.#L){const M=this.#L;this.#L=null,M()}}),j(V,(M)=>{if(this.#O=!1,M)B(V,M);this.#M(M)})}if(V.write(G,H))O();else this.#L=O}_final(G){this.#j&&this.#j.end(),this.#G=G}#Q(){var{createReadStream:G}=N(\"node:fs\"),H=this.#$=G(this.#J);return H.on(\"readable\",()=>{if(this.#H){const O=this.#H;this.#H=null,O()}else this.read()}),H.on(\"end\",()=>{this.push(null)}),j(H,(O)=>{if(this.#N=!1,O)B(H,O);this.#M(O)}),H}_read(){var G=this.#$;if(!G)G=this.#Q();while(!0){const H=G.read();if(H===null||!this.push(H))return}}};return new K(J)}var{EventEmitter:x}=N(\"node:events\");function Y(J){if(!J)return!0;var L=J.toLowerCase();return L===\"utf8\"||L===\"utf-8\"||L===\"buffer\"||L===\"binary\"}var T,U=[0,0],D=class J extends x{#j;#$;#N;#O;bytesWritten=0;setDefaultEncoding(L){if(this.#$||!Y(L))return this.#L(),this.#$.setDefaultEncoding(L)}#J(){switch(this.#j){case 1:{var L=@Bun.stdout.writer({highWaterMark:0});return L.unref(),L}case 2:{var L=@Bun.stderr.writer({highWaterMark:0});return L.unref(),L}default:throw new Error(\"Unsupported writer\")}}#B(){return this.#N\?\?=this.#J()}constructor(L){super();this.#j=L}get fd(){return this.#j}ref(){this.#B().ref()}unref(){this.#B().unref()}on(L,j){if(L===\"close\"||L===\"finish\")return this.#L(),this.#$.on(L,j);if(L===\"drain\")return super.on(\"drain\",j);if(L===\"error\")return super.on(\"error\",j);return super.on(L,j)}get _writableState(){return this.#L(),this.#$._writableState}get _readableState(){return this.#L(),this.#$._readableState}pipe(L){return this.#L(),this.#$.pipe(L)}unpipe(L){return this.#L(),this.#$.unpipe(L)}#L(){if(this.#$)return;this.#$=q(this.#j);const L=this.eventNames();for(let j of L)this.#$.on(j,(...B)=>{this.emit(j,...B)})}#G(L){var j=this.#B();const B=j.write(L);this.bytesWritten+=B;const K=j.flush(!1);return!!(B||K)}#H(L,j){if(!Y(j))return this.#L(),this.#$.write(L,j);return this.#G(L)}#K(L,j){if(j)this.emit(\"error\",j);try{L(j\?j:null)}catch(B){this.emit(\"error\",B)}}#M(L,j,B){if(!Y(j))return this.#L(),this.#$.write(L,j,B);var K=this.#B();const Q=K.write(L),G=K.flush(!0);if(G\?.then)return G.then(()=>{this.#K(B),this.emit(\"drain\")},(H)=>this.#K(B,H)),!1;return queueMicrotask(()=>{this.#K(B)}),!!(Q||G)}get isTTY(){return!1}write(L,j,B){const K=this._write(L,j,B);if(K)this.emit(\"drain\");return K}get hasColors(){return @Bun.tty[this.#j].hasColors}_write(L,j,B){var K=this.#$;if(K)return K.write(L,j,B);switch(arguments.length){case 0:{var Q=new Error(\"Invalid arguments\");throw Q.code=\"ERR_INVALID_ARG_TYPE\",Q}case 1:return this.#G(L);case 2:if(typeof j===\"function\")return this.#M(L,\"\",j);else if(typeof j===\"string\")return this.#H(L,j);default:{if(typeof j!==\"undefined\"&&typeof j!==\"string\"||typeof B!==\"undefined\"&&typeof B!==\"function\"){var Q=new Error(\"Invalid arguments\");throw Q.code=\"ERR_INVALID_ARG_TYPE\",Q}if(typeof B===\"undefined\")return this.#H(L,j);return this.#M(L,j,B)}}}destroy(){return this}end(){return this}};if(Z(X,U)){var C=class J extends D{get isTTY(){return!0}cursorTo(L,j,B){return(T\?\?=N(\"node:readline\")).cursorTo(this,L,j,B)}moveCursor(L,j,B){return(T\?\?=N(\"node:readline\")).moveCursor(this,L,j,B)}clearLine(L,j){return(T\?\?=N(\"node:readline\")).clearLine(this,L,j)}clearScreenDown(L){return(T\?\?=N(\"node:readline\")).clearScreenDown(this,L)}getWindowSize(){if(Z(X,U)===!0)return[U[0],U[1]]}get columns(){if(Z(X,U)===!0)return U[0]}get rows(){if(Z(X,U)===!0)return U[1]}};return new C(X)}return new D(X)})\n"; // getStdinStream const JSC::ConstructAbility s_processObjectInternalsGetStdinStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -674,7 +674,7 @@ const JSC::ConstructorKind s_transformStreamInitializeTransformStreamCodeConstru const JSC::ImplementationVisibility s_transformStreamInitializeTransformStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamInitializeTransformStreamCodeLength = 1304; static const JSC::Intrinsic s_transformStreamInitializeTransformStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamInitializeTransformStreamCode = "(function (){\"use strict\";let _=arguments[0];if(@isObject(_)&&@getByIdDirectPrivate(_,\"TransformStream\"))return this;let j=arguments[1],q=arguments[2];if(_===@undefined)_=null;if(q===@undefined)q={};if(j===@undefined)j={};let u={};if(_!==null){if(\"start\"in _){if(u.start=_.start,typeof u.start!==\"function\")@throwTypeError(\"transformer.start should be a function\")}if(\"transform\"in _){if(u.transform=_.transform,typeof u.transform!==\"function\")@throwTypeError(\"transformer.transform should be a function\")}if(\"flush\"in _){if(u.flush=_.flush,typeof u.flush!==\"function\")@throwTypeError(\"transformer.flush should be a function\")}if(\"readableType\"in _)@throwRangeError(\"TransformStream transformer has a readableType\");if(\"writableType\"in _)@throwRangeError(\"TransformStream transformer has a writableType\")}const x=@extractHighWaterMark(q,0),B=@extractSizeAlgorithm(q),E=@extractHighWaterMark(j,1),F=@extractSizeAlgorithm(j),v=@newPromiseCapability(@Promise);if(@initializeTransformStream(this,v.@promise,E,F,x,B),@setUpTransformStreamDefaultControllerFromTransformer(this,_,u),(\"start\"in u)){const G=@getByIdDirectPrivate(this,\"controller\");(()=>@promiseInvokeOrNoopMethodNoCatch(_,u.start,[G]))().@then(()=>{v.@resolve.@call()},(I)=>{v.@reject.@call(@undefined,I)})}else v.@resolve.@call();return this})\n"; +const char* const s_transformStreamInitializeTransformStreamCode = "(function (){\"use strict\";let _=arguments[0];if(@isObject(_)&&@getByIdDirectPrivate(_,\"TransformStream\"))return this;let u=arguments[1],j=arguments[2];if(_===@undefined)_=null;if(j===@undefined)j={};if(u===@undefined)u={};let q={};if(_!==null){if(\"start\"in _){if(q.start=_.start,typeof q.start!==\"function\")@throwTypeError(\"transformer.start should be a function\")}if(\"transform\"in _){if(q.transform=_.transform,typeof q.transform!==\"function\")@throwTypeError(\"transformer.transform should be a function\")}if(\"flush\"in _){if(q.flush=_.flush,typeof q.flush!==\"function\")@throwTypeError(\"transformer.flush should be a function\")}if(\"readableType\"in _)@throwRangeError(\"TransformStream transformer has a readableType\");if(\"writableType\"in _)@throwRangeError(\"TransformStream transformer has a writableType\")}const v=@extractHighWaterMark(j,0),x=@extractSizeAlgorithm(j),B=@extractHighWaterMark(u,1),E=@extractSizeAlgorithm(u),F=@newPromiseCapability(@Promise);if(@initializeTransformStream(this,F.@promise,B,E,v,x),@setUpTransformStreamDefaultControllerFromTransformer(this,_,q),(\"start\"in q)){const G=@getByIdDirectPrivate(this,\"controller\");(()=>@promiseInvokeOrNoopMethodNoCatch(_,q.start,[G]))().@then(()=>{F.@resolve.@call()},(J)=>{F.@reject.@call(@undefined,J)})}else F.@resolve.@call();return this})\n"; // readable const JSC::ConstructAbility s_transformStreamReadableCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -716,7 +716,7 @@ const JSC::ConstructorKind s_moduleRequireCodeConstructorKind = JSC::Constructor const JSC::ImplementationVisibility s_moduleRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_moduleRequireCodeLength = 1035; static const JSC::Intrinsic s_moduleRequireCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_moduleRequireCode = "(function (_){\"use strict\";const b=@requireMap.@get(_)||@requireMap.@get(_=@resolveSync(_,this.path,!1));if(b)return @evaluateCommonJSModule(b),b.exports;if(_.endsWith(\".json\")||_.endsWith(\".toml\")||_.endsWith(\".node\"))return @internalRequire(_);let S=@Loader.registry.@get(_);if(S\?.evaluated&&(S.state\?\?0)>=@ModuleReady){const M=S.module,f=@Loader.getModuleNamespaceObject(M),r=f\?.[@commonJSSymbol]===0||f\?.default\?.[@commonJSSymbol]===0\?f.default:f.__esModule\?f:Object.create(f,{__esModule:{value:!0}});return @requireMap.@set(_,@createCommonJSModule(_,r,!0)),r}const L=@createCommonJSModule(_,{},!1);@requireMap.@set(_,L);var h=this.@require(_,L);if(h===-1){try{h=@requireESM(_)}catch(M){throw @requireMap.@delete(_),M}if(S=@Loader.registry.@get(_),S\?.evaluated&&(S.state\?\?0)>=@ModuleReady){const M=@Loader.getModuleNamespaceObject(S.module);return L.exports=M\?.[@commonJSSymbol]===0||M\?.default\?.[@commonJSSymbol]===0\?M.default:M.__esModule\?M:Object.create(M,{__esModule:{value:!0}})}}return @evaluateCommonJSModule(L),L.exports})\n"; +const char* const s_moduleRequireCode = "(function (M){\"use strict\";const S=@requireMap.@get(M)||@requireMap.@get(M=@resolveSync(M,this.path,!1));if(S)return @evaluateCommonJSModule(S),S.exports;if(M.endsWith(\".json\")||M.endsWith(\".toml\")||M.endsWith(\".node\"))return @internalRequire(M);let f=@Loader.registry.@get(M);if(f\?.evaluated&&(f.state\?\?0)>=@ModuleReady){const b=f.module,r=@Loader.getModuleNamespaceObject(b),_=r\?.[@commonJSSymbol]===0||r\?.default\?.[@commonJSSymbol]===0\?r.default:r.__esModule\?r:Object.create(r,{__esModule:{value:!0}});return @requireMap.@set(M,@createCommonJSModule(M,_,!0)),_}const h=@createCommonJSModule(M,{},!1);@requireMap.@set(M,h);var L=this.@require(M,h);if(L===-1){try{L=@requireESM(M)}catch(b){throw @requireMap.@delete(M),b}if(f=@Loader.registry.@get(M),f\?.evaluated&&(f.state\?\?0)>=@ModuleReady){const b=@Loader.getModuleNamespaceObject(f.module);return h.exports=b\?.[@commonJSSymbol]===0||b\?.default\?.[@commonJSSymbol]===0\?b.default:b.__esModule\?b:Object.create(b,{__esModule:{value:!0}})}}return @evaluateCommonJSModule(h),h.exports})\n"; // requireResolve const JSC::ConstructAbility s_moduleRequireResolveCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -830,7 +830,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeReadIntLECodeConstructorKind = JSC const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeReadIntLECodeLength = 528; static const JSC::Intrinsic s_jsBufferPrototypeReadIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadIntLECode = "(function (d,u){\"use strict\";const r=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(u){case 1:return r.getInt8(d);case 2:return r.getInt16(d,!0);case 3:{const _=r.getUint16(d,!0)+r.getUint8(d+2)*65536;return _|(_&8388608)*510}case 4:return r.getInt32(d,!0);case 5:{const _=r.getUint8(d+4);return(_|(_&128)*33554430)*4294967296+r.getUint32(d,!0)}case 6:{const _=r.getUint16(d+4,!0);return(_|(_&32768)*131070)*4294967296+r.getUint32(d,!0)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; +const char* const s_jsBufferPrototypeReadIntLECode = "(function (d,r){\"use strict\";const _=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(r){case 1:return _.getInt8(d);case 2:return _.getInt16(d,!0);case 3:{const u=_.getUint16(d,!0)+_.getUint8(d+2)*65536;return u|(u&8388608)*510}case 4:return _.getInt32(d,!0);case 5:{const u=_.getUint8(d+4);return(u|(u&128)*33554430)*4294967296+_.getUint32(d,!0)}case 6:{const u=_.getUint16(d+4,!0);return(u|(u&32768)*131070)*4294967296+_.getUint32(d,!0)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; // readIntBE const JSC::ConstructAbility s_jsBufferPrototypeReadIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -838,7 +838,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeReadIntBECodeConstructorKind = JSC const JSC::ImplementationVisibility s_jsBufferPrototypeReadIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeReadIntBECodeLength = 528; static const JSC::Intrinsic s_jsBufferPrototypeReadIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadIntBECode = "(function (r,c){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:return d.getInt8(r);case 2:return d.getInt16(r,!1);case 3:{const u=d.getUint16(r+1,!1)+d.getUint8(r)*65536;return u|(u&8388608)*510}case 4:return d.getInt32(r,!1);case 5:{const u=d.getUint8(r);return(u|(u&128)*33554430)*4294967296+d.getUint32(r+1,!1)}case 6:{const u=d.getUint16(r,!1);return(u|(u&32768)*131070)*4294967296+d.getUint32(r+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; +const char* const s_jsBufferPrototypeReadIntBECode = "(function (r,d){\"use strict\";const u=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(d){case 1:return u.getInt8(r);case 2:return u.getInt16(r,!1);case 3:{const c=u.getUint16(r+1,!1)+u.getUint8(r)*65536;return c|(c&8388608)*510}case 4:return u.getInt32(r,!1);case 5:{const c=u.getUint8(r);return(c|(c&128)*33554430)*4294967296+u.getUint32(r+1,!1)}case 6:{const c=u.getUint16(r,!1);return(c|(c&32768)*131070)*4294967296+u.getUint32(r+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; // readUIntLE const JSC::ConstructAbility s_jsBufferPrototypeReadUIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -854,7 +854,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeReadUIntBECodeConstructorKind = JS const JSC::ImplementationVisibility s_jsBufferPrototypeReadUIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeReadUIntBECodeLength = 504; static const JSC::Intrinsic s_jsBufferPrototypeReadUIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeReadUIntBECode = "(function (d,p){\"use strict\";const r=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(p){case 1:return r.getUint8(d);case 2:return r.getUint16(d,!1);case 3:return r.getUint16(d+1,!1)+r.getUint8(d)*65536;case 4:return r.getUint32(d,!1);case 5:{const c=r.getUint8(d);return(c|(c&128)*33554430)*4294967296+r.getUint32(d+1,!1)}case 6:{const c=r.getUint16(d,!1);return(c|(c&32768)*131070)*4294967296+r.getUint32(d+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; +const char* const s_jsBufferPrototypeReadUIntBECode = "(function (r,c){\"use strict\";const p=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:return p.getUint8(r);case 2:return p.getUint16(r,!1);case 3:return p.getUint16(r+1,!1)+p.getUint8(r)*65536;case 4:return p.getUint32(r,!1);case 5:{const d=p.getUint8(r);return(d|(d&128)*33554430)*4294967296+p.getUint32(r+1,!1)}case 6:{const d=p.getUint16(r,!1);return(d|(d&32768)*131070)*4294967296+p.getUint32(r+2,!1)}}@throwRangeError(\"byteLength must be >= 1 and <= 6\")})\n"; // readFloatLE const JSC::ConstructAbility s_jsBufferPrototypeReadFloatLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -926,7 +926,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteInt8CodeConstructorKind = JSC const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteInt8CodeLength = 131; static const JSC::Intrinsic s_jsBufferPrototypeWriteInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt8Code = "(function (r,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt8(d,r),d+1})\n"; +const char* const s_jsBufferPrototypeWriteInt8Code = "(function (d,r){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt8(r,d),r+1})\n"; // writeUInt8 const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt8CodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -934,7 +934,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt8CodeConstructorKind = JS const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt8CodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUInt8CodeLength = 132; static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt8CodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt8Code = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint8(c,d),c+1})\n"; +const char* const s_jsBufferPrototypeWriteUInt8Code = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint8(d,c),d+1})\n"; // writeInt16LE const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -942,7 +942,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16LECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteInt16LECodeLength = 135; static const JSC::Intrinsic s_jsBufferPrototypeWriteInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt16LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(c,d,!0),c+2})\n"; +const char* const s_jsBufferPrototypeWriteInt16LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(d,c,!0),d+2})\n"; // writeInt16BE const JSC::ConstructAbility s_jsBufferPrototypeWriteInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -950,7 +950,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteInt16BECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteInt16BECodeLength = 135; static const JSC::Intrinsic s_jsBufferPrototypeWriteInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt16BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(c,d,!1),c+2})\n"; +const char* const s_jsBufferPrototypeWriteInt16BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt16(d,c,!1),d+2})\n"; // writeUInt16LE const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -958,7 +958,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16LECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUInt16LECodeLength = 136; static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt16LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt16LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(c,d,!0),c+2})\n"; +const char* const s_jsBufferPrototypeWriteUInt16LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(d,c,!0),d+2})\n"; // writeUInt16BE const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt16BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -966,7 +966,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt16BECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt16BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUInt16BECodeLength = 136; static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt16BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt16BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(c,d,!1),c+2})\n"; +const char* const s_jsBufferPrototypeWriteUInt16BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint16(d,c,!1),d+2})\n"; // writeInt32LE const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -974,7 +974,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32LECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteInt32LECodeLength = 135; static const JSC::Intrinsic s_jsBufferPrototypeWriteInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt32LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(c,d,!0),c+4})\n"; +const char* const s_jsBufferPrototypeWriteInt32LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(d,c,!0),d+4})\n"; // writeInt32BE const JSC::ConstructAbility s_jsBufferPrototypeWriteInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -982,7 +982,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteInt32BECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteInt32BECodeLength = 135; static const JSC::Intrinsic s_jsBufferPrototypeWriteInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteInt32BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(c,d,!1),c+4})\n"; +const char* const s_jsBufferPrototypeWriteInt32BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setInt32(d,c,!1),d+4})\n"; // writeUInt32LE const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -990,7 +990,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32LECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUInt32LECodeLength = 136; static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt32LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt32LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(c,d,!0),c+4})\n"; +const char* const s_jsBufferPrototypeWriteUInt32LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(d,c,!0),d+4})\n"; // writeUInt32BE const JSC::ConstructAbility s_jsBufferPrototypeWriteUInt32BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -998,7 +998,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUInt32BECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUInt32BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUInt32BECodeLength = 136; static const JSC::Intrinsic s_jsBufferPrototypeWriteUInt32BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUInt32BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(c,d,!1),c+4})\n"; +const char* const s_jsBufferPrototypeWriteUInt32BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setUint32(d,c,!1),d+4})\n"; // writeIntLE const JSC::ConstructAbility s_jsBufferPrototypeWriteIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1006,7 +1006,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteIntLECodeConstructorKind = JS const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteIntLECodeLength = 573; static const JSC::Intrinsic s_jsBufferPrototypeWriteIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteIntLECode = "(function (r,d,j){\"use strict\";const c=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(j){case 1:{c.setInt8(d,r);break}case 2:{c.setInt16(d,r,!0);break}case 3:{c.setUint16(d,r&65535,!0),c.setInt8(d+2,Math.floor(r*0.0000152587890625));break}case 4:{c.setInt32(d,r,!0);break}case 5:{c.setUint32(d,r|0,!0),c.setInt8(d+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{c.setUint32(d,r|0,!0),c.setInt16(d+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return d+j})\n"; +const char* const s_jsBufferPrototypeWriteIntLECode = "(function (r,c,j){\"use strict\";const d=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(j){case 1:{d.setInt8(c,r);break}case 2:{d.setInt16(c,r,!0);break}case 3:{d.setUint16(c,r&65535,!0),d.setInt8(c+2,Math.floor(r*0.0000152587890625));break}case 4:{d.setInt32(c,r,!0);break}case 5:{d.setUint32(c,r|0,!0),d.setInt8(c+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{d.setUint32(c,r|0,!0),d.setInt16(c+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return c+j})\n"; // writeIntBE const JSC::ConstructAbility s_jsBufferPrototypeWriteIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1014,7 +1014,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteIntBECodeConstructorKind = JS const JSC::ImplementationVisibility s_jsBufferPrototypeWriteIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteIntBECodeLength = 573; static const JSC::Intrinsic s_jsBufferPrototypeWriteIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteIntBECode = "(function (r,d,c){\"use strict\";const E=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:{E.setInt8(d,r);break}case 2:{E.setInt16(d,r,!1);break}case 3:{E.setUint16(d+1,r&65535,!1),E.setInt8(d,Math.floor(r*0.0000152587890625));break}case 4:{E.setInt32(d,r,!1);break}case 5:{E.setUint32(d+1,r|0,!1),E.setInt8(d,Math.floor(r*0.00000000023283064365386964));break}case 6:{E.setUint32(d+2,r|0,!1),E.setInt16(d,Math.floor(r*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return d+c})\n"; +const char* const s_jsBufferPrototypeWriteIntBECode = "(function (d,r,E){\"use strict\";const c=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(E){case 1:{c.setInt8(r,d);break}case 2:{c.setInt16(r,d,!1);break}case 3:{c.setUint16(r+1,d&65535,!1),c.setInt8(r,Math.floor(d*0.0000152587890625));break}case 4:{c.setInt32(r,d,!1);break}case 5:{c.setUint32(r+1,d|0,!1),c.setInt8(r,Math.floor(d*0.00000000023283064365386964));break}case 6:{c.setUint32(r+2,d|0,!1),c.setInt16(r,Math.floor(d*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return r+E})\n"; // writeUIntLE const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1022,7 +1022,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntLECodeConstructorKind = J const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUIntLECodeLength = 579; static const JSC::Intrinsic s_jsBufferPrototypeWriteUIntLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUIntLECode = "(function (r,d,c){\"use strict\";const E=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(c){case 1:{E.setUint8(d,r);break}case 2:{E.setUint16(d,r,!0);break}case 3:{E.setUint16(d,r&65535,!0),E.setUint8(d+2,Math.floor(r*0.0000152587890625));break}case 4:{E.setUint32(d,r,!0);break}case 5:{E.setUint32(d,r|0,!0),E.setUint8(d+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{E.setUint32(d,r|0,!0),E.setUint16(d+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return d+c})\n"; +const char* const s_jsBufferPrototypeWriteUIntLECode = "(function (r,d,E){\"use strict\";const c=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(E){case 1:{c.setUint8(d,r);break}case 2:{c.setUint16(d,r,!0);break}case 3:{c.setUint16(d,r&65535,!0),c.setUint8(d+2,Math.floor(r*0.0000152587890625));break}case 4:{c.setUint32(d,r,!0);break}case 5:{c.setUint32(d,r|0,!0),c.setUint8(d+4,Math.floor(r*0.00000000023283064365386964));break}case 6:{c.setUint32(d,r|0,!0),c.setUint16(d+4,Math.floor(r*0.00000000023283064365386964),!0);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return d+E})\n"; // writeUIntBE const JSC::ConstructAbility s_jsBufferPrototypeWriteUIntBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1030,7 +1030,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteUIntBECodeConstructorKind = J const JSC::ImplementationVisibility s_jsBufferPrototypeWriteUIntBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteUIntBECodeLength = 579; static const JSC::Intrinsic s_jsBufferPrototypeWriteUIntBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteUIntBECode = "(function (r,d,_){\"use strict\";const p=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(_){case 1:{p.setUint8(d,r);break}case 2:{p.setUint16(d,r,!1);break}case 3:{p.setUint16(d+1,r&65535,!1),p.setUint8(d,Math.floor(r*0.0000152587890625));break}case 4:{p.setUint32(d,r,!1);break}case 5:{p.setUint32(d+1,r|0,!1),p.setUint8(d,Math.floor(r*0.00000000023283064365386964));break}case 6:{p.setUint32(d+2,r|0,!1),p.setUint16(d,Math.floor(r*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return d+_})\n"; +const char* const s_jsBufferPrototypeWriteUIntBECode = "(function (d,_,p){\"use strict\";const r=this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength);switch(p){case 1:{r.setUint8(_,d);break}case 2:{r.setUint16(_,d,!1);break}case 3:{r.setUint16(_+1,d&65535,!1),r.setUint8(_,Math.floor(d*0.0000152587890625));break}case 4:{r.setUint32(_,d,!1);break}case 5:{r.setUint32(_+1,d|0,!1),r.setUint8(_,Math.floor(d*0.00000000023283064365386964));break}case 6:{r.setUint32(_+2,d|0,!1),r.setUint16(_,Math.floor(d*0.00000000023283064365386964),!1);break}default:@throwRangeError(\"byteLength must be >= 1 and <= 6\")}return _+p})\n"; // writeFloatLE const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1038,7 +1038,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatLECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteFloatLECodeLength = 137; static const JSC::Intrinsic s_jsBufferPrototypeWriteFloatLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteFloatLECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(c,d,!0),c+4})\n"; +const char* const s_jsBufferPrototypeWriteFloatLECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(d,c,!0),d+4})\n"; // writeFloatBE const JSC::ConstructAbility s_jsBufferPrototypeWriteFloatBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1046,7 +1046,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteFloatBECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteFloatBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteFloatBECodeLength = 137; static const JSC::Intrinsic s_jsBufferPrototypeWriteFloatBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteFloatBECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(c,d,!1),c+4})\n"; +const char* const s_jsBufferPrototypeWriteFloatBECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat32(d,c,!1),d+4})\n"; // writeDoubleLE const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleLECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1054,7 +1054,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleLECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleLECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteDoubleLECodeLength = 137; static const JSC::Intrinsic s_jsBufferPrototypeWriteDoubleLECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteDoubleLECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(c,d,!0),c+8})\n"; +const char* const s_jsBufferPrototypeWriteDoubleLECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(d,c,!0),d+8})\n"; // writeDoubleBE const JSC::ConstructAbility s_jsBufferPrototypeWriteDoubleBECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1062,7 +1062,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteDoubleBECodeConstructorKind = const JSC::ImplementationVisibility s_jsBufferPrototypeWriteDoubleBECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteDoubleBECodeLength = 137; static const JSC::Intrinsic s_jsBufferPrototypeWriteDoubleBECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteDoubleBECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(c,d,!1),c+8})\n"; +const char* const s_jsBufferPrototypeWriteDoubleBECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setFloat64(d,c,!1),d+8})\n"; // writeBigInt64LE const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1070,7 +1070,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64LECodeConstructorKind const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteBigInt64LECodeLength = 138; static const JSC::Intrinsic s_jsBufferPrototypeWriteBigInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigInt64LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(c,d,!0),c+8})\n"; +const char* const s_jsBufferPrototypeWriteBigInt64LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(d,c,!0),d+8})\n"; // writeBigInt64BE const JSC::ConstructAbility s_jsBufferPrototypeWriteBigInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1078,7 +1078,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteBigInt64BECodeConstructorKind const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteBigInt64BECodeLength = 138; static const JSC::Intrinsic s_jsBufferPrototypeWriteBigInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigInt64BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(c,d,!1),c+8})\n"; +const char* const s_jsBufferPrototypeWriteBigInt64BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigInt64(d,c,!1),d+8})\n"; // writeBigUInt64LE const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64LECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1086,7 +1086,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64LECodeConstructorKin const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64LECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteBigUInt64LECodeLength = 139; static const JSC::Intrinsic s_jsBufferPrototypeWriteBigUInt64LECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigUInt64LECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(c,d,!0),c+8})\n"; +const char* const s_jsBufferPrototypeWriteBigUInt64LECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(d,c,!0),d+8})\n"; // writeBigUInt64BE const JSC::ConstructAbility s_jsBufferPrototypeWriteBigUInt64BECodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1094,7 +1094,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeWriteBigUInt64BECodeConstructorKin const JSC::ImplementationVisibility s_jsBufferPrototypeWriteBigUInt64BECodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeWriteBigUInt64BECodeLength = 139; static const JSC::Intrinsic s_jsBufferPrototypeWriteBigUInt64BECodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeWriteBigUInt64BECode = "(function (d,c){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(c,d,!1),c+8})\n"; +const char* const s_jsBufferPrototypeWriteBigUInt64BECode = "(function (c,d){\"use strict\";return(this.@dataView||=new DataView(this.buffer,this.byteOffset,this.byteLength)).setBigUint64(d,c,!1),d+8})\n"; // utf8Write const JSC::ConstructAbility s_jsBufferPrototypeUtf8WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1134,7 +1134,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeAsciiWriteCodeConstructorKind = JS const JSC::ImplementationVisibility s_jsBufferPrototypeAsciiWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeAsciiWriteCodeLength = 66; static const JSC::Intrinsic s_jsBufferPrototypeAsciiWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeAsciiWriteCode = "(function (c,d,i){\"use strict\";return this.write(c,d,i,\"ascii\")})\n"; +const char* const s_jsBufferPrototypeAsciiWriteCode = "(function (c,i,d){\"use strict\";return this.write(c,i,d,\"ascii\")})\n"; // base64Write const JSC::ConstructAbility s_jsBufferPrototypeBase64WriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1158,7 +1158,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeHexWriteCodeConstructorKind = JSC: const JSC::ImplementationVisibility s_jsBufferPrototypeHexWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeHexWriteCodeLength = 64; static const JSC::Intrinsic s_jsBufferPrototypeHexWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeHexWriteCode = "(function (d,r,a){\"use strict\";return this.write(d,r,a,\"hex\")})\n"; +const char* const s_jsBufferPrototypeHexWriteCode = "(function (d,a,r){\"use strict\";return this.write(d,a,r,\"hex\")})\n"; // utf8Slice const JSC::ConstructAbility s_jsBufferPrototypeUtf8SliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1174,7 +1174,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeUcs2SliceCodeConstructorKind = JSC const JSC::ImplementationVisibility s_jsBufferPrototypeUcs2SliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeUcs2SliceCodeLength = 64; static const JSC::Intrinsic s_jsBufferPrototypeUcs2SliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeUcs2SliceCode = "(function (g,u){\"use strict\";return this.toString(\"ucs2\",g,u)})\n"; +const char* const s_jsBufferPrototypeUcs2SliceCode = "(function (u,g){\"use strict\";return this.toString(\"ucs2\",u,g)})\n"; // utf16leSlice const JSC::ConstructAbility s_jsBufferPrototypeUtf16leSliceCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1238,7 +1238,7 @@ const JSC::ConstructorKind s_jsBufferPrototypeSliceCodeConstructorKind = JSC::Co const JSC::ImplementationVisibility s_jsBufferPrototypeSliceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferPrototypeSliceCodeLength = 260; static const JSC::Intrinsic s_jsBufferPrototypeSliceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferPrototypeSliceCode = "(function (w,m){\"use strict\";var{buffer:x,byteOffset:z,byteLength:p}=this;function q(c,k){if(c=@trunc(c),c===0||@isNaN(c))return 0;else if(c<0)return c+=k,c>0\?c:0;else return c<k\?c:k}var i=q(w,p),v=m!==@undefined\?q(m,p):p;return new @Buffer(x,z+i,v>i\?v-i:0)})\n"; +const char* const s_jsBufferPrototypeSliceCode = "(function (c,p){\"use strict\";var{buffer:i,byteOffset:k,byteLength:m}=this;function q(x,z){if(x=@trunc(x),x===0||@isNaN(x))return 0;else if(x<0)return x+=z,x>0\?x:0;else return x<z\?x:z}var v=q(c,m),w=p!==@undefined\?q(p,m):m;return new @Buffer(i,k+v,w>v\?w-v:0)})\n"; // parent const JSC::ConstructAbility s_jsBufferPrototypeParentCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1312,7 +1312,7 @@ const JSC::ConstructorKind s_readableByteStreamControllerByobRequestCodeConstruc const JSC::ImplementationVisibility s_readableByteStreamControllerByobRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamControllerByobRequestCodeLength = 523; static const JSC::Intrinsic s_readableByteStreamControllerByobRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamControllerByobRequestCode = "(function (){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeGetterTypeError(\"ReadableByteStreamController\",\"byobRequest\");var a=@getByIdDirectPrivate(this,\"byobRequest\");if(a===@undefined){var l=@getByIdDirectPrivate(this,\"pendingPullIntos\");const _=l.peek();if(_){const m=new @Uint8Array(_.buffer,_.byteOffset+_.bytesFilled,_.byteLength-_.bytesFilled);@putByIdDirectPrivate(this,\"byobRequest\",new @ReadableStreamBYOBRequest(this,m,@isReadableStream))}}return @getByIdDirectPrivate(this,\"byobRequest\")})\n"; +const char* const s_readableByteStreamControllerByobRequestCode = "(function (){\"use strict\";if(!@isReadableByteStreamController(this))throw @makeGetterTypeError(\"ReadableByteStreamController\",\"byobRequest\");var _=@getByIdDirectPrivate(this,\"byobRequest\");if(_===@undefined){var a=@getByIdDirectPrivate(this,\"pendingPullIntos\");const l=a.peek();if(l){const m=new @Uint8Array(l.buffer,l.byteOffset+l.bytesFilled,l.byteLength-l.bytesFilled);@putByIdDirectPrivate(this,\"byobRequest\",new @ReadableStreamBYOBRequest(this,m,@isReadableStream))}}return @getByIdDirectPrivate(this,\"byobRequest\")})\n"; // desiredSize const JSC::ConstructAbility s_readableByteStreamControllerDesiredSizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1338,7 +1338,7 @@ const JSC::ConstructorKind s_consoleObjectAsyncIteratorCodeConstructorKind = JSC const JSC::ImplementationVisibility s_consoleObjectAsyncIteratorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_consoleObjectAsyncIteratorCodeLength = 577; static const JSC::Intrinsic s_consoleObjectAsyncIteratorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_consoleObjectAsyncIteratorCode = "(function (){\"use strict\";const D=async function*L(){var F=@Bun.stdin.stream().getReader(),G=new globalThis.TextDecoder(\"utf-8\",{fatal:!1}),z,H=@Bun.indexOfLine;try{while(!0){var A,B,w;const m=F.readMany();if(@isPromise(m))({done:A,value:B}=await m);else({done:A,value:B}=m);if(A){if(w)yield G.decode(w);return}var _;for(let J of B){if(_=J,w)_=@Buffer.concat([w,J]),w=null;var j=0,q=H(_,j);while(q!==-1)yield G.decode(_.subarray(j,q)),j=q+1,q=H(_,j);w=_.subarray(j)}}}catch(m){z=m}finally{if(F.releaseLock(),z)throw z}},K=globalThis.Symbol.asyncIterator;return this[K]=D,D()})\n"; +const char* const s_consoleObjectAsyncIteratorCode = "(function (){\"use strict\";const w=async function*A(){var D=@Bun.stdin.stream().getReader(),_=new globalThis.TextDecoder(\"utf-8\",{fatal:!1}),F,j=@Bun.indexOfLine;try{while(!0){var G,H,m;const M=D.readMany();if(@isPromise(M))({done:G,value:H}=await M);else({done:G,value:H}=M);if(G){if(m)yield _.decode(m);return}var J;for(let q of H){if(J=q,m)J=@Buffer.concat([m,q]),m=null;var K=0,L=j(J,K);while(L!==-1)yield _.decode(J.subarray(K,L)),K=L+1,L=j(J,K);m=J.subarray(K)}}}catch(M){F=M}finally{if(D.releaseLock(),F)throw F}},z=globalThis.Symbol.asyncIterator;return this[z]=w,w()})\n"; // write const JSC::ConstructAbility s_consoleObjectWriteCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1346,7 +1346,7 @@ const JSC::ConstructorKind s_consoleObjectWriteCodeConstructorKind = JSC::Constr const JSC::ImplementationVisibility s_consoleObjectWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_consoleObjectWriteCodeLength = 310; static const JSC::Intrinsic s_consoleObjectWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_consoleObjectWriteCode = "(function (_){\"use strict\";var a=@getByIdDirectPrivate(this,\"writer\");if(!a){var b=@toLength(_\?.length\?\?0);a=@Bun.stdout.writer({highWaterMark:b>65536\?b:65536}),@putByIdDirectPrivate(this,\"writer\",a)}var c=a.write(_);const f=@argumentCount();for(var d=1;d<f;d++)c+=a.write(@argument(d));return a.flush(!0),c})\n"; +const char* const s_consoleObjectWriteCode = "(function (a){\"use strict\";var d=@getByIdDirectPrivate(this,\"writer\");if(!d){var _=@toLength(a\?.length\?\?0);d=@Bun.stdout.writer({highWaterMark:_>65536\?_:65536}),@putByIdDirectPrivate(this,\"writer\",d)}var b=d.write(a);const c=@argumentCount();for(var f=1;f<c;f++)b+=d.write(@argument(f));return d.flush(!0),b})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -1364,7 +1364,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericI const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeLength = 585; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamReaderGenericInitializeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamReaderGenericInitializeCode = "(function (_,i){\"use strict\";if(@putByIdDirectPrivate(_,\"ownerReadableStream\",i),@putByIdDirectPrivate(i,\"reader\",_),@getByIdDirectPrivate(i,\"state\")===@streamReadable)@putByIdDirectPrivate(_,\"closedPromiseCapability\",@newPromiseCapability(@Promise));else if(@getByIdDirectPrivate(i,\"state\")===@streamClosed)@putByIdDirectPrivate(_,\"closedPromiseCapability\",{@promise:@Promise.@resolve()});else @assert(@getByIdDirectPrivate(i,\"state\")===@streamErrored),@putByIdDirectPrivate(_,\"closedPromiseCapability\",{@promise:@newHandledRejectedPromise(@getByIdDirectPrivate(i,\"storedError\"))})})\n"; +const char* const s_readableStreamInternalsReadableStreamReaderGenericInitializeCode = "(function (i,_){\"use strict\";if(@putByIdDirectPrivate(i,\"ownerReadableStream\",_),@putByIdDirectPrivate(_,\"reader\",i),@getByIdDirectPrivate(_,\"state\")===@streamReadable)@putByIdDirectPrivate(i,\"closedPromiseCapability\",@newPromiseCapability(@Promise));else if(@getByIdDirectPrivate(_,\"state\")===@streamClosed)@putByIdDirectPrivate(i,\"closedPromiseCapability\",{@promise:@Promise.@resolve()});else @assert(@getByIdDirectPrivate(_,\"state\")===@streamErrored),@putByIdDirectPrivate(i,\"closedPromiseCapability\",{@promise:@newHandledRejectedPromise(@getByIdDirectPrivate(_,\"storedError\"))})})\n"; // privateInitializeReadableStreamDefaultController const JSC::ConstructAbility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1372,7 +1372,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPrivateInitializeReadableStr const JSC::ImplementationVisibility s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeLength = 675; static const JSC::Intrinsic s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCode = "(function (d,P,_,b){\"use strict\";if(!@isReadableStream(d))@throwTypeError(\"ReadableStreamDefaultController needs a ReadableStream\");if(@getByIdDirectPrivate(d,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");return @putByIdDirectPrivate(this,\"controlledReadableStream\",d),@putByIdDirectPrivate(this,\"underlyingSource\",P),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",-1),@putByIdDirectPrivate(this,\"closeRequested\",!1),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@putByIdDirectPrivate(this,\"strategy\",@validateAndNormalizeQueuingStrategy(_,b)),this})\n"; +const char* const s_readableStreamInternalsPrivateInitializeReadableStreamDefaultControllerCode = "(function (d,_,P,b){\"use strict\";if(!@isReadableStream(d))@throwTypeError(\"ReadableStreamDefaultController needs a ReadableStream\");if(@getByIdDirectPrivate(d,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");return @putByIdDirectPrivate(this,\"controlledReadableStream\",d),@putByIdDirectPrivate(this,\"underlyingSource\",_),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",-1),@putByIdDirectPrivate(this,\"closeRequested\",!1),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@putByIdDirectPrivate(this,\"strategy\",@validateAndNormalizeQueuingStrategy(P,b)),this})\n"; // readableStreamDefaultControllerError const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1380,7 +1380,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControl const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeLength = 223; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerErrorCode = "(function (i,d){\"use strict\";const u=@getByIdDirectPrivate(i,\"controlledReadableStream\");if(@getByIdDirectPrivate(u,\"state\")!==@streamReadable)return;@putByIdDirectPrivate(i,\"queue\",@newQueue()),@readableStreamError(u,d)})\n"; +const char* const s_readableStreamInternalsReadableStreamDefaultControllerErrorCode = "(function (i,u){\"use strict\";const d=@getByIdDirectPrivate(i,\"controlledReadableStream\");if(@getByIdDirectPrivate(d,\"state\")!==@streamReadable)return;@putByIdDirectPrivate(i,\"queue\",@newQueue()),@readableStreamError(d,u)})\n"; // readableStreamPipeTo const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1388,7 +1388,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToCodeCons const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamPipeToCodeLength = 427; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamPipeToCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamPipeToCode = "(function (g,c){\"use strict\";@assert(@isReadableStream(g));const h=new @ReadableStreamDefaultReader(g);@getByIdDirectPrivate(h,\"closedPromiseCapability\").@promise.@then(()=>{},(_)=>{c.error(_)});function y(){@readableStreamDefaultReaderRead(h).@then(function(_){if(_.done){c.close();return}try{c.enqueue(_.value)}catch(S){c.error(\"ReadableStream chunk enqueueing in the sink failed\");return}y()},function(_){c.error(_)})}y()})\n"; +const char* const s_readableStreamInternalsReadableStreamPipeToCode = "(function (c,_){\"use strict\";@assert(@isReadableStream(c));const h=new @ReadableStreamDefaultReader(c);@getByIdDirectPrivate(h,\"closedPromiseCapability\").@promise.@then(()=>{},(g)=>{_.error(g)});function y(){@readableStreamDefaultReaderRead(h).@then(function(g){if(g.done){_.close();return}try{_.enqueue(g.value)}catch(S){_.error(\"ReadableStream chunk enqueueing in the sink failed\");return}y()},function(g){_.error(g)})}y()})\n"; // acquireReadableStreamDefaultReader const JSC::ConstructAbility s_readableStreamInternalsAcquireReadableStreamDefaultReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1404,7 +1404,7 @@ const JSC::ConstructorKind s_readableStreamInternalsSetupReadableStreamDefaultCo const JSC::ImplementationVisibility s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeLength = 523; static const JSC::Intrinsic s_readableStreamInternalsSetupReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsSetupReadableStreamDefaultControllerCode = "(function (b,f,j,q,D,v,w){\"use strict\";const _=new @ReadableStreamDefaultController(b,f,j,q,@isReadableStream),x=()=>@promiseInvokeOrNoopMethod(f,v,[_]),B=(C)=>@promiseInvokeOrNoopMethod(f,w,[C]);@putByIdDirectPrivate(_,\"pullAlgorithm\",x),@putByIdDirectPrivate(_,\"cancelAlgorithm\",B),@putByIdDirectPrivate(_,\"pull\",@readableStreamDefaultControllerPull),@putByIdDirectPrivate(_,\"cancel\",@readableStreamDefaultControllerCancel),@putByIdDirectPrivate(b,\"readableStreamController\",_),@readableStreamDefaultControllerStart(_)})\n"; +const char* const s_readableStreamInternalsSetupReadableStreamDefaultControllerCode = "(function (f,b,j,q,v,w,x){\"use strict\";const B=new @ReadableStreamDefaultController(f,b,j,q,@isReadableStream),C=()=>@promiseInvokeOrNoopMethod(b,w,[B]),D=(_)=>@promiseInvokeOrNoopMethod(b,x,[_]);@putByIdDirectPrivate(B,\"pullAlgorithm\",C),@putByIdDirectPrivate(B,\"cancelAlgorithm\",D),@putByIdDirectPrivate(B,\"pull\",@readableStreamDefaultControllerPull),@putByIdDirectPrivate(B,\"cancel\",@readableStreamDefaultControllerCancel),@putByIdDirectPrivate(f,\"readableStreamController\",B),@readableStreamDefaultControllerStart(B)})\n"; // createReadableStreamController const JSC::ConstructAbility s_readableStreamInternalsCreateReadableStreamControllerCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1412,7 +1412,7 @@ const JSC::ConstructorKind s_readableStreamInternalsCreateReadableStreamControll const JSC::ImplementationVisibility s_readableStreamInternalsCreateReadableStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsCreateReadableStreamControllerCodeLength = 671; static const JSC::Intrinsic s_readableStreamInternalsCreateReadableStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsCreateReadableStreamControllerCode = "(function (w,v,f){\"use strict\";const A=v.type,C=@toString(A);if(C===\"bytes\"){if(f.highWaterMark===@undefined)f.highWaterMark=0;if(f.size!==@undefined)@throwRangeError(\"Strategy for a ReadableByteStreamController cannot have a size\");@putByIdDirectPrivate(w,\"readableStreamController\",new @ReadableByteStreamController(w,v,f.highWaterMark,@isReadableStream))}else if(C===\"direct\"){var b=f\?.highWaterMark;@initializeArrayBufferStream.@call(w,v,b)}else if(A===@undefined){if(f.highWaterMark===@undefined)f.highWaterMark=1;@setupReadableStreamDefaultController(w,v,f.size,f.highWaterMark,v.start,v.pull,v.cancel)}else @throwRangeError(\"Invalid type for underlying source\")})\n"; +const char* const s_readableStreamInternalsCreateReadableStreamControllerCode = "(function (v,w,f){\"use strict\";const A=w.type,C=@toString(A);if(C===\"bytes\"){if(f.highWaterMark===@undefined)f.highWaterMark=0;if(f.size!==@undefined)@throwRangeError(\"Strategy for a ReadableByteStreamController cannot have a size\");@putByIdDirectPrivate(v,\"readableStreamController\",new @ReadableByteStreamController(v,w,f.highWaterMark,@isReadableStream))}else if(C===\"direct\"){var b=f\?.highWaterMark;@initializeArrayBufferStream.@call(v,w,b)}else if(A===@undefined){if(f.highWaterMark===@undefined)f.highWaterMark=1;@setupReadableStreamDefaultController(v,w,f.size,f.highWaterMark,w.start,w.pull,w.cancel)}else @throwRangeError(\"Invalid type for underlying source\")})\n"; // readableStreamDefaultControllerStart const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1420,7 +1420,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControl const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerStartCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefaultControllerStartCodeLength = 465; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerStartCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerStartCode = "(function (m){\"use strict\";if(@getByIdDirectPrivate(m,\"started\")!==-1)return;const B=@getByIdDirectPrivate(m,\"underlyingSource\"),a=B.start;@putByIdDirectPrivate(m,\"started\",0),@promiseInvokeOrNoopMethodNoCatch(B,a,[m]).@then(()=>{@putByIdDirectPrivate(m,\"started\",1),@assert(!@getByIdDirectPrivate(m,\"pulling\")),@assert(!@getByIdDirectPrivate(m,\"pullAgain\")),@readableStreamDefaultControllerCallPullIfNeeded(m)},(p)=>{@readableStreamDefaultControllerError(m,p)})})\n"; +const char* const s_readableStreamInternalsReadableStreamDefaultControllerStartCode = "(function (m){\"use strict\";if(@getByIdDirectPrivate(m,\"started\")!==-1)return;const p=@getByIdDirectPrivate(m,\"underlyingSource\"),B=p.start;@putByIdDirectPrivate(m,\"started\",0),@promiseInvokeOrNoopMethodNoCatch(p,B,[m]).@then(()=>{@putByIdDirectPrivate(m,\"started\",1),@assert(!@getByIdDirectPrivate(m,\"pulling\")),@assert(!@getByIdDirectPrivate(m,\"pullAgain\")),@readableStreamDefaultControllerCallPullIfNeeded(m)},(a)=>{@readableStreamDefaultControllerError(m,a)})})\n"; // readableStreamPipeToWritableStream const JSC::ConstructAbility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1428,7 +1428,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamPipeToWritable const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeLength = 1631; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamPipeToWritableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCode = "(function (f,E,z,B,F,D){\"use strict\";if(@assert(@isReadableStream(f)),@assert(@isWritableStream(E)),@assert(!@isReadableStreamLocked(f)),@assert(!@isWritableStreamLocked(E)),@assert(D===@undefined||@isAbortSignal(D)),@getByIdDirectPrivate(f,\"underlyingByteSource\")!==@undefined)return @Promise.@reject(\"Piping to a readable bytestream is not supported\");let _={source:f,destination:E,preventAbort:B,preventCancel:F,preventClose:z,signal:D};if(_.reader=@acquireReadableStreamDefaultReader(f),_.writer=@acquireWritableStreamDefaultWriter(E),@putByIdDirectPrivate(f,\"disturbed\",!0),_.finalized=!1,_.shuttingDown=!1,_.promiseCapability=@newPromiseCapability(@Promise),_.pendingReadPromiseCapability=@newPromiseCapability(@Promise),_.pendingReadPromiseCapability.@resolve.@call(),_.pendingWritePromise=@Promise.@resolve(),D!==@undefined){const G=(T)=>{if(_.finalized)return;@pipeToShutdownWithAction(_,()=>{const H=!_.preventAbort&&@getByIdDirectPrivate(_.destination,\"state\")===\"writable\"\?@writableStreamAbort(_.destination,T):@Promise.@resolve(),I=!_.preventCancel&&@getByIdDirectPrivate(_.source,\"state\")===@streamReadable\?@readableStreamCancel(_.source,T):@Promise.@resolve();let k=@newPromiseCapability(@Promise),q=!0,w=()=>{if(q){q=!1;return}k.@resolve.@call()},x=(J)=>{k.@reject.@call(@undefined,J)};return H.@then(w,x),I.@then(w,x),k.@promise},T)};if(@whenSignalAborted(D,G))return _.promiseCapability.@promise}return @pipeToErrorsMustBePropagatedForward(_),@pipeToErrorsMustBePropagatedBackward(_),@pipeToClosingMustBePropagatedForward(_),@pipeToClosingMustBePropagatedBackward(_),@pipeToLoop(_),_.promiseCapability.@promise})\n"; +const char* const s_readableStreamInternalsReadableStreamPipeToWritableStreamCode = "(function (D,E,T,w,x,z){\"use strict\";if(@assert(@isReadableStream(D)),@assert(@isWritableStream(E)),@assert(!@isReadableStreamLocked(D)),@assert(!@isWritableStreamLocked(E)),@assert(z===@undefined||@isAbortSignal(z)),@getByIdDirectPrivate(D,\"underlyingByteSource\")!==@undefined)return @Promise.@reject(\"Piping to a readable bytestream is not supported\");let B={source:D,destination:E,preventAbort:w,preventCancel:x,preventClose:T,signal:z};if(B.reader=@acquireReadableStreamDefaultReader(D),B.writer=@acquireWritableStreamDefaultWriter(E),@putByIdDirectPrivate(D,\"disturbed\",!0),B.finalized=!1,B.shuttingDown=!1,B.promiseCapability=@newPromiseCapability(@Promise),B.pendingReadPromiseCapability=@newPromiseCapability(@Promise),B.pendingReadPromiseCapability.@resolve.@call(),B.pendingWritePromise=@Promise.@resolve(),z!==@undefined){const F=(G)=>{if(B.finalized)return;@pipeToShutdownWithAction(B,()=>{const _=!B.preventAbort&&@getByIdDirectPrivate(B.destination,\"state\")===\"writable\"\?@writableStreamAbort(B.destination,G):@Promise.@resolve(),k=!B.preventCancel&&@getByIdDirectPrivate(B.source,\"state\")===@streamReadable\?@readableStreamCancel(B.source,G):@Promise.@resolve();let q=@newPromiseCapability(@Promise),I=!0,J=()=>{if(I){I=!1;return}q.@resolve.@call()},K=(L)=>{q.@reject.@call(@undefined,L)};return _.@then(J,K),k.@then(J,K),q.@promise},G)};if(@whenSignalAborted(z,F))return B.promiseCapability.@promise}return @pipeToErrorsMustBePropagatedForward(B),@pipeToErrorsMustBePropagatedBackward(B),@pipeToClosingMustBePropagatedForward(B),@pipeToClosingMustBePropagatedBackward(B),@pipeToLoop(B),B.promiseCapability.@promise})\n"; // pipeToLoop const JSC::ConstructAbility s_readableStreamInternalsPipeToLoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1444,7 +1444,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPipeToDoReadWriteCodeConstru const JSC::ImplementationVisibility s_readableStreamInternalsPipeToDoReadWriteCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPipeToDoReadWriteCodeLength = 731; static const JSC::Intrinsic s_readableStreamInternalsPipeToDoReadWriteCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToDoReadWriteCode = "(function (_){\"use strict\";return @assert(!_.shuttingDown),_.pendingReadPromiseCapability=@newPromiseCapability(@Promise),@getByIdDirectPrivate(_.writer,\"readyPromise\").@promise.@then(()=>{if(_.shuttingDown){_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);return}@readableStreamDefaultReaderRead(_.reader).@then((m)=>{const d=!m.done&&@getByIdDirectPrivate(_.writer,\"stream\")!==@undefined;if(_.pendingReadPromiseCapability.@resolve.@call(@undefined,d),!d)return;_.pendingWritePromise=@writableStreamDefaultWriterWrite(_.writer,m.value)},(m)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)})},(m)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)}),_.pendingReadPromiseCapability.@promise})\n"; +const char* const s_readableStreamInternalsPipeToDoReadWriteCode = "(function (_){\"use strict\";return @assert(!_.shuttingDown),_.pendingReadPromiseCapability=@newPromiseCapability(@Promise),@getByIdDirectPrivate(_.writer,\"readyPromise\").@promise.@then(()=>{if(_.shuttingDown){_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);return}@readableStreamDefaultReaderRead(_.reader).@then((d)=>{const m=!d.done&&@getByIdDirectPrivate(_.writer,\"stream\")!==@undefined;if(_.pendingReadPromiseCapability.@resolve.@call(@undefined,m),!m)return;_.pendingWritePromise=@writableStreamDefaultWriterWrite(_.writer,d.value)},(d)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)})},(d)=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1)}),_.pendingReadPromiseCapability.@promise})\n"; // pipeToErrorsMustBePropagatedForward const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1452,7 +1452,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagated const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeLength = 438; static const JSC::Intrinsic s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCode = "(function (_){\"use strict\";const d=()=>{_.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);const b=@getByIdDirectPrivate(_.source,\"storedError\");if(!_.preventAbort){@pipeToShutdownWithAction(_,()=>@writableStreamAbort(_.destination,b),b);return}@pipeToShutdown(_,b)};if(@getByIdDirectPrivate(_.source,\"state\")===@streamErrored){d();return}@getByIdDirectPrivate(_.reader,\"closedPromiseCapability\").@promise.@then(@undefined,d)})\n"; +const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedForwardCode = "(function (d){\"use strict\";const _=()=>{d.pendingReadPromiseCapability.@resolve.@call(@undefined,!1);const b=@getByIdDirectPrivate(d.source,\"storedError\");if(!d.preventAbort){@pipeToShutdownWithAction(d,()=>@writableStreamAbort(d.destination,b),b);return}@pipeToShutdown(d,b)};if(@getByIdDirectPrivate(d.source,\"state\")===@streamErrored){_();return}@getByIdDirectPrivate(d.reader,\"closedPromiseCapability\").@promise.@then(@undefined,_)})\n"; // pipeToErrorsMustBePropagatedBackward const JSC::ConstructAbility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1460,7 +1460,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPipeToErrorsMustBePropagated const JSC::ImplementationVisibility s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeLength = 369; static const JSC::Intrinsic s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCode = "(function (m){\"use strict\";const y=()=>{const h=@getByIdDirectPrivate(m.destination,\"storedError\");if(!m.preventCancel){@pipeToShutdownWithAction(m,()=>@readableStreamCancel(m.source,h),h);return}@pipeToShutdown(m,h)};if(@getByIdDirectPrivate(m.destination,\"state\")===\"errored\"){y();return}@getByIdDirectPrivate(m.writer,\"closedPromise\").@promise.@then(@undefined,y)})\n"; +const char* const s_readableStreamInternalsPipeToErrorsMustBePropagatedBackwardCode = "(function (m){\"use strict\";const h=()=>{const y=@getByIdDirectPrivate(m.destination,\"storedError\");if(!m.preventCancel){@pipeToShutdownWithAction(m,()=>@readableStreamCancel(m.source,y),y);return}@pipeToShutdown(m,y)};if(@getByIdDirectPrivate(m.destination,\"state\")===\"errored\"){h();return}@getByIdDirectPrivate(m.writer,\"closedPromise\").@promise.@then(@undefined,h)})\n"; // pipeToClosingMustBePropagatedForward const JSC::ConstructAbility s_readableStreamInternalsPipeToClosingMustBePropagatedForwardCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1484,7 +1484,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownWithActionCode const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownWithActionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPipeToShutdownWithActionCodeLength = 458; static const JSC::Intrinsic s_readableStreamInternalsPipeToShutdownWithActionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToShutdownWithActionCode = "(function (_,d){\"use strict\";if(_.shuttingDown)return;_.shuttingDown=!0;const g=arguments.length>2,h=arguments[2],m=()=>{d().@then(()=>{if(g)@pipeToFinalize(_,h);else @pipeToFinalize(_)},(j)=>{@pipeToFinalize(_,j)})};if(@getByIdDirectPrivate(_.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(_.destination)){_.pendingReadPromiseCapability.@promise.@then(()=>{_.pendingWritePromise.@then(m,m)},(b)=>@pipeToFinalize(_,b));return}m()})\n"; +const char* const s_readableStreamInternalsPipeToShutdownWithActionCode = "(function (_,h){\"use strict\";if(_.shuttingDown)return;_.shuttingDown=!0;const b=arguments.length>2,d=arguments[2],m=()=>{h().@then(()=>{if(b)@pipeToFinalize(_,d);else @pipeToFinalize(_)},(j)=>{@pipeToFinalize(_,j)})};if(@getByIdDirectPrivate(_.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(_.destination)){_.pendingReadPromiseCapability.@promise.@then(()=>{_.pendingWritePromise.@then(m,m)},(g)=>@pipeToFinalize(_,g));return}m()})\n"; // pipeToShutdown const JSC::ConstructAbility s_readableStreamInternalsPipeToShutdownCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1492,7 +1492,7 @@ const JSC::ConstructorKind s_readableStreamInternalsPipeToShutdownCodeConstructo const JSC::ImplementationVisibility s_readableStreamInternalsPipeToShutdownCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsPipeToShutdownCodeLength = 411; static const JSC::Intrinsic s_readableStreamInternalsPipeToShutdownCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsPipeToShutdownCode = "(function (_){\"use strict\";if(_.shuttingDown)return;_.shuttingDown=!0;const m=arguments.length>1,u=arguments[1],d=()=>{if(m)@pipeToFinalize(_,u);else @pipeToFinalize(_)};if(@getByIdDirectPrivate(_.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(_.destination)){_.pendingReadPromiseCapability.@promise.@then(()=>{_.pendingWritePromise.@then(d,d)},(I)=>@pipeToFinalize(_,I));return}d()})\n"; +const char* const s_readableStreamInternalsPipeToShutdownCode = "(function (_){\"use strict\";if(_.shuttingDown)return;_.shuttingDown=!0;const d=arguments.length>1,m=arguments[1],u=()=>{if(d)@pipeToFinalize(_,m);else @pipeToFinalize(_)};if(@getByIdDirectPrivate(_.destination,\"state\")===\"writable\"&&!@writableStreamCloseQueuedOrInFlight(_.destination)){_.pendingReadPromiseCapability.@promise.@then(()=>{_.pendingWritePromise.@then(u,u)},(I)=>@pipeToFinalize(_,I));return}u()})\n"; // pipeToFinalize const JSC::ConstructAbility s_readableStreamInternalsPipeToFinalizeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1508,7 +1508,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeCodeConstru const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamTeeCodeLength = 1104; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeCode = "(function (_,q){\"use strict\";@assert(@isReadableStream(_)),@assert(typeof q===\"boolean\");var v=@getByIdDirectPrivate(_,\"start\");if(v)@putByIdDirectPrivate(_,\"start\",@undefined),v();const w=new @ReadableStreamDefaultReader(_),i={closedOrErrored:!1,canceled1:!1,canceled2:!1,reason1:@undefined,reason2:@undefined};i.cancelPromiseCapability=@newPromiseCapability(@Promise);const x=@readableStreamTeePullFunction(i,w,q),f={};@putByIdDirectPrivate(f,\"pull\",x),@putByIdDirectPrivate(f,\"cancel\",@readableStreamTeeBranch1CancelFunction(i,_));const g={};@putByIdDirectPrivate(g,\"pull\",x),@putByIdDirectPrivate(g,\"cancel\",@readableStreamTeeBranch2CancelFunction(i,_));const j=new @ReadableStream(f),k=new @ReadableStream(g);return @getByIdDirectPrivate(w,\"closedPromiseCapability\").@promise.@then(@undefined,function(y){if(i.closedOrErrored)return;if(@readableStreamDefaultControllerError(j.@readableStreamController,y),@readableStreamDefaultControllerError(k.@readableStreamController,y),i.closedOrErrored=!0,!i.canceled1||!i.canceled2)i.cancelPromiseCapability.@resolve.@call()}),i.branch1=j,i.branch2=k,[j,k]})\n"; +const char* const s_readableStreamInternalsReadableStreamTeeCode = "(function (i,q){\"use strict\";@assert(@isReadableStream(i)),@assert(typeof q===\"boolean\");var v=@getByIdDirectPrivate(i,\"start\");if(v)@putByIdDirectPrivate(i,\"start\",@undefined),v();const k=new @ReadableStreamDefaultReader(i),_={closedOrErrored:!1,canceled1:!1,canceled2:!1,reason1:@undefined,reason2:@undefined};_.cancelPromiseCapability=@newPromiseCapability(@Promise);const w=@readableStreamTeePullFunction(_,k,q),f={};@putByIdDirectPrivate(f,\"pull\",w),@putByIdDirectPrivate(f,\"cancel\",@readableStreamTeeBranch1CancelFunction(_,i));const x={};@putByIdDirectPrivate(x,\"pull\",w),@putByIdDirectPrivate(x,\"cancel\",@readableStreamTeeBranch2CancelFunction(_,i));const y=new @ReadableStream(f),g=new @ReadableStream(x);return @getByIdDirectPrivate(k,\"closedPromiseCapability\").@promise.@then(@undefined,function(j){if(_.closedOrErrored)return;if(@readableStreamDefaultControllerError(y.@readableStreamController,j),@readableStreamDefaultControllerError(g.@readableStreamController,j),_.closedOrErrored=!0,!_.canceled1||!_.canceled2)_.cancelPromiseCapability.@resolve.@call()}),_.branch1=y,_.branch2=g,[y,g]})\n"; // readableStreamTeePullFunction const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeePullFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1516,7 +1516,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeePullFunctio const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeePullFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamTeePullFunctionCodeLength = 764; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeePullFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeePullFunctionCode = "(function (i,f,m){\"use strict\";return function(){@Promise.prototype.@then.@call(@readableStreamDefaultReaderRead(f),function(_){if(@assert(@isObject(_)),@assert(typeof _.done===\"boolean\"),_.done&&!i.closedOrErrored){if(!i.canceled1)@readableStreamDefaultControllerClose(i.branch1.@readableStreamController);if(!i.canceled2)@readableStreamDefaultControllerClose(i.branch2.@readableStreamController);if(i.closedOrErrored=!0,!i.canceled1||!i.canceled2)i.cancelPromiseCapability.@resolve.@call()}if(i.closedOrErrored)return;if(!i.canceled1)@readableStreamDefaultControllerEnqueue(i.branch1.@readableStreamController,_.value);if(!i.canceled2)@readableStreamDefaultControllerEnqueue(i.branch2.@readableStreamController,m\?@structuredCloneForStream(_.value):_.value)})}})\n"; +const char* const s_readableStreamInternalsReadableStreamTeePullFunctionCode = "(function (_,m,f){\"use strict\";return function(){@Promise.prototype.@then.@call(@readableStreamDefaultReaderRead(m),function(i){if(@assert(@isObject(i)),@assert(typeof i.done===\"boolean\"),i.done&&!_.closedOrErrored){if(!_.canceled1)@readableStreamDefaultControllerClose(_.branch1.@readableStreamController);if(!_.canceled2)@readableStreamDefaultControllerClose(_.branch2.@readableStreamController);if(_.closedOrErrored=!0,!_.canceled1||!_.canceled2)_.cancelPromiseCapability.@resolve.@call()}if(_.closedOrErrored)return;if(!_.canceled1)@readableStreamDefaultControllerEnqueue(_.branch1.@readableStreamController,i.value);if(!_.canceled2)@readableStreamDefaultControllerEnqueue(_.branch2.@readableStreamController,f\?@structuredCloneForStream(i.value):i.value)})}})\n"; // readableStreamTeeBranch1CancelFunction const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1524,7 +1524,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch1Canc const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeLength = 258; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCode = "(function (c,d){\"use strict\";return function(i){if(c.canceled1=!0,c.reason1=i,c.canceled2)@readableStreamCancel(d,[c.reason1,c.reason2]).@then(c.cancelPromiseCapability.@resolve,c.cancelPromiseCapability.@reject);return c.cancelPromiseCapability.@promise}})\n"; +const char* const s_readableStreamInternalsReadableStreamTeeBranch1CancelFunctionCode = "(function (c,i){\"use strict\";return function(d){if(c.canceled1=!0,c.reason1=d,c.canceled2)@readableStreamCancel(i,[c.reason1,c.reason2]).@then(c.cancelPromiseCapability.@resolve,c.cancelPromiseCapability.@reject);return c.cancelPromiseCapability.@promise}})\n"; // readableStreamTeeBranch2CancelFunction const JSC::ConstructAbility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1532,7 +1532,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamTeeBranch2Canc const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeLength = 258; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCode = "(function (c,d){\"use strict\";return function(i){if(c.canceled2=!0,c.reason2=i,c.canceled1)@readableStreamCancel(d,[c.reason1,c.reason2]).@then(c.cancelPromiseCapability.@resolve,c.cancelPromiseCapability.@reject);return c.cancelPromiseCapability.@promise}})\n"; +const char* const s_readableStreamInternalsReadableStreamTeeBranch2CancelFunctionCode = "(function (c,i){\"use strict\";return function(d){if(c.canceled2=!0,c.reason2=d,c.canceled1)@readableStreamCancel(i,[c.reason1,c.reason2]).@then(c.cancelPromiseCapability.@resolve,c.cancelPromiseCapability.@reject);return c.cancelPromiseCapability.@promise}})\n"; // isReadableStream const JSC::ConstructAbility s_readableStreamInternalsIsReadableStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1564,7 +1564,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadDirectStreamCodeConstruc const JSC::ImplementationVisibility s_readableStreamInternalsReadDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadDirectStreamCodeLength = 900; static const JSC::Intrinsic s_readableStreamInternalsReadDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadDirectStreamCode = "(function (j,q,_){\"use strict\";@putByIdDirectPrivate(j,\"underlyingSource\",@undefined),@putByIdDirectPrivate(j,\"start\",@undefined);function w(f,v){if(v&&_\?.cancel){try{var A=_.cancel(v);@markPromiseAsHandled(A)}catch(B){}_=@undefined}if(f){if(@putByIdDirectPrivate(f,\"readableStreamController\",@undefined),@putByIdDirectPrivate(f,\"reader\",@undefined),v)@putByIdDirectPrivate(f,\"state\",@streamErrored),@putByIdDirectPrivate(f,\"storedError\",v);else @putByIdDirectPrivate(f,\"state\",@streamClosed);f=@undefined}}if(!_.pull){w();return}if(!@isCallable(_.pull)){w(),@throwTypeError(\"pull is not a function\");return}@putByIdDirectPrivate(j,\"readableStreamController\",q);const x=@getByIdDirectPrivate(j,\"highWaterMark\");q.start({highWaterMark:!x||x<64\?64:x}),@startDirectStream.@call(q,j,_.pull,w),@putByIdDirectPrivate(j,\"reader\",{});var z=_.pull(q);if(q=@undefined,z&&@isPromise(z))return z.@then(()=>{})})\n"; +const char* const s_readableStreamInternalsReadDirectStreamCode = "(function (_,f,j){\"use strict\";@putByIdDirectPrivate(_,\"underlyingSource\",@undefined),@putByIdDirectPrivate(_,\"start\",@undefined);function q(x,z){if(z&&j\?.cancel){try{var A=j.cancel(z);@markPromiseAsHandled(A)}catch(B){}j=@undefined}if(x){if(@putByIdDirectPrivate(x,\"readableStreamController\",@undefined),@putByIdDirectPrivate(x,\"reader\",@undefined),z)@putByIdDirectPrivate(x,\"state\",@streamErrored),@putByIdDirectPrivate(x,\"storedError\",z);else @putByIdDirectPrivate(x,\"state\",@streamClosed);x=@undefined}}if(!j.pull){q();return}if(!@isCallable(j.pull)){q(),@throwTypeError(\"pull is not a function\");return}@putByIdDirectPrivate(_,\"readableStreamController\",f);const v=@getByIdDirectPrivate(_,\"highWaterMark\");f.start({highWaterMark:!v||v<64\?64:v}),@startDirectStream.@call(f,_,j.pull,q),@putByIdDirectPrivate(_,\"reader\",{});var w=j.pull(f);if(f=@undefined,w&&@isPromise(w))return w.@then(()=>{})})\n"; // assignToStream const JSC::ConstructAbility s_readableStreamInternalsAssignToStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1580,7 +1580,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadStreamIntoSinkCodeConstr const JSC::ImplementationVisibility s_readableStreamInternalsReadStreamIntoSinkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadStreamIntoSinkCodeLength = 1395; static const JSC::Intrinsic s_readableStreamInternalsReadStreamIntoSinkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadStreamIntoSinkCode = "(async function (_,c,E){\"use strict\";var x=!1,B=!1;try{var I=_.getReader(),f=I.readMany();if(f&&@isPromise(f))f=await f;if(f.done)return x=!0,c.end();var K=f.value.length;const q=@getByIdDirectPrivate(_,\"highWaterMark\");if(E)@startDirectStream.@call(c,_,@undefined,()=>!B&&@markPromiseAsHandled(_.cancel()));c.start({highWaterMark:q||0});for(var D=0,F=f.value,G=f.value.length;D<G;D++)c.write(F[D]);var A=@getByIdDirectPrivate(_,\"state\");if(A===@streamClosed)return x=!0,c.end();while(!0){var{value:H,done:J}=await I.read();if(J)return x=!0,c.end();c.write(H)}}catch(q){B=!0;try{I=@undefined;const z=_.cancel(q);@markPromiseAsHandled(z)}catch(z){}if(c&&!x){x=!0;try{c.close(q)}catch(z){throw new globalThis.AggregateError([q,z])}}throw q}finally{if(I){try{I.releaseLock()}catch(z){}I=@undefined}c=@undefined;var A=@getByIdDirectPrivate(_,\"state\");if(_){var P=@getByIdDirectPrivate(_,\"readableStreamController\");if(P){if(@getByIdDirectPrivate(P,\"underlyingSource\"))@putByIdDirectPrivate(P,\"underlyingSource\",@undefined);if(@getByIdDirectPrivate(P,\"controlledReadableStream\"))@putByIdDirectPrivate(P,\"controlledReadableStream\",@undefined);if(@putByIdDirectPrivate(_,\"readableStreamController\",null),@getByIdDirectPrivate(_,\"underlyingSource\"))@putByIdDirectPrivate(_,\"underlyingSource\",@undefined);P=@undefined}if(!B&&A!==@streamClosed&&A!==@streamErrored)@readableStreamClose(_);_=@undefined}}})\n"; +const char* const s_readableStreamInternalsReadStreamIntoSinkCode = "(async function (_,D,c){\"use strict\";var f=!1,x=!1;try{var B=_.getReader(),E=B.readMany();if(E&&@isPromise(E))E=await E;if(E.done)return f=!0,D.end();var F=E.value.length;const q=@getByIdDirectPrivate(_,\"highWaterMark\");if(c)@startDirectStream.@call(D,_,@undefined,()=>!x&&@markPromiseAsHandled(_.cancel()));D.start({highWaterMark:q||0});for(var G=0,I=E.value,H=E.value.length;G<H;G++)D.write(I[G]);var J=@getByIdDirectPrivate(_,\"state\");if(J===@streamClosed)return f=!0,D.end();while(!0){var{value:P,done:z}=await B.read();if(z)return f=!0,D.end();D.write(P)}}catch(q){x=!0;try{B=@undefined;const K=_.cancel(q);@markPromiseAsHandled(K)}catch(K){}if(D&&!f){f=!0;try{D.close(q)}catch(K){throw new globalThis.AggregateError([q,K])}}throw q}finally{if(B){try{B.releaseLock()}catch(K){}B=@undefined}D=@undefined;var J=@getByIdDirectPrivate(_,\"state\");if(_){var A=@getByIdDirectPrivate(_,\"readableStreamController\");if(A){if(@getByIdDirectPrivate(A,\"underlyingSource\"))@putByIdDirectPrivate(A,\"underlyingSource\",@undefined);if(@getByIdDirectPrivate(A,\"controlledReadableStream\"))@putByIdDirectPrivate(A,\"controlledReadableStream\",@undefined);if(@putByIdDirectPrivate(_,\"readableStreamController\",null),@getByIdDirectPrivate(_,\"underlyingSource\"))@putByIdDirectPrivate(_,\"underlyingSource\",@undefined);A=@undefined}if(!x&&J!==@streamClosed&&J!==@streamErrored)@readableStreamClose(_);_=@undefined}}})\n"; // handleDirectStreamError const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1588,7 +1588,7 @@ const JSC::ConstructorKind s_readableStreamInternalsHandleDirectStreamErrorCodeC const JSC::ImplementationVisibility s_readableStreamInternalsHandleDirectStreamErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsHandleDirectStreamErrorCodeLength = 496; static const JSC::Intrinsic s_readableStreamInternalsHandleDirectStreamErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsHandleDirectStreamErrorCode = "(function (u){\"use strict\";var i=this,_=i.@sink;if(_){@putByIdDirectPrivate(i,\"sink\",@undefined);try{_.close(u)}catch(a){}}if(this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed,typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,u)}catch(a){}try{var h=i._pendingRead;if(h)i._pendingRead=@undefined,@rejectPromise(h,u)}catch(a){}var R=i.@controlledReadableStream;if(R)@readableStreamError(R,u)})\n"; +const char* const s_readableStreamInternalsHandleDirectStreamErrorCode = "(function (R){\"use strict\";var a=this,h=a.@sink;if(h){@putByIdDirectPrivate(a,\"sink\",@undefined);try{h.close(R)}catch(i){}}if(this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed,typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,R)}catch(i){}try{var _=a._pendingRead;if(_)a._pendingRead=@undefined,@rejectPromise(_,R)}catch(i){}var u=a.@controlledReadableStream;if(u)@readableStreamError(u,R)})\n"; // handleDirectStreamErrorReject const JSC::ConstructAbility s_readableStreamInternalsHandleDirectStreamErrorRejectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1604,7 +1604,7 @@ const JSC::ConstructorKind s_readableStreamInternalsOnPullDirectStreamCodeConstr const JSC::ImplementationVisibility s_readableStreamInternalsOnPullDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsOnPullDirectStreamCodeLength = 785; static const JSC::Intrinsic s_readableStreamInternalsOnPullDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnPullDirectStreamCode = "(function (g){\"use strict\";var i=g.@controlledReadableStream;if(!i||@getByIdDirectPrivate(i,\"state\")!==@streamReadable)return;if(g._deferClose===-1)return;g._deferClose=-1,g._deferFlush=-1;var _,b;try{var y=g.@underlyingSource.pull(g);if(y&&@isPromise(y)){if(g._handleError===@undefined)g._handleError=@handleDirectStreamErrorReject.bind(g);@Promise.prototype.catch.@call(y,g._handleError)}}catch(k){return @handleDirectStreamErrorReject.@call(g,k)}finally{_=g._deferClose,b=g._deferFlush,g._deferFlush=g._deferClose=0}var h;if(g._pendingRead===@undefined)g._pendingRead=h=@newPromise();else h=@readableStreamAddReadRequest(i);if(_===1){var j=g._deferCloseReason;return g._deferCloseReason=@undefined,@onCloseDirectStream.@call(g,j),h}if(b===1)@onFlushDirectStream.@call(g);return h})\n"; +const char* const s_readableStreamInternalsOnPullDirectStreamCode = "(function (i){\"use strict\";var y=i.@controlledReadableStream;if(!y||@getByIdDirectPrivate(y,\"state\")!==@streamReadable)return;if(i._deferClose===-1)return;i._deferClose=-1,i._deferFlush=-1;var _,g;try{var b=i.@underlyingSource.pull(i);if(b&&@isPromise(b)){if(i._handleError===@undefined)i._handleError=@handleDirectStreamErrorReject.bind(i);@Promise.prototype.catch.@call(b,i._handleError)}}catch(h){return @handleDirectStreamErrorReject.@call(i,h)}finally{_=i._deferClose,g=i._deferFlush,i._deferFlush=i._deferClose=0}var j;if(i._pendingRead===@undefined)i._pendingRead=j=@newPromise();else j=@readableStreamAddReadRequest(y);if(_===1){var k=i._deferCloseReason;return i._deferCloseReason=@undefined,@onCloseDirectStream.@call(i,k),j}if(g===1)@onFlushDirectStream.@call(i);return j})\n"; // noopDoneFunction const JSC::ConstructAbility s_readableStreamInternalsNoopDoneFunctionCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1628,7 +1628,7 @@ const JSC::ConstructorKind s_readableStreamInternalsOnCloseDirectStreamCodeConst const JSC::ImplementationVisibility s_readableStreamInternalsOnCloseDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsOnCloseDirectStreamCodeLength = 1460; static const JSC::Intrinsic s_readableStreamInternalsOnCloseDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnCloseDirectStreamCode = "(function (S){\"use strict\";var c=this.@controlledReadableStream;if(!c||@getByIdDirectPrivate(c,\"state\")!==@streamReadable)return;if(this._deferClose!==0){this._deferClose=1,this._deferCloseReason=S;return}if(@putByIdDirectPrivate(c,\"state\",@streamClosing),typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,S)}catch(b){}var v;try{v=this.@sink.end(),@putByIdDirectPrivate(this,\"sink\",@undefined)}catch(b){if(this._pendingRead){var y=this._pendingRead;this._pendingRead=@undefined,@rejectPromise(y,b)}@readableStreamError(c,b);return}this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed;var B=@getByIdDirectPrivate(c,\"reader\");if(B&&@isReadableStreamDefaultReader(B)){var C=this._pendingRead;if(C&&@isPromise(C)&&v\?.byteLength){this._pendingRead=@undefined,@fulfillPromise(C,{value:v,done:!1}),@readableStreamClose(c);return}}if(v\?.byteLength){var j=@getByIdDirectPrivate(B,\"readRequests\");if(j\?.isNotEmpty()){@readableStreamFulfillReadRequest(c,v,!1),@readableStreamClose(c);return}@putByIdDirectPrivate(c,\"state\",@streamReadable),this.@pull=()=>{var b=@createFulfilledPromise({value:v,done:!1});return v=@undefined,@readableStreamClose(c),c=@undefined,b}}else if(this._pendingRead){var y=this._pendingRead;this._pendingRead=@undefined,@putByIdDirectPrivate(this,\"pull\",@noopDoneFunction),@fulfillPromise(y,{value:@undefined,done:!0})}@readableStreamClose(c)})\n"; +const char* const s_readableStreamInternalsOnCloseDirectStreamCode = "(function (v){\"use strict\";var b=this.@controlledReadableStream;if(!b||@getByIdDirectPrivate(b,\"state\")!==@streamReadable)return;if(this._deferClose!==0){this._deferClose=1,this._deferCloseReason=v;return}if(@putByIdDirectPrivate(b,\"state\",@streamClosing),typeof this.@underlyingSource.close===\"function\")try{this.@underlyingSource.close.@call(this.@underlyingSource,v)}catch(j){}var y;try{y=this.@sink.end(),@putByIdDirectPrivate(this,\"sink\",@undefined)}catch(j){if(this._pendingRead){var B=this._pendingRead;this._pendingRead=@undefined,@rejectPromise(B,j)}@readableStreamError(b,j);return}this.error=this.flush=this.write=this.close=this.end=@onReadableStreamDirectControllerClosed;var C=@getByIdDirectPrivate(b,\"reader\");if(C&&@isReadableStreamDefaultReader(C)){var c=this._pendingRead;if(c&&@isPromise(c)&&y\?.byteLength){this._pendingRead=@undefined,@fulfillPromise(c,{value:y,done:!1}),@readableStreamClose(b);return}}if(y\?.byteLength){var S=@getByIdDirectPrivate(C,\"readRequests\");if(S\?.isNotEmpty()){@readableStreamFulfillReadRequest(b,y,!1),@readableStreamClose(b);return}@putByIdDirectPrivate(b,\"state\",@streamReadable),this.@pull=()=>{var j=@createFulfilledPromise({value:y,done:!1});return y=@undefined,@readableStreamClose(b),b=@undefined,j}}else if(this._pendingRead){var B=this._pendingRead;this._pendingRead=@undefined,@putByIdDirectPrivate(this,\"pull\",@noopDoneFunction),@fulfillPromise(B,{value:@undefined,done:!0})}@readableStreamClose(b)})\n"; // onFlushDirectStream const JSC::ConstructAbility s_readableStreamInternalsOnFlushDirectStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1636,7 +1636,7 @@ const JSC::ConstructorKind s_readableStreamInternalsOnFlushDirectStreamCodeConst const JSC::ImplementationVisibility s_readableStreamInternalsOnFlushDirectStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsOnFlushDirectStreamCodeLength = 591; static const JSC::Intrinsic s_readableStreamInternalsOnFlushDirectStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsOnFlushDirectStreamCode = "(function (){\"use strict\";var B=this.@controlledReadableStream,i=@getByIdDirectPrivate(B,\"reader\");if(!i||!@isReadableStreamDefaultReader(i))return;var b=this._pendingRead;if(this._pendingRead=@undefined,b&&@isPromise(b)){var c=this.@sink.flush();if(c\?.byteLength)this._pendingRead=@getByIdDirectPrivate(B,\"readRequests\")\?.shift(),@fulfillPromise(b,{value:c,done:!1});else this._pendingRead=b}else if(@getByIdDirectPrivate(B,\"readRequests\")\?.isNotEmpty()){var c=this.@sink.flush();if(c\?.byteLength)@readableStreamFulfillReadRequest(B,c,!1)}else if(this._deferFlush===-1)this._deferFlush=1})\n"; +const char* const s_readableStreamInternalsOnFlushDirectStreamCode = "(function (){\"use strict\";var c=this.@controlledReadableStream,i=@getByIdDirectPrivate(c,\"reader\");if(!i||!@isReadableStreamDefaultReader(i))return;var B=this._pendingRead;if(this._pendingRead=@undefined,B&&@isPromise(B)){var b=this.@sink.flush();if(b\?.byteLength)this._pendingRead=@getByIdDirectPrivate(c,\"readRequests\")\?.shift(),@fulfillPromise(B,{value:b,done:!1});else this._pendingRead=B}else if(@getByIdDirectPrivate(c,\"readRequests\")\?.isNotEmpty()){var b=this.@sink.flush();if(b\?.byteLength)@readableStreamFulfillReadRequest(c,b,!1)}else if(this._deferFlush===-1)this._deferFlush=1})\n"; // createTextStream const JSC::ConstructAbility s_readableStreamInternalsCreateTextStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1644,7 +1644,7 @@ const JSC::ConstructorKind s_readableStreamInternalsCreateTextStreamCodeConstruc const JSC::ImplementationVisibility s_readableStreamInternalsCreateTextStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsCreateTextStreamCodeLength = 984; static const JSC::Intrinsic s_readableStreamInternalsCreateTextStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsCreateTextStreamCode = "(function (G){\"use strict\";var q,v=[],x=!1,z=!1,j=\"\",C=@toLength(0),F=@newPromiseCapability(@Promise),A=!1;return q={start(){},write(_){if(typeof _===\"string\"){var w=@toLength(_.length);if(w>0)j+=_,x=!0,C+=w;return w}if(!_||!(@ArrayBuffer.@isView(_)||_ instanceof @ArrayBuffer))@throwTypeError(\"Expected text, ArrayBuffer or ArrayBufferView\");const E=@toLength(_.byteLength);if(E>0)if(z=!0,j.length>0)@arrayPush(v,j,_),j=\"\";else @arrayPush(v,_);return C+=E,E},flush(){return 0},end(){if(A)return\"\";return q.fulfill()},fulfill(){A=!0;const _=q.finishInternal();return @fulfillPromise(F.@promise,_),_},finishInternal(){if(!x&&!z)return\"\";if(x&&!z)return j;if(z&&!x)return new globalThis.TextDecoder().decode(@Bun.concatArrayBuffers(v));var _=new @Bun.ArrayBufferSink;_.start({highWaterMark:C,asUint8Array:!0});for(let w of v)_.write(w);if(v.length=0,j.length>0)_.write(j),j=\"\";return new globalThis.TextDecoder().decode(_.end())},close(){try{if(!A)A=!0,q.fulfill()}catch(_){}}},[q,F]})\n"; +const char* const s_readableStreamInternalsCreateTextStreamCode = "(function (_){\"use strict\";var C,j=[],E=!1,q=!1,F=\"\",v=@toLength(0),G=@newPromiseCapability(@Promise),w=!1;return C={start(){},write(x){if(typeof x===\"string\"){var z=@toLength(x.length);if(z>0)F+=x,E=!0,v+=z;return z}if(!x||!(@ArrayBuffer.@isView(x)||x instanceof @ArrayBuffer))@throwTypeError(\"Expected text, ArrayBuffer or ArrayBufferView\");const A=@toLength(x.byteLength);if(A>0)if(q=!0,F.length>0)@arrayPush(j,F,x),F=\"\";else @arrayPush(j,x);return v+=A,A},flush(){return 0},end(){if(w)return\"\";return C.fulfill()},fulfill(){w=!0;const x=C.finishInternal();return @fulfillPromise(G.@promise,x),x},finishInternal(){if(!E&&!q)return\"\";if(E&&!q)return F;if(q&&!E)return new globalThis.TextDecoder().decode(@Bun.concatArrayBuffers(j));var x=new @Bun.ArrayBufferSink;x.start({highWaterMark:v,asUint8Array:!0});for(let z of j)x.write(z);if(j.length=0,F.length>0)x.write(F),F=\"\";return new globalThis.TextDecoder().decode(x.end())},close(){try{if(!w)w=!0,C.fulfill()}catch(x){}}},[C,G]})\n"; // initializeTextStream const JSC::ConstructAbility s_readableStreamInternalsInitializeTextStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1652,7 +1652,7 @@ const JSC::ConstructorKind s_readableStreamInternalsInitializeTextStreamCodeCons const JSC::ImplementationVisibility s_readableStreamInternalsInitializeTextStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsInitializeTextStreamCodeLength = 578; static const JSC::Intrinsic s_readableStreamInternalsInitializeTextStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeTextStreamCode = "(function (m,p){\"use strict\";var[_,b]=@createTextStream(p),f={@underlyingSource:m,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:_,close:@onCloseDirectStream,write:_.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",f),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),b})\n"; +const char* const s_readableStreamInternalsInitializeTextStreamCode = "(function (_,m){\"use strict\";var[p,b]=@createTextStream(m),f={@underlyingSource:_,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:p,close:@onCloseDirectStream,write:p.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",f),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),b})\n"; // initializeArrayStream const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1660,7 +1660,7 @@ const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayStreamCodeCon const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsInitializeArrayStreamCodeLength = 797; static const JSC::Intrinsic s_readableStreamInternalsInitializeArrayStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeArrayStreamCode = "(function (m,v){\"use strict\";var _=[],b=@newPromiseCapability(@Promise),t=!1;function d(){return t=!0,b.@resolve.@call(@undefined,_),_}var j={start(){},write(p){return @arrayPush(_,p),p.byteLength||p.length},flush(){return 0},end(){if(t)return[];return d()},close(){if(!t)d()}},q={@underlyingSource:m,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:j,close:@onCloseDirectStream,write:j.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",q),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),b})\n"; +const char* const s_readableStreamInternalsInitializeArrayStreamCode = "(function (t,_){\"use strict\";var b=[],d=@newPromiseCapability(@Promise),j=!1;function p(){return j=!0,d.@resolve.@call(@undefined,b),b}var m={start(){},write(v){return @arrayPush(b,v),v.byteLength||v.length},flush(){return 0},end(){if(j)return[];return p()},close(){if(!j)p()}},q={@underlyingSource:t,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:m,close:@onCloseDirectStream,write:m.write,error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};return @putByIdDirectPrivate(this,\"readableStreamController\",q),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined),d})\n"; // initializeArrayBufferStream const JSC::ConstructAbility s_readableStreamInternalsInitializeArrayBufferStreamCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1668,7 +1668,7 @@ const JSC::ConstructorKind s_readableStreamInternalsInitializeArrayBufferStreamC const JSC::ImplementationVisibility s_readableStreamInternalsInitializeArrayBufferStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsInitializeArrayBufferStreamCodeLength = 690; static const JSC::Intrinsic s_readableStreamInternalsInitializeArrayBufferStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode = "(function (w,m){\"use strict\";var D=m&&typeof m===\"number\"\?{highWaterMark:m,stream:!0,asUint8Array:!0}:{stream:!0,asUint8Array:!0},_=new @Bun.ArrayBufferSink;_.start(D);var b={@underlyingSource:w,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:_,close:@onCloseDirectStream,write:_.write.bind(_),error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};@putByIdDirectPrivate(this,\"readableStreamController\",b),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined)})\n"; +const char* const s_readableStreamInternalsInitializeArrayBufferStreamCode = "(function (_,m){\"use strict\";var w=m&&typeof m===\"number\"\?{highWaterMark:m,stream:!0,asUint8Array:!0}:{stream:!0,asUint8Array:!0},D=new @Bun.ArrayBufferSink;D.start(w);var b={@underlyingSource:_,@pull:@onPullDirectStream,@controlledReadableStream:this,@sink:D,close:@onCloseDirectStream,write:D.write.bind(D),error:@handleDirectStreamError,end:@onCloseDirectStream,@close:@onCloseDirectStream,flush:@onFlushDirectStream,_pendingRead:@undefined,_deferClose:0,_deferFlush:0,_deferCloseReason:@undefined,_handleError:@undefined};@putByIdDirectPrivate(this,\"readableStreamController\",b),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"start\",@undefined)})\n"; // readableStreamError const JSC::ConstructAbility s_readableStreamInternalsReadableStreamErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1676,7 +1676,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamErrorCodeConst const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamErrorCodeLength = 840; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamErrorCode = "(function (c,f){\"use strict\";@assert(@isReadableStream(c)),@assert(@getByIdDirectPrivate(c,\"state\")===@streamReadable),@putByIdDirectPrivate(c,\"state\",@streamErrored),@putByIdDirectPrivate(c,\"storedError\",f);const _=@getByIdDirectPrivate(c,\"reader\");if(!_)return;if(@isReadableStreamDefaultReader(_)){const n=@getByIdDirectPrivate(_,\"readRequests\");@putByIdDirectPrivate(_,\"readRequests\",@createFIFO());for(var i=n.shift();i;i=n.shift())@rejectPromise(i,f)}else{@assert(@isReadableStreamBYOBReader(_));const n=@getByIdDirectPrivate(_,\"readIntoRequests\");@putByIdDirectPrivate(_,\"readIntoRequests\",@createFIFO());for(var i=n.shift();i;i=n.shift())@rejectPromise(i,f)}@getByIdDirectPrivate(_,\"closedPromiseCapability\").@reject.@call(@undefined,f);const h=@getByIdDirectPrivate(_,\"closedPromiseCapability\").@promise;@markPromiseAsHandled(h)})\n"; +const char* const s_readableStreamInternalsReadableStreamErrorCode = "(function (i,_){\"use strict\";@assert(@isReadableStream(i)),@assert(@getByIdDirectPrivate(i,\"state\")===@streamReadable),@putByIdDirectPrivate(i,\"state\",@streamErrored),@putByIdDirectPrivate(i,\"storedError\",_);const n=@getByIdDirectPrivate(i,\"reader\");if(!n)return;if(@isReadableStreamDefaultReader(n)){const h=@getByIdDirectPrivate(n,\"readRequests\");@putByIdDirectPrivate(n,\"readRequests\",@createFIFO());for(var f=h.shift();f;f=h.shift())@rejectPromise(f,_)}else{@assert(@isReadableStreamBYOBReader(n));const h=@getByIdDirectPrivate(n,\"readIntoRequests\");@putByIdDirectPrivate(n,\"readIntoRequests\",@createFIFO());for(var f=h.shift();f;f=h.shift())@rejectPromise(f,_)}@getByIdDirectPrivate(n,\"closedPromiseCapability\").@reject.@call(@undefined,_);const c=@getByIdDirectPrivate(n,\"closedPromiseCapability\").@promise;@markPromiseAsHandled(c)})\n"; // readableStreamDefaultControllerShouldCallPull const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerShouldCallPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1708,7 +1708,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControl const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeLength = 283; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCode = "(function (i){\"use strict\";const g=@getByIdDirectPrivate(i,\"controlledReadableStream\"),d=@getByIdDirectPrivate(g,\"state\");if(d===@streamErrored)return null;if(d===@streamClosed)return 0;return @getByIdDirectPrivate(i,\"strategy\").highWaterMark-@getByIdDirectPrivate(i,\"queue\").size})\n"; +const char* const s_readableStreamInternalsReadableStreamDefaultControllerGetDesiredSizeCode = "(function (d){\"use strict\";const i=@getByIdDirectPrivate(d,\"controlledReadableStream\"),g=@getByIdDirectPrivate(i,\"state\");if(g===@streamErrored)return null;if(g===@streamClosed)return 0;return @getByIdDirectPrivate(d,\"strategy\").highWaterMark-@getByIdDirectPrivate(d,\"queue\").size})\n"; // readableStreamReaderGenericCancel const JSC::ConstructAbility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1716,7 +1716,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamReaderGenericC const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamReaderGenericCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamReaderGenericCancelCodeLength = 133; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamReaderGenericCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamReaderGenericCancelCode = "(function (h,i){\"use strict\";const c=@getByIdDirectPrivate(h,\"ownerReadableStream\");return @assert(!!c),@readableStreamCancel(c,i)})\n"; +const char* const s_readableStreamInternalsReadableStreamReaderGenericCancelCode = "(function (c,h){\"use strict\";const i=@getByIdDirectPrivate(c,\"ownerReadableStream\");return @assert(!!i),@readableStreamCancel(i,h)})\n"; // readableStreamCancel const JSC::ConstructAbility s_readableStreamInternalsReadableStreamCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1724,7 +1724,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamCancelCodeCons const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamCancelCodeLength = 509; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamCancelCode = "(function (i,d){\"use strict\";@putByIdDirectPrivate(i,\"disturbed\",!0);const h=@getByIdDirectPrivate(i,\"state\");if(h===@streamClosed)return @Promise.@resolve();if(h===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(i,\"storedError\"));@readableStreamClose(i);var _=@getByIdDirectPrivate(i,\"readableStreamController\"),p=_.@cancel;if(p)return p(_,d).@then(function(){});var u=_.close;if(u)return @Promise.@resolve(_.close(d));@throwTypeError(\"ReadableStreamController has no cancel or close method\")})\n"; +const char* const s_readableStreamInternalsReadableStreamCancelCode = "(function (i,p){\"use strict\";@putByIdDirectPrivate(i,\"disturbed\",!0);const u=@getByIdDirectPrivate(i,\"state\");if(u===@streamClosed)return @Promise.@resolve();if(u===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(i,\"storedError\"));@readableStreamClose(i);var h=@getByIdDirectPrivate(i,\"readableStreamController\"),_=h.@cancel;if(_)return _(h,p).@then(function(){});var d=h.close;if(d)return @Promise.@resolve(h.close(p));@throwTypeError(\"ReadableStreamController has no cancel or close method\")})\n"; // readableStreamDefaultControllerCancel const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerCancelCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1764,7 +1764,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamFulfillReadReq const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamFulfillReadRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamFulfillReadRequestCodeLength = 157; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamFulfillReadRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamFulfillReadRequestCode = "(function (i,p,y){\"use strict\";const _=@getByIdDirectPrivate(@getByIdDirectPrivate(i,\"reader\"),\"readRequests\").shift();@fulfillPromise(_,{value:p,done:y})})\n"; +const char* const s_readableStreamInternalsReadableStreamFulfillReadRequestCode = "(function (y,_,i){\"use strict\";const p=@getByIdDirectPrivate(@getByIdDirectPrivate(y,\"reader\"),\"readRequests\").shift();@fulfillPromise(p,{value:_,done:i})})\n"; // readableStreamDefaultControllerEnqueue const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1772,7 +1772,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultControl const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeLength = 659; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCode = "(function (_,D){\"use strict\";const E=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamDefaultControllerCanCloseOrEnqueue(_)),@isReadableStreamLocked(E)&&@getByIdDirectPrivate(@getByIdDirectPrivate(E,\"reader\"),\"readRequests\")\?.isNotEmpty()){@readableStreamFulfillReadRequest(E,D,!1),@readableStreamDefaultControllerCallPullIfNeeded(_);return}try{let d=1;if(@getByIdDirectPrivate(_,\"strategy\").size!==@undefined)d=@getByIdDirectPrivate(_,\"strategy\").size(D);@enqueueValueWithSize(@getByIdDirectPrivate(_,\"queue\"),D,d)}catch(d){throw @readableStreamDefaultControllerError(_,d),d}@readableStreamDefaultControllerCallPullIfNeeded(_)})\n"; +const char* const s_readableStreamInternalsReadableStreamDefaultControllerEnqueueCode = "(function (_,d){\"use strict\";const D=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamDefaultControllerCanCloseOrEnqueue(_)),@isReadableStreamLocked(D)&&@getByIdDirectPrivate(@getByIdDirectPrivate(D,\"reader\"),\"readRequests\")\?.isNotEmpty()){@readableStreamFulfillReadRequest(D,d,!1),@readableStreamDefaultControllerCallPullIfNeeded(_);return}try{let E=1;if(@getByIdDirectPrivate(_,\"strategy\").size!==@undefined)E=@getByIdDirectPrivate(_,\"strategy\").size(d);@enqueueValueWithSize(@getByIdDirectPrivate(_,\"queue\"),d,E)}catch(E){throw @readableStreamDefaultControllerError(_,E),E}@readableStreamDefaultControllerCallPullIfNeeded(_)})\n"; // readableStreamDefaultReaderRead const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1780,7 +1780,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefaultReaderR const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefaultReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefaultReaderReadCodeLength = 491; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefaultReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefaultReaderReadCode = "(function (y){\"use strict\";const i=@getByIdDirectPrivate(y,\"ownerReadableStream\");@assert(!!i);const n=@getByIdDirectPrivate(i,\"state\");if(@putByIdDirectPrivate(i,\"disturbed\",!0),n===@streamClosed)return @createFulfilledPromise({value:@undefined,done:!0});if(n===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(i,\"storedError\"));return @assert(n===@streamReadable),@getByIdDirectPrivate(i,\"readableStreamController\").@pull(@getByIdDirectPrivate(i,\"readableStreamController\"))})\n"; +const char* const s_readableStreamInternalsReadableStreamDefaultReaderReadCode = "(function (i){\"use strict\";const n=@getByIdDirectPrivate(i,\"ownerReadableStream\");@assert(!!n);const y=@getByIdDirectPrivate(n,\"state\");if(@putByIdDirectPrivate(n,\"disturbed\",!0),y===@streamClosed)return @createFulfilledPromise({value:@undefined,done:!0});if(y===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(n,\"storedError\"));return @assert(y===@streamReadable),@getByIdDirectPrivate(n,\"readableStreamController\").@pull(@getByIdDirectPrivate(n,\"readableStreamController\"))})\n"; // readableStreamAddReadRequest const JSC::ConstructAbility s_readableStreamInternalsReadableStreamAddReadRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1820,7 +1820,7 @@ const JSC::ConstructorKind s_readableStreamInternalsLazyLoadStreamCodeConstructo const JSC::ImplementationVisibility s_readableStreamInternalsLazyLoadStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsLazyLoadStreamCodeLength = 1589; static const JSC::Intrinsic s_readableStreamInternalsLazyLoadStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsLazyLoadStreamCode = "(function (J,P){\"use strict\";var G=@getByIdDirectPrivate(J,\"bunNativeType\"),B=@getByIdDirectPrivate(J,\"bunNativePtr\"),x=@lazyStreamPrototypeMap.@get(G);if(x===@undefined){let q=function(m){var{c:b,v:f}=this;this.c=@undefined,this.v=@undefined,I(m,b,f)},N=function(m){try{m.close()}catch(b){globalThis.reportError(b)}},O=function(m,b,f,j){j[0]=!1;var y;try{y=Q(m,f,j)}catch(Y){return b.error(Y)}return I(y,b,f)};var z=q,A=N,p=O,[Q,U,W,Z,D,K,X]=@lazyLoad(G),H=[!1],I;I=function m(b,f,j){if(b&&@isPromise(b))return b.then(q.bind({c:f,v:j}),(y)=>f.error(y));else if(typeof b===\"number\")if(j&&j.byteLength===b&&j.buffer===f.byobRequest\?.view\?.buffer)f.byobRequest.respondWithNewView(j);else f.byobRequest.respond(b);else if(b.constructor===@Uint8Array)f.enqueue(b);if(H[0]||b===!1)@enqueueJob(N,f),H[0]=!1};const F=D\?new FinalizationRegistry(D):null;x=class m{constructor(b,f,j){if(this.#f=b,this.#b={},this.pull=this.#j.bind(this),this.cancel=this.#m.bind(this),this.autoAllocateChunkSize=f,j!==@undefined)this.start=(y)=>{y.enqueue(j)};if(F)F.register(this,b,this.#b)}#b;pull;cancel;start;#f;type=\"bytes\";autoAllocateChunkSize=0;static startSync=U;#j(b){var f=this.#f;if(!f){b.close();return}O(f,b,b.byobRequest.view,H)}#m(b){var f=this.#f;F&&F.unregister(this.#b),K&&K(f,!1),W(f,b)}static deinit=D;static drain=X},@lazyStreamPrototypeMap.@set(G,x)}const L=x.startSync(B,P);var E;const{drain:M,deinit:_}=x;if(M)E=M(B);if(L===0){if(D&&B&&@enqueueJob(D,B),(E\?.byteLength\?\?0)>0)return{start(q){q.enqueue(E),q.close()},type:\"bytes\"};return{start(q){q.close()},type:\"bytes\"}}return new x(B,L,E)})\n"; +const char* const s_readableStreamInternalsLazyLoadStreamCode = "(function (U,j){\"use strict\";var N=@getByIdDirectPrivate(U,\"bunNativeType\"),m=@getByIdDirectPrivate(U,\"bunNativePtr\"),q=@lazyStreamPrototypeMap.@get(N);if(q===@undefined){let J=function(Z){var{c:_,v:p}=this;this.c=@undefined,this.v=@undefined,X(Z,_,p)},K=function(Z){try{Z.close()}catch(_){globalThis.reportError(_)}},L=function(Z,_,p,Q){Q[0]=!1;var z;try{z=W(Z,p,Q)}catch(A){return _.error(A)}return X(z,_,p)};var I=J,P=K,H=L,[W,x,y,B,D,b,E]=@lazyLoad(N),O=[!1],X;X=function Z(_,p,Q){if(_&&@isPromise(_))return _.then(J.bind({c:p,v:Q}),(z)=>p.error(z));else if(typeof _===\"number\")if(Q&&Q.byteLength===_&&Q.buffer===p.byobRequest\?.view\?.buffer)p.byobRequest.respondWithNewView(Q);else p.byobRequest.respond(_);else if(_.constructor===@Uint8Array)p.enqueue(_);if(O[0]||_===!1)@enqueueJob(K,p),O[0]=!1};const M=D\?new FinalizationRegistry(D):null;q=class Z{constructor(_,p,Q){if(this.#f=_,this.#b={},this.pull=this.#j.bind(this),this.cancel=this.#m.bind(this),this.autoAllocateChunkSize=p,Q!==@undefined)this.start=(z)=>{z.enqueue(Q)};if(M)M.register(this,_,this.#b)}#b;pull;cancel;start;#f;type=\"bytes\";autoAllocateChunkSize=0;static startSync=x;#j(_){var p=this.#f;if(!p){_.close();return}L(p,_,_.byobRequest.view,O)}#m(_){var p=this.#f;M&&M.unregister(this.#b),b&&b(p,!1),y(p,_)}static deinit=D;static drain=E},@lazyStreamPrototypeMap.@set(N,q)}const Y=q.startSync(m,j);var f;const{drain:F,deinit:G}=q;if(F)f=F(m);if(Y===0){if(D&&m&&@enqueueJob(D,m),(f\?.byteLength\?\?0)>0)return{start(J){J.enqueue(f),J.close()},type:\"bytes\"};return{start(J){J.close()},type:\"bytes\"}}return new q(m,Y,f)})\n"; // readableStreamIntoArray const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoArrayCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1828,7 +1828,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoArrayCodeC const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoArrayCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamIntoArrayCodeLength = 247; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamIntoArrayCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamIntoArrayCode = "(function (q){\"use strict\";var b=q.getReader(),f=b.readMany();async function g(j){if(j.done)return[];var _=j.value||[];while(!0){var p=await b.read();if(p.done)break;_=_.concat(p.value)}return _}if(f&&@isPromise(f))return f.@then(g);return g(f)})\n"; +const char* const s_readableStreamInternalsReadableStreamIntoArrayCode = "(function (f){\"use strict\";var g=f.getReader(),j=g.readMany();async function p(q){if(q.done)return[];var _=q.value||[];while(!0){var b=await g.read();if(b.done)break;_=_.concat(b.value)}return _}if(j&&@isPromise(j))return j.@then(p);return p(j)})\n"; // readableStreamIntoText const JSC::ConstructAbility s_readableStreamInternalsReadableStreamIntoTextCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1836,7 +1836,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamIntoTextCodeCo const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamIntoTextCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamIntoTextCodeLength = 214; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamIntoTextCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamIntoTextCode = "(function (_){\"use strict\";const[h,d]=@createTextStream(@getByIdDirectPrivate(_,\"highWaterMark\")),i=@readStreamIntoSink(_,h,!1);if(i&&@isPromise(i))return @Promise.@resolve(i).@then(d.@promise);return d.@promise})\n"; +const char* const s_readableStreamInternalsReadableStreamIntoTextCode = "(function (i){\"use strict\";const[_,d]=@createTextStream(@getByIdDirectPrivate(i,\"highWaterMark\")),h=@readStreamIntoSink(i,_,!1);if(h&&@isPromise(h))return @Promise.@resolve(h).@then(d.@promise);return d.@promise})\n"; // readableStreamToArrayBufferDirect const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1844,7 +1844,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayBufferD const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeLength = 727; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToArrayBufferDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToArrayBufferDirectCode = "(function (O,A){\"use strict\";var j=new @Bun.ArrayBufferSink;@putByIdDirectPrivate(O,\"underlyingSource\",@undefined);var B=@getByIdDirectPrivate(O,\"highWaterMark\");j.start(B\?{highWaterMark:B}:{});var w=@newPromiseCapability(@Promise),q=!1,x=A.pull,v=A.close,z={start(){},close(_){if(!q){if(q=!0,v)v();@fulfillPromise(w.@promise,j.end())}},end(){if(!q){if(q=!0,v)v();@fulfillPromise(w.@promise,j.end())}},flush(){return 0},write:j.write.bind(j)},C=!1;try{const _=x(z);if(_&&@isObject(_)&&@isPromise(_))return async function(D,F,G){while(!q)await G(D);return await F}(z,promise,x);return w.@promise}catch(_){return C=!0,@readableStreamError(O,_),@Promise.@reject(_)}finally{if(!C&&O)@readableStreamClose(O);z=v=j=x=O=@undefined}})\n"; +const char* const s_readableStreamInternalsReadableStreamToArrayBufferDirectCode = "(function (_,A){\"use strict\";var O=new @Bun.ArrayBufferSink;@putByIdDirectPrivate(_,\"underlyingSource\",@undefined);var j=@getByIdDirectPrivate(_,\"highWaterMark\");O.start(j\?{highWaterMark:j}:{});var x=@newPromiseCapability(@Promise),z=!1,B=A.pull,C=A.close,D={start(){},close(F){if(!z){if(z=!0,C)C();@fulfillPromise(x.@promise,O.end())}},end(){if(!z){if(z=!0,C)C();@fulfillPromise(x.@promise,O.end())}},flush(){return 0},write:O.write.bind(O)},q=!1;try{const F=B(D);if(F&&@isObject(F)&&@isPromise(F))return async function(G,v,w){while(!z)await w(G);return await v}(D,promise,B);return x.@promise}catch(F){return q=!0,@readableStreamError(_,F),@Promise.@reject(F)}finally{if(!q&&_)@readableStreamClose(_);D=C=O=B=_=@undefined}})\n"; // readableStreamToTextDirect const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToTextDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1852,7 +1852,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToTextDirectCo const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToTextDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamToTextDirectCodeLength = 278; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToTextDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToTextDirectCode = "(async function (_,h){\"use strict\";const j=@initializeTextStream.@call(_,h,@undefined);var f=_.getReader();while(@getByIdDirectPrivate(_,\"state\")===@streamReadable){var k=await f.read();if(k.done)break}try{f.releaseLock()}catch(p){}return f=@undefined,_=@undefined,j.@promise})\n"; +const char* const s_readableStreamInternalsReadableStreamToTextDirectCode = "(async function (_,j){\"use strict\";const p=@initializeTextStream.@call(_,j,@undefined);var h=_.getReader();while(@getByIdDirectPrivate(_,\"state\")===@streamReadable){var f=await h.read();if(f.done)break}try{h.releaseLock()}catch(k){}return h=@undefined,_=@undefined,p.@promise})\n"; // readableStreamToArrayDirect const JSC::ConstructAbility s_readableStreamInternalsReadableStreamToArrayDirectCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1860,7 +1860,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamToArrayDirectC const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamToArrayDirectCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamToArrayDirectCodeLength = 354; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamToArrayDirectCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamToArrayDirectCode = "(async function (f,j){\"use strict\";const p=@initializeArrayStream.@call(f,j,@undefined);j=@undefined;var _=f.getReader();try{while(@getByIdDirectPrivate(f,\"state\")===@streamReadable){var q=await _.read();if(q.done)break}try{_.releaseLock()}catch(k){}return _=@undefined,@Promise.@resolve(p.@promise)}catch(k){throw k}finally{f=@undefined,_=@undefined}})\n"; +const char* const s_readableStreamInternalsReadableStreamToArrayDirectCode = "(async function (f,k){\"use strict\";const p=@initializeArrayStream.@call(f,k,@undefined);k=@undefined;var j=f.getReader();try{while(@getByIdDirectPrivate(f,\"state\")===@streamReadable){var _=await j.read();if(_.done)break}try{j.releaseLock()}catch(q){}return j=@undefined,@Promise.@resolve(p.@promise)}catch(q){throw q}finally{f=@undefined,j=@undefined}})\n"; // readableStreamDefineLazyIterators const JSC::ConstructAbility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1868,7 +1868,7 @@ const JSC::ConstructorKind s_readableStreamInternalsReadableStreamDefineLazyIter const JSC::ImplementationVisibility s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeLength = 516; static const JSC::Intrinsic s_readableStreamInternalsReadableStreamDefineLazyIteratorsCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInternalsReadableStreamDefineLazyIteratorsCode = "(function (i){\"use strict\";var B=globalThis.Symbol.asyncIterator,w=async function*x(k,G){var z=k.getReader(),g;try{while(!0){var j,q;const h=z.readMany();if(@isPromise(h))({done:j,value:q}=await h);else({done:j,value:q}=h);if(j)return;yield*q}}catch(h){g=h}finally{if(z.releaseLock(),!G)k.cancel(g);if(g)throw g}},D=function x(){return w(this,!1)},F=function x({preventCancel:k=!1}={preventCancel:!1}){return w(this,k)};return @Object.@defineProperty(i,B,{value:D}),@Object.@defineProperty(i,\"values\",{value:F}),i})\n"; +const char* const s_readableStreamInternalsReadableStreamDefineLazyIteratorsCode = "(function (h){\"use strict\";var x=globalThis.Symbol.asyncIterator,z=async function*i(B,D){var j=B.getReader(),q;try{while(!0){var w,F;const G=j.readMany();if(@isPromise(G))({done:w,value:F}=await G);else({done:w,value:F}=G);if(w)return;yield*F}}catch(G){q=G}finally{if(j.releaseLock(),!D)B.cancel(q);if(q)throw q}},k=function i(){return z(this,!1)},g=function i({preventCancel:B=!1}={preventCancel:!1}){return z(this,B)};return @Object.@defineProperty(h,x,{value:k}),@Object.@defineProperty(h,\"values\",{value:g}),h})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -1894,7 +1894,7 @@ const JSC::ConstructorKind s_transformStreamDefaultControllerDesiredSizeCodeCons const JSC::ImplementationVisibility s_transformStreamDefaultControllerDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_transformStreamDefaultControllerDesiredSizeCodeLength = 339; static const JSC::Intrinsic s_transformStreamDefaultControllerDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_transformStreamDefaultControllerDesiredSizeCode = "(function (){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"enqueue\");const _=@getByIdDirectPrivate(this,\"stream\"),u=@getByIdDirectPrivate(_,\"readable\"),i=@getByIdDirectPrivate(u,\"readableStreamController\");return @readableStreamDefaultControllerGetDesiredSize(i)})\n"; +const char* const s_transformStreamDefaultControllerDesiredSizeCode = "(function (){\"use strict\";if(!@isTransformStreamDefaultController(this))throw @makeThisTypeError(\"TransformStreamDefaultController\",\"enqueue\");const _=@getByIdDirectPrivate(this,\"stream\"),i=@getByIdDirectPrivate(_,\"readable\"),u=@getByIdDirectPrivate(i,\"readableStreamController\");return @readableStreamDefaultControllerGetDesiredSize(u)})\n"; // enqueue const JSC::ConstructAbility s_transformStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -1986,7 +1986,7 @@ const JSC::ConstructorKind s_jsBufferConstructorFromCodeConstructorKind = JSC::C const JSC::ImplementationVisibility s_jsBufferConstructorFromCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_jsBufferConstructorFromCodeLength = 1107; static const JSC::Intrinsic s_jsBufferConstructorFromCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_jsBufferConstructorFromCode = "(function (n){\"use strict\";if(@isUndefinedOrNull(n))@throwTypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object.\");if(typeof n===\"string\"||typeof n===\"object\"&&(@isTypedArrayView(n)||n instanceof @ArrayBuffer||n instanceof SharedArrayBuffer||n instanceof String))switch(@argumentCount()){case 1:return new @Buffer(n);case 2:return new @Buffer(n,@argument(1));default:return new @Buffer(n,@argument(1),@argument(2))}var d=@toObject(n,\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\");if(!@isJSArray(d)){const u=@tryGetByIdWithWellKnownSymbol(n,\"toPrimitive\");if(u){const f=u.@call(n,\"string\");if(typeof f===\"string\")switch(@argumentCount()){case 1:return new @Buffer(f);case 2:return new @Buffer(f,@argument(1));default:return new @Buffer(f,@argument(1),@argument(2))}}if(!(\"length\"in d)||@isCallable(d))@throwTypeError(\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\")}return new @Buffer(@Uint8Array.from(d).buffer)})\n"; +const char* const s_jsBufferConstructorFromCode = "(function (d){\"use strict\";if(@isUndefinedOrNull(d))@throwTypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object.\");if(typeof d===\"string\"||typeof d===\"object\"&&(@isTypedArrayView(d)||d instanceof @ArrayBuffer||d instanceof SharedArrayBuffer||d instanceof String))switch(@argumentCount()){case 1:return new @Buffer(d);case 2:return new @Buffer(d,@argument(1));default:return new @Buffer(d,@argument(1),@argument(2))}var f=@toObject(d,\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\");if(!@isJSArray(f)){const u=@tryGetByIdWithWellKnownSymbol(d,\"toPrimitive\");if(u){const n=u.@call(d,\"string\");if(typeof n===\"string\")switch(@argumentCount()){case 1:return new @Buffer(n);case 2:return new @Buffer(n,@argument(1));default:return new @Buffer(n,@argument(1),@argument(2))}}if(!(\"length\"in f)||@isCallable(f))@throwTypeError(\"The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object.\")}return new @Buffer(@Uint8Array.from(f).buffer)})\n"; // isBuffer const JSC::ConstructAbility s_jsBufferConstructorIsBufferCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2028,7 +2028,7 @@ const JSC::ConstructorKind s_readableStreamDefaultReaderReadManyCodeConstructorK const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadManyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamDefaultReaderReadManyCodeLength = 2598; static const JSC::Intrinsic s_readableStreamDefaultReaderReadManyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultReaderReadManyCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))@throwTypeError(\"ReadableStreamDefaultReader.readMany() should not be called directly\");const j=@getByIdDirectPrivate(this,\"ownerReadableStream\");if(!j)@throwTypeError(\"readMany() called on a reader owned by no readable stream\");const I=@getByIdDirectPrivate(j,\"state\");if(@putByIdDirectPrivate(j,\"disturbed\",!0),I===@streamClosed)return{value:[],size:0,done:!0};else if(I===@streamErrored)throw @getByIdDirectPrivate(j,\"storedError\");var B=@getByIdDirectPrivate(j,\"readableStreamController\"),F=@getByIdDirectPrivate(B,\"queue\");if(!F)return B.@pull(B).@then(function({done:_,value:w}){return _\?{done:!0,value:[],size:0}:{value:[w],size:1,done:!1}});const N=F.content;var Q=F.size,x=N.toArray(!1),C=x.length;if(C>0){var D=@newArrayWithSize(C);if(@isReadableByteStreamController(B)){{const _=x[0];if(!(@ArrayBuffer.@isView(_)||_ instanceof @ArrayBuffer))@putByValDirect(D,0,new @Uint8Array(_.buffer,_.byteOffset,_.byteLength));else @putByValDirect(D,0,_)}for(var d=1;d<C;d++){const _=x[d];if(!(@ArrayBuffer.@isView(_)||_ instanceof @ArrayBuffer))@putByValDirect(D,d,new @Uint8Array(_.buffer,_.byteOffset,_.byteLength));else @putByValDirect(D,d,_)}}else{@putByValDirect(D,0,x[0].value);for(var d=1;d<C;d++)@putByValDirect(D,d,x[d].value)}if(@resetQueue(@getByIdDirectPrivate(B,\"queue\")),@getByIdDirectPrivate(B,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(B,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(B))@readableStreamDefaultControllerCallPullIfNeeded(B);else if(@isReadableByteStreamController(B))@readableByteStreamControllerCallPullIfNeeded(B);return{value:D,size:Q,done:!1}}var J=(_)=>{if(_.done)return{value:[],size:0,done:!0};var w=@getByIdDirectPrivate(j,\"readableStreamController\"),G=@getByIdDirectPrivate(w,\"queue\"),k=[_.value].concat(G.content.toArray(!1)),K=k.length;if(@isReadableByteStreamController(w))for(var A=0;A<K;A++){const H=k[A];if(!(@ArrayBuffer.@isView(H)||H instanceof @ArrayBuffer)){const{buffer:T,byteOffset:U,byteLength:W}=H;@putByValDirect(k,A,new @Uint8Array(T,U,W))}}else for(var A=1;A<K;A++)@putByValDirect(k,A,k[A].value);var S=G.size;if(@resetQueue(G),@getByIdDirectPrivate(w,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(w,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(w))@readableStreamDefaultControllerCallPullIfNeeded(w);else if(@isReadableByteStreamController(w))@readableByteStreamControllerCallPullIfNeeded(w);return{value:k,size:S,done:!1}},E=B.@pull(B);if(E&&@isPromise(E))return E.@then(J);return J(E)})\n"; +const char* const s_readableStreamDefaultReaderReadManyCode = "(function (){\"use strict\";if(!@isReadableStreamDefaultReader(this))@throwTypeError(\"ReadableStreamDefaultReader.readMany() should not be called directly\");const Q=@getByIdDirectPrivate(this,\"ownerReadableStream\");if(!Q)@throwTypeError(\"readMany() called on a reader owned by no readable stream\");const k=@getByIdDirectPrivate(Q,\"state\");if(@putByIdDirectPrivate(Q,\"disturbed\",!0),k===@streamClosed)return{value:[],size:0,done:!0};else if(k===@streamErrored)throw @getByIdDirectPrivate(Q,\"storedError\");var F=@getByIdDirectPrivate(Q,\"readableStreamController\"),x=@getByIdDirectPrivate(F,\"queue\");if(!x)return F.@pull(F).@then(function({done:J,value:_}){return J\?{done:!0,value:[],size:0}:{value:[_],size:1,done:!1}});const C=x.content;var A=x.size,S=C.toArray(!1),D=S.length;if(D>0){var H=@newArrayWithSize(D);if(@isReadableByteStreamController(F)){{const J=S[0];if(!(@ArrayBuffer.@isView(J)||J instanceof @ArrayBuffer))@putByValDirect(H,0,new @Uint8Array(J.buffer,J.byteOffset,J.byteLength));else @putByValDirect(H,0,J)}for(var I=1;I<D;I++){const J=S[I];if(!(@ArrayBuffer.@isView(J)||J instanceof @ArrayBuffer))@putByValDirect(H,I,new @Uint8Array(J.buffer,J.byteOffset,J.byteLength));else @putByValDirect(H,I,J)}}else{@putByValDirect(H,0,S[0].value);for(var I=1;I<D;I++)@putByValDirect(H,I,S[I].value)}if(@resetQueue(@getByIdDirectPrivate(F,\"queue\")),@getByIdDirectPrivate(F,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(F,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(F))@readableStreamDefaultControllerCallPullIfNeeded(F);else if(@isReadableByteStreamController(F))@readableByteStreamControllerCallPullIfNeeded(F);return{value:H,size:A,done:!1}}var T=(J)=>{if(J.done)return{value:[],size:0,done:!0};var _=@getByIdDirectPrivate(Q,\"readableStreamController\"),E=@getByIdDirectPrivate(_,\"queue\"),K=[J.value].concat(E.content.toArray(!1)),j=K.length;if(@isReadableByteStreamController(_))for(var G=0;G<j;G++){const B=K[G];if(!(@ArrayBuffer.@isView(B)||B instanceof @ArrayBuffer)){const{buffer:N,byteOffset:d,byteLength:W}=B;@putByValDirect(K,G,new @Uint8Array(N,d,W))}}else for(var G=1;G<j;G++)@putByValDirect(K,G,K[G].value);var w=E.size;if(@resetQueue(E),@getByIdDirectPrivate(_,\"closeRequested\"))@readableStreamClose(@getByIdDirectPrivate(_,\"controlledReadableStream\"));else if(@isReadableStreamDefaultController(_))@readableStreamDefaultControllerCallPullIfNeeded(_);else if(@isReadableByteStreamController(_))@readableByteStreamControllerCallPullIfNeeded(_);return{value:K,size:w,done:!1}},U=F.@pull(F);if(U&&@isPromise(U))return U.@then(T);return T(U)})\n"; // read const JSC::ConstructAbility s_readableStreamDefaultReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2086,7 +2086,7 @@ const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCode const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeLength = 125; static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCode = "(function (l,i,n){\"use strict\";if(i===@undefined)return @Promise.@resolve();return @shieldingPromiseResolve(i.@apply(l,n))})\n"; +const char* const s_streamInternalsPromiseInvokeOrNoopMethodNoCatchCode = "(function (i,n,l){\"use strict\";if(n===@undefined)return @Promise.@resolve();return @shieldingPromiseResolve(n.@apply(i,l))})\n"; // promiseInvokeOrNoopNoCatch const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2094,7 +2094,7 @@ const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopNoCatchCodeConstr const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopNoCatchCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsPromiseInvokeOrNoopNoCatchCodeLength = 84; static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopNoCatchCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopNoCatchCode = "(function (d,l,n){\"use strict\";return @promiseInvokeOrNoopMethodNoCatch(d,d[l],n)})\n"; +const char* const s_streamInternalsPromiseInvokeOrNoopNoCatchCode = "(function (d,n,l){\"use strict\";return @promiseInvokeOrNoopMethodNoCatch(d,d[n],l)})\n"; // promiseInvokeOrNoopMethod const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrNoopMethodCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2110,7 +2110,7 @@ const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrNoopCodeConstructorKi const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrNoopCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsPromiseInvokeOrNoopCodeLength = 116; static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrNoopCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrNoopCode = "(function (n,d,l){\"use strict\";try{return @promiseInvokeOrNoopNoCatch(n,d,l)}catch(m){return @Promise.@reject(m)}})\n"; +const char* const s_streamInternalsPromiseInvokeOrNoopCode = "(function (l,m,d){\"use strict\";try{return @promiseInvokeOrNoopNoCatch(l,m,d)}catch(n){return @Promise.@reject(n)}})\n"; // promiseInvokeOrFallbackOrNoop const JSC::ConstructAbility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2118,7 +2118,7 @@ const JSC::ConstructorKind s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeCon const JSC::ImplementationVisibility s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeLength = 198; static const JSC::Intrinsic s_streamInternalsPromiseInvokeOrFallbackOrNoopCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsPromiseInvokeOrFallbackOrNoopCode = "(function (_,l,p,u,v){\"use strict\";try{const n=_[l];if(n===@undefined)return @promiseInvokeOrNoopNoCatch(_,u,v);return @shieldingPromiseResolve(n.@apply(_,p))}catch(n){return @Promise.@reject(n)}})\n"; +const char* const s_streamInternalsPromiseInvokeOrFallbackOrNoopCode = "(function (n,p,_,l,v){\"use strict\";try{const u=n[p];if(u===@undefined)return @promiseInvokeOrNoopNoCatch(n,l,v);return @shieldingPromiseResolve(u.@apply(n,_))}catch(u){return @Promise.@reject(u)}})\n"; // validateAndNormalizeQueuingStrategy const JSC::ConstructAbility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2126,7 +2126,7 @@ const JSC::ConstructorKind s_streamInternalsValidateAndNormalizeQueuingStrategyC const JSC::ImplementationVisibility s_streamInternalsValidateAndNormalizeQueuingStrategyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsValidateAndNormalizeQueuingStrategyCodeLength = 263; static const JSC::Intrinsic s_streamInternalsValidateAndNormalizeQueuingStrategyCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsValidateAndNormalizeQueuingStrategyCode = "(function (d,l){\"use strict\";if(d!==@undefined&&typeof d!==\"function\")@throwTypeError(\"size parameter must be a function\");const f=@toNumber(l);if(@isNaN(f)||f<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return{size:d,highWaterMark:f}})\n"; +const char* const s_streamInternalsValidateAndNormalizeQueuingStrategyCode = "(function (d,f){\"use strict\";if(d!==@undefined&&typeof d!==\"function\")@throwTypeError(\"size parameter must be a function\");const l=@toNumber(f);if(@isNaN(l)||l<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return{size:d,highWaterMark:l}})\n"; // createFIFO const JSC::ConstructAbility s_streamInternalsCreateFIFOCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2134,7 +2134,7 @@ const JSC::ConstructorKind s_streamInternalsCreateFIFOCodeConstructorKind = JSC: const JSC::ImplementationVisibility s_streamInternalsCreateFIFOCodeImplementationVisibility = JSC::ImplementationVisibility::Private; const int s_streamInternalsCreateFIFOCodeLength = 1473; static const JSC::Intrinsic s_streamInternalsCreateFIFOCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsCreateFIFOCode = "(function (){\"use strict\";var E=@Array.prototype.slice;class A{constructor(){this._head=0,this._tail=0,this._capacityMask=3,this._list=@newArrayWithSize(4)}_head;_tail;_capacityMask;_list;size(){if(this._head===this._tail)return 0;if(this._head<this._tail)return this._tail-this._head;else return this._capacityMask+1-(this._head-this._tail)}isEmpty(){return this.size()==0}isNotEmpty(){return this.size()>0}shift(){var{_head:g,_tail:b,_list:x,_capacityMask:M}=this;if(g===b)return @undefined;var w=x[g];if(@putByValDirect(x,g,@undefined),g=this._head=g+1&M,g<2&&b>1e4&&b<=x.length>>>2)this._shrinkArray();return w}peek(){if(this._head===this._tail)return @undefined;return this._list[this._head]}push(g){var b=this._tail;if(@putByValDirect(this._list,b,g),this._tail=b+1&this._capacityMask,this._tail===this._head)this._growArray()}toArray(g){var b=this._list,x=@toLength(b.length);if(g||this._head>this._tail){var M=@toLength(this._head),w=@toLength(this._tail),F=@toLength(x-M+w),z=@newArrayWithSize(F),B=0;for(var v=M;v<x;v++)@putByValDirect(z,B++,b[v]);for(var v=0;v<w;v++)@putByValDirect(z,B++,b[v]);return z}else return E.@call(b,this._head,this._tail)}clear(){this._head=0,this._tail=0,this._list.fill(@undefined)}_growArray(){if(this._head)this._list=this.toArray(!0),this._head=0;this._tail=@toLength(this._list.length),this._list.length<<=1,this._capacityMask=this._capacityMask<<1|1}_shrinkArray(){this._list.length>>>=1,this._capacityMask>>>=1}}return new A})\n"; +const char* const s_streamInternalsCreateFIFOCode = "(function (){\"use strict\";var g=@Array.prototype.slice;class M{constructor(){this._head=0,this._tail=0,this._capacityMask=3,this._list=@newArrayWithSize(4)}_head;_tail;_capacityMask;_list;size(){if(this._head===this._tail)return 0;if(this._head<this._tail)return this._tail-this._head;else return this._capacityMask+1-(this._head-this._tail)}isEmpty(){return this.size()==0}isNotEmpty(){return this.size()>0}shift(){var{_head:w,_tail:z,_list:B,_capacityMask:E}=this;if(w===z)return @undefined;var b=B[w];if(@putByValDirect(B,w,@undefined),w=this._head=w+1&E,w<2&&z>1e4&&z<=B.length>>>2)this._shrinkArray();return b}peek(){if(this._head===this._tail)return @undefined;return this._list[this._head]}push(w){var z=this._tail;if(@putByValDirect(this._list,z,w),this._tail=z+1&this._capacityMask,this._tail===this._head)this._growArray()}toArray(w){var z=this._list,B=@toLength(z.length);if(w||this._head>this._tail){var E=@toLength(this._head),b=@toLength(this._tail),F=@toLength(B-E+b),G=@newArrayWithSize(F),v=0;for(var A=E;A<B;A++)@putByValDirect(G,v++,z[A]);for(var A=0;A<b;A++)@putByValDirect(G,v++,z[A]);return G}else return g.@call(z,this._head,this._tail)}clear(){this._head=0,this._tail=0,this._list.fill(@undefined)}_growArray(){if(this._head)this._list=this.toArray(!0),this._head=0;this._tail=@toLength(this._list.length),this._list.length<<=1,this._capacityMask=this._capacityMask<<1|1}_shrinkArray(){this._list.length>>>=1,this._capacityMask>>>=1}}return new M})\n"; // newQueue const JSC::ConstructAbility s_streamInternalsNewQueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2158,7 +2158,7 @@ const JSC::ConstructorKind s_streamInternalsEnqueueValueWithSizeCodeConstructorK const JSC::ImplementationVisibility s_streamInternalsEnqueueValueWithSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsEnqueueValueWithSizeCodeLength = 161; static const JSC::Intrinsic s_streamInternalsEnqueueValueWithSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsEnqueueValueWithSizeCode = "(function (d,o,n){\"use strict\";if(n=@toNumber(n),!@isFinite(n)||n<0)@throwRangeError(\"size has an incorrect value\");d.content.push({value:o,size:n}),d.size+=n})\n"; +const char* const s_streamInternalsEnqueueValueWithSizeCode = "(function (n,d,o){\"use strict\";if(o=@toNumber(o),!@isFinite(o)||o<0)@throwRangeError(\"size has an incorrect value\");n.content.push({value:d,size:o}),n.size+=o})\n"; // peekQueueValue const JSC::ConstructAbility s_streamInternalsPeekQueueValueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2182,7 +2182,7 @@ const JSC::ConstructorKind s_streamInternalsExtractSizeAlgorithmCodeConstructorK const JSC::ImplementationVisibility s_streamInternalsExtractSizeAlgorithmCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsExtractSizeAlgorithmCodeLength = 176; static const JSC::Intrinsic s_streamInternalsExtractSizeAlgorithmCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsExtractSizeAlgorithmCode = "(function (p){\"use strict\";const d=p.size;if(d===@undefined)return()=>1;if(typeof d!==\"function\")@throwTypeError(\"strategy.size must be a function\");return(w)=>{return d(w)}})\n"; +const char* const s_streamInternalsExtractSizeAlgorithmCode = "(function (d){\"use strict\";const p=d.size;if(p===@undefined)return()=>1;if(typeof p!==\"function\")@throwTypeError(\"strategy.size must be a function\");return(w)=>{return p(w)}})\n"; // extractHighWaterMark const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2190,7 +2190,7 @@ const JSC::ConstructorKind s_streamInternalsExtractHighWaterMarkCodeConstructorK const JSC::ImplementationVisibility s_streamInternalsExtractHighWaterMarkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsExtractHighWaterMarkCodeLength = 188; static const JSC::Intrinsic s_streamInternalsExtractHighWaterMarkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsExtractHighWaterMarkCode = "(function (b,c){\"use strict\";const o=b.highWaterMark;if(o===@undefined)return c;if(@isNaN(o)||o<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return @toNumber(o)})\n"; +const char* const s_streamInternalsExtractHighWaterMarkCode = "(function (o,b){\"use strict\";const c=o.highWaterMark;if(c===@undefined)return b;if(@isNaN(c)||c<0)@throwRangeError(\"highWaterMark value is negative or not a number\");return @toNumber(c)})\n"; // extractHighWaterMarkFromQueuingStrategyInit const JSC::ConstructAbility s_streamInternalsExtractHighWaterMarkFromQueuingStrategyInitCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2206,7 +2206,7 @@ const JSC::ConstructorKind s_streamInternalsCreateFulfilledPromiseCodeConstructo const JSC::ImplementationVisibility s_streamInternalsCreateFulfilledPromiseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsCreateFulfilledPromiseCodeLength = 81; static const JSC::Intrinsic s_streamInternalsCreateFulfilledPromiseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsCreateFulfilledPromiseCode = "(function (n){\"use strict\";const d=@newPromise();return @fulfillPromise(d,n),d})\n"; +const char* const s_streamInternalsCreateFulfilledPromiseCode = "(function (d){\"use strict\";const n=@newPromise();return @fulfillPromise(n,d),n})\n"; // toDictionary const JSC::ConstructAbility s_streamInternalsToDictionaryCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2214,7 +2214,7 @@ const JSC::ConstructorKind s_streamInternalsToDictionaryCodeConstructorKind = JS const JSC::ImplementationVisibility s_streamInternalsToDictionaryCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_streamInternalsToDictionaryCodeLength = 115; static const JSC::Intrinsic s_streamInternalsToDictionaryCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_streamInternalsToDictionaryCode = "(function (c,n,p){\"use strict\";if(c===@undefined||c===null)return n;if(!@isObject(c))@throwTypeError(p);return c})\n"; +const char* const s_streamInternalsToDictionaryCode = "(function (c,p,n){\"use strict\";if(c===@undefined||c===null)return p;if(!@isObject(c))@throwTypeError(n);return c})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -2232,7 +2232,7 @@ const JSC::ConstructorKind s_importMetaObjectLoadCJS2ESMCodeConstructorKind = JS const JSC::ImplementationVisibility s_importMetaObjectLoadCJS2ESMCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_importMetaObjectLoadCJS2ESMCodeLength = 1387; static const JSC::Intrinsic s_importMetaObjectLoadCJS2ESMCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectLoadCJS2ESMCode = "(function (B){\"use strict\";var D=@Loader,H=@createFIFO(),_=B;while(_){var w=D.registry.@get(_);if((w\?.state\?\?0)<=@ModuleFetch)@fulfillModuleSync(_),w=D.registry.@get(_);var W=@getPromiseInternalField(w.fetch,@promiseFieldReactionsOrResult),x=D.parseModule(_,W),z=w.module;if(x&&@isPromise(x)){var J=@getPromiseInternalField(x,@promiseFieldReactionsOrResult),X=@getPromiseInternalField(x,@promiseFieldFlags),Q=X&@promiseStateMask;if(Q===@promiseStatePending||J&&@isPromise(J))@throwTypeError(`require() async module \"${_}\" is unsupported. use \"await import()\" instead.`);else if(Q===@promiseStateRejected){if(!J\?.message)@throwTypeError(`${J+\"\"\?J:\"An error occurred\"} occurred while parsing module \\\"${_}\\\"`);throw J}w.module=z=J}else if(x&&!z)w.module=z=x;@setStateToMax(w,@ModuleLink);var Y=z.dependenciesMap,I=D.requestedModules(z),T=@newArrayWithSize(I.length);for(var F=0,Z=I.length;F<Z;++F){var G=I[F],U=G[0]===\"/\"\?G:D.resolve(G,_),L=D.ensureRegistered(U);if(L.state<@ModuleLink)H.push(U);@putByValDirect(T,F,L),Y.@set(G,L)}w.dependencies=T,w.instantiate=@Promise.resolve(w),w.satisfy=@Promise.resolve(w),_=H.shift();while(_&&(D.registry.@get(_)\?.state\?\?@ModuleFetch)>=@ModuleLink)_=H.shift()}var V=D.linkAndEvaluateModule(B,@undefined);if(V&&@isPromise(V))@throwTypeError(`require() async module \\\"${B}\\\" is unsupported. use \"await import()\" instead.`);return D.registry.@get(B)})\n"; +const char* const s_importMetaObjectLoadCJS2ESMCode = "(function (J){\"use strict\";var Q=@Loader,T=@createFIFO(),H=J;while(H){var x=Q.registry.@get(H);if((x\?.state\?\?0)<=@ModuleFetch)@fulfillModuleSync(H),x=Q.registry.@get(H);var z=@getPromiseInternalField(x.fetch,@promiseFieldReactionsOrResult),_=Q.parseModule(H,z),I=x.module;if(_&&@isPromise(_)){var B=@getPromiseInternalField(_,@promiseFieldReactionsOrResult),U=@getPromiseInternalField(_,@promiseFieldFlags),F=U&@promiseStateMask;if(F===@promiseStatePending||B&&@isPromise(B))@throwTypeError(`require() async module \"${H}\" is unsupported. use \"await import()\" instead.`);else if(F===@promiseStateRejected){if(!B\?.message)@throwTypeError(`${B+\"\"\?B:\"An error occurred\"} occurred while parsing module \\\"${H}\\\"`);throw B}x.module=I=B}else if(_&&!I)x.module=I=_;@setStateToMax(x,@ModuleLink);var V=I.dependenciesMap,w=Q.requestedModules(I),L=@newArrayWithSize(w.length);for(var D=0,W=w.length;D<W;++D){var X=w[D],G=X[0]===\"/\"\?X:Q.resolve(X,H),Y=Q.ensureRegistered(G);if(Y.state<@ModuleLink)T.push(G);@putByValDirect(L,D,Y),V.@set(X,Y)}x.dependencies=L,x.instantiate=@Promise.resolve(x),x.satisfy=@Promise.resolve(x),H=T.shift();while(H&&(Q.registry.@get(H)\?.state\?\?@ModuleFetch)>=@ModuleLink)H=T.shift()}var Z=Q.linkAndEvaluateModule(J,@undefined);if(Z&&@isPromise(Z))@throwTypeError(`require() async module \\\"${J}\\\" is unsupported. use \"await import()\" instead.`);return Q.registry.@get(J)})\n"; // requireESM const JSC::ConstructAbility s_importMetaObjectRequireESMCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2240,7 +2240,7 @@ const JSC::ConstructorKind s_importMetaObjectRequireESMCodeConstructorKind = JSC const JSC::ImplementationVisibility s_importMetaObjectRequireESMCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_importMetaObjectRequireESMCodeLength = 325; static const JSC::Intrinsic s_importMetaObjectRequireESMCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectRequireESMCode = "(function (c){\"use strict\";var a=@Loader.registry.@get(c);if(!a||!a.evaluated)a=@loadCJS2ESM(c);if(!a||!a.evaluated||!a.module)@throwTypeError(`require() failed to evaluate module \"${c}\". This is an internal consistentency error.`);var _=@Loader.getModuleNamespaceObject(a.module);if(_[@commonJSSymbol]===0)return;return _})\n"; +const char* const s_importMetaObjectRequireESMCode = "(function (a){\"use strict\";var c=@Loader.registry.@get(a);if(!c||!c.evaluated)c=@loadCJS2ESM(a);if(!c||!c.evaluated||!c.module)@throwTypeError(`require() failed to evaluate module \"${a}\". This is an internal consistentency error.`);var _=@Loader.getModuleNamespaceObject(c.module);if(_[@commonJSSymbol]===0)return;return _})\n"; // internalRequire const JSC::ConstructAbility s_importMetaObjectInternalRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2248,7 +2248,7 @@ const JSC::ConstructorKind s_importMetaObjectInternalRequireCodeConstructorKind const JSC::ImplementationVisibility s_importMetaObjectInternalRequireCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_importMetaObjectInternalRequireCodeLength = 747; static const JSC::Intrinsic s_importMetaObjectInternalRequireCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectInternalRequireCode = "(function (_){\"use strict\";var n=@requireMap.@get(_);const g=_.substring(_.length-5);if(n)return n.exports;if(g===\".json\"){var j=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),b=JSON.parse(j.readFileSync(_,\"utf8\"));return @requireMap.@set(_,@createCommonJSModule(_,b,!0)),b}else if(g===\".node\"){const k=@createCommonJSModule(_,{},!0);return process.dlopen(k,_),@requireMap.@set(_,k),k.exports}else if(g===\".toml\"){var j=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),b=@Bun.TOML.parse(j.readFileSync(_,\"utf8\"));return @requireMap.@set(_,@createCommonJSModule(_,b,!0)),b}else{var b=@requireESM(_);const v=@requireMap.@get(_);if(v)return v.exports;var q=b\?.default;if(q\?.[@commonJSSymbol]===0)b=q;return @requireMap.@set(_,@createCommonJSModule(_,b,!0)),b}})\n"; +const char* const s_importMetaObjectInternalRequireCode = "(function (b){\"use strict\";var _=@requireMap.@get(b);const j=b.substring(b.length-5);if(_)return _.exports;if(j===\".json\"){var n=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),g=JSON.parse(n.readFileSync(b,\"utf8\"));return @requireMap.@set(b,@createCommonJSModule(b,g,!0)),g}else if(j===\".node\"){const k=@createCommonJSModule(b,{},!0);return process.dlopen(k,b),@requireMap.@set(b,k),k.exports}else if(j===\".toml\"){var n=globalThis[Symbol.for(\"_fs\")]||=@Bun.fs(),g=@Bun.TOML.parse(n.readFileSync(b,\"utf8\"));return @requireMap.@set(b,@createCommonJSModule(b,g,!0)),g}else{var g=@requireESM(b);const q=@requireMap.@get(b);if(q)return q.exports;var v=g\?.default;if(v\?.[@commonJSSymbol]===0)g=v;return @requireMap.@set(b,@createCommonJSModule(b,g,!0)),g}})\n"; // createRequireCache const JSC::ConstructAbility s_importMetaObjectCreateRequireCacheCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2256,7 +2256,7 @@ const JSC::ConstructorKind s_importMetaObjectCreateRequireCacheCodeConstructorKi const JSC::ImplementationVisibility s_importMetaObjectCreateRequireCacheCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_importMetaObjectCreateRequireCacheCodeLength = 854; static const JSC::Intrinsic s_importMetaObjectCreateRequireCacheCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_importMetaObjectCreateRequireCacheCode = "(function (){\"use strict\";var c=new Map,L={};return new Proxy(L,{get(f,_){const h=@requireMap.@get(_);if(h)return h;const t=@Loader.registry.@get(_);if(t\?.evaluated){const u=@Loader.getModuleNamespaceObject(t.module),g=u[@commonJSSymbol]===0||u.default\?.[@commonJSSymbol]\?u.default:u,b=@createCommonJSModule(_,g,!0);return @requireMap.@set(_,b),b}return L[_]},set(f,_,h){return @requireMap.@set(_,h),!0},has(f,_){return @requireMap.@has(_)||@Loader.registry.@has(_)},deleteProperty(f,_){return c.@delete(_),@requireMap.@delete(_),@Loader.registry.@delete(_),!0},ownKeys(f){var _=[...@requireMap.@keys()];const h=[...@Loader.registry.@keys()];for(let t of h)if(!_.includes(t))@arrayPush(_,t);return _},getPrototypeOf(f){return null},getOwnPropertyDescriptor(f,_){if(@requireMap.@has(_)||@Loader.registry.@has(_))return{configurable:!0,enumerable:!0}}})})\n"; +const char* const s_importMetaObjectCreateRequireCacheCode = "(function (){\"use strict\";var f=new Map,h={};return new Proxy(h,{get(t,_){const u=@requireMap.@get(_);if(u)return u;const L=@Loader.registry.@get(_);if(L\?.evaluated){const b=@Loader.getModuleNamespaceObject(L.module),c=b[@commonJSSymbol]===0||b.default\?.[@commonJSSymbol]\?b.default:b,g=@createCommonJSModule(_,c,!0);return @requireMap.@set(_,g),g}return h[_]},set(t,_,u){return @requireMap.@set(_,u),!0},has(t,_){return @requireMap.@has(_)||@Loader.registry.@has(_)},deleteProperty(t,_){return f.@delete(_),@requireMap.@delete(_),@Loader.registry.@delete(_),!0},ownKeys(t){var _=[...@requireMap.@keys()];const u=[...@Loader.registry.@keys()];for(let L of u)if(!_.includes(L))@arrayPush(_,L);return _},getPrototypeOf(t){return null},getOwnPropertyDescriptor(t,_){if(@requireMap.@has(_)||@Loader.registry.@has(_))return{configurable:!0,enumerable:!0}}})})\n"; // require const JSC::ConstructAbility s_importMetaObjectRequireCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2440,7 +2440,7 @@ const JSC::ConstructorKind s_readableStreamInitializeReadableStreamCodeConstruct const JSC::ImplementationVisibility s_readableStreamInitializeReadableStreamCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamInitializeReadableStreamCodeLength = 2065; static const JSC::Intrinsic s_readableStreamInitializeReadableStreamCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamInitializeReadableStreamCode = "(function (_,f){\"use strict\";if(_===@undefined)_={@bunNativeType:0,@bunNativePtr:0,@lazy:!1};if(f===@undefined)f={};if(!@isObject(_))@throwTypeError(\"ReadableStream constructor takes an object as first argument\");if(f!==@undefined&&!@isObject(f))@throwTypeError(\"ReadableStream constructor takes an object as second argument, if any\");@putByIdDirectPrivate(this,\"state\",@streamReadable),@putByIdDirectPrivate(this,\"reader\",@undefined),@putByIdDirectPrivate(this,\"storedError\",@undefined),@putByIdDirectPrivate(this,\"disturbed\",!1),@putByIdDirectPrivate(this,\"readableStreamController\",null),@putByIdDirectPrivate(this,\"bunNativeType\",@getByIdDirectPrivate(_,\"bunNativeType\")\?\?0),@putByIdDirectPrivate(this,\"bunNativePtr\",@getByIdDirectPrivate(_,\"bunNativePtr\")\?\?0);const B=_.type===\"direct\",b=!!_.@lazy,I=B||b;if(@getByIdDirectPrivate(_,\"pull\")!==@undefined&&!I){const v=@getByIdDirectPrivate(f,\"size\"),m=@getByIdDirectPrivate(f,\"highWaterMark\");return @putByIdDirectPrivate(this,\"highWaterMark\",m),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@setupReadableStreamDefaultController(this,_,v,m!==@undefined\?m:1,@getByIdDirectPrivate(_,\"start\"),@getByIdDirectPrivate(_,\"pull\"),@getByIdDirectPrivate(_,\"cancel\")),this}if(B)@putByIdDirectPrivate(this,\"underlyingSource\",_),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>@createReadableStreamController(this,_,f));else if(I){const v=_.autoAllocateChunkSize;@putByIdDirectPrivate(this,\"highWaterMark\",@undefined),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",v||@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>{const m=@lazyLoadStream(this,v);if(m)@createReadableStreamController(this,m,f)})}else @putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(f,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",@undefined),@createReadableStreamController(this,_,f);return this})\n"; +const char* const s_readableStreamInitializeReadableStreamCode = "(function (_,B){\"use strict\";if(_===@undefined)_={@bunNativeType:0,@bunNativePtr:0,@lazy:!1};if(B===@undefined)B={};if(!@isObject(_))@throwTypeError(\"ReadableStream constructor takes an object as first argument\");if(B!==@undefined&&!@isObject(B))@throwTypeError(\"ReadableStream constructor takes an object as second argument, if any\");@putByIdDirectPrivate(this,\"state\",@streamReadable),@putByIdDirectPrivate(this,\"reader\",@undefined),@putByIdDirectPrivate(this,\"storedError\",@undefined),@putByIdDirectPrivate(this,\"disturbed\",!1),@putByIdDirectPrivate(this,\"readableStreamController\",null),@putByIdDirectPrivate(this,\"bunNativeType\",@getByIdDirectPrivate(_,\"bunNativeType\")\?\?0),@putByIdDirectPrivate(this,\"bunNativePtr\",@getByIdDirectPrivate(_,\"bunNativePtr\")\?\?0);const I=_.type===\"direct\",f=!!_.@lazy,m=I||f;if(@getByIdDirectPrivate(_,\"pull\")!==@undefined&&!m){const v=@getByIdDirectPrivate(B,\"size\"),b=@getByIdDirectPrivate(B,\"highWaterMark\");return @putByIdDirectPrivate(this,\"highWaterMark\",b),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@setupReadableStreamDefaultController(this,_,v,b!==@undefined\?b:1,@getByIdDirectPrivate(_,\"start\"),@getByIdDirectPrivate(_,\"pull\"),@getByIdDirectPrivate(_,\"cancel\")),this}if(I)@putByIdDirectPrivate(this,\"underlyingSource\",_),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(B,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>@createReadableStreamController(this,_,B));else if(m){const v=_.autoAllocateChunkSize;@putByIdDirectPrivate(this,\"highWaterMark\",@undefined),@putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",v||@getByIdDirectPrivate(B,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",()=>{const b=@lazyLoadStream(this,v);if(b)@createReadableStreamController(this,b,B)})}else @putByIdDirectPrivate(this,\"underlyingSource\",@undefined),@putByIdDirectPrivate(this,\"highWaterMark\",@getByIdDirectPrivate(B,\"highWaterMark\")),@putByIdDirectPrivate(this,\"start\",@undefined),@createReadableStreamController(this,_,B);return this})\n"; // readableStreamToArray const JSC::ConstructAbility s_readableStreamReadableStreamToArrayCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2456,7 +2456,7 @@ const JSC::ConstructorKind s_readableStreamReadableStreamToTextCodeConstructorKi const JSC::ImplementationVisibility s_readableStreamReadableStreamToTextCodeImplementationVisibility = JSC::ImplementationVisibility::Private; const int s_readableStreamReadableStreamToTextCodeLength = 171; static const JSC::Intrinsic s_readableStreamReadableStreamToTextCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToTextCode = "(function (p){\"use strict\";var _=@getByIdDirectPrivate(p,\"underlyingSource\");if(_!==@undefined)return @readableStreamToTextDirect(p,_);return @readableStreamIntoText(p)})\n"; +const char* const s_readableStreamReadableStreamToTextCode = "(function (_){\"use strict\";var p=@getByIdDirectPrivate(_,\"underlyingSource\");if(p!==@undefined)return @readableStreamToTextDirect(_,p);return @readableStreamIntoText(_)})\n"; // readableStreamToArrayBuffer const JSC::ConstructAbility s_readableStreamReadableStreamToArrayBufferCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2464,7 +2464,7 @@ const JSC::ConstructorKind s_readableStreamReadableStreamToArrayBufferCodeConstr const JSC::ImplementationVisibility s_readableStreamReadableStreamToArrayBufferCodeImplementationVisibility = JSC::ImplementationVisibility::Private; const int s_readableStreamReadableStreamToArrayBufferCodeLength = 270; static const JSC::Intrinsic s_readableStreamReadableStreamToArrayBufferCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamReadableStreamToArrayBufferCode = "(function (_){\"use strict\";var p=@getByIdDirectPrivate(_,\"underlyingSource\");if(p!==@undefined)return @readableStreamToArrayBufferDirect(_,p);var b=@Bun.readableStreamToArray(_);if(@isPromise(b))return b.then(@Bun.concatArrayBuffers);return @Bun.concatArrayBuffers(b)})\n"; +const char* const s_readableStreamReadableStreamToArrayBufferCode = "(function (_){\"use strict\";var b=@getByIdDirectPrivate(_,\"underlyingSource\");if(b!==@undefined)return @readableStreamToArrayBufferDirect(_,b);var p=@Bun.readableStreamToArray(_);if(@isPromise(p))return p.then(@Bun.concatArrayBuffers);return @Bun.concatArrayBuffers(p)})\n"; // readableStreamToJSON const JSC::ConstructAbility s_readableStreamReadableStreamToJSONCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2520,7 +2520,7 @@ const JSC::ConstructorKind s_readableStreamGetReaderCodeConstructorKind = JSC::C const JSC::ImplementationVisibility s_readableStreamGetReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamGetReaderCodeLength = 470; static const JSC::Intrinsic s_readableStreamGetReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamGetReaderCode = "(function (b){\"use strict\";if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"getReader\");const e=@toDictionary(b,{},\"ReadableStream.getReader takes an object as first argument\").mode;if(e===@undefined){var n=@getByIdDirectPrivate(this,\"start\");if(n)@putByIdDirectPrivate(this,\"start\",@undefined),n();return new @ReadableStreamDefaultReader(this)}if(e==\"byob\")return new @ReadableStreamBYOBReader(this);@throwTypeError(\"Invalid mode is specified\")})\n"; +const char* const s_readableStreamGetReaderCode = "(function (e){\"use strict\";if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"getReader\");const n=@toDictionary(e,{},\"ReadableStream.getReader takes an object as first argument\").mode;if(n===@undefined){var b=@getByIdDirectPrivate(this,\"start\");if(b)@putByIdDirectPrivate(this,\"start\",@undefined),b();return new @ReadableStreamDefaultReader(this)}if(n==\"byob\")return new @ReadableStreamBYOBReader(this);@throwTypeError(\"Invalid mode is specified\")})\n"; // pipeThrough const JSC::ConstructAbility s_readableStreamPipeThroughCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2528,7 +2528,7 @@ const JSC::ConstructorKind s_readableStreamPipeThroughCodeConstructorKind = JSC: const JSC::ImplementationVisibility s_readableStreamPipeThroughCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamPipeThroughCodeLength = 859; static const JSC::Intrinsic s_readableStreamPipeThroughCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamPipeThroughCode = "(function (q,_){\"use strict\";const y=q,c=y.readable;if(!@isReadableStream(c))throw @makeTypeError(\"readable should be ReadableStream\");const x=y.writable,u=@getInternalWritableStream(x);if(!@isWritableStream(u))throw @makeTypeError(\"writable should be WritableStream\");let h=!1,j=!1,k=!1,d;if(!@isUndefinedOrNull(_)){if(!@isObject(_))throw @makeTypeError(\"options must be an object\");if(j=!!_.preventAbort,k=!!_.preventCancel,h=!!_.preventClose,d=_.signal,d!==@undefined&&!@isAbortSignal(d))throw @makeTypeError(\"options.signal must be AbortSignal\")}if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"pipeThrough\");if(@isReadableStreamLocked(this))throw @makeTypeError(\"ReadableStream is locked\");if(@isWritableStreamLocked(u))throw @makeTypeError(\"WritableStream is locked\");return @readableStreamPipeToWritableStream(this,u,h,j,k,d),c})\n"; +const char* const s_readableStreamPipeThroughCode = "(function (_,d){\"use strict\";const u=_,y=u.readable;if(!@isReadableStream(y))throw @makeTypeError(\"readable should be ReadableStream\");const c=u.writable,h=@getInternalWritableStream(c);if(!@isWritableStream(h))throw @makeTypeError(\"writable should be WritableStream\");let j=!1,k=!1,q=!1,x;if(!@isUndefinedOrNull(d)){if(!@isObject(d))throw @makeTypeError(\"options must be an object\");if(k=!!d.preventAbort,q=!!d.preventCancel,j=!!d.preventClose,x=d.signal,x!==@undefined&&!@isAbortSignal(x))throw @makeTypeError(\"options.signal must be AbortSignal\")}if(!@isReadableStream(this))throw @makeThisTypeError(\"ReadableStream\",\"pipeThrough\");if(@isReadableStreamLocked(this))throw @makeTypeError(\"ReadableStream is locked\");if(@isWritableStreamLocked(h))throw @makeTypeError(\"WritableStream is locked\");return @readableStreamPipeToWritableStream(this,h,j,k,q,x),y})\n"; // pipeTo const JSC::ConstructAbility s_readableStreamPipeToCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2536,7 +2536,7 @@ const JSC::ConstructorKind s_readableStreamPipeToCodeConstructorKind = JSC::Cons const JSC::ImplementationVisibility s_readableStreamPipeToCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamPipeToCodeLength = 914; static const JSC::Intrinsic s_readableStreamPipeToCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamPipeToCode = "(function (S){\"use strict\";if(!@isReadableStream(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStream\",\"pipeTo\"));if(@isReadableStreamLocked(this))return @Promise.@reject(@makeTypeError(\"ReadableStream is locked\"));let m=@argument(1),j=!1,E=!1,R=!1,u;if(!@isUndefinedOrNull(m)){if(!@isObject(m))return @Promise.@reject(@makeTypeError(\"options must be an object\"));try{E=!!m.preventAbort,R=!!m.preventCancel,j=!!m.preventClose,u=m.signal}catch(b){return @Promise.@reject(b)}if(u!==@undefined&&!@isAbortSignal(u))return @Promise.@reject(@makeTypeError(\"options.signal must be AbortSignal\"))}const _=@getInternalWritableStream(S);if(!@isWritableStream(_))return @Promise.@reject(@makeTypeError(\"ReadableStream pipeTo requires a WritableStream\"));if(@isWritableStreamLocked(_))return @Promise.@reject(@makeTypeError(\"WritableStream is locked\"));return @readableStreamPipeToWritableStream(this,_,j,E,R,u)})\n"; +const char* const s_readableStreamPipeToCode = "(function (m){\"use strict\";if(!@isReadableStream(this))return @Promise.@reject(@makeThisTypeError(\"ReadableStream\",\"pipeTo\"));if(@isReadableStreamLocked(this))return @Promise.@reject(@makeTypeError(\"ReadableStream is locked\"));let j=@argument(1),u=!1,_=!1,E=!1,R;if(!@isUndefinedOrNull(j)){if(!@isObject(j))return @Promise.@reject(@makeTypeError(\"options must be an object\"));try{_=!!j.preventAbort,E=!!j.preventCancel,u=!!j.preventClose,R=j.signal}catch(b){return @Promise.@reject(b)}if(R!==@undefined&&!@isAbortSignal(R))return @Promise.@reject(@makeTypeError(\"options.signal must be AbortSignal\"))}const S=@getInternalWritableStream(m);if(!@isWritableStream(S))return @Promise.@reject(@makeTypeError(\"ReadableStream pipeTo requires a WritableStream\"));if(@isWritableStreamLocked(S))return @Promise.@reject(@makeTypeError(\"WritableStream is locked\"));return @readableStreamPipeToWritableStream(this,S,u,_,E,R)})\n"; // tee const JSC::ConstructAbility s_readableStreamTeeCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2560,7 +2560,7 @@ const JSC::ConstructorKind s_readableStreamValuesCodeConstructorKind = JSC::Cons const JSC::ImplementationVisibility s_readableStreamValuesCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamValuesCodeLength = 129; static const JSC::Intrinsic s_readableStreamValuesCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamValuesCode = "(function (_){\"use strict\";var r=@ReadableStream.prototype;return @readableStreamDefineLazyIterators(r),r.values.@call(this,_)})\n"; +const char* const s_readableStreamValuesCode = "(function (r){\"use strict\";var _=@ReadableStream.prototype;return @readableStreamDefineLazyIterators(_),_.values.@call(this,r)})\n"; // lazyAsyncIterator const JSC::ConstructAbility s_readableStreamLazyAsyncIteratorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2586,7 +2586,7 @@ const JSC::ConstructorKind s_readableStreamDefaultControllerInitializeReadableSt const JSC::ImplementationVisibility s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeLength = 263; static const JSC::Intrinsic s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCode = "(function (_,p,C,R){\"use strict\";if(arguments.length!==5&&arguments[4]!==@isReadableStream)@throwTypeError(\"ReadableStreamDefaultController constructor should not be called directly\");return @privateInitializeReadableStreamDefaultController.@call(this,_,p,C,R)})\n"; +const char* const s_readableStreamDefaultControllerInitializeReadableStreamDefaultControllerCode = "(function (_,R,C,p){\"use strict\";if(arguments.length!==5&&arguments[4]!==@isReadableStream)@throwTypeError(\"ReadableStreamDefaultController constructor should not be called directly\");return @privateInitializeReadableStreamDefaultController.@call(this,_,R,C,p)})\n"; // enqueue const JSC::ConstructAbility s_readableStreamDefaultControllerEnqueueCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2636,7 +2636,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsPrivateInitializeReadabl const JSC::ImplementationVisibility s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeLength = 1654; static const JSC::Intrinsic s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCode = "(function (b,p,R){\"use strict\";if(!@isReadableStream(b))@throwTypeError(\"ReadableByteStreamController needs a ReadableStream\");if(@getByIdDirectPrivate(b,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");@putByIdDirectPrivate(this,\"controlledReadableStream\",b),@putByIdDirectPrivate(this,\"underlyingByteSource\",p),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@readableByteStreamControllerClearPendingPullIntos(this),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",0),@putByIdDirectPrivate(this,\"closeRequested\",!1);let f=@toNumber(R);if(@isNaN(f)||f<0)@throwRangeError(\"highWaterMark value is negative or not a number\");@putByIdDirectPrivate(this,\"strategyHWM\",f);let _=p.autoAllocateChunkSize;if(_!==@undefined){if(_=@toNumber(_),_<=0||_===@Infinity||_===-@Infinity)@throwRangeError(\"autoAllocateChunkSize value is negative or equal to positive or negative infinity\")}@putByIdDirectPrivate(this,\"autoAllocateChunkSize\",_),@putByIdDirectPrivate(this,\"pendingPullIntos\",@createFIFO());const v=this;return @promiseInvokeOrNoopNoCatch(@getByIdDirectPrivate(v,\"underlyingByteSource\"),\"start\",[v]).@then(()=>{@putByIdDirectPrivate(v,\"started\",1),@assert(!@getByIdDirectPrivate(v,\"pulling\")),@assert(!@getByIdDirectPrivate(v,\"pullAgain\")),@readableByteStreamControllerCallPullIfNeeded(v)},(d)=>{if(@getByIdDirectPrivate(b,\"state\")===@streamReadable)@readableByteStreamControllerError(v,d)}),@putByIdDirectPrivate(this,\"cancel\",@readableByteStreamControllerCancel),@putByIdDirectPrivate(this,\"pull\",@readableByteStreamControllerPull),this})\n"; +const char* const s_readableByteStreamInternalsPrivateInitializeReadableByteStreamControllerCode = "(function (_,b,p){\"use strict\";if(!@isReadableStream(_))@throwTypeError(\"ReadableByteStreamController needs a ReadableStream\");if(@getByIdDirectPrivate(_,\"readableStreamController\")!==null)@throwTypeError(\"ReadableStream already has a controller\");@putByIdDirectPrivate(this,\"controlledReadableStream\",_),@putByIdDirectPrivate(this,\"underlyingByteSource\",b),@putByIdDirectPrivate(this,\"pullAgain\",!1),@putByIdDirectPrivate(this,\"pulling\",!1),@readableByteStreamControllerClearPendingPullIntos(this),@putByIdDirectPrivate(this,\"queue\",@newQueue()),@putByIdDirectPrivate(this,\"started\",0),@putByIdDirectPrivate(this,\"closeRequested\",!1);let v=@toNumber(p);if(@isNaN(v)||v<0)@throwRangeError(\"highWaterMark value is negative or not a number\");@putByIdDirectPrivate(this,\"strategyHWM\",v);let R=b.autoAllocateChunkSize;if(R!==@undefined){if(R=@toNumber(R),R<=0||R===@Infinity||R===-@Infinity)@throwRangeError(\"autoAllocateChunkSize value is negative or equal to positive or negative infinity\")}@putByIdDirectPrivate(this,\"autoAllocateChunkSize\",R),@putByIdDirectPrivate(this,\"pendingPullIntos\",@createFIFO());const f=this;return @promiseInvokeOrNoopNoCatch(@getByIdDirectPrivate(f,\"underlyingByteSource\"),\"start\",[f]).@then(()=>{@putByIdDirectPrivate(f,\"started\",1),@assert(!@getByIdDirectPrivate(f,\"pulling\")),@assert(!@getByIdDirectPrivate(f,\"pullAgain\")),@readableByteStreamControllerCallPullIfNeeded(f)},(d)=>{if(@getByIdDirectPrivate(_,\"state\")===@streamReadable)@readableByteStreamControllerError(f,d)}),@putByIdDirectPrivate(this,\"cancel\",@readableByteStreamControllerCancel),@putByIdDirectPrivate(this,\"pull\",@readableByteStreamControllerPull),this})\n"; // readableStreamByteStreamControllerStart const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamByteStreamControllerStartCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2684,7 +2684,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeLength = 248; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCancelCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCancelCode = "(function (a,u){\"use strict\";var _=@getByIdDirectPrivate(a,\"pendingPullIntos\"),p=_.peek();if(p)p.bytesFilled=0;return @putByIdDirectPrivate(a,\"queue\",@newQueue()),@promiseInvokeOrNoop(@getByIdDirectPrivate(a,\"underlyingByteSource\"),\"cancel\",[u])})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerCancelCode = "(function (p,u){\"use strict\";var _=@getByIdDirectPrivate(p,\"pendingPullIntos\"),a=_.peek();if(a)a.bytesFilled=0;return @putByIdDirectPrivate(p,\"queue\",@newQueue()),@promiseInvokeOrNoop(@getByIdDirectPrivate(p,\"underlyingByteSource\"),\"cancel\",[u])})\n"; // readableByteStreamControllerError const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerErrorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2700,7 +2700,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeLength = 569; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCloseCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCloseCode = "(function (d){\"use strict\";if(@assert(!@getByIdDirectPrivate(d,\"closeRequested\")),@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(d,\"controlledReadableStream\"),\"state\")===@streamReadable),@getByIdDirectPrivate(d,\"queue\").size>0){@putByIdDirectPrivate(d,\"closeRequested\",!0);return}var a=@getByIdDirectPrivate(d,\"pendingPullIntos\")\?.peek();if(a){if(a.bytesFilled>0){const u=@makeTypeError(\"Close requested while there remain pending bytes\");throw @readableByteStreamControllerError(d,u),u}}@readableStreamClose(@getByIdDirectPrivate(d,\"controlledReadableStream\"))})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerCloseCode = "(function (u){\"use strict\";if(@assert(!@getByIdDirectPrivate(u,\"closeRequested\")),@assert(@getByIdDirectPrivate(@getByIdDirectPrivate(u,\"controlledReadableStream\"),\"state\")===@streamReadable),@getByIdDirectPrivate(u,\"queue\").size>0){@putByIdDirectPrivate(u,\"closeRequested\",!0);return}var d=@getByIdDirectPrivate(u,\"pendingPullIntos\")\?.peek();if(d){if(d.bytesFilled>0){const a=@makeTypeError(\"Close requested while there remain pending bytes\");throw @readableByteStreamControllerError(u,a),a}}@readableStreamClose(@getByIdDirectPrivate(u,\"controlledReadableStream\"))})\n"; // readableByteStreamControllerClearPendingPullIntos const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerClearPendingPullIntosCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2716,7 +2716,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeLength = 272; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCode = "(function (u){\"use strict\";const _=@getByIdDirectPrivate(u,\"controlledReadableStream\"),d=@getByIdDirectPrivate(_,\"state\");if(d===@streamErrored)return null;if(d===@streamClosed)return 0;return @getByIdDirectPrivate(u,\"strategyHWM\")-@getByIdDirectPrivate(u,\"queue\").size})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerGetDesiredSizeCode = "(function (_){\"use strict\";const u=@getByIdDirectPrivate(_,\"controlledReadableStream\"),d=@getByIdDirectPrivate(u,\"state\");if(d===@streamErrored)return null;if(d===@streamClosed)return 0;return @getByIdDirectPrivate(_,\"strategyHWM\")-@getByIdDirectPrivate(_,\"queue\").size})\n"; // readableStreamHasBYOBReader const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamHasBYOBReaderCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2732,7 +2732,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamHasDefault const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeLength = 128; static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamHasDefaultReaderCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamHasDefaultReaderCode = "(function (n){\"use strict\";const l=@getByIdDirectPrivate(n,\"reader\");return l!==@undefined&&@isReadableStreamDefaultReader(l)})\n"; +const char* const s_readableByteStreamInternalsReadableStreamHasDefaultReaderCode = "(function (l){\"use strict\";const n=@getByIdDirectPrivate(l,\"reader\");return n!==@undefined&&@isReadableStreamDefaultReader(n)})\n"; // readableByteStreamControllerHandleQueueDrain const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerHandleQueueDrainCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2748,7 +2748,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerPullCodeLength = 1005; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullCode = "(function (_){\"use strict\";const P=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamHasDefaultReader(P)),@getByIdDirectPrivate(_,\"queue\").content\?.isNotEmpty()){const d=@getByIdDirectPrivate(_,\"queue\").content.shift();@getByIdDirectPrivate(_,\"queue\").size-=d.byteLength,@readableByteStreamControllerHandleQueueDrain(_);let h;try{h=new @Uint8Array(d.buffer,d.byteOffset,d.byteLength)}catch(F){return @Promise.@reject(F)}return @createFulfilledPromise({value:h,done:!1})}if(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\")!==@undefined){let d;try{d=@createUninitializedArrayBuffer(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"))}catch(F){return @Promise.@reject(F)}const h={buffer:d,byteOffset:0,byteLength:@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"),bytesFilled:0,elementSize:1,ctor:@Uint8Array,readerType:\"default\"};@getByIdDirectPrivate(_,\"pendingPullIntos\").push(h)}const R=@readableStreamAddReadRequest(P);return @readableByteStreamControllerCallPullIfNeeded(_),R})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullCode = "(function (_){\"use strict\";const F=@getByIdDirectPrivate(_,\"controlledReadableStream\");if(@assert(@readableStreamHasDefaultReader(F)),@getByIdDirectPrivate(_,\"queue\").content\?.isNotEmpty()){const P=@getByIdDirectPrivate(_,\"queue\").content.shift();@getByIdDirectPrivate(_,\"queue\").size-=P.byteLength,@readableByteStreamControllerHandleQueueDrain(_);let R;try{R=new @Uint8Array(P.buffer,P.byteOffset,P.byteLength)}catch(h){return @Promise.@reject(h)}return @createFulfilledPromise({value:R,done:!1})}if(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\")!==@undefined){let P;try{P=@createUninitializedArrayBuffer(@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"))}catch(h){return @Promise.@reject(h)}const R={buffer:P,byteOffset:0,byteLength:@getByIdDirectPrivate(_,\"autoAllocateChunkSize\"),bytesFilled:0,elementSize:1,ctor:@Uint8Array,readerType:\"default\"};@getByIdDirectPrivate(_,\"pendingPullIntos\").push(R)}const d=@readableStreamAddReadRequest(F);return @readableByteStreamControllerCallPullIfNeeded(_),d})\n"; // readableByteStreamControllerShouldCallPull const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2756,7 +2756,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeLength = 619; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCode = "(function (u){\"use strict\";const P=@getByIdDirectPrivate(u,\"controlledReadableStream\");if(@getByIdDirectPrivate(P,\"state\")!==@streamReadable)return!1;if(@getByIdDirectPrivate(u,\"closeRequested\"))return!1;if(!(@getByIdDirectPrivate(u,\"started\")>0))return!1;const b=@getByIdDirectPrivate(P,\"reader\");if(b&&(@getByIdDirectPrivate(b,\"readRequests\")\?.isNotEmpty()||!!@getByIdDirectPrivate(b,\"bunNativePtr\")))return!0;if(@readableStreamHasBYOBReader(P)&&@getByIdDirectPrivate(@getByIdDirectPrivate(P,\"reader\"),\"readIntoRequests\")\?.isNotEmpty())return!0;if(@readableByteStreamControllerGetDesiredSize(u)>0)return!0;return!1})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerShouldCallPullCode = "(function (b){\"use strict\";const P=@getByIdDirectPrivate(b,\"controlledReadableStream\");if(@getByIdDirectPrivate(P,\"state\")!==@streamReadable)return!1;if(@getByIdDirectPrivate(b,\"closeRequested\"))return!1;if(!(@getByIdDirectPrivate(b,\"started\")>0))return!1;const u=@getByIdDirectPrivate(P,\"reader\");if(u&&(@getByIdDirectPrivate(u,\"readRequests\")\?.isNotEmpty()||!!@getByIdDirectPrivate(u,\"bunNativePtr\")))return!0;if(@readableStreamHasBYOBReader(P)&&@getByIdDirectPrivate(@getByIdDirectPrivate(P,\"reader\"),\"readIntoRequests\")\?.isNotEmpty())return!0;if(@readableByteStreamControllerGetDesiredSize(b)>0)return!0;return!1})\n"; // readableByteStreamControllerCallPullIfNeeded const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerCallPullIfNeededCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2788,7 +2788,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeLength = 1076; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCode = "(function (d,i){\"use strict\";const _=@getByIdDirectPrivate(d,\"controlledReadableStream\");switch(@assert(!@getByIdDirectPrivate(d,\"closeRequested\")),@assert(@getByIdDirectPrivate(_,\"state\")===@streamReadable),@getByIdDirectPrivate(_,\"reader\")\?@readableStreamReaderKind(@getByIdDirectPrivate(_,\"reader\")):0){case 1:{if(!@getByIdDirectPrivate(@getByIdDirectPrivate(_,\"reader\"),\"readRequests\")\?.isNotEmpty())@readableByteStreamControllerEnqueueChunk(d,@transferBufferToCurrentRealm(i.buffer),i.byteOffset,i.byteLength);else{@assert(!@getByIdDirectPrivate(d,\"queue\").content.size());const f=i.constructor===@Uint8Array\?i:new @Uint8Array(i.buffer,i.byteOffset,i.byteLength);@readableStreamFulfillReadRequest(_,f,!1)}break}case 2:{@readableByteStreamControllerEnqueueChunk(d,@transferBufferToCurrentRealm(i.buffer),i.byteOffset,i.byteLength),@readableByteStreamControllerProcessPullDescriptors(d);break}case 3:break;default:{@assert(!@isReadableStreamLocked(_)),@readableByteStreamControllerEnqueueChunk(d,@transferBufferToCurrentRealm(i.buffer),i.byteOffset,i.byteLength);break}}})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueCode = "(function (i,_){\"use strict\";const d=@getByIdDirectPrivate(i,\"controlledReadableStream\");switch(@assert(!@getByIdDirectPrivate(i,\"closeRequested\")),@assert(@getByIdDirectPrivate(d,\"state\")===@streamReadable),@getByIdDirectPrivate(d,\"reader\")\?@readableStreamReaderKind(@getByIdDirectPrivate(d,\"reader\")):0){case 1:{if(!@getByIdDirectPrivate(@getByIdDirectPrivate(d,\"reader\"),\"readRequests\")\?.isNotEmpty())@readableByteStreamControllerEnqueueChunk(i,@transferBufferToCurrentRealm(_.buffer),_.byteOffset,_.byteLength);else{@assert(!@getByIdDirectPrivate(i,\"queue\").content.size());const f=_.constructor===@Uint8Array\?_:new @Uint8Array(_.buffer,_.byteOffset,_.byteLength);@readableStreamFulfillReadRequest(d,f,!1)}break}case 2:{@readableByteStreamControllerEnqueueChunk(i,@transferBufferToCurrentRealm(_.buffer),_.byteOffset,_.byteLength),@readableByteStreamControllerProcessPullDescriptors(i);break}case 3:break;default:{@assert(!@isReadableStreamLocked(d)),@readableByteStreamControllerEnqueueChunk(i,@transferBufferToCurrentRealm(_.buffer),_.byteOffset,_.byteLength);break}}})\n"; // readableByteStreamControllerEnqueueChunk const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2796,7 +2796,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeLength = 160; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCode = "(function (_,d,p,a){\"use strict\";@getByIdDirectPrivate(_,\"queue\").content.push({buffer:d,byteOffset:p,byteLength:a}),@getByIdDirectPrivate(_,\"queue\").size+=a})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerEnqueueChunkCode = "(function (_,a,d,p){\"use strict\";@getByIdDirectPrivate(_,\"queue\").content.push({buffer:a,byteOffset:d,byteLength:p}),@getByIdDirectPrivate(_,\"queue\").size+=p})\n"; // readableByteStreamControllerRespondWithNewView const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2804,7 +2804,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeLength = 417; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCode = "(function (d,u){\"use strict\";@assert(@getByIdDirectPrivate(d,\"pendingPullIntos\").isNotEmpty());let a=@getByIdDirectPrivate(d,\"pendingPullIntos\").peek();if(a.byteOffset+a.bytesFilled!==u.byteOffset)@throwRangeError(\"Invalid value for view.byteOffset\");if(a.byteLength!==u.byteLength)@throwRangeError(\"Invalid value for view.byteLength\");a.buffer=u.buffer,@readableByteStreamControllerRespondInternal(d,u.byteLength)})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondWithNewViewCode = "(function (a,u){\"use strict\";@assert(@getByIdDirectPrivate(a,\"pendingPullIntos\").isNotEmpty());let d=@getByIdDirectPrivate(a,\"pendingPullIntos\").peek();if(d.byteOffset+d.bytesFilled!==u.byteOffset)@throwRangeError(\"Invalid value for view.byteOffset\");if(d.byteLength!==u.byteLength)@throwRangeError(\"Invalid value for view.byteLength\");d.buffer=u.buffer,@readableByteStreamControllerRespondInternal(a,u.byteLength)})\n"; // readableByteStreamControllerRespond const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2812,7 +2812,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeLength = 251; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondCode = "(function (I,u){\"use strict\";if(u=@toNumber(u),@isNaN(u)||u===@Infinity||u<0)@throwRangeError(\"bytesWritten has an incorrect value\");@assert(@getByIdDirectPrivate(I,\"pendingPullIntos\").isNotEmpty()),@readableByteStreamControllerRespondInternal(I,u)})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondCode = "(function (u,I){\"use strict\";if(I=@toNumber(I),@isNaN(I)||I===@Infinity||I<0)@throwRangeError(\"bytesWritten has an incorrect value\");@assert(@getByIdDirectPrivate(u,\"pendingPullIntos\").isNotEmpty()),@readableByteStreamControllerRespondInternal(u,I)})\n"; // readableByteStreamControllerRespondInternal const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2820,7 +2820,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeLength = 464; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCode = "(function (d,u){\"use strict\";let _=@getByIdDirectPrivate(d,\"pendingPullIntos\").peek(),k=@getByIdDirectPrivate(d,\"controlledReadableStream\");if(@getByIdDirectPrivate(k,\"state\")===@streamClosed){if(u!==0)@throwTypeError(\"bytesWritten is different from 0 even though stream is closed\");@readableByteStreamControllerRespondInClosedState(d,_)}else @assert(@getByIdDirectPrivate(k,\"state\")===@streamReadable),@readableByteStreamControllerRespondInReadableState(d,u,_)})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInternalCode = "(function (d,_){\"use strict\";let u=@getByIdDirectPrivate(d,\"pendingPullIntos\").peek(),k=@getByIdDirectPrivate(d,\"controlledReadableStream\");if(@getByIdDirectPrivate(k,\"state\")===@streamClosed){if(_!==0)@throwTypeError(\"bytesWritten is different from 0 even though stream is closed\");@readableByteStreamControllerRespondInClosedState(d,u)}else @assert(@getByIdDirectPrivate(k,\"state\")===@streamReadable),@readableByteStreamControllerRespondInReadableState(d,_,u)})\n"; // readableByteStreamControllerRespondInReadableState const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2828,7 +2828,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeLength = 799; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCode = "(function (w,_,f){\"use strict\";if(f.bytesFilled+_>f.byteLength)@throwRangeError(\"bytesWritten value is too great\");if(@assert(@getByIdDirectPrivate(w,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(w,\"pendingPullIntos\").peek()===f),@readableByteStreamControllerInvalidateBYOBRequest(w),f.bytesFilled+=_,f.bytesFilled<f.elementSize)return;@readableByteStreamControllerShiftPendingDescriptor(w);const R=f.bytesFilled%f.elementSize;if(R>0){const h=f.byteOffset+f.bytesFilled,g=@cloneArrayBuffer(f.buffer,h-R,R);@readableByteStreamControllerEnqueueChunk(w,g,0,g.byteLength)}f.buffer=@transferBufferToCurrentRealm(f.buffer),f.bytesFilled-=R,@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(w,\"controlledReadableStream\"),f),@readableByteStreamControllerProcessPullDescriptors(w)})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInReadableStateCode = "(function (w,g,R){\"use strict\";if(R.bytesFilled+g>R.byteLength)@throwRangeError(\"bytesWritten value is too great\");if(@assert(@getByIdDirectPrivate(w,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(w,\"pendingPullIntos\").peek()===R),@readableByteStreamControllerInvalidateBYOBRequest(w),R.bytesFilled+=g,R.bytesFilled<R.elementSize)return;@readableByteStreamControllerShiftPendingDescriptor(w);const _=R.bytesFilled%R.elementSize;if(_>0){const h=R.byteOffset+R.bytesFilled,f=@cloneArrayBuffer(R.buffer,h-_,_);@readableByteStreamControllerEnqueueChunk(w,f,0,f.byteLength)}R.buffer=@transferBufferToCurrentRealm(R.buffer),R.bytesFilled-=_,@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(w,\"controlledReadableStream\"),R),@readableByteStreamControllerProcessPullDescriptors(w)})\n"; // readableByteStreamControllerRespondInClosedState const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2836,7 +2836,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeLength = 502; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCode = "(function (a,_){\"use strict\";if(_.buffer=@transferBufferToCurrentRealm(_.buffer),@assert(_.bytesFilled===0),@readableStreamHasBYOBReader(@getByIdDirectPrivate(a,\"controlledReadableStream\")))while(@getByIdDirectPrivate(@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"reader\"),\"readIntoRequests\")\?.isNotEmpty()){let d=@readableByteStreamControllerShiftPendingDescriptor(a);@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(a,\"controlledReadableStream\"),d)}})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerRespondInClosedStateCode = "(function (a,d){\"use strict\";if(d.buffer=@transferBufferToCurrentRealm(d.buffer),@assert(d.bytesFilled===0),@readableStreamHasBYOBReader(@getByIdDirectPrivate(a,\"controlledReadableStream\")))while(@getByIdDirectPrivate(@getByIdDirectPrivate(@getByIdDirectPrivate(a,\"controlledReadableStream\"),\"reader\"),\"readIntoRequests\")\?.isNotEmpty()){let _=@readableByteStreamControllerShiftPendingDescriptor(a);@readableByteStreamControllerCommitDescriptor(@getByIdDirectPrivate(a,\"controlledReadableStream\"),_)}})\n"; // readableByteStreamControllerProcessPullDescriptors const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerProcessPullDescriptorsCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2852,7 +2852,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeLength = 970; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCode = "(function (q,_){\"use strict\";const H=_.bytesFilled-_.bytesFilled%_.elementSize,z=@getByIdDirectPrivate(q,\"queue\").size<_.byteLength-_.bytesFilled\?@getByIdDirectPrivate(q,\"queue\").size:_.byteLength-_.bytesFilled,E=_.bytesFilled+z,G=E-E%_.elementSize;let v=z,w=!1;if(G>H)v=G-_.bytesFilled,w=!0;while(v>0){let j=@getByIdDirectPrivate(q,\"queue\").content.peek();const k=v<j.byteLength\?v:j.byteLength,J=_.byteOffset+_.bytesFilled;if(new @Uint8Array(_.buffer).set(new @Uint8Array(j.buffer,j.byteOffset,k),J),j.byteLength===k)@getByIdDirectPrivate(q,\"queue\").content.shift();else j.byteOffset+=k,j.byteLength-=k;@getByIdDirectPrivate(q,\"queue\").size-=k,@assert(@getByIdDirectPrivate(q,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(q,\"pendingPullIntos\").peek()===_),@readableByteStreamControllerInvalidateBYOBRequest(q),_.bytesFilled+=k,v-=k}if(!w)@assert(@getByIdDirectPrivate(q,\"queue\").size===0),@assert(_.bytesFilled>0),@assert(_.bytesFilled<_.elementSize);return w})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerFillDescriptorFromQueueCode = "(function (_,q){\"use strict\";const v=q.bytesFilled-q.bytesFilled%q.elementSize,w=@getByIdDirectPrivate(_,\"queue\").size<q.byteLength-q.bytesFilled\?@getByIdDirectPrivate(_,\"queue\").size:q.byteLength-q.bytesFilled,j=q.bytesFilled+w,z=j-j%q.elementSize;let G=w,H=!1;if(z>v)G=z-q.bytesFilled,H=!0;while(G>0){let k=@getByIdDirectPrivate(_,\"queue\").content.peek();const J=G<k.byteLength\?G:k.byteLength,E=q.byteOffset+q.bytesFilled;if(new @Uint8Array(q.buffer).set(new @Uint8Array(k.buffer,k.byteOffset,J),E),k.byteLength===J)@getByIdDirectPrivate(_,\"queue\").content.shift();else k.byteOffset+=J,k.byteLength-=J;@getByIdDirectPrivate(_,\"queue\").size-=J,@assert(@getByIdDirectPrivate(_,\"pendingPullIntos\").isEmpty()||@getByIdDirectPrivate(_,\"pendingPullIntos\").peek()===q),@readableByteStreamControllerInvalidateBYOBRequest(_),q.bytesFilled+=J,G-=J}if(!H)@assert(@getByIdDirectPrivate(_,\"queue\").size===0),@assert(q.bytesFilled>0),@assert(q.bytesFilled<q.elementSize);return H})\n"; // readableByteStreamControllerShiftPendingDescriptor const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerShiftPendingDescriptorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2876,7 +2876,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeLength = 386; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCode = "(function (_,b){\"use strict\";@assert(@getByIdDirectPrivate(_,\"state\")!==@streamErrored);let g=!1;if(@getByIdDirectPrivate(_,\"state\")===@streamClosed)@assert(!b.bytesFilled),g=!0;let h=@readableByteStreamControllerConvertDescriptor(b);if(b.readerType===\"default\")@readableStreamFulfillReadRequest(_,h,g);else @assert(b.readerType===\"byob\"),@readableStreamFulfillReadIntoRequest(_,h,g)})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerCommitDescriptorCode = "(function (h,g){\"use strict\";@assert(@getByIdDirectPrivate(h,\"state\")!==@streamErrored);let _=!1;if(@getByIdDirectPrivate(h,\"state\")===@streamClosed)@assert(!g.bytesFilled),_=!0;let b=@readableByteStreamControllerConvertDescriptor(g);if(g.readerType===\"default\")@readableStreamFulfillReadRequest(h,b,_);else @assert(g.readerType===\"byob\"),@readableStreamFulfillReadIntoRequest(h,b,_)})\n"; // readableByteStreamControllerConvertDescriptor const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerConvertDescriptorCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2892,7 +2892,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamFulfillRea const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeLength = 161; static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCode = "(function (l,i,p){\"use strict\";const _=@getByIdDirectPrivate(@getByIdDirectPrivate(l,\"reader\"),\"readIntoRequests\").shift();@fulfillPromise(_,{value:i,done:p})})\n"; +const char* const s_readableByteStreamInternalsReadableStreamFulfillReadIntoRequestCode = "(function (l,_,i){\"use strict\";const p=@getByIdDirectPrivate(@getByIdDirectPrivate(l,\"reader\"),\"readIntoRequests\").shift();@fulfillPromise(p,{value:_,done:i})})\n"; // readableStreamBYOBReaderRead const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2900,7 +2900,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableStreamBYOBReader const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeLength = 356; static const JSC::Intrinsic s_readableByteStreamInternalsReadableStreamBYOBReaderReadCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableStreamBYOBReaderReadCode = "(function (c,l){\"use strict\";const o=@getByIdDirectPrivate(c,\"ownerReadableStream\");if(@assert(!!o),@putByIdDirectPrivate(o,\"disturbed\",!0),@getByIdDirectPrivate(o,\"state\")===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(o,\"storedError\"));return @readableByteStreamControllerPullInto(@getByIdDirectPrivate(o,\"readableStreamController\"),l)})\n"; +const char* const s_readableByteStreamInternalsReadableStreamBYOBReaderReadCode = "(function (o,c){\"use strict\";const l=@getByIdDirectPrivate(o,\"ownerReadableStream\");if(@assert(!!l),@putByIdDirectPrivate(l,\"disturbed\",!0),@getByIdDirectPrivate(l,\"state\")===@streamErrored)return @Promise.@reject(@getByIdDirectPrivate(l,\"storedError\"));return @readableByteStreamControllerPullInto(@getByIdDirectPrivate(l,\"readableStreamController\"),c)})\n"; // readableByteStreamControllerPullInto const JSC::ConstructAbility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2908,7 +2908,7 @@ const JSC::ConstructorKind s_readableByteStreamInternalsReadableByteStreamContro const JSC::ImplementationVisibility s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeLength = 1255; static const JSC::Intrinsic s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCode = "(function (b,d){\"use strict\";const A=@getByIdDirectPrivate(b,\"controlledReadableStream\");let E=1;if(d.BYTES_PER_ELEMENT!==@undefined)E=d.BYTES_PER_ELEMENT;const L=d.constructor,_={buffer:d.buffer,byteOffset:d.byteOffset,byteLength:d.byteLength,bytesFilled:0,elementSize:E,ctor:L,readerType:\"byob\"};var N=@getByIdDirectPrivate(b,\"pendingPullIntos\");if(N\?.isNotEmpty())return _.buffer=@transferBufferToCurrentRealm(_.buffer),N.push(_),@readableStreamAddReadIntoRequest(A);if(@getByIdDirectPrivate(A,\"state\")===@streamClosed){const k=new L(_.buffer,_.byteOffset,0);return @createFulfilledPromise({value:k,done:!0})}if(@getByIdDirectPrivate(b,\"queue\").size>0){if(@readableByteStreamControllerFillDescriptorFromQueue(b,_)){const k=@readableByteStreamControllerConvertDescriptor(_);return @readableByteStreamControllerHandleQueueDrain(b),@createFulfilledPromise({value:k,done:!1})}if(@getByIdDirectPrivate(b,\"closeRequested\")){const k=@makeTypeError(\"Closing stream has been requested\");return @readableByteStreamControllerError(b,k),@Promise.@reject(k)}}_.buffer=@transferBufferToCurrentRealm(_.buffer),@getByIdDirectPrivate(b,\"pendingPullIntos\").push(_);const R=@readableStreamAddReadIntoRequest(A);return @readableByteStreamControllerCallPullIfNeeded(b),R})\n"; +const char* const s_readableByteStreamInternalsReadableByteStreamControllerPullIntoCode = "(function (_,E){\"use strict\";const k=@getByIdDirectPrivate(_,\"controlledReadableStream\");let L=1;if(E.BYTES_PER_ELEMENT!==@undefined)L=E.BYTES_PER_ELEMENT;const b=E.constructor,N={buffer:E.buffer,byteOffset:E.byteOffset,byteLength:E.byteLength,bytesFilled:0,elementSize:L,ctor:b,readerType:\"byob\"};var d=@getByIdDirectPrivate(_,\"pendingPullIntos\");if(d\?.isNotEmpty())return N.buffer=@transferBufferToCurrentRealm(N.buffer),d.push(N),@readableStreamAddReadIntoRequest(k);if(@getByIdDirectPrivate(k,\"state\")===@streamClosed){const A=new b(N.buffer,N.byteOffset,0);return @createFulfilledPromise({value:A,done:!0})}if(@getByIdDirectPrivate(_,\"queue\").size>0){if(@readableByteStreamControllerFillDescriptorFromQueue(_,N)){const A=@readableByteStreamControllerConvertDescriptor(N);return @readableByteStreamControllerHandleQueueDrain(_),@createFulfilledPromise({value:A,done:!1})}if(@getByIdDirectPrivate(_,\"closeRequested\")){const A=@makeTypeError(\"Closing stream has been requested\");return @readableByteStreamControllerError(_,A),@Promise.@reject(A)}}N.buffer=@transferBufferToCurrentRealm(N.buffer),@getByIdDirectPrivate(_,\"pendingPullIntos\").push(N);const R=@readableStreamAddReadIntoRequest(k);return @readableByteStreamControllerCallPullIfNeeded(_),R})\n"; // readableStreamAddReadIntoRequest const JSC::ConstructAbility s_readableByteStreamInternalsReadableStreamAddReadIntoRequestCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; @@ -2942,7 +2942,7 @@ const JSC::ConstructorKind s_writableStreamDefaultControllerErrorCodeConstructor const JSC::ImplementationVisibility s_writableStreamDefaultControllerErrorCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_writableStreamDefaultControllerErrorCodeLength = 301; static const JSC::Intrinsic s_writableStreamDefaultControllerErrorCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_writableStreamDefaultControllerErrorCode = "(function (r){\"use strict\";if(@getByIdDirectPrivate(this,\"abortSteps\")===@undefined)throw @makeThisTypeError(\"WritableStreamDefaultController\",\"error\");const t=@getByIdDirectPrivate(this,\"stream\");if(@getByIdDirectPrivate(t,\"state\")!==\"writable\")return;@writableStreamDefaultControllerError(this,r)})\n"; +const char* const s_writableStreamDefaultControllerErrorCode = "(function (t){\"use strict\";if(@getByIdDirectPrivate(this,\"abortSteps\")===@undefined)throw @makeThisTypeError(\"WritableStreamDefaultController\",\"error\");const r=@getByIdDirectPrivate(this,\"stream\");if(@getByIdDirectPrivate(r,\"state\")!==\"writable\")return;@writableStreamDefaultControllerError(this,t)})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ @@ -2960,7 +2960,7 @@ const JSC::ConstructorKind s_eventSourceGetEventSourceCodeConstructorKind = JSC: const JSC::ImplementationVisibility s_eventSourceGetEventSourceCodeImplementationVisibility = JSC::ImplementationVisibility::Public; const int s_eventSourceGetEventSourceCodeLength = 5477; static const JSC::Intrinsic s_eventSourceGetEventSourceCodeIntrinsic = JSC::NoIntrinsic; -const char* const s_eventSourceGetEventSourceCode = "(function (){\"use strict\";class F extends EventTarget{#B;#$;#J;#K;#L;#M=!1;#A=null;#j=\"\";#O=\"\";#Q=\"\";#U=!0;#F=0;#G=0;#X=0;#w=null;static#V(j){j.#H()}static#Y(j,A){const w=j.data,B=w.#Q\?`Last-Event-ID: ${w.#Q}\\r\\n`:\"\",K=`GET ${A.pathname}${A.search} HTTP/1.1\\r\\nHost: bun\\r\\nContent-type: text/event-stream\\r\\nContent-length: 0\\r\\n${B}\\r\\n`,G=j.write(K);if(G!==K.length)w.#O=K.substring(G)}static#Z(j,A,w){for(;;){if(w>=A.length)return;let B=-1,K=A.indexOf(\"\\r\\n\",w);const G=K+2;if(K>0)if(j.#F===0){const J=parseInt(A.substring(w,K),16);if(J===0){j.#$=2,j.#A\?.end();return}B=G+J}else B=A.length;else{if(j.#j.length===0){j.#j+=A.substring(w);return}B=A.length}let M=A.substring(G,B);w=B+2;let Z=0,L=M.indexOf(\"\\n\\n\");if(L==-1){j.#j+=A.substring(G);return}if(j.#j.length)j.#j+=M,M=j.#j,j.#j=\"\";let X=!0;while(X){const J=M.substring(Z,L);let Y,O=\"\",Q,W=0,V=-1;for(;;){let z=J.indexOf(\"\\n\",W);if(z===-1){if(W>=J.length)break;z=J.length}const U=J.substring(W,z);if(U.startsWith(\"data:\"))if(O.length)O+=`\\n${U.substring(5).trim()}`;else O=U.substring(5).trim();else if(U.startsWith(\"event:\"))Y=U.substring(6).trim();else if(U.startsWith(\"id:\"))Q=U.substring(3).trim();else if(U.startsWith(\"retry:\")){if(V=parseInt(U.substring(6).trim(),10),@isNaN(V))V=-1}W=z+1}if(j.#Q=Q||\"\",V>=0)j.#X=V;if(O||Q||Y)j.dispatchEvent(new MessageEvent(Y||\"message\",{data:O||\"\",origin:j.#B.origin,source:j,lastEventId:Q}));if(M.length===L+2){X=!1;break}const H=M.indexOf(\"\\n\\n\",L+1);if(H===-1)break;Z=L,L=H}}}static#z={open(j){const A=j.data;if(A.#A=j,!A.#M)F.#Y(j,A.#B)},handshake(j,A,w){const B=j.data;if(A)F.#Y(j,B.#B);else B.#$=2,B.dispatchEvent(new ErrorEvent(\"error\",{error:w})),j.end()},data(j,A){const w=j.data;switch(w.#$){case 0:{let B=A.toString();const K=B.indexOf(\"\\r\\n\\r\\n\");if(K===-1){w.#j+=B;return}if(w.#j.length)w.#j+=B,B=w.#j,w.#j=\"\";const G=B.substring(0,K),M=G.indexOf(\"\\r\\n\");if(M===-1){w.#$=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Invalid HTTP request\")})),j.end();return}const Z=G.substring(0,M);if(Z!==\"HTTP/1.1 200 OK\"){w.#$=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(Z)})),j.end();return}let L=M+1,X=!1,J=-1;for(;;){let O=G.indexOf(\"\\r\\n\",L);if(O===-1){if(L>=G.length){if(!X)w.#$=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's response has no MIME type and \"text/event-stream\" is required. Aborting the connection.`)})),j.end();return}O=G.length}const Q=G.substring(L+1,O),W=Q.indexOf(\":\"),V=Q.substring(0,W),H=V.localeCompare(\"content-type\",@undefined,{sensitivity:\"accent\"})===0;if(L=O+1,H)if(Q.endsWith(\" text/event-stream\"))X=!0;else{w.#$=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's response has a MIME type that is not \"text/event-stream\". Aborting the connection.`)})),j.end();return}else if(V.localeCompare(\"content-length\",@undefined,{sensitivity:\"accent\"})===0){if(J=parseInt(Q.substring(W+1).trim(),10),@isNaN(J)||J<=0){w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's Content-Length is invalid. Aborting the connection.`)})),j.end();return}if(X)break}else if(V.localeCompare(\"transfer-encoding\",@undefined,{sensitivity:\"accent\"})===0){if(Q.substring(W+1).trim()!==\"chunked\"){w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's Transfer-Encoding is invalid. Aborting the connection.`)})),j.end();return}if(J=0,X)break}}w.#F=J,w.#$=1,w.dispatchEvent(new Event(\"open\"));const Y=B.substring(K+4);if(F.#Z(w,Y,0),w.#F>0){if(w.#G+=Y.length,w.#G>=w.#F)w.#$=2,j.end()}return}case 1:if(F.#Z(w,A.toString(),2),w.#F>0){if(w.#G+=A.byteLength,w.#G>=w.#F)w.#$=2,j.end()}return;default:break}},drain(j){const A=j.data;if(A.#$===0){const w=A.#j;if(w.length){const B=j.write(w);if(B!==w.length)j.data.#O=w.substring(B);else j.data.#O=\"\"}}},close:F.#W,end(j){F.#W(j).dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Connection closed by server\")}))},timeout(j){F.#W(j).dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Timeout\")}))},binaryType:\"buffer\"};static#W(j){const A=j.data;if(A.#A=null,A.#G=0,A.#$=2,A.#U){if(A.#w)clearTimeout(A.#w);A.#w=setTimeout(F.#V,A.#X,A)}return A}constructor(j,A=@undefined){super();const w=new URL(j);this.#M=w.protocol===\"https:\",this.#B=w,this.#$=2,process.nextTick(F.#V,this)}ref(){this.#w\?.ref(),this.#A\?.ref()}unref(){this.#w\?.unref(),this.#A\?.unref()}#H(){if(this.#$!==2)return;const j=this.#B,A=this.#M;this.#$=0,@Bun.connect({data:this,socket:F.#z,hostname:j.hostname,port:parseInt(j.port||(A\?\"443\":\"80\"),10),tls:A\?{requestCert:!0,rejectUnauthorized:!1}:!1}).catch((w)=>{if(super.dispatchEvent(new ErrorEvent(\"error\",{error:w})),this.#U){if(this.#w)this.#w.unref\?.();this.#w=setTimeout(F.#V,1000,this)}})}get url(){return this.#B.href}get readyState(){return this.#$}close(){this.#U=!1,this.#$=2,this.#A\?.unref(),this.#A\?.end()}get onopen(){return this.#L}get onerror(){return this.#J}get onmessage(){return this.#K}set onopen(j){if(this.#L)super.removeEventListener(\"close\",this.#L);super.addEventListener(\"open\",j),this.#L=j}set onerror(j){if(this.#J)super.removeEventListener(\"error\",this.#J);super.addEventListener(\"error\",j),this.#J=j}set onmessage(j){if(this.#K)super.removeEventListener(\"message\",this.#K);super.addEventListener(\"message\",j),this.#K=j}}return Object.defineProperty(F.prototype,\"CONNECTING\",{enumerable:!0,value:0}),Object.defineProperty(F.prototype,\"OPEN\",{enumerable:!0,value:1}),Object.defineProperty(F.prototype,\"CLOSED\",{enumerable:!0,value:2}),F[Symbol.for(\"CommonJS\")]=0,F})\n"; +const char* const s_eventSourceGetEventSourceCode = "(function (){\"use strict\";class B extends EventTarget{#$;#j;#w;#A;#B;#F=!1;#G=null;#J=\"\";#K=\"\";#L=\"\";#M=!0;#O=0;#Q=0;#U=0;#V=null;static#W(V){V.#H()}static#X(V,j){const w=V.data,F=w.#L\?`Last-Event-ID: ${w.#L}\\r\\n`:\"\",G=`GET ${j.pathname}${j.search} HTTP/1.1\\r\\nHost: bun\\r\\nContent-type: text/event-stream\\r\\nContent-length: 0\\r\\n${F}\\r\\n`,W=V.write(G);if(W!==G.length)w.#K=G.substring(W)}static#Y(V,j,w){for(;;){if(w>=j.length)return;let F=-1,G=j.indexOf(\"\\r\\n\",w);const W=G+2;if(G>0)if(V.#O===0){const Z=parseInt(j.substring(w,G),16);if(Z===0){V.#j=2,V.#G\?.end();return}F=W+Z}else F=j.length;else{if(V.#J.length===0){V.#J+=j.substring(w);return}F=j.length}let X=j.substring(W,F);w=F+2;let J=0,Y=X.indexOf(\"\\n\\n\");if(Y==-1){V.#J+=j.substring(W);return}if(V.#J.length)V.#J+=X,X=V.#J,V.#J=\"\";let K=!0;while(K){const Z=X.substring(J,Y);let L,z=\"\",A,H=0,M=-1;for(;;){let Q=Z.indexOf(\"\\n\",H);if(Q===-1){if(H>=Z.length)break;Q=Z.length}const U=Z.substring(H,Q);if(U.startsWith(\"data:\"))if(z.length)z+=`\\n${U.substring(5).trim()}`;else z=U.substring(5).trim();else if(U.startsWith(\"event:\"))L=U.substring(6).trim();else if(U.startsWith(\"id:\"))A=U.substring(3).trim();else if(U.startsWith(\"retry:\")){if(M=parseInt(U.substring(6).trim(),10),@isNaN(M))M=-1}H=Q+1}if(V.#L=A||\"\",M>=0)V.#U=M;if(z||A||L)V.dispatchEvent(new MessageEvent(L||\"message\",{data:z||\"\",origin:V.#$.origin,source:V,lastEventId:A}));if(X.length===Y+2){K=!1;break}const O=X.indexOf(\"\\n\\n\",Y+1);if(O===-1)break;J=Y,Y=O}}}static#Z={open(V){const j=V.data;if(j.#G=V,!j.#F)B.#X(V,j.#$)},handshake(V,j,w){const F=V.data;if(j)B.#X(V,F.#$);else F.#j=2,F.dispatchEvent(new ErrorEvent(\"error\",{error:w})),V.end()},data(V,j){const w=V.data;switch(w.#j){case 0:{let F=j.toString();const G=F.indexOf(\"\\r\\n\\r\\n\");if(G===-1){w.#J+=F;return}if(w.#J.length)w.#J+=F,F=w.#J,w.#J=\"\";const W=F.substring(0,G),X=W.indexOf(\"\\r\\n\");if(X===-1){w.#j=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Invalid HTTP request\")})),V.end();return}const J=W.substring(0,X);if(J!==\"HTTP/1.1 200 OK\"){w.#j=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(J)})),V.end();return}let Y=X+1,K=!1,Z=-1;for(;;){let z=W.indexOf(\"\\r\\n\",Y);if(z===-1){if(Y>=W.length){if(!K)w.#j=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's response has no MIME type and \"text/event-stream\" is required. Aborting the connection.`)})),V.end();return}z=W.length}const A=W.substring(Y+1,z),H=A.indexOf(\":\"),M=A.substring(0,H),O=M.localeCompare(\"content-type\",@undefined,{sensitivity:\"accent\"})===0;if(Y=z+1,O)if(A.endsWith(\" text/event-stream\"))K=!0;else{w.#j=2,w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's response has a MIME type that is not \"text/event-stream\". Aborting the connection.`)})),V.end();return}else if(M.localeCompare(\"content-length\",@undefined,{sensitivity:\"accent\"})===0){if(Z=parseInt(A.substring(H+1).trim(),10),@isNaN(Z)||Z<=0){w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's Content-Length is invalid. Aborting the connection.`)})),V.end();return}if(K)break}else if(M.localeCompare(\"transfer-encoding\",@undefined,{sensitivity:\"accent\"})===0){if(A.substring(H+1).trim()!==\"chunked\"){w.dispatchEvent(new ErrorEvent(\"error\",{error:new Error(`EventSource's Transfer-Encoding is invalid. Aborting the connection.`)})),V.end();return}if(Z=0,K)break}}w.#O=Z,w.#j=1,w.dispatchEvent(new Event(\"open\"));const L=F.substring(G+4);if(B.#Y(w,L,0),w.#O>0){if(w.#Q+=L.length,w.#Q>=w.#O)w.#j=2,V.end()}return}case 1:if(B.#Y(w,j.toString(),2),w.#O>0){if(w.#Q+=j.byteLength,w.#Q>=w.#O)w.#j=2,V.end()}return;default:break}},drain(V){const j=V.data;if(j.#j===0){const w=j.#J;if(w.length){const F=V.write(w);if(F!==w.length)V.data.#K=w.substring(F);else V.data.#K=\"\"}}},close:B.#z,end(V){B.#z(V).dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Connection closed by server\")}))},timeout(V){B.#z(V).dispatchEvent(new ErrorEvent(\"error\",{error:new Error(\"Timeout\")}))},binaryType:\"buffer\"};static#z(V){const j=V.data;if(j.#G=null,j.#Q=0,j.#j=2,j.#M){if(j.#V)clearTimeout(j.#V);j.#V=setTimeout(B.#W,j.#U,j)}return j}constructor(V,j=@undefined){super();const w=new URL(V);this.#F=w.protocol===\"https:\",this.#$=w,this.#j=2,process.nextTick(B.#W,this)}ref(){this.#V\?.ref(),this.#G\?.ref()}unref(){this.#V\?.unref(),this.#G\?.unref()}#H(){if(this.#j!==2)return;const V=this.#$,j=this.#F;this.#j=0,@Bun.connect({data:this,socket:B.#Z,hostname:V.hostname,port:parseInt(V.port||(j\?\"443\":\"80\"),10),tls:j\?{requestCert:!0,rejectUnauthorized:!1}:!1}).catch((w)=>{if(super.dispatchEvent(new ErrorEvent(\"error\",{error:w})),this.#M){if(this.#V)this.#V.unref\?.();this.#V=setTimeout(B.#W,1000,this)}})}get url(){return this.#$.href}get readyState(){return this.#j}close(){this.#M=!1,this.#j=2,this.#G\?.unref(),this.#G\?.end()}get onopen(){return this.#B}get onerror(){return this.#w}get onmessage(){return this.#A}set onopen(V){if(this.#B)super.removeEventListener(\"close\",this.#B);super.addEventListener(\"open\",V),this.#B=V}set onerror(V){if(this.#w)super.removeEventListener(\"error\",this.#w);super.addEventListener(\"error\",V),this.#w=V}set onmessage(V){if(this.#A)super.removeEventListener(\"message\",this.#A);super.addEventListener(\"message\",V),this.#A=V}}return Object.defineProperty(B.prototype,\"CONNECTING\",{enumerable:!0,value:0}),Object.defineProperty(B.prototype,\"OPEN\",{enumerable:!0,value:1}),Object.defineProperty(B.prototype,\"CLOSED\",{enumerable:!0,value:2}),B[Symbol.for(\"CommonJS\")]=0,B})\n"; #define DEFINE_BUILTIN_GENERATOR(codeName, functionName, overriddenName, argumentCount) \ JSC::FunctionExecutable* codeName##Generator(JSC::VM& vm) \ diff --git a/src/js/out/WebCoreJSBuiltins.h b/src/js/out/WebCoreJSBuiltins.h index 42d14b154..26c2fdee7 100644 --- a/src/js/out/WebCoreJSBuiltins.h +++ b/src/js/out/WebCoreJSBuiltins.h @@ -1181,7 +1181,7 @@ extern const JSC::ImplementationVisibility s_processObjectInternalsGetStdinStrea #define WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_DATA(macro) \ macro(binding, processObjectInternalsBinding, 1) \ - macro(getStdioWriteStream, processObjectInternalsGetStdioWriteStream, 1) \ + macro(getStdioWriteStream, processObjectInternalsGetStdioWriteStream, 2) \ macro(getStdinStream, processObjectInternalsGetStdinStream, 1) \ #define WEBCORE_FOREACH_PROCESSOBJECTINTERNALS_BUILTIN_CODE(macro) \ diff --git a/src/js/out/modules/node/net.js b/src/js/out/modules/node/net.js index 7f3102648..06b2ef6ef 100644 --- a/src/js/out/modules/node/net.js +++ b/src/js/out/modules/node/net.js @@ -26,7 +26,7 @@ var isIPv4 = function(s) { self.emit("listening"); }, createServer = function(options, connectionListener) { return new Server(options, connectionListener); -}, v4Seg = "(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])", v4Str = `(${v4Seg}[.]){3}${v4Seg}`, IPv4Reg = new RegExp(`^${v4Str}$`), v6Seg = "(?:[0-9a-fA-F]{1,4})", IPv6Reg = new RegExp("^(" + `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` + `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` + `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` + `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` + `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` + `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` + `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` + `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` + ")(%[0-9a-zA-Z-.:]{1,})?$"), { Bun, createFIFO, Object } = globalThis[Symbol.for("Bun.lazy")]("primordials"), { connect: bunConnect } = Bun, { setTimeout } = globalThis, bunTlsSymbol = Symbol.for("::buntls::"), bunSocketServerHandlers = Symbol.for("::bunsocket_serverhandlers::"), bunSocketServerConnections = Symbol.for("::bunnetserverconnections::"), bunSocketServerOptions = Symbol.for("::bunnetserveroptions::"), bunSocketInternal = Symbol.for("::bunnetsocketinternal::"), SocketClass, Socket = function(InternalSocket) { +}, v4Seg = "(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])", v4Str = `(${v4Seg}[.]){3}${v4Seg}`, IPv4Reg = new RegExp(`^${v4Str}$`), v6Seg = "(?:[0-9a-fA-F]{1,4})", IPv6Reg = new RegExp("^(" + `(?:${v6Seg}:){7}(?:${v6Seg}|:)|` + `(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` + `(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` + `(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` + `(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` + `(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` + `(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` + `(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` + ")(%[0-9a-zA-Z-.:]{1,})?$"), { Bun, createFIFO, Object } = globalThis[Symbol.for("Bun.lazy")]("primordials"), { connect: bunConnect } = Bun, { setTimeout } = globalThis, bunTlsSymbol = Symbol.for("::buntls::"), bunSocketServerHandlers = Symbol.for("::bunsocket_serverhandlers::"), bunSocketServerConnections = Symbol.for("::bunnetserverconnections::"), bunSocketServerOptions = Symbol.for("::bunnetserveroptions::"), bunSocketInternal = Symbol.for("::bunnetsocketinternal::"), bunTLSConnectOptions = Symbol.for("::buntlsconnectoptions::"), SocketClass, Socket = function(InternalSocket) { return SocketClass = InternalSocket, Object.defineProperty(SocketClass.prototype, Symbol.toStringTag, { value: "Socket", enumerable: !1 @@ -62,13 +62,26 @@ var isIPv4 = function(s) { }, open(socket) { const self = socket.data; - if (socket.timeout(self.timeout), socket.ref(), self[bunSocketInternal] = socket, self.connecting = !1, !self.#upgraded) + socket.timeout(self.timeout), socket.ref(), self[bunSocketInternal] = socket, self.connecting = !1; + const options = self[bunTLSConnectOptions]; + if (options) { + const { session } = options; + if (session) + self.setSession(session); + } + if (!self.#upgraded) self.emit("connect", self); Socket2.#Drain(socket); }, handshake(socket, success, verifyError) { const { data: self } = socket; - if (self._securePending = !1, self.secureConnecting = !1, self._secureEstablished = !!success, self._requestCert || self._rejectUnauthorized) { + self._securePending = !1, self.secureConnecting = !1, self._secureEstablished = !!success, self.emit("secure", self); + const { checkServerIdentity } = self[bunTLSConnectOptions]; + if (!verifyError && typeof checkServerIdentity === "function" && self.servername) { + const cert = self.getPeerCertificate(!0); + verifyError = checkServerIdentity(self.servername, cert); + } + if (self._requestCert || self._rejectUnauthorized) { if (verifyError) { if (self.authorized = !1, self.authorizationError = verifyError.code || verifyError.message, self._rejectUnauthorized) { self.destroy(verifyError); @@ -138,8 +151,9 @@ var isIPv4 = function(s) { connectionListener(_socket); self.emit("connection", _socket); }, - handshake({ data: self }, success, verifyError) { - if (self._securePending = !1, self.secureConnecting = !1, self._secureEstablished = !!success, self._requestCert || self._rejectUnauthorized) { + handshake(socket, success, verifyError) { + const { data: self } = socket; + if (self.emit("secure", self), self._securePending = !1, self.secureConnecting = !1, self._secureEstablished = !!success, self._requestCert || self._rejectUnauthorized) { if (verifyError) { if (self.authorized = !1, self.authorizationError = verifyError.code || verifyError.message, self._rejectUnauthorized) { self.destroy(verifyError); @@ -148,7 +162,7 @@ var isIPv4 = function(s) { } } else self.authorized = !0; - self.emit("secureConnect", verifyError); + self.emit("secureConnection", verifyError); }, error(socket, error) { Socket2.#Handlers.error(socket, error), this.data.emit("error", error); @@ -166,6 +180,7 @@ var isIPv4 = function(s) { #readQueue = createFIFO(); remotePort; [bunSocketInternal] = null; + [bunTLSConnectOptions] = null; timeout = 0; #writeCallback; #writeChunk; @@ -199,10 +214,12 @@ var isIPv4 = function(s) { return this.writableLength; } #attach(port, socket) { - this.remotePort = port, socket.data = this, socket.timeout(this.timeout), socket.ref(), this[bunSocketInternal] = socket, this.connecting = !1, this.emit("connect", this), Socket2.#Drain(socket); + if (this.remotePort = port, socket.data = this, socket.timeout(this.timeout), socket.ref(), this[bunSocketInternal] = socket, this.connecting = !1, !this.#upgraded) + this.emit("connect", this); + Socket2.#Drain(socket); } connect(port, host, connectListener) { - var path, connection = this.#socket; + var path, connection = this.#socket, _checkServerIdentity = void 0; if (typeof port === "string") { if (path = port, port = void 0, typeof host === "function") connectListener = host, host = void 0; @@ -228,9 +245,11 @@ var isIPv4 = function(s) { requestCert, rejectUnauthorized, pauseOnConnect, - servername + servername, + checkServerIdentity, + session } = port; - if (this.servername = servername, socket) + if (_checkServerIdentity = checkServerIdentity, this.servername = servername, socket) connection = socket; } if (!pauseOnConnect) @@ -240,12 +259,7 @@ var isIPv4 = function(s) { var tls = void 0; if (typeof bunTLS === "function") { if (tls = bunTLS.call(this, port, host, !0), this._requestCert = !0, this._rejectUnauthorized = rejectUnauthorized, tls) { - if (typeof tls !== "object") - tls = { - rejectUnauthorized, - requestCert: !0 - }; - else if (tls.rejectUnauthorized = rejectUnauthorized, tls.requestCert = !0, !connection && tls.socket) + if (tls.rejectUnauthorized = rejectUnauthorized, tls.requestCert = !0, tls.session = session || tls.session, this.servername = tls.servername, tls.checkServerIdentity = _checkServerIdentity || tls.checkServerIdentity, this[bunTLSConnectOptions] = tls, !connection && tls.socket) connection = tls.socket; } if (connection) { @@ -491,10 +505,12 @@ class Server extends EventEmitter { } try { var tls = void 0, TLSSocketClass = void 0; - const bunTLS = this[bunTlsSymbol]; + const bunTLS = this[bunTlsSymbol], options = this[bunSocketServerOptions]; if (typeof bunTLS === "function") - [tls, TLSSocketClass] = bunTLS.call(this, port, hostname, !1); - this[bunSocketServerOptions].InternalSocketClass = TLSSocketClass || SocketClass, this.#server = Bun.listen(path ? { + [tls, TLSSocketClass] = bunTLS.call(this, port, hostname, !1), options.servername = tls.serverName, options.InternalSocketClass = TLSSocketClass; + else + options.InternalSocketClass = SocketClass; + this.#server = Bun.listen(path ? { exclusive, unix: path, tls, diff --git a/src/js/out/modules/node/tls.js b/src/js/out/modules/node/tls.js index ca8a13270..3c9626cce 100644 --- a/src/js/out/modules/node/tls.js +++ b/src/js/out/modules/node/tls.js @@ -12,9 +12,11 @@ var parseCertString = function() { return !0; } }, unfqdn = function(host2) { - return RegExpPrototypeSymbolReplace(/[.]$/, host2, ""); + return RegExpPrototypeSymbolReplace.call(/[.]$/, host2, ""); +}, toLowerCase = function(c) { + return StringFromCharCode.call(32 + StringPrototypeCharCodeAt.call(c, 0)); }, splitHost = function(host2) { - return StringPrototypeSplit.call(RegExpPrototypeSymbolReplace(/[A-Z]/g, unfqdn(host2), toLowerCase), "."); + return StringPrototypeSplit.call(RegExpPrototypeSymbolReplace.call(/[A-Z]/g, unfqdn(host2), toLowerCase), "."); }, check = function(hostParts, pattern, wildcards) { if (!pattern) return !1; @@ -87,7 +89,7 @@ var parseCertString = function() { reason = `Host: ${hostname}. is not in the cert's altnames: ${altNames}`; } else { const cn = subject.CN; - if (ArrayIsArray(cn)) + if (Array.isArray(cn)) valid = ArrayPrototypeSome.call(cn, wildcard); else if (cn) valid = wildcard(cn); @@ -104,8 +106,24 @@ var parseCertString = function() { return new InternalSecureContext(options); }, createSecureContext = function(options) { return new SecureContext(options); -}; -var createServer = function(options, connectionListener) { +}, translatePeerCertificate = function(c) { + if (!c) + return null; + if (c.issuerCertificate != null && c.issuerCertificate !== c) + c.issuerCertificate = translatePeerCertificate(c.issuerCertificate); + if (c.infoAccess != null) { + const info = c.infoAccess; + c.infoAccess = { __proto__: null }, RegExpPrototypeSymbolReplace.call(/([^\n:]*):([^\n]*)(?:\n|$)/g, info, (all, key, val) => { + if (val.charCodeAt(0) === 34) + val = JSONParse(val); + if (key in c.infoAccess) + ArrayPrototypePush.call(c.infoAccess[key], val); + else + c.infoAccess[key] = [val]; + }); + } + return c; +}, createServer = function(options, connectionListener) { return new Server(options, connectionListener); }, getCiphers = function() { return DEFAULT_CIPHERS.split(":"); @@ -131,7 +149,7 @@ var createServer = function(options, connectionListener) { out.ALPNProtocols = Buffer.from(protocols.buffer.slice(protocols.byteOffset, protocols.byteOffset + protocols.byteLength)); else if (Buffer.isBuffer(protocols)) out.ALPNProtocols = protocols; -}, InternalTCPSocket = net[Symbol.for("::bunternal::")], bunSocketInternal = Symbol.for("::bunnetsocketinternal::"), { RegExp, Array, String } = globalThis[Symbol.for("Bun.lazy")]("primordials"), SymbolReplace = Symbol.replace, RegExpPrototypeSymbolReplace = RegExp.prototype[SymbolReplace], RegExpPrototypeExec = RegExp.prototype.exec, StringPrototypeStartsWith = String.prototype.startsWith, StringPrototypeSlice = String.prototype.slice, StringPrototypeIncludes = String.prototype.includes, StringPrototypeSplit = String.prototype.split, StringPrototypeIndexOf = String.prototype.indexOf, StringPrototypeSubstring = String.prototype.substring, StringPrototypeEndsWith = String.prototype.endsWith, ArrayPrototypeIncludes = Array.prototype.includes, ArrayPrototypeJoin = Array.prototype.join, ArrayPrototypeForEach = Array.prototype.forEach, ArrayPrototypePush = Array.prototype.push, ArrayPrototypeSome = Array.prototype.some, ArrayPrototypeReduce = Array.prototype.reduce, jsonStringPattern = /^"(?:[^"\\\u0000-\u001f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*"/, InternalSecureContext = class SecureContext2 { +}, InternalTCPSocket = net[Symbol.for("::bunternal::")], bunSocketInternal = Symbol.for("::bunnetsocketinternal::"), { RegExp, Array, String } = globalThis[Symbol.for("Bun.lazy")]("primordials"), SymbolReplace = Symbol.replace, RegExpPrototypeSymbolReplace = RegExp.prototype[SymbolReplace], RegExpPrototypeExec = RegExp.prototype.exec, StringPrototypeStartsWith = String.prototype.startsWith, StringPrototypeSlice = String.prototype.slice, StringPrototypeIncludes = String.prototype.includes, StringPrototypeSplit = String.prototype.split, StringPrototypeIndexOf = String.prototype.indexOf, StringPrototypeSubstring = String.prototype.substring, StringPrototypeEndsWith = String.prototype.endsWith, StringFromCharCode = String.fromCharCode, StringPrototypeCharCodeAt = String.prototype.charCodeAt, ArrayPrototypeIncludes = Array.prototype.includes, ArrayPrototypeJoin = Array.prototype.join, ArrayPrototypeForEach = Array.prototype.forEach, ArrayPrototypePush = Array.prototype.push, ArrayPrototypeSome = Array.prototype.some, ArrayPrototypeReduce = Array.prototype.reduce, jsonStringPattern = /^"(?:[^"\\\u0000-\u001f]|\\(?:["\\/bfnrt]|u[0-9a-fA-F]{4}))*"/, InternalSecureContext = class SecureContext2 { context; constructor(options) { const context = {}; @@ -184,6 +202,8 @@ var createServer = function(options, connectionListener) { #secureContext; ALPNProtocols; #socket; + #checkServerIdentity; + #session; constructor(socket, options) { super(socket instanceof InternalTCPSocket ? options : options || socket); if (options = options || socket || {}, typeof options === "object") { @@ -193,7 +213,7 @@ var createServer = function(options, connectionListener) { if (socket instanceof InternalTCPSocket) this.#socket = socket; } - this.#secureContext = options.secureContext || createSecureContext(options), this.authorized = !1, this.secureConnecting = !0, this._secureEstablished = !1, this._securePending = !0; + this.#secureContext = options.secureContext || createSecureContext(options), this.authorized = !1, this.secureConnecting = !0, this._secureEstablished = !1, this._securePending = !0, this.#checkServerIdentity = options.checkServerIdentity || checkServerIdentity, this.#session = options.session || null; } _secureEstablished = !1; _securePending = !0; @@ -204,14 +224,57 @@ var createServer = function(options, connectionListener) { servername; authorized = !1; authorizationError; + #renegotiationDisabled = !1; encrypted = !0; _start() { + this.connect(); } - exportKeyingMaterial(length, label, context) { + getSession() { + return this[bunSocketInternal]?.getSession(); + } + getEphemeralKeyInfo() { + return this[bunSocketInternal]?.getEphemeralKeyInfo(); + } + getCipher() { + return this[bunSocketInternal]?.getCipher(); + } + getSharedSigalgs() { + return this[bunSocketInternal]?.getSharedSigalgs(); + } + getProtocol() { + return this[bunSocketInternal]?.getTLSVersion(); + } + getFinished() { + return this[bunSocketInternal]?.getTLSFinishedMessage() || void 0; + } + getPeerFinished() { + return this[bunSocketInternal]?.getTLSPeerFinishedMessage() || void 0; + } + isSessionReused() { + return !!this.#session; + } + renegotiate() { + if (this.#renegotiationDisabled) { + const error = new Error("ERR_TLS_RENEGOTIATION_DISABLED: TLS session renegotiation disabled for this socket"); + throw error.name = "ERR_TLS_RENEGOTIATION_DISABLED", error; + } throw Error("Not implented in Bun yet"); } + disableRenegotiation() { + this.#renegotiationDisabled = !0; + } + getTLSTicket() { + return this[bunSocketInternal]?.getTLSTicket(); + } + exportKeyingMaterial(length, label, context) { + if (context) + return this[bunSocketInternal]?.exportKeyingMaterial(length, label, context); + return this[bunSocketInternal]?.exportKeyingMaterial(length, label); + } setMaxSendFragment(size) { - throw Error("Not implented in Bun yet"); + return this[bunSocketInternal]?.setMaxSendFragment(size) || !1; + } + enableTrace() { } setServername(name) { if (this.isServer) { @@ -220,14 +283,20 @@ var createServer = function(options, connectionListener) { } this.servername = name, this[bunSocketInternal]?.setServername(name); } - setSession() { - throw Error("Not implented in Bun yet"); + setSession(session) { + if (this.#session = session, typeof session === "string") + session = Buffer.from(session, "latin1"); + return this[bunSocketInternal]?.setSession(session); } - getPeerCertificate() { - throw Error("Not implented in Bun yet"); + getPeerCertificate(abbreviated) { + const cert = arguments.length < 1 ? this[bunSocketInternal]?.getPeerCertificate() : this[bunSocketInternal]?.getPeerCertificate(abbreviated); + if (cert) + return translatePeerCertificate(cert); } getCertificate() { - throw Error("Not implented in Bun yet"); + const cert = this[bunSocketInternal]?.getCertificate(); + if (cert) + return translatePeerCertificate(cert); } getPeerX509Certificate() { throw Error("Not implented in Bun yet"); @@ -243,6 +312,8 @@ var createServer = function(options, connectionListener) { socket: this.#socket, ALPNProtocols: this.ALPNProtocols, serverName: this.servername || host2 || "localhost", + checkServerIdentity: this.#checkServerIdentity, + session: this.#session, ...this.#secureContext }; } @@ -258,16 +329,9 @@ class Server extends NetServer { _requestCert; servername; ALPNProtocols; - #checkServerIdentity; constructor(options, secureConnectionListener) { super(options, secureConnectionListener); - this.#checkServerIdentity = options?.checkServerIdentity || checkServerIdentity, this.setSecureContext(options); - } - emit(event, args) { - if (super.emit(event, args), event === "connection") - args.once("secureConnect", () => { - super.emit("secureConnection", args); - }); + this.setSecureContext(options); } setSecureContext(options) { if (options instanceof InternalSecureContext) @@ -335,8 +399,7 @@ class Server extends NetServer { secureOptions: this.secureOptions, rejectUnauthorized: isClient ? !1 : this._rejectUnauthorized, requestCert: isClient ? !1 : this._requestCert, - ALPNProtocols: this.ALPNProtocols, - checkServerIdentity: this.#checkServerIdentity + ALPNProtocols: this.ALPNProtocols }, SocketClass ]; diff --git a/src/js_ast.zig b/src/js_ast.zig index 357f11223..b83f6c5c2 100644 --- a/src/js_ast.zig +++ b/src/js_ast.zig @@ -138,7 +138,7 @@ pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { out.* = b; } - overflow.allocated = @truncate(Overflow.UsedSize, to_move.len); + overflow.allocated = @as(Overflow.UsedSize, @truncate(to_move.len)); overflow.used = 0; return used; @@ -183,7 +183,7 @@ pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { var i: usize = 1; const end = sliced.len; while (i < end) { - var ptrs = @ptrCast(*[2]Block, sliced[i]); + var ptrs = @as(*[2]Block, @ptrCast(sliced[i])); allocator.free(ptrs); i += 2; } @@ -207,12 +207,9 @@ pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { var block = self.overflow.tail(); - return @ptrCast( + return @as( *ValueType, - @alignCast( - @alignOf(ValueType), - @alignCast(@alignOf(ValueType), block.append(BytesAsSlice, bytes)), - ), + @ptrCast(@alignCast(block.append(BytesAsSlice, bytes))), ); } }; @@ -631,9 +628,9 @@ pub const CharFreq = struct { for (text) |c| { const i: usize = switch (c) { - 'a'...'z' => @intCast(usize, c) - 'a', - 'A'...'Z' => @intCast(usize, c) - ('A' - 26), - '0'...'9' => @intCast(usize, c) + (53 - '0'), + 'a'...'z' => @as(usize, @intCast(c)) - 'a', + 'A'...'Z' => @as(usize, @intCast(c)) - ('A' - 26), + '0'...'9' => @as(usize, @intCast(c)) + (53 - '0'), '_' => 62, '$' => 63, else => continue, @@ -700,13 +697,13 @@ pub const NameMinifier = struct { pub fn numberToMinifiedName(this: *NameMinifier, name: *std.ArrayList(u8), _i: isize) !void { name.clearRetainingCapacity(); var i = _i; - var j = @intCast(usize, @mod(i, 54)); + var j = @as(usize, @intCast(@mod(i, 54))); try name.appendSlice(this.head.items[j .. j + 1]); i = @divFloor(i, 54); while (i > 0) { i -= 1; - j = @intCast(usize, @mod(i, 64)); + j = @as(usize, @intCast(@mod(i, 64))); try name.appendSlice(this.tail.items[j .. j + 1]); i = @divFloor(i, 64); } @@ -714,14 +711,14 @@ pub const NameMinifier = struct { pub fn defaultNumberToMinifiedName(allocator: std.mem.Allocator, _i: isize) !string { var i = _i; - var j = @intCast(usize, @mod(i, 54)); + var j = @as(usize, @intCast(@mod(i, 54))); var name = std.ArrayList(u8).init(allocator); try name.appendSlice(default_head[j .. j + 1]); i = @divFloor(i, 54); while (i > 0) { i -= 1; - j = @intCast(usize, @mod(i, 64)); + j = @as(usize, @intCast(@mod(i, 64))); try name.appendSlice(default_tail[j .. j + 1]); i = @divFloor(i, 64); } @@ -1225,8 +1222,8 @@ pub const Symbol = struct { .{ symbol.original_name, @tagName(symbol.kind), if (symbol.hasLink()) symbol.link else Ref{ - .source_index = @truncate(Ref.Int, i), - .inner_index = @truncate(Ref.Int, inner_index), + .source_index = @as(Ref.Int, @truncate(i)), + .inner_index = @as(Ref.Int, @truncate(inner_index)), .tag = .symbol, }, }, @@ -1441,7 +1438,7 @@ pub const E = struct { array.protect(); defer array.unprotect(); for (items, 0..) |expr, j| { - array.putIndex(globalObject, @truncate(u32, j), try expr.data.toJS(allocator, globalObject)); + array.putIndex(globalObject, @as(u32, @truncate(j)), try expr.data.toJS(allocator, globalObject)); } return array; @@ -1706,8 +1703,8 @@ pub const E = struct { pub fn toStringFromF64Safe(value: f64, allocator: std.mem.Allocator) ?string { if (value == @trunc(value) and (value < std.math.maxInt(i32) and value > std.math.minInt(i32))) { - const int_value = @intFromFloat(i64, value); - const abs = @intCast(u64, std.math.absInt(int_value) catch return null); + const int_value = @as(i64, @intFromFloat(value)); + const abs = @as(u64, @intCast(std.math.absInt(int_value) catch return null)); if (abs < double_digit.len) { return if (int_value < 0) neg_double_digit[abs] @@ -1715,7 +1712,7 @@ pub const E = struct { double_digit[abs]; } - return std.fmt.allocPrint(allocator, "{d}", .{@intCast(i32, int_value)}) catch return null; + return std.fmt.allocPrint(allocator, "{d}", .{@as(i32, @intCast(int_value))}) catch return null; } if (std.math.isNan(value)) { @@ -1750,7 +1747,7 @@ pub const E = struct { } pub fn to(self: Number, comptime T: type) T { - return @intFromFloat(T, @min(@max(@trunc(self.value), 0), comptime @min(std.math.floatMax(f64), std.math.maxInt(T)))); + return @as(T, @intFromFloat(@min(@max(@trunc(self.value), 0), comptime @min(std.math.floatMax(f64), std.math.maxInt(T))))); } pub fn jsonStringify(self: *const Number, opts: anytype, o: anytype) !void { @@ -2048,7 +2045,7 @@ pub const E = struct { return Expr.Query{ .expr = value, .loc = key.loc, - .i = @truncate(u32, i), + .i = @as(u32, @truncate(i)), }; } } @@ -2154,11 +2151,11 @@ pub const E = struct { std.debug.assert(other.isUTF8()); if (other.rope_len == 0) { - other.rope_len = @truncate(u32, other.data.len); + other.rope_len = @as(u32, @truncate(other.data.len)); } if (this.rope_len == 0) { - this.rope_len = @truncate(u32, this.data.len); + this.rope_len = @as(u32, @truncate(this.data.len)); } this.rope_len += other.rope_len; @@ -2181,7 +2178,7 @@ pub const E = struct { const Value = @TypeOf(value); if (Value == []u16 or Value == []const u16) { return .{ - .data = @ptrCast([*]const u8, value.ptr)[0..value.len], + .data = @as([*]const u8, @ptrCast(value.ptr))[0..value.len], .is_utf16 = true, }; } @@ -2192,7 +2189,7 @@ pub const E = struct { pub fn slice16(this: *const String) []const u16 { std.debug.assert(this.is_utf16); - return @ptrCast([*]const u16, @alignCast(@alignOf(u16), this.data.ptr))[0..this.data.len]; + return @as([*]const u16, @ptrCast(@alignCast(this.data.ptr)))[0..this.data.len]; } pub fn resolveRopeIfNeeded(this: *String, allocator: std.mem.Allocator) void { @@ -2249,10 +2246,10 @@ pub const E = struct { } if (s.isUTF8()) { - return @truncate(u32, bun.simdutf.length.utf16.from.utf8.le(s.data)); + return @as(u32, @truncate(bun.simdutf.length.utf16.from.utf8.le(s.data))); } - return @truncate(u32, s.slice16().len); + return @as(u32, @truncate(s.slice16().len)); } pub inline fn len(s: *const String) usize { @@ -2354,7 +2351,7 @@ pub const E = struct { return bun.hash(s.data); } else { // hash utf-16 - return bun.hash(@ptrCast([*]const u8, s.slice16().ptr)[0 .. s.slice16().len * 2]); + return bun.hash(@as([*]const u8, @ptrCast(s.slice16().ptr))[0 .. s.slice16().len * 2]); } } @@ -2391,7 +2388,7 @@ pub const E = struct { var buf = [_]u8{0} ** 4096; var i: usize = 0; for (s.slice16()) |char| { - buf[i] = @intCast(u8, char); + buf[i] = @as(u8, @intCast(char)); i += 1; if (i >= 4096) { break; @@ -5793,11 +5790,11 @@ pub const Op = struct { } pub inline fn sub(self: Level, i: anytype) Level { - return @enumFromInt(Level, @intFromEnum(self) - i); + return @as(Level, @enumFromInt(@intFromEnum(self) - i)); } pub inline fn addF(self: Level, i: anytype) Level { - return @enumFromInt(Level, @intFromEnum(self) + i); + return @as(Level, @enumFromInt(@intFromEnum(self) + i)); } }; @@ -6143,7 +6140,7 @@ pub const BundledAst = struct { pub fn init(ast: Ast) BundledAst { return .{ - .approximate_newline_count = @truncate(u32, ast.approximate_newline_count), + .approximate_newline_count = @as(u32, @truncate(ast.approximate_newline_count)), .nested_scope_slot_counts = ast.nested_scope_slot_counts, .externals = ast.externals, @@ -7309,7 +7306,7 @@ pub const Macro = struct { _: js.JSStringRef, _: js.ExceptionRef, ) js.JSObjectRef { - return JSC.JSValue.jsNumberFromU16(@intCast(u16, @intFromEnum(std.meta.activeTag(this.data)))).asRef(); + return JSC.JSValue.jsNumberFromU16(@as(u16, @intCast(@intFromEnum(std.meta.activeTag(this.data))))).asRef(); } pub fn getTagName( this: *JSNode, @@ -7716,7 +7713,7 @@ pub const Macro = struct { var list = std.EnumArray(Tag, Expr.Data).initFill(Expr.Data{ .e_number = E.Number{ .value = 0.0 } }); const fields: []const std.builtin.Type.EnumField = @typeInfo(Tag).Enum.fields; for (fields) |field| { - list.set(@enumFromInt(Tag, field.value), Expr.Data{ .e_number = E.Number{ .value = @floatFromInt(f64, field.value) } }); + list.set(@as(Tag, @enumFromInt(field.value)), Expr.Data{ .e_number = E.Number{ .value = @as(f64, @floatFromInt(field.value)) } }); } break :brk list; @@ -7940,7 +7937,7 @@ pub const Macro = struct { for (props, 0..) |prop, i| { const key = prop.key orelse continue; if (key.data != .e_string or !key.data.e_string.isUTF8()) continue; - if (strings.eqlComptime(key.data.e_string.data, name)) return @intCast(u32, i); + if (strings.eqlComptime(key.data.e_string.data, name)) return @as(u32, @intCast(i)); } return null; @@ -8032,7 +8029,7 @@ pub const Macro = struct { Expr{ .data = .{ .e_number = E.Number{ - .value = @floatFromInt(f64, @intFromBool(value.data.e_boolean.value)), + .value = @as(f64, @floatFromInt(@intFromBool(value.data.e_boolean.value))), }, }, .loc = value.loc, @@ -8108,8 +8105,8 @@ pub const Macro = struct { Tag.e_array => { self.args.ensureUnusedCapacity(2 + children.len) catch unreachable; self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = comptime Tag.ids.get(Tag.e_array) }); - const children_count = @truncate(u16, children.len); - self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = E.Number{ .value = @floatFromInt(f64, children_count) } } }); + const children_count = @as(u16, @truncate(children.len)); + self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = E.Number{ .value = @as(f64, @floatFromInt(children_count)) } } }); var old_parent = self.parent_tag; self.parent_tag = Tag.e_array; @@ -8147,8 +8144,8 @@ pub const Macro = struct { Tag.e_object => { self.args.ensureUnusedCapacity(2 + children.len) catch unreachable; self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = comptime Tag.ids.get(Tag.e_object) }); - const children_count = @truncate(u16, children.len); - self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = E.Number{ .value = @floatFromInt(f64, children_count) } } }); + const children_count = @as(u16, @truncate(children.len)); + self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = E.Number{ .value = @as(f64, @floatFromInt(children_count)) } } }); var old_parent = self.parent_tag; self.parent_tag = Tag.e_object; @@ -8353,7 +8350,7 @@ pub const Macro = struct { } self.args.ensureUnusedCapacity(2 + count) catch unreachable; self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = comptime Tag.ids.get(Tag.inline_inject) }); - self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = .{ .value = @floatFromInt(f64, @intCast(u32, children.len)) } } }); + self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = .{ .e_number = .{ .value = @as(f64, @floatFromInt(@as(u32, @intCast(children.len)))) } } }); const old_parent_tag = self.parent_tag; self.parent_tag = Tag.inline_inject; @@ -8418,7 +8415,7 @@ pub const Macro = struct { const namespace_ = propertyValueNamed(props, "namespace"); const items_count: u32 = 1 + - @intCast(u32, @intFromBool(namespace_ != null)); + @as(u32, @intCast(@intFromBool(namespace_ != null))); self.args.ensureUnusedCapacity(items_count) catch unreachable; self.args.appendAssumeCapacity(Expr{ .loc = loc, .data = comptime Tag.ids.get(Tag.s_import) }); @@ -8529,7 +8526,7 @@ pub const Macro = struct { .loc = loc, .data = .{ .e_number = E.Number{ - .value = @floatFromInt(f64, children.len), + .value = @as(f64, @floatFromInt(children.len)), }, }, }); @@ -8719,7 +8716,7 @@ pub const Macro = struct { hasher.update(path); hasher.update("#"); hasher.update(name); - return @bitCast(i32, @truncate(u32, hasher.final())); + return @as(i32, @bitCast(@as(u32, @truncate(hasher.final())))); } }; @@ -8767,11 +8764,11 @@ pub const Macro = struct { pub fn fromJSValueRefNoValidate(ctx: js.JSContextRef, value: js.JSValueRef) TagOrJSNode { switch (js.JSValueGetType(ctx, value)) { js.JSType.kJSTypeNumber => { - const tag_int = @intFromFloat(u8, JSC.JSValue.fromRef(value).asNumber()); + const tag_int = @as(u8, @intFromFloat(JSC.JSValue.fromRef(value).asNumber())); if (tag_int < Tag.min_tag or tag_int > Tag.max_tag) { return TagOrJSNode{ .invalid = {} }; } - return TagOrJSNode{ .tag = @enumFromInt(JSNode.Tag, tag_int) }; + return TagOrJSNode{ .tag = @as(JSNode.Tag, @enumFromInt(tag_int)) }; }, js.JSType.kJSTypeObject => { if (JSCBase.GetJSPrivateData(JSNode, value)) |node| { @@ -8789,13 +8786,13 @@ pub const Macro = struct { pub fn fromJSValueRef(writer: *Writer, ctx: js.JSContextRef, value: js.JSValueRef) TagOrJSNode { switch (js.JSValueGetType(ctx, value)) { js.JSType.kJSTypeNumber => { - const tag_int = @intFromFloat(u8, JSC.JSValue.fromRef(value).asNumber()); + const tag_int = @as(u8, @intFromFloat(JSC.JSValue.fromRef(value).asNumber())); if (tag_int < Tag.min_tag or tag_int > Tag.max_tag) { throwTypeError(ctx, "Node type has invalid value", writer.exception); writer.errored = true; return TagOrJSNode{ .invalid = {} }; } - return TagOrJSNode{ .tag = @enumFromInt(JSNode.Tag, tag_int) }; + return TagOrJSNode{ .tag = @as(JSNode.Tag, @enumFromInt(tag_int)) }; }, js.JSType.kJSTypeObject => { if (JSCBase.GetJSPrivateData(JSNode, value)) |node| { @@ -8957,7 +8954,7 @@ pub const Macro = struct { import.import.items = writer.allocator.alloc( ClauseItem, - @intCast(u32, @intFromBool(has_default)) + array_iter.len, + @as(u32, @intCast(@intFromBool(has_default))) + array_iter.len, ) catch return false; while (array_iter.next()) |name| { @@ -8986,7 +8983,7 @@ pub const Macro = struct { } else { import.import.items = writer.allocator.alloc( ClauseItem, - @intCast(u32, @intFromBool(has_default)), + @as(u32, @intCast(@intFromBool(has_default))), ) catch return false; } @@ -9024,8 +9021,8 @@ pub const Macro = struct { while (i < count) { var nextArg = writer.eatArg() orelse return false; if (js.JSValueIsArray(writer.ctx, nextArg.asRef())) { - const extras = @truncate(u32, nextArg.getLength(writer.ctx.ptr())); - count += @max(@truncate(@TypeOf(count), extras), 1) - 1; + const extras = @as(u32, @truncate(nextArg.getLength(writer.ctx.ptr()))); + count += @max(@as(@TypeOf(count), @truncate(extras)), 1) - 1; items.ensureUnusedCapacity(extras) catch unreachable; items.expandToCapacity(); var new_writer = writer.*; @@ -9405,7 +9402,7 @@ pub const Macro = struct { .allocator = JSCBase.getAllocator(ctx), .exception = exception, .args_value = args_value, - .args_len = @truncate(u32, args_value.getLength(ctx.ptr())), + .args_len = @as(u32, @truncate(args_value.getLength(ctx.ptr()))), .args_i = 0, .errored = false, }; @@ -9701,7 +9698,7 @@ pub const Macro = struct { macro_callback, null, args_count, - @ptrCast([*]js.JSObjectRef, args_ptr), + @as([*]js.JSObjectRef, @ptrCast(args_ptr)), ); var runner = Run{ @@ -9945,7 +9942,7 @@ pub const Macro = struct { }, .Integer => { - return Expr.init(E.Number, E.Number{ .value = @floatFromInt(f64, value.toInt32()) }, this.caller.loc); + return Expr.init(E.Number, E.Number{ .value = @as(f64, @floatFromInt(value.toInt32())) }, this.caller.loc); }, .Double => { return Expr.init(E.Number, E.Number{ .value = value.asNumber() }, this.caller.loc); diff --git a/src/js_lexer.zig b/src/js_lexer.zig index 5d41aec4b..e8b852d0d 100644 --- a/src/js_lexer.zig +++ b/src/js_lexer.zig @@ -407,10 +407,10 @@ fn NewLexer_( }, } - iter.c = @intCast(i32, value); + iter.c = @as(i32, @intCast(value)); if (is_bad) { lexer.addRangeError( - logger.Range{ .loc = .{ .start = @intCast(i32, octal_start) }, .len = @intCast(i32, iter.i - octal_start) }, + logger.Range{ .loc = .{ .start = @as(i32, @intCast(octal_start)) }, .len = @as(i32, @intCast(iter.i - octal_start)) }, "Invalid legacy octal literal", .{}, false, @@ -522,7 +522,7 @@ fn NewLexer_( if (is_out_of_range) { try lexer.addRangeError( - .{ .loc = .{ .start = @intCast(i32, start + hex_start) }, .len = @intCast(i32, ((iter.i + start) - hex_start)) }, + .{ .loc = .{ .start = @as(i32, @intCast(start + hex_start)) }, .len = @as(i32, @intCast(((iter.i + start) - hex_start))) }, "Unicode escape sequence is out of range", .{}, true, @@ -562,7 +562,7 @@ fn NewLexer_( } } - iter.c = @truncate(CodePoint, value); + iter.c = @as(CodePoint, @truncate(value)); }, '\r' => { if (comptime is_json) { @@ -606,13 +606,13 @@ fn NewLexer_( switch (iter.c) { -1 => return try lexer.addDefaultError("Unexpected end of file"), 0...0xFFFF => { - buf.append(@intCast(u16, iter.c)) catch unreachable; + buf.append(@as(u16, @intCast(iter.c))) catch unreachable; }, else => { iter.c -= 0x10000; buf.ensureUnusedCapacity(2) catch unreachable; - buf.appendAssumeCapacity(@intCast(u16, 0xD800 + ((iter.c >> 10) & 0x3FF))); - buf.appendAssumeCapacity(@intCast(u16, 0xDC00 + (iter.c & 0x3FF))); + buf.appendAssumeCapacity(@as(u16, @intCast(0xD800 + ((iter.c >> 10) & 0x3FF)))); + buf.appendAssumeCapacity(@as(u16, @intCast(0xDC00 + (iter.c & 0x3FF)))); }, } } @@ -797,7 +797,7 @@ fn NewLexer_( const code_point = switch (slice.len) { 0 => -1, 1 => @as(CodePoint, slice[0]), - else => strings.decodeWTF8RuneTMultibyte(slice.ptr[0..4], @intCast(u3, slice.len), CodePoint, strings.unicode_replacement), + else => strings.decodeWTF8RuneTMultibyte(slice.ptr[0..4], @as(u3, @intCast(slice.len)), CodePoint, strings.unicode_replacement), }; it.end = it.current; @@ -958,7 +958,7 @@ fn NewLexer_( if (!isIdentifier(identifier)) { try lexer.addRangeError( - .{ .loc = logger.usize2Loc(lexer.start), .len = @intCast(i32, lexer.end - lexer.start) }, + .{ .loc = logger.usize2Loc(lexer.start), .len = @as(i32, @intCast(lexer.end - lexer.start)) }, "Invalid identifier: \"{s}\"", .{result.contents}, true, @@ -1864,8 +1864,8 @@ fn NewLexer_( const vec: strings.AsciiVector = rest.ptr[0..strings.ascii_vector_size].*; // lookahead for any # or @ characters - const hashtag = @bitCast(strings.AsciiVectorU1, vec == @splat(strings.ascii_vector_size, @as(u8, '#'))); - const at = @bitCast(strings.AsciiVectorU1, vec == @splat(strings.ascii_vector_size, @as(u8, '@'))); + const hashtag = @as(strings.AsciiVectorU1, @bitCast(vec == @as(strings.AsciiVector, @splat(@as(u8, '#'))))); + const at = @as(strings.AsciiVectorU1, @bitCast(vec == @as(strings.AsciiVector, @splat(@as(u8, '@'))))); if (@reduce(.Max, hashtag + at) == 1) { rest.len = @intFromPtr(end) - @intFromPtr(rest.ptr); @@ -2079,15 +2079,15 @@ fn NewLexer_( switch (lexer.code_point) { 'd', 'g', 'i', 'm', 's', 'u', 'y', 'v' => { if (!has_set_flags_start) { - lexer.regex_flags_start = @truncate(u16, lexer.end - lexer.start); + lexer.regex_flags_start = @as(u16, @truncate(lexer.end - lexer.start)); has_set_flags_start = true; } - const flag = max_flag - @intCast(u8, lexer.code_point); + const flag = max_flag - @as(u8, @intCast(lexer.code_point)); if (flags.isSet(flag)) { lexer.addError( lexer.current, "Duplicate flag \"{u}\" in regular expression", - .{@intCast(u21, lexer.code_point)}, + .{@as(u21, @intCast(lexer.code_point))}, false, ); } @@ -2099,7 +2099,7 @@ fn NewLexer_( lexer.addError( lexer.current, "Invalid flag \"{u}\" in regular expression", - .{@intCast(u21, lexer.code_point)}, + .{@as(u21, @intCast(lexer.code_point))}, false, ); @@ -2134,9 +2134,9 @@ fn NewLexer_( var list = std.ArrayList(u8).initCapacity(lexer.allocator, js.len) catch unreachable; var i: usize = 0; while (i < js.len) : (i += 1) { - var r1 = @intCast(i32, js[i]); + var r1 = @as(i32, @intCast(js[i])); if (r1 >= 0xD800 and r1 <= 0xDBFF and i + 1 < js.len) { - const r2 = @intCast(i32, js[i] + 1); + const r2 = @as(i32, @intCast(js[i] + 1)); if (r2 >= 0xDC00 and r2 <= 0xDFFF) { r1 = (r1 - 0xD800) << 10 | (r2 - 0xDC00) + 0x10000; i += 1; @@ -2317,7 +2317,7 @@ fn NewLexer_( '\\' => { backslash = logger.Range{ .loc = logger.Loc{ - .start = @intCast(i32, lexer.end), + .start = @as(i32, @intCast(lexer.end)), }, .len = 1 }; lexer.step(); @@ -2531,11 +2531,11 @@ fn NewLexer_( break :brk strings.unicode_replacement; }; - cursor.i += @intCast(u32, length) + 1; + cursor.i += @as(u32, @intCast(length)) + 1; cursor.width = 1; } else if (tables.jsxEntity.get(entity)) |ent| { cursor.c = ent; - cursor.i += @intCast(u32, length) + 1; + cursor.i += @as(u32, @intCast(length)) + 1; } } } @@ -2550,18 +2550,18 @@ fn NewLexer_( if (cursor.c == '&') lexer.maybeDecodeJSXEntity(text, &cursor); if (cursor.c <= 0xFFFF) { - try out.append(@intCast(u16, cursor.c)); + try out.append(@as(u16, @intCast(cursor.c))); } else { cursor.c -= 0x10000; try out.ensureUnusedCapacity(2); (out.items.ptr + out.items.len)[0..2].* = [_]u16{ - @truncate( + @as( u16, - @bitCast(u32, @as(i32, 0xD800) + ((cursor.c >> 10) & 0x3FF)), + @truncate(@as(u32, @bitCast(@as(i32, 0xD800) + ((cursor.c >> 10) & 0x3FF)))), ), - @truncate( + @as( u16, - @bitCast(u32, @as(i32, 0xDC00) + (cursor.c & 0x3FF)), + @truncate(@as(u32, @bitCast(@as(i32, 0xDC00) + (cursor.c & 0x3FF)))), ), }; out.items = out.items.ptr[0 .. out.items.len + 2]; @@ -2950,9 +2950,9 @@ fn NewLexer_( // Parse a 32-bit integer (very fast path); var number: u32 = 0; for (text) |c| { - number = number * 10 + @intCast(u32, c - '0'); + number = number * 10 + @as(u32, @intCast(c - '0')); } - lexer.number = @floatFromInt(f64, number); + lexer.number = @as(f64, @floatFromInt(number)); } else { // Parse a double-precision floating-point number if (bun.parseDouble(text)) |num| { @@ -3089,7 +3089,7 @@ pub fn isIdentifierUTF16(text: []const u16) bool { // this fn is a stub! pub fn rangeOfIdentifier(source: *const Source, loc: logger.Loc) logger.Range { const contents = source.contents; - if (loc.start == -1 or @intCast(usize, loc.start) >= contents.len) return logger.Range.None; + if (loc.start == -1 or @as(usize, @intCast(loc.start)) >= contents.len) return logger.Range.None; const iter = strings.CodepointIterator.init(contents[loc.toUsize()..]); var cursor = strings.CodepointIterator.Cursor{}; @@ -3099,7 +3099,7 @@ pub fn rangeOfIdentifier(source: *const Source, loc: logger.Loc) logger.Range { return r; } const text = iter.bytes; - const end = @intCast(u32, text.len); + const end = @as(u32, @intCast(text.len)); if (!iter.next(&cursor)) return r; @@ -3112,7 +3112,7 @@ pub fn rangeOfIdentifier(source: *const Source, loc: logger.Loc) logger.Range { } if (isIdentifierStart(cursor.c) or cursor.c == '\\') { - defer r.len = @intCast(i32, cursor.i); + defer r.len = @as(i32, @intCast(cursor.i)); while (iter.next(&cursor)) { if (cursor.c == '\\') { @@ -3155,7 +3155,7 @@ pub fn rangeOfIdentifier(source: *const Source, loc: logger.Loc) logger.Range { } inline fn float64(num: anytype) f64 { - return @floatFromInt(f64, num); + return @as(f64, @floatFromInt(num)); } pub fn isLatin1Identifier(comptime Buffer: type, name: Buffer) bool { @@ -3215,7 +3215,7 @@ fn latin1IdentifierContinueLength(name: []const u8) usize { }; } - if (std.simd.firstIndexOfValue(@bitCast(Vec, other), 1)) |first| { + if (std.simd.firstIndexOfValue(@as(Vec, @bitCast(other)), 1)) |first| { if (comptime Environment.allow_assert) { for (vec[0..first]) |c| { std.debug.assert(isIdentifierContinue(c)); @@ -3293,9 +3293,9 @@ pub const PragmaArg = enum { return js_ast.Span{ .range = logger.Range{ - .len = @intCast(i32, i), + .len = @as(i32, @intCast(i)), .loc = logger.Loc{ - .start = @intCast(i32, start + @intCast(u32, offset_) + @intCast(u32, pragma.len)), + .start = @as(i32, @intCast(start + @as(u32, @intCast(offset_)) + @as(u32, @intCast(pragma.len)))), }, }, .text = text[0..i], @@ -3305,9 +3305,9 @@ pub const PragmaArg = enum { fn skipToInterestingCharacterInMultilineComment(text_: []const u8) ?u32 { var text = text_; - const star = @splat(strings.ascii_vector_size, @as(u8, '*')); - const carriage = @splat(strings.ascii_vector_size, @as(u8, '\r')); - const newline = @splat(strings.ascii_vector_size, @as(u8, '\n')); + const star: @Vector(strings.ascii_vector_size, u8) = @splat(@as(u8, '*')); + const carriage: @Vector(strings.ascii_vector_size, u8) = @splat(@as(u8, '\r')); + const newline: @Vector(strings.ascii_vector_size, u8) = @splat(@as(u8, '\n')); const V1x16 = strings.AsciiVectorU1; const text_end_len = text.len & ~(@as(usize, strings.ascii_vector_size) - 1); @@ -3320,41 +3320,41 @@ fn skipToInterestingCharacterInMultilineComment(text_: []const u8) ?u32 { const vec: strings.AsciiVector = text.ptr[0..strings.ascii_vector_size].*; const any_significant = - @bitCast(V1x16, vec > strings.max_16_ascii) | - @bitCast(V1x16, star == vec) | - @bitCast(V1x16, carriage == vec) | - @bitCast(V1x16, newline == vec); + @as(V1x16, @bitCast(vec > strings.max_16_ascii)) | + @as(V1x16, @bitCast(star == vec)) | + @as(V1x16, @bitCast(carriage == vec)) | + @as(V1x16, @bitCast(newline == vec)); if (@reduce(.Max, any_significant) > 0) { - const bitmask = @bitCast(u16, any_significant); + const bitmask = @as(u16, @bitCast(any_significant)); const first = @ctz(bitmask); std.debug.assert(first < strings.ascii_vector_size); std.debug.assert(text.ptr[first] == '*' or text.ptr[first] == '\r' or text.ptr[first] == '\n' or text.ptr[first] > 127); - return @truncate(u32, first + (@intFromPtr(text.ptr) - @intFromPtr(text_.ptr))); + return @as(u32, @truncate(first + (@intFromPtr(text.ptr) - @intFromPtr(text_.ptr)))); } text.ptr += strings.ascii_vector_size; } - return @truncate(u32, @intFromPtr(text.ptr) - @intFromPtr(text_.ptr)); + return @as(u32, @truncate(@intFromPtr(text.ptr) - @intFromPtr(text_.ptr))); } fn indexOfInterestingCharacterInStringLiteral(text_: []const u8, quote: u8) ?usize { var text = text_; - const quote_ = @splat(strings.ascii_vector_size, @as(u8, quote)); - const backslash = @splat(strings.ascii_vector_size, @as(u8, '\\')); + const quote_: @Vector(strings.ascii_vector_size, u8) = @splat(@as(u8, quote)); + const backslash: @Vector(strings.ascii_vector_size, u8) = @splat(@as(u8, '\\')); const V1x16 = strings.AsciiVectorU1; while (text.len >= strings.ascii_vector_size) { const vec: strings.AsciiVector = text[0..strings.ascii_vector_size].*; const any_significant = - @bitCast(V1x16, vec > strings.max_16_ascii) | - @bitCast(V1x16, vec < strings.min_16_ascii) | - @bitCast(V1x16, quote_ == vec) | - @bitCast(V1x16, backslash == vec); + @as(V1x16, @bitCast(vec > strings.max_16_ascii)) | + @as(V1x16, @bitCast(vec < strings.min_16_ascii)) | + @as(V1x16, @bitCast(quote_ == vec)) | + @as(V1x16, @bitCast(backslash == vec)); if (@reduce(.Max, any_significant) > 0) { - const bitmask = @bitCast(u16, any_significant); + const bitmask = @as(u16, @bitCast(any_significant)); const first = @ctz(bitmask); std.debug.assert(first < strings.ascii_vector_size); return first + (@intFromPtr(text.ptr) - @intFromPtr(text_.ptr)); diff --git a/src/js_lexer/identifier.zig b/src/js_lexer/identifier.zig index 8c1a59c2b..77308fcd2 100644 --- a/src/js_lexer/identifier.zig +++ b/src/js_lexer/identifier.zig @@ -19,9 +19,9 @@ pub const Bitset = struct { pub fn isIdentifierStart(codepoint: i32) bool { return codepoint >= (comptime id_start_range[0]) and codepoint <= (comptime id_start_range[1]) and - id_start.isSet((comptime @intCast(usize, id_start_range[1])) - @intCast( + id_start.isSet((comptime @as(usize, @intCast(id_start_range[1]))) - @as( usize, - codepoint, + @intCast(codepoint), )); } @@ -29,9 +29,9 @@ pub const Bitset = struct { return codepoint >= (comptime id_end_range[0]) and codepoint <= (comptime id_end_range[1]) and id_continue.isSet( - (comptime @intCast(usize, id_end_range[1])) - @intCast( + (comptime @as(usize, @intCast(id_end_range[1]))) - @as( usize, - codepoint, + @intCast(codepoint), ), ); } @@ -46,7 +46,7 @@ pub const JumpTable = struct { @setCold(true); return switch (codepoint) { // explicitly tell LLVM's optimizer about values we know will not be in the range of this switch statement - 0xaa...0xffd7 => isIdentifierPartSlow16(@intCast(u16, codepoint)), + 0xaa...0xffd7 => isIdentifierPartSlow16(@as(u16, @intCast(codepoint))), (0xffd7 + 1)...0xe01ef => isIdentifierPartSlow32(codepoint), else => false, }; @@ -87,7 +87,7 @@ pub const JumpTable = struct { // explicitly tell LLVM's optimizer about values we know will not be in the range of this switch statement (max_codepoint + 1)...maxInt(i32), minInt(i32)...127 => unreachable, - 128...0xfdc7 => isIdentifierStartSlow16(@intCast(u16, codepoint)), + 128...0xfdc7 => isIdentifierStartSlow16(@as(u16, @intCast(codepoint))), 0xfdf0...0x3134a => isIdentifierStartSlow32(codepoint), else => false, }; diff --git a/src/js_lexer/identifier_cache.zig b/src/js_lexer/identifier_cache.zig index 402e999f1..21511846f 100644 --- a/src/js_lexer/identifier_cache.zig +++ b/src/js_lexer/identifier_cache.zig @@ -6,13 +6,13 @@ pub const CachedBitset = extern struct { len: u32, pub fn fromFile(comptime filename: anytype) CachedBitset { - return comptime @bitCast(CachedBitset, bun.asByteSlice(@embedFile(filename)).ptr[0..@sizeOf(CachedBitset)].*); + return comptime @as(CachedBitset, @bitCast(bun.asByteSlice(@embedFile(filename)).ptr[0..@sizeOf(CachedBitset)].*)); } }; pub fn setMasks(masks: [*:0]const u8, comptime MaskType: type, masky: MaskType) void { const FieldInfo: std.builtin.Type.StructField = std.meta.fieldInfo(MaskType, "masks"); - masky.masks = @bitCast(masks, FieldInfo.type); + masky.masks = @as(masks, @bitCast(FieldInfo.type)); } pub const id_start_meta = CachedBitset.fromFile("id_start_bitset.meta.blob"); @@ -23,8 +23,8 @@ pub const id_continue_masks = @embedFile("id_continue_bitset.blob"); pub const IDStartType = bun.bit_set.ArrayBitSet(usize, id_start_meta.len); pub const IDContinueType = bun.bit_set.ArrayBitSet(usize, id_continue_meta.len); pub const id_start = IDStartType{ - .masks = @bitCast(std.meta.fieldInfo(IDStartType, .masks).type, @ptrCast(*const [id_start_masks.len]u8, id_start_masks).*), + .masks = @as(std.meta.fieldInfo(IDStartType, .masks).type, @bitCast(@as(*const [id_start_masks.len]u8, @ptrCast(id_start_masks)).*)), }; pub const id_continue = IDContinueType{ - .masks = @bitCast(std.meta.fieldInfo(IDContinueType, .masks).type, @ptrCast(*const [id_continue_masks.len]u8, id_continue_masks).*), + .masks = @as(std.meta.fieldInfo(IDContinueType, .masks).type, @bitCast(@as(*const [id_continue_masks.len]u8, @ptrCast(id_continue_masks)).*)), }; diff --git a/src/js_lexer/identifier_data.zig b/src/js_lexer/identifier_data.zig index c9c83d113..3ff27f9c6 100644 --- a/src/js_lexer/identifier_data.zig +++ b/src/js_lexer/identifier_data.zig @@ -165,11 +165,11 @@ test "Check #3" { var i: i32 = id_end_range[0]; while (i < id_end_range[1]) : (i += 1) { - try std.testing.expectEqual(id_continue.isSet(@intCast(usize, id_end_range[1] - i)), Cache.id_continue.isSet(@intCast(usize, id_end_range[1] - i))); + try std.testing.expectEqual(id_continue.isSet(@as(usize, @intCast(id_end_range[1] - i))), Cache.id_continue.isSet(@as(usize, @intCast(id_end_range[1] - i)))); } i = id_start_range[0]; while (i < id_start_range[1]) : (i += 1) { - try std.testing.expectEqual(id_start.isSet(@intCast(usize, id_start_range[1] - i)), Cache.id_start.isSet(@intCast(usize, id_start_range[1] - i))); + try std.testing.expectEqual(id_start.isSet(@as(usize, @intCast(id_start_range[1] - i))), Cache.id_start.isSet(@as(usize, @intCast(id_start_range[1] - i)))); } } diff --git a/src/js_parser.zig b/src/js_parser.zig index 3c706b1bb..d20c1a868 100644 --- a/src/js_parser.zig +++ b/src/js_parser.zig @@ -383,7 +383,7 @@ const JSXTag = struct { try p.lexer.expectInsideJSXElement(.t_identifier); if (strings.indexOfChar(member, '-')) |index| { - try p.log.addError(p.source, logger.Loc{ .start = member_range.loc.start + @intCast(i32, index) }, "Unexpected \"-\""); + try p.log.addError(p.source, logger.Loc{ .start = member_range.loc.start + @as(i32, @intCast(index)) }, "Unexpected \"-\""); return error.SyntaxError; } @@ -3123,7 +3123,7 @@ pub const Parser = struct { } if (needs_decl_count > 0) { - p.symbols.items[p.exports_ref.innerIndex()].use_count_estimate += @truncate(u32, export_refs.len); + p.symbols.items[p.exports_ref.innerIndex()].use_count_estimate += @as(u32, @truncate(export_refs.len)); p.deoptimizeCommonJSNamedExports(); } } @@ -4192,7 +4192,7 @@ pub const Parser = struct { var iter = p.runtime_imports.iter(); var i: usize = 0; while (iter.next()) |entry| { - runtime_imports[i] = @intCast(u8, entry.key); + runtime_imports[i] = @as(u8, @intCast(entry.key)); i += 1; } @@ -5184,7 +5184,7 @@ fn NewParser_( return p.newExpr( E.RequireString{ .import_record_index = import_record_index, - .unwrapped_id = @intCast(u32, p.imports_to_convert_from_require.items.len - 1), + .unwrapped_id = @as(u32, @intCast(p.imports_to_convert_from_require.items.len - 1)), }, arg.loc, ); @@ -5202,9 +5202,9 @@ fn NewParser_( p.import_records.items[import_record_index].contains_import_star = true; const symbol_name = p.import_records.items[import_record_index].path.name.nonUniqueNameString(p.allocator) catch unreachable; - const hash_value = @truncate( + const hash_value = @as( u16, - bun.hash(p.import_records.items[import_record_index].path.text), + @truncate(bun.hash(p.import_records.items[import_record_index].path.text)), ); const cjs_import_name = std.fmt.allocPrint( @@ -5524,7 +5524,7 @@ fn NewParser_( const symbol: *const Symbol = &symbols[entry.value_ptr.ref.innerIndex()]; if (symbol.slotNamespace() != .must_not_be_renamed) { - char_freq.scan(symbol.original_name, -@intCast(i32, symbol.use_count_estimate)); + char_freq.scan(symbol.original_name, -@as(i32, @intCast(symbol.use_count_estimate))); } } @@ -5532,7 +5532,7 @@ fn NewParser_( const symbol = &symbols[ref.innerIndex()]; if (symbol.slotNamespace() != .must_not_be_renamed) { - char_freq.scan(symbol.original_name, -@intCast(i32, symbol.use_count_estimate) - 1); + char_freq.scan(symbol.original_name, -@as(i32, @intCast(symbol.use_count_estimate)) - 1); } } @@ -8203,8 +8203,8 @@ fn NewParser_( } var item_refs = ImportItemForNamespaceMap.init(p.allocator); - const count_excluding_namespace = @intCast(u16, stmt.items.len) + - @intCast(u16, @intFromBool(stmt.default_name != null)); + const count_excluding_namespace = @as(u16, @intCast(stmt.items.len)) + + @as(u16, @intCast(@intFromBool(stmt.default_name != null))); try item_refs.ensureUnusedCapacity(count_excluding_namespace); // Even though we allocate ahead of time here @@ -8468,7 +8468,7 @@ fn NewParser_( } pub fn newSymbol(p: *P, kind: Symbol.Kind, identifier: string) !Ref { - const inner_index = @truncate(Ref.Int, p.symbols.items.len); + const inner_index = @as(Ref.Int, @truncate(p.symbols.items.len)); try p.symbols.append(Symbol{ .kind = kind, .original_name = identifier, @@ -11792,7 +11792,7 @@ fn NewParser_( // to the expression "a().b()". if (had_pure_comment_before and level.lt(.call)) { - expr = try p.parseSuffix(expr, @enumFromInt(Level, @intFromEnum(Level.call) - 1), errors, flags); + expr = try p.parseSuffix(expr, @as(Level, @enumFromInt(@intFromEnum(Level.call) - 1)), errors, flags); switch (expr.data) { .e_call => |ex| { ex.can_be_unwrapped_if_unused = true; @@ -11823,7 +11823,7 @@ fn NewParser_( .path = path, }; p.import_records.append(record) catch unreachable; - return @intCast(u32, index); + return @as(u32, @intCast(index)); } pub fn popScope(p: *P) void { @@ -12983,7 +12983,7 @@ fn NewParser_( } try p.lexer.next(); - left = p.newExpr(E.Binary{ .op = .bin_add_assign, .left = left, .right = try p.parseExpr(@enumFromInt(Op.Level, @intFromEnum(Op.Level.assign) - 1)) }, left.loc); + left = p.newExpr(E.Binary{ .op = .bin_add_assign, .left = left, .right = try p.parseExpr(@as(Op.Level, @enumFromInt(@intFromEnum(Op.Level.assign) - 1))) }, left.loc); }, .t_minus => { if (level.gte(.add)) { @@ -13422,7 +13422,7 @@ fn NewParser_( p.is_import_item.ensureUnusedCapacity( p.allocator, - @intCast(u32, p.is_import_item.count() + import.items.len), + @as(u32, @intCast(p.is_import_item.count() + import.items.len)), ) catch unreachable; for (import.items) |*clause| { @@ -13715,7 +13715,7 @@ fn NewParser_( if (value.data.e_index.index.data == .e_private_identifier) { const private = value.data.e_index.index.data.e_private_identifier; const name = p.loadNameFromRef(private.ref); - const range = logger.Range{ .loc = value.loc, .len = @intCast(i32, name.len) }; + const range = logger.Range{ .loc = value.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeErrorFmt(p.source, range, p.allocator, "Deleting the private name \"{s}\" is forbidden", .{name}) catch unreachable; } } @@ -15157,7 +15157,7 @@ fn NewParser_( const children_elements = e_.children.slice()[0..children_count]; for (children_elements) |child| { args[i] = p.visitExpr(child); - i += @intCast(usize, @intFromBool(args[i].data != .e_missing)); + i += @as(usize, @intCast(@intFromBool(args[i].data != .e_missing))); } const target = p.jsxStringsToMemberExpression(expr.loc, p.options.jsx.factory) catch unreachable; @@ -15188,7 +15188,7 @@ fn NewParser_( for (children) |child| { e_.children.ptr[last_child] = p.visitExpr(child); // if tree-shaking removes the element, we must also remove it here. - last_child += @intCast(u32, @intFromBool(e_.children.ptr[last_child].data != .e_missing)); + last_child += @as(u32, @intCast(@intFromBool(e_.children.ptr[last_child].data != .e_missing))); } e_.children.len = last_child; } @@ -15510,7 +15510,7 @@ fn NewParser_( // Unlike regular identifiers, there are no unbound private identifiers const kind: Symbol.Kind = p.symbols.items[result.ref.innerIndex()].kind; if (!Symbol.isKindPrivate(kind)) { - const r = logger.Range{ .loc = e_.left.loc, .len = @intCast(i32, name.len) }; + const r = logger.Range{ .loc = e_.left.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeErrorFmt(p.source, r, p.allocator, "Private name \"{s}\" must be declared in an enclosing class", .{name}) catch unreachable; } @@ -15972,17 +15972,17 @@ fn NewParser_( const kind: Symbol.Kind = p.symbols.items[result.ref.innerIndex()].kind; var r: logger.Range = undefined; if (!Symbol.isKindPrivate(kind)) { - r = logger.Range{ .loc = e_.index.loc, .len = @intCast(i32, name.len) }; + r = logger.Range{ .loc = e_.index.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeErrorFmt(p.source, r, p.allocator, "Private name \"{s}\" must be declared in an enclosing class", .{name}) catch unreachable; } else { if (in.assign_target != .none and (kind == .private_method or kind == .private_static_method)) { - r = logger.Range{ .loc = e_.index.loc, .len = @intCast(i32, name.len) }; + r = logger.Range{ .loc = e_.index.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeWarningFmt(p.source, r, p.allocator, "Writing to read-only method \"{s}\" will throw", .{name}) catch unreachable; } else if (in.assign_target != .none and (kind == .private_get or kind == .private_static_get)) { - r = logger.Range{ .loc = e_.index.loc, .len = @intCast(i32, name.len) }; + r = logger.Range{ .loc = e_.index.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeWarningFmt(p.source, r, p.allocator, "Writing to getter-only property \"{s}\" will throw", .{name}) catch unreachable; } else if (in.assign_target != .replace and (kind == .private_set or kind == .private_static_set)) { - r = logger.Range{ .loc = e_.index.loc, .len = @intCast(i32, name.len) }; + r = logger.Range{ .loc = e_.index.loc, .len = @as(i32, @intCast(name.len)) }; p.log.addRangeWarningFmt(p.source, r, p.allocator, "Reading from setter-only property \"{s}\" will throw", .{name}) catch unreachable; } } @@ -17735,7 +17735,7 @@ fn NewParser_( .needs_decl = true, }; if (p.commonjs_named_exports_needs_conversion == std.math.maxInt(u32)) - p.commonjs_named_exports_needs_conversion = @truncate(u32, p.commonjs_named_exports.count() - 1); + p.commonjs_named_exports_needs_conversion = @as(u32, @truncate(p.commonjs_named_exports.count() - 1)); } const ref = named_export_entry.value_ptr.*.loc_ref.ref.?; @@ -17768,7 +17768,7 @@ fn NewParser_( if (p.options.features.minify_syntax) { // minify "long-string".length to 11 if (strings.eqlComptime(name, "length")) { - return p.newExpr(E.Number{ .value = @floatFromInt(f64, str.javascriptLength()) }, loc); + return p.newExpr(E.Number{ .value = @as(f64, @floatFromInt(str.javascriptLength())) }, loc); } } }, @@ -18248,7 +18248,7 @@ fn NewParser_( return; } - data.decls.len = @truncate(u32, decls_len); + data.decls.len = @as(u32, @truncate(decls_len)); // Handle being exported inside a namespace if (data.is_export and p.enclosing_namespace_arg_ref != null) { @@ -19196,7 +19196,7 @@ fn NewParser_( { var array = expr.data.e_array; - array.items.len = @min(array.items.len, @truncate(u32, bound_array.items.len)); + array.items.len = @min(array.items.len, @as(u32, @truncate(bound_array.items.len))); for (bound_array.items[0..array.items.len], array.items.slice()) |item, *child_expr| { if (item.binding.data == .b_missing) { child_expr.* = p.newExpr(E.Missing{}, expr.loc); @@ -19489,7 +19489,7 @@ fn NewParser_( for (arg.ts_decorators.ptr[0..arg.ts_decorators.len]) |arg_decorator| { var decorators = if (is_constructor) class.ts_decorators.listManaged(p.allocator) else prop.ts_decorators.listManaged(p.allocator); const args = p.allocator.alloc(Expr, 2) catch unreachable; - args[0] = p.newExpr(E.Number{ .value = @floatFromInt(f64, i) }, arg_decorator.loc); + args[0] = p.newExpr(E.Number{ .value = @as(f64, @floatFromInt(i)) }, arg_decorator.loc); args[1] = arg_decorator; decorators.append(p.callRuntime(arg_decorator.loc, "__decorateParam", args)) catch unreachable; if (is_constructor) { @@ -20358,7 +20358,7 @@ fn NewParser_( var gpe = fn_stmts.getOrPut(name_ref) catch unreachable; var index = gpe.value_ptr.*; if (!gpe.found_existing) { - index = @intCast(u32, let_decls.items.len); + index = @as(u32, @intCast(let_decls.items.len)); gpe.value_ptr.* = index; let_decls.append(.{ .binding = p.b(B.Identifier{ @@ -20505,7 +20505,7 @@ fn NewParser_( decls[end] = decl; end += 1; } - local.decls.len = @truncate(u32, end); + local.decls.len = @as(u32, @truncate(end)); if (end == 0) { stmt.* = stmt.*.toEmpty(); } @@ -21440,7 +21440,7 @@ fn NewParser_( // We still call exportAll just with an empty object. const has_any_exports = named_exports_count > 0; - const toplevel_stmts_count = 3 + (@intCast(usize, @intFromBool(has_any_exports)) * 2); + const toplevel_stmts_count = 3 + (@as(usize, @intCast(@intFromBool(has_any_exports))) * 2); var _stmts = allocator.alloc( Stmt, end_iife_stmts_count + toplevel_stmts_count + (named_exports_count * 2) + imports_count + exports_from_count, @@ -21499,7 +21499,7 @@ fn NewParser_( var new_call_args = call_args[0..new_call_args_count]; var hmr_module_ident = p.newExpr(E.Identifier{ .ref = p.hmr_module.ref }, logger.Loc.Empty); - new_call_args[0] = p.newExpr(E.Number{ .value = @floatFromInt(f64, p.options.filepath_hash_for_hmr) }, logger.Loc.Empty); + new_call_args[0] = p.newExpr(E.Number{ .value = @as(f64, @floatFromInt(p.options.filepath_hash_for_hmr)) }, logger.Loc.Empty); // This helps us provide better error messages new_call_args[1] = p.newExpr(E.String{ .data = p.source.path.pretty }, logger.Loc.Empty); if (p.options.features.react_fast_refresh) { @@ -21816,7 +21816,7 @@ fn NewParser_( entry.value_ptr.* = .{}; } - entry.value_ptr.push(ctx.allocator, @truncate(u32, ctx.part_index)) catch unreachable; + entry.value_ptr.push(ctx.allocator, @as(u32, @truncate(ctx.part_index))) catch unreachable; } }; @@ -21827,7 +21827,7 @@ fn NewParser_( .allocator = p.allocator, .top_level_symbols_to_parts = top_level, .symbols = p.symbols.items, - .part_index = @truncate(u32, part_index), + .part_index = @as(u32, @truncate(part_index)), }; DeclaredSymbol.forEachTopLevelSymbol(decls, ctx, Ctx.next); diff --git a/src/js_printer.zig b/src/js_printer.zig index a47cc1a23..08a1cb5c1 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -69,7 +69,7 @@ fn formatUnsignedIntegerBetween(comptime len: u16, buf: *[len]u8, val: u64) void inline while (i > 0) { comptime i -= 1; - buf[comptime i] = @intCast(u8, (remainder % 10)) + '0'; + buf[comptime i] = @as(u8, @intCast((remainder % 10))) + '0'; remainder /= 10; } } @@ -188,7 +188,7 @@ pub fn estimateLengthForJSON(input: []const u8, comptime ascii_only: bool) usize } remaining = remaining[char_len..]; } else { - return @truncate(u32, remaining.len) + 2; + return @as(u32, @truncate(remaining.len)) + 2; } return len; @@ -260,7 +260,7 @@ pub fn quoteForJSON(text: []const u8, output_: MutableString, comptime ascii_onl i += @as(usize, width); if (c < 0xFFFF) { - const k = @intCast(usize, c); + const k = @as(usize, @intCast(c)); bytes.ensureUnusedCapacity(6) catch unreachable; const old = bytes.list.items.len; bytes.list.items.len += 6; @@ -279,8 +279,8 @@ pub fn quoteForJSON(text: []const u8, output_: MutableString, comptime ascii_onl bytes.list.items.len += 12; const k = c - 0x10000; - const lo = @intCast(usize, first_high_surrogate + ((k >> 10) & 0x3FF)); - const hi = @intCast(usize, first_low_surrogate + (k & 0x3FF)); + const lo = @as(usize, @intCast(first_high_surrogate + ((k >> 10) & 0x3FF))); + const hi = @as(usize, @intCast(first_low_surrogate + (k & 0x3FF))); bytes.list.items[old .. old + 12][0..12].* = [_]u8{ '\\', @@ -407,7 +407,7 @@ pub fn writeJSONString(input: []const u8, comptime Writer: type, writer: Writer, text = text[@as(usize, width)..]; if (c < 0xFFFF) { - const k = @intCast(usize, c); + const k = @as(usize, @intCast(c)); try writer.writeAll(&[_]u8{ '\\', @@ -419,8 +419,8 @@ pub fn writeJSONString(input: []const u8, comptime Writer: type, writer: Writer, }); } else { const k = c - 0x10000; - const lo = @intCast(usize, first_high_surrogate + ((k >> 10) & 0x3FF)); - const hi = @intCast(usize, first_low_surrogate + (k & 0x3FF)); + const lo = @as(usize, @intCast(first_high_surrogate + ((k >> 10) & 0x3FF))); + const hi = @as(usize, @intCast(first_low_surrogate + (k & 0x3FF))); try writer.writeAll(&[_]u8{ '\\', @@ -467,7 +467,7 @@ pub const SourceMapHandler = struct { pub fn For(comptime Type: type, comptime handler: (fn (t: *Type, chunk: SourceMap.Chunk, source: logger.Source) anyerror!void)) type { return struct { pub fn onChunk(self: *anyopaque, chunk: SourceMap.Chunk, source: logger.Source) anyerror!void { - try handler(@ptrCast(*Type, @alignCast(@alignOf(*Type), self)), chunk, source); + try handler(@as(*Type, @ptrCast(@alignCast(self))), chunk, source); } pub fn init(self: *Type) SourceMapHandler { @@ -571,7 +571,7 @@ pub const RequireOrImportMeta = struct { ) Callback { return Callback{ .ctx = bun.cast(*anyopaque, ctx), - .callback = @ptrCast(*const Fn, &callback), + .callback = @as(*const Fn, @ptrCast(&callback)), }; } }; @@ -1340,13 +1340,13 @@ fn NewPrinter( // In JavaScript, numbers are represented as 64 bit floats // However, they could also be signed or unsigned int 32 (when doing bit shifts) // In this case, it's always going to unsigned since that conversion has already happened. - const val = @intFromFloat(u64, float); + const val = @as(u64, @intFromFloat(float)); switch (val) { 0 => { p.print("0"); }, 1...9 => { - var bytes = [1]u8{'0' + @intCast(u8, val)}; + var bytes = [1]u8{'0' + @as(u8, @intCast(val))}; p.print(&bytes); }, 10 => { @@ -1552,7 +1552,7 @@ fn NewPrinter( else => { switch (c) { first_ascii...last_ascii => { - e.print(@intCast(u8, c)); + e.print(@as(u8, @intCast(c))); // Fast path for printing long UTF-16 template literals // this only applies to template literal strings @@ -1578,7 +1578,7 @@ fn NewPrinter( e.writer.advance(len); continue :outer; } else { - const count = @truncate(u32, remain.len); + const count = @as(u32, @truncate(remain.len)); var ptr = e.writer.reserve(count) catch unreachable; var to_copy = ptr[0..count]; strings.copyU16IntoU8(to_copy, []const u16, remain); @@ -4504,7 +4504,7 @@ fn NewPrinter( p.print(","); p.printSpace(); } - p.printLoadFromBundleWithoutCall(@truncate(u32, i)); + p.printLoadFromBundleWithoutCall(@as(u32, @truncate(i))); needs_comma = true; } @@ -5291,7 +5291,7 @@ pub fn NewWriter( pub fn advance(writer: *Self, count: u32) void { advanceBy(&writer.ctx, count); - writer.written += @intCast(i32, count); + writer.written += @as(i32, @intCast(count)); } pub const Error = error{FormatError}; @@ -5299,7 +5299,7 @@ pub fn NewWriter( pub fn writeAll(writer: *Self, bytes: anytype) Error!usize { const written = @max(writer.written, 0); writer.print(@TypeOf(bytes), bytes); - return @intCast(usize, writer.written) - @intCast(usize, written); + return @as(usize, @intCast(writer.written)) - @as(usize, @intCast(written)); } pub inline fn print(writer: *Self, comptime ValueType: type, str: ValueType) void { @@ -5311,12 +5311,12 @@ pub fn NewWriter( switch (ValueType) { comptime_int, u16, u8 => { - const written = writeByte(&writer.ctx, @intCast(u8, str)) catch |err| brk: { + const written = writeByte(&writer.ctx, @as(u8, @intCast(str))) catch |err| brk: { writer.orig_err = err; break :brk 0; }; - writer.written += @intCast(i32, written); + writer.written += @as(i32, @intCast(written)); writer.err = if (written == 0) error.WriteFailed else writer.err; }, else => { @@ -5325,7 +5325,7 @@ pub fn NewWriter( break :brk 0; }; - writer.written += @intCast(i32, written); + writer.written += @as(i32, @intCast(written)); if (written < str.len) { writer.err = if (written == 0) error.WriteFailed else error.PartialWrite; } @@ -5419,7 +5419,7 @@ const FileWriterInternal = struct { pub fn reserveNext(_: *FileWriterInternal, count: u32) anyerror![*]u8 { try buffer.growIfNeeded(count); - return @ptrCast([*]u8, &buffer.list.items.ptr[buffer.list.items.len]); + return @as([*]u8, @ptrCast(&buffer.list.items.ptr[buffer.list.items.len])); } pub fn advanceBy(this: *FileWriterInternal, count: u32) void { if (comptime Environment.isDebug) std.debug.assert(buffer.list.items.len + count <= buffer.list.capacity); @@ -5534,7 +5534,7 @@ pub const BufferWriter = struct { pub fn reserveNext(ctx: *BufferWriter, count: u32) anyerror![*]u8 { try ctx.buffer.growIfNeeded(count); - return @ptrCast([*]u8, &ctx.buffer.list.items.ptr[ctx.buffer.list.items.len]); + return @as([*]u8, @ptrCast(&ctx.buffer.list.items.ptr[ctx.buffer.list.items.len])); } pub fn advanceBy(ctx: *BufferWriter, count: u32) void { if (comptime Environment.isDebug) std.debug.assert(ctx.buffer.list.items.len + count <= ctx.buffer.list.capacity); @@ -5644,9 +5644,9 @@ pub fn getSourceMapBuilder( if (generate_source_map == .lazy) break :brk SourceMap.LineOffsetTable.generate( opts.allocator, source.contents, - @intCast( + @as( i32, - tree.approximate_newline_count, + @intCast(tree.approximate_newline_count), ), ); @@ -5788,7 +5788,7 @@ pub fn printAst( try printer.writer.done(); - return @intCast(usize, @max(printer.writer.written, 0)); + return @as(usize, @intCast(@max(printer.writer.written, 0))); } pub fn printJSON( @@ -5824,7 +5824,7 @@ pub fn printJSON( } try printer.writer.done(); - return @intCast(usize, @max(printer.writer.written, 0)); + return @as(usize, @intCast(@max(printer.writer.written, 0))); } pub fn print( @@ -6006,7 +6006,7 @@ pub fn printCommonJS( try printer.writer.done(); - return @intCast(usize, @max(printer.writer.written, 0)); + return @as(usize, @intCast(@max(printer.writer.written, 0))); } // pub fn printChunk( @@ -6082,26 +6082,26 @@ pub fn printCommonJSThreaded( { defer lock.unlock(); lock.lock(); - result.off = @truncate(u32, try getPos(getter)); + result.off = @as(u32, @truncate(try getPos(getter))); if (comptime Environment.isLinux) { if (printer.writer.written > C.preallocate_length) { // on mac, it's relative to current position in file handle // on linux, it's absolute try C.preallocate_file( getter.handle, - @intCast(std.os.off_t, if (comptime Environment.isMac) 0 else result.off), - @intCast(std.os.off_t, printer.writer.written), + @as(std.os.off_t, @intCast(if (comptime Environment.isMac) 0 else result.off)), + @as(std.os.off_t, @intCast(printer.writer.written)), ); } } try printer.writer.done(); @fence(.SeqCst); - result.end_off = @truncate(u32, try getPos(getter)); + result.end_off = @as(u32, @truncate(try getPos(getter))); @atomicStore(u32, end_off_ptr, result.end_off, .SeqCst); } - result.len = @intCast(usize, @max(printer.writer.written, 0)); + result.len = @as(usize, @intCast(@max(printer.writer.written, 0))); return result; } diff --git a/src/json_parser.zig b/src/json_parser.zig index c7dd74943..eb8018bfa 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -542,7 +542,7 @@ pub fn toAST( return Expr{ .data = .{ .e_number = .{ - .value = @floatFromInt(f64, value), + .value = @as(f64, @floatFromInt(value)), }, }, .loc = logger.Loc{}, @@ -552,7 +552,7 @@ pub fn toAST( return Expr{ .data = .{ .e_number = .{ - .value = @floatCast(f64, value), + .value = @as(f64, @floatCast(value)), }, }, .loc = logger.Loc{}, diff --git a/src/libarchive/libarchive.zig b/src/libarchive/libarchive.zig index c2948fd28..69fe43b70 100644 --- a/src/libarchive/libarchive.zig +++ b/src/libarchive/libarchive.zig @@ -245,7 +245,7 @@ pub const BufferReadStream = struct { } pub inline fn fromCtx(ctx: *anyopaque) *Stream { - return @ptrCast(*Stream, @alignCast(@alignOf(*Stream), ctx)); + return @as(*Stream, @ptrCast(@alignCast(ctx))); } pub fn archive_close_callback( @@ -267,7 +267,7 @@ pub const BufferReadStream = struct { const diff = @min(remaining.len, this.block_size); buffer.* = remaining[0..diff].ptr; this.pos += diff; - return @intCast(isize, diff); + return @as(isize, @intCast(diff)); } pub fn archive_skip_callback( @@ -277,12 +277,12 @@ pub const BufferReadStream = struct { ) callconv(.C) lib.la_int64_t { var this = fromCtx(ctx_); - const buflen = @intCast(isize, this.buf.len); - const pos = @intCast(isize, this.pos); + const buflen = @as(isize, @intCast(this.buf.len)); + const pos = @as(isize, @intCast(this.pos)); const proposed = pos + offset; const new_pos = @min(@max(proposed, 0), buflen - 1); - this.pos = @intCast(usize, this.pos); + this.pos = @as(usize, @intCast(this.pos)); return new_pos - pos; } @@ -294,23 +294,23 @@ pub const BufferReadStream = struct { ) callconv(.C) lib.la_int64_t { var this = fromCtx(ctx_); - const buflen = @intCast(isize, this.buf.len); - const pos = @intCast(isize, this.pos); + const buflen = @as(isize, @intCast(this.buf.len)); + const pos = @as(isize, @intCast(this.pos)); - switch (@enumFromInt(Seek, whence)) { + switch (@as(Seek, @enumFromInt(whence))) { Seek.current => { const new_pos = @max(@min(pos + offset, buflen - 1), 0); - this.pos = @intCast(usize, new_pos); + this.pos = @as(usize, @intCast(new_pos)); return new_pos; }, Seek.end => { const new_pos = @max(@min(buflen - offset, buflen), 0); - this.pos = @intCast(usize, new_pos); + this.pos = @as(usize, @intCast(new_pos)); return new_pos; }, Seek.set => { const new_pos = @max(@min(offset, buflen - 1), 0); - this.pos = @intCast(usize, new_pos); + this.pos = @as(usize, @intCast(new_pos)); return new_pos; }, } @@ -363,7 +363,7 @@ pub const Archive = struct { pub const U64Context = struct { pub fn hash(_: @This(), k: u64) u32 { - return @truncate(u32, k); + return @as(u32, @truncate(k)); } pub fn eql(_: @This(), a: u64, b: u64, _: usize) bool { return a == b; @@ -413,7 +413,7 @@ pub const Archive = struct { }; loop: while (true) { - const r = @enumFromInt(Status, lib.archive_read_next_header(archive, &entry)); + const r = @as(Status, @enumFromInt(lib.archive_read_next_header(archive, &entry))); switch (r) { Status.eof => break :loop, @@ -434,7 +434,7 @@ pub const Archive = struct { pathname = std.mem.sliceTo(pathname_.ptr[0..pathname_.len :0], 0); const dirname = std.mem.trim(u8, std.fs.path.dirname(bun.asByteSlice(pathname)) orelse "", std.fs.path.sep_str); - const size = @intCast(usize, @max(lib.archive_entry_size(entry), 0)); + const size = @as(usize, @intCast(@max(lib.archive_entry_size(entry), 0))); if (size > 0) { var opened = dir.dir.openFileZ(pathname, .{ .mode = .write_only }) catch continue :loop; var stat = try opened.stat(); @@ -490,7 +490,7 @@ pub const Archive = struct { const dir_fd = dir.fd; loop: while (true) { - const r = @enumFromInt(Status, lib.archive_read_next_header(archive, &entry)); + const r = @as(Status, @enumFromInt(lib.archive_read_next_header(archive, &entry))); switch (r) { Status.eof => break :loop, @@ -513,7 +513,7 @@ pub const Archive = struct { } var pathname_ = tokenizer.rest(); - pathname = @ptrFromInt([*]const u8, @intFromPtr(pathname_.ptr))[0..pathname_.len :0]; + pathname = @as([*]const u8, @ptrFromInt(@intFromPtr(pathname_.ptr)))[0..pathname_.len :0]; if (pathname.len == 0) continue; const kind = C.kindFromMode(lib.archive_entry_filetype(entry)); @@ -528,7 +528,7 @@ pub const Archive = struct { switch (kind) { Kind.directory => { - var mode = @intCast(i32, lib.archive_entry_perm(entry)); + var mode = @as(i32, @intCast(lib.archive_entry_perm(entry))); // if dirs are readable, then they should be listable // https://github.com/npm/node-tar/blob/main/lib/mode-fix.js @@ -539,7 +539,7 @@ pub const Archive = struct { if ((mode & 0o4) != 0) mode |= 0o1; - std.os.mkdiratZ(dir_fd, pathname, @intCast(u32, mode)) catch |err| { + std.os.mkdiratZ(dir_fd, pathname, @as(u32, @intCast(mode))) catch |err| { if (err == error.PathAlreadyExists or err == error.NotDir) break; try dir.makePath(std.fs.path.dirname(slice) orelse return err); try std.os.mkdiratZ(dir_fd, pathname, 0o777); @@ -561,7 +561,7 @@ pub const Archive = struct { }; }, Kind.file => { - const mode = @intCast(std.os.mode_t, lib.archive_entry_perm(entry)); + const mode = @as(std.os.mode_t, @intCast(lib.archive_entry_perm(entry))); const file = dir.createFileZ(pathname, .{ .truncate = true, .mode = mode }) catch |err| brk: { switch (err) { error.AccessDenied, error.FileNotFound => { @@ -579,7 +579,7 @@ pub const Archive = struct { defer if (comptime close_handles) file.close(); const entry_size = @max(lib.archive_entry_size(entry), 0); - const size = @intCast(usize, entry_size); + const size = @as(usize, @intCast(entry_size)); if (size > 0) { if (ctx) |ctx_| { const hash: u64 = if (ctx_.pluckers.len > 0) @@ -599,7 +599,7 @@ pub const Archive = struct { try plucker_.contents.inflate(size); plucker_.contents.list.expandToCapacity(); var read = lib.archive_read_data(archive, plucker_.contents.list.items.ptr, size); - try plucker_.contents.inflate(@intCast(usize, read)); + try plucker_.contents.inflate(@as(usize, @intCast(read))); plucker_.found = read > 0; plucker_.fd = file.handle; continue :loop; diff --git a/src/linker.zig b/src/linker.zig index fa1c504d7..744c5eabc 100644 --- a/src/linker.zig +++ b/src/linker.zig @@ -234,7 +234,7 @@ pub const Linker = struct { switch (result.loader) { .jsx, .js, .ts, .tsx => { var record_i: u32 = 0; - const record_count = @truncate(u32, import_records.items.len); + const record_count = @as(u32, @truncate(import_records.items.len)); outer: while (record_i < record_count) : (record_i += 1) { var import_record = &import_records.items[record_i]; @@ -569,7 +569,7 @@ pub const Linker = struct { // But we need to at least tell the printer that this needs to happen. if (loader != .napi and resolved_import.shouldAssumeCommonJS(import_record.kind) and !is_bun) { import_record.do_commonjs_transform_in_printer = true; - import_record.module_id = @truncate(u32, bun.hash(path.pretty)); + import_record.module_id = @as(u32, @truncate(bun.hash(path.pretty))); } } else |err| { switch (err) { diff --git a/src/linux_c.zig b/src/linux_c.zig index 12e3c9b73..0c0631738 100644 --- a/src/linux_c.zig +++ b/src/linux_c.zig @@ -148,7 +148,7 @@ pub const SystemErrno = enum(u8) { } if (code >= max) return null; - return @enumFromInt(SystemErrno, code); + return @as(SystemErrno, @enumFromInt(code)); } pub fn label(this: SystemErrno) ?[]const u8 { @@ -373,7 +373,7 @@ pub fn preallocate_file(fd: std.os.fd_t, offset: std.os.off_t, len: std.os.off_t // './micro 65432000 temp --preallocate' ran // 1.18 ± 0.06 times faster than './micro 65432000 temp' // - _ = std.os.linux.fallocate(fd, 0, @intCast(i64, offset), len); + _ = std.os.linux.fallocate(fd, 0, @as(i64, @intCast(offset)), len); } /// splice() moves data between two file descriptors without copying @@ -384,9 +384,9 @@ pub fn preallocate_file(fd: std.os.fd_t, offset: std.os.off_t, len: std.os.off_t pub fn splice(fd_in: std.os.fd_t, off_in: ?*i64, fd_out: std.os.fd_t, off_out: ?*i64, len: usize, flags: u32) usize { return std.os.linux.syscall6( .splice, - @bitCast(usize, @as(isize, fd_in)), + @as(usize, @bitCast(@as(isize, fd_in))), @intFromPtr(off_in), - @bitCast(usize, @as(isize, fd_out)), + @as(usize, @bitCast(@as(isize, fd_out))), @intFromPtr(off_out), len, flags, @@ -411,26 +411,26 @@ pub const struct_sysinfo = extern struct { pub fn _f(self: anytype) @import("std").zig.c_translation.FlexibleArrayType(@TypeOf(self), u8) { const Intermediate = @import("std").zig.c_translation.FlexibleArrayType(@TypeOf(self), u8); const ReturnType = @import("std").zig.c_translation.FlexibleArrayType(@TypeOf(self), u8); - return @ptrCast(ReturnType, @alignCast(@alignOf(u8), @ptrCast(Intermediate, self) + 108)); + return @as(ReturnType, @ptrCast(@alignCast(@as(Intermediate, @ptrCast(self)) + 108))); } }; pub extern fn sysinfo(__info: [*c]struct_sysinfo) c_int; pub fn get_free_memory() u64 { var info: struct_sysinfo = undefined; - if (sysinfo(&info) == @as(c_int, 0)) return @bitCast(u64, info.freeram) *% @bitCast(c_ulong, @as(c_ulong, info.mem_unit)); + if (sysinfo(&info) == @as(c_int, 0)) return @as(u64, @bitCast(info.freeram)) *% @as(c_ulong, @bitCast(@as(c_ulong, info.mem_unit))); return 0; } pub fn get_total_memory() u64 { var info: struct_sysinfo = undefined; - if (sysinfo(&info) == @as(c_int, 0)) return @bitCast(u64, info.totalram) *% @bitCast(c_ulong, @as(c_ulong, info.mem_unit)); + if (sysinfo(&info) == @as(c_int, 0)) return @as(u64, @bitCast(info.totalram)) *% @as(c_ulong, @bitCast(@as(c_ulong, info.mem_unit))); return 0; } pub fn get_system_uptime() u64 { var info: struct_sysinfo = undefined; - if (sysinfo(&info) == @as(c_int, 0)) return @bitCast(u64, info.uptime); + if (sysinfo(&info) == @as(c_int, 0)) return @as(u64, @bitCast(info.uptime)); return 0; } @@ -438,9 +438,9 @@ pub fn get_system_loadavg() [3]f64 { var info: struct_sysinfo = undefined; if (sysinfo(&info) == @as(c_int, 0)) { return [3]f64{ - std.math.ceil((@floatFromInt(f64, info.loads[0]) / 65536.0) * 100.0) / 100.0, - std.math.ceil((@floatFromInt(f64, info.loads[1]) / 65536.0) * 100.0) / 100.0, - std.math.ceil((@floatFromInt(f64, info.loads[2]) / 65536.0) * 100.0) / 100.0, + std.math.ceil((@as(f64, @floatFromInt(info.loads[0])) / 65536.0) * 100.0) / 100.0, + std.math.ceil((@as(f64, @floatFromInt(info.loads[1])) / 65536.0) * 100.0) / 100.0, + std.math.ceil((@as(f64, @floatFromInt(info.loads[2])) / 65536.0) * 100.0) / 100.0, }; } return [3]f64{ 0, 0, 0 }; diff --git a/src/logger.zig b/src/logger.zig index fc25541de..5a9e5b973 100644 --- a/src/logger.zig +++ b/src/logger.zig @@ -75,7 +75,7 @@ pub const Loc = struct { pub const toUsize = i; pub inline fn i(self: *const Loc) usize { - return @intCast(usize, @max(self.start, 0)); + return @as(usize, @intCast(@max(self.start, 0))); } pub const Empty = Loc{ .start = -1 }; @@ -151,7 +151,7 @@ pub const Location = struct { .column = this.column, .line_text = this.line_text orelse "", .suggestion = this.suggestion orelse "", - .offset = @truncate(u32, this.offset), + .offset = @as(u32, @truncate(this.offset)), }; } @@ -194,7 +194,7 @@ pub const Location = struct { .column = usize2Loc(data.column_count).start, .length = full_line.len, .line_text = full_line, - .offset = @intCast(usize, @max(r.loc.start, 0)), + .offset = @as(usize, @intCast(@max(r.loc.start, 0))), }; } else { return null; @@ -293,7 +293,7 @@ pub const Data = struct { if (location.line_text) |line_text_| { const line_text = std.mem.trimRight(u8, line_text_, "\r\n\t"); - const location_in_line_text = @intCast(u32, @max(location.column, 1) - 1); + const location_in_line_text = @as(u32, @intCast(@max(location.column, 1) - 1)); const has_position = location.column > -1 and line_text.len > 0 and location_in_line_text < line_text.len; if (has_position) { @@ -400,8 +400,8 @@ pub const BabyString = packed struct { pub fn in(parent: string, text: string) BabyString { return BabyString{ - .offset = @truncate(u16, std.mem.indexOf(u8, parent, text) orelse unreachable), - .len = @truncate(u16, text.len), + .offset = @as(u16, @truncate(std.mem.indexOf(u8, parent, text) orelse unreachable)), + .len = @as(u16, @truncate(text.len)), }; } @@ -597,8 +597,8 @@ pub const Range = struct { pub fn in(this: Range, buf: []const u8) []const u8 { if (this.loc.start < 0 or this.len <= 0) return ""; - const slice = buf[@intCast(usize, this.loc.start)..]; - return slice[0..@min(@intCast(usize, this.len), buf.len)]; + const slice = buf[@as(usize, @intCast(this.loc.start))..]; + return slice[0..@min(@as(usize, @intCast(this.len)), buf.len)]; } pub fn contains(this: Range, k: i32) bool { @@ -650,8 +650,8 @@ pub const Log = struct { var warnings: u32 = 0; var errors: u32 = 0; for (this.msgs.items) |msg| { - errors += @intCast(u32, @intFromBool(msg.kind == .err)); - warnings += @intCast(u32, @intFromBool(msg.kind == .warn)); + errors += @as(u32, @intCast(@intFromBool(msg.kind == .err))); + warnings += @as(u32, @intCast(@intFromBool(msg.kind == .warn))); } return Api.Log{ @@ -715,7 +715,7 @@ pub const Log = struct { const msgs: []const Msg = this.msgs.items; var errors_stack: [256]*anyopaque = undefined; - const count = @intCast(u16, @min(msgs.len, errors_stack.len)); + const count = @as(u16, @intCast(@min(msgs.len, errors_stack.len))); switch (count) { 0 => return JSC.JSValue.jsUndefined(), 1 => { @@ -743,11 +743,11 @@ pub const Log = struct { const msgs: []const Msg = this.msgs.items; var errors_stack: [256]*anyopaque = undefined; - const count = @intCast(u16, @min(msgs.len, errors_stack.len)); + const count = @as(u16, @intCast(@min(msgs.len, errors_stack.len))); var arr = JSC.JSValue.createEmptyArray(global, count); for (msgs[0..count], 0..) |msg, i| { - arr.putIndex(global, @intCast(u32, i), msg.toJS(global, allocator)); + arr.putIndex(global, @as(u32, @intCast(i)), msg.toJS(global, allocator)); } return arr; @@ -760,7 +760,7 @@ pub const Log = struct { const msg: Msg = msg_; if (msg.notes) |notes| { for (notes) |note| { - notes_count += @intCast(usize, @intFromBool(note.text.len > 0)); + notes_count += @as(usize, @intCast(@intFromBool(note.text.len > 0))); } } } @@ -1228,7 +1228,7 @@ pub const Log = struct { }; pub inline fn usize2Loc(loc: usize) Loc { - return Loc{ .start = @intCast(i32, loc) }; + return Loc{ .start = @as(i32, @intCast(loc)) }; } pub const Source = struct { @@ -1267,7 +1267,7 @@ pub const Source = struct { pub fn isWebAssembly(this: *const Source) bool { if (this.contents.len < 4) return false; - const bytes = @bitCast(u32, this.contents[0..4].*); + const bytes = @as(u32, @bitCast(this.contents[0..4].*)); return bytes == 0x6d736100; // "\0asm" } @@ -1320,7 +1320,7 @@ pub const Source = struct { if (index >= 0) { return Range{ .loc = Loc{ .start = loc.start + index, - }, .len = @intCast(i32, op.len) }; + }, .len = @as(i32, @intCast(op.len)) }; } return Range{ .loc = loc }; @@ -1344,7 +1344,7 @@ pub const Source = struct { c = text[i]; if (c == quote) { - return Range{ .loc = loc, .len = @intCast(i32, i + 1) }; + return Range{ .loc = loc, .len = @as(i32, @intCast(i + 1)) }; } else if (c == '\\') { i += 1; } @@ -1369,7 +1369,7 @@ pub const Source = struct { pub fn initErrorPosition(self: *const Source, _offset: Loc) ErrorPosition { var prev_code_point: i32 = 0; - var offset: usize = @min(if (_offset.start < 0) 0 else @intCast(usize, _offset.start), @max(self.contents.len, 1) - 1); + var offset: usize = @min(if (_offset.start < 0) 0 else @as(usize, @intCast(_offset.start)), @max(self.contents.len, 1) - 1); const contents = self.contents; diff --git a/src/main_wasm.zig b/src/main_wasm.zig index c9e4666e8..d58ce60a0 100644 --- a/src/main_wasm.zig +++ b/src/main_wasm.zig @@ -30,15 +30,15 @@ pub const Uint8Array = extern struct { len: usize = 0, pub fn fromSlice(slice: []const u8) u64 { - return @bitCast(u64, [2]u32{ + return @as(u64, @bitCast([2]u32{ @intFromPtr(slice.ptr), slice.len, - }); + })); } pub fn fromJS(data: u64) []u8 { - const ptrs = @bitCast([2]u32, data); - return @ptrFromInt([*]u8, ptrs[0])[0..ptrs[1]]; + const ptrs = @as([2]u32, @bitCast(data)); + return @as([*]u8, @ptrFromInt(ptrs[0]))[0..ptrs[1]]; } }; @@ -166,10 +166,10 @@ var buffer_writer: JSPrinter.BufferWriter = undefined; var writer: JSPrinter.BufferPrinter = undefined; var define: *Define.Define = undefined; export fn bun_malloc(size: usize) u64 { - return @bitCast(u64, [2]u32{ + return @as(u64, @bitCast([2]u32{ @intFromPtr((default_allocator.alloc(u8, size) catch unreachable).ptr), size, - }); + })); } export fn bun_free(bytes: u64) void { @@ -270,7 +270,7 @@ export fn transform(opts_array: u64) u64 { const Encoder = ApiWriter(@TypeOf(output_writer)); var encoder = Encoder.init(output_writer); transform_response.encode(&encoder) catch unreachable; - return @bitCast(u64, [2]u32{ @intFromPtr(output.items.ptr), output.items.len }); + return @as(u64, @bitCast([2]u32{ @intFromPtr(output.items.ptr), output.items.len })); } export fn scan(opts_array: u64) u64 { @@ -325,7 +325,7 @@ export fn scan(opts_array: u64) u64 { var encoder = Encoder.init(output_writer); scan_result.encode(&encoder) catch unreachable; - return @bitCast(u64, [2]u32{ @intFromPtr(output.items.ptr), output.items.len }); + return @as(u64, @bitCast([2]u32{ @intFromPtr(output.items.ptr), output.items.len })); } // pub fn main() anyerror!void {} diff --git a/src/memory_allocator.zig b/src/memory_allocator.zig index 391446f5e..dbcc492e9 100644 --- a/src/memory_allocator.zig +++ b/src/memory_allocator.zig @@ -71,7 +71,7 @@ const CAllocator = struct { } } - return @ptrCast(?[*]u8, ptr); + return @as(?[*]u8, @ptrCast(ptr)); } fn alignedAllocSize(ptr: [*]u8) usize { @@ -83,7 +83,7 @@ const CAllocator = struct { return alignedAlloc(len, log2_align); } - const alignment = @as(usize, 1) << @intCast(Allocator.Log2Align, log2_align); + const alignment = @as(usize, 1) << @as(Allocator.Log2Align, @intCast(log2_align)); return alignedAlloc(len, alignment); } @@ -132,7 +132,7 @@ const ZAllocator = struct { } } - return @ptrCast(?[*]u8, ptr); + return @as(?[*]u8, @ptrCast(ptr)); } fn alignedAllocSize(ptr: [*]u8) usize { @@ -211,7 +211,7 @@ const HugeAllocator = struct { _: u29, _: usize, ) void { - std.os.munmap(@alignCast(std.meta.alignment([]align(std.mem.page_size) u8), buf)); + std.os.munmap(@alignCast(buf)); } }; diff --git a/src/mimalloc_arena.zig b/src/mimalloc_arena.zig index d0d0bbeab..dc71a887e 100644 --- a/src/mimalloc_arena.zig +++ b/src/mimalloc_arena.zig @@ -217,7 +217,7 @@ pub const Arena = struct { } return if (ptr) |p| - @ptrCast([*]u8, p) + @as([*]u8, @ptrCast(p)) else null; } @@ -234,7 +234,7 @@ pub const Arena = struct { return alignedAlloc(this, len, log2_align); } - const alignment = @as(usize, 1) << @intCast(Allocator.Log2Align, log2_align); + const alignment = @as(usize, 1) << @as(Allocator.Log2Align, @intCast(log2_align)); return alignedAlloc( this, diff --git a/src/multi_array_list.zig b/src/multi_array_list.zig index cff601bb8..96bd17819 100644 --- a/src/multi_array_list.zig +++ b/src/multi_array_list.zig @@ -47,7 +47,7 @@ pub fn MultiArrayList(comptime S: type) type { const casted_ptr: [*]F = if (@sizeOf(F) == 0) undefined else - @ptrCast([*]F, @alignCast(@alignOf(F), byte_ptr)); + @as([*]F, @ptrCast(@alignCast(byte_ptr))); return casted_ptr[0..self.len]; } @@ -56,8 +56,7 @@ pub fn MultiArrayList(comptime S: type) type { return .{}; } const unaligned_ptr = self.ptrs[sizes.fields[0]]; - const aligned_ptr = @alignCast(@alignOf(S), unaligned_ptr); - const casted_ptr = @ptrCast([*]align(@alignOf(S)) u8, aligned_ptr); + const casted_ptr: [*]align(@alignOf(S)) u8 = @ptrCast(@alignCast(unaligned_ptr)); return .{ .bytes = casted_ptr, .len = self.len, @@ -151,7 +150,7 @@ pub fn MultiArrayList(comptime S: type) type { pub fn set(self: *Self, index: usize, elem: S) void { const slices = self.slice(); inline for (fields, 0..) |field_info, i| { - slices.items(@enumFromInt(Field, i))[index] = @field(elem, field_info.name); + slices.items(@as(Field, @enumFromInt(i)))[index] = @field(elem, field_info.name); } } @@ -160,7 +159,7 @@ pub fn MultiArrayList(comptime S: type) type { const slices = self.slice(); var result: S = undefined; inline for (fields, 0..) |field_info, i| { - @field(result, field_info.name) = slices.items(@enumFromInt(Field, i))[index]; + @field(result, field_info.name) = slices.items(@as(Field, @enumFromInt(i)))[index]; } return result; } @@ -233,7 +232,7 @@ pub fn MultiArrayList(comptime S: type) type { self.len += 1; const slices = self.slice(); inline for (fields, 0..) |field_info, field_index| { - const field_slice = slices.items(@enumFromInt(Field, field_index)); + const field_slice = slices.items(@as(Field, @enumFromInt(field_index))); var i: usize = self.len - 1; while (i > index) : (i -= 1) { field_slice[i] = field_slice[i - 1]; @@ -248,7 +247,7 @@ pub fn MultiArrayList(comptime S: type) type { pub fn swapRemove(self: *Self, index: usize) void { const slices = self.slice(); inline for (fields, 0..) |_, i| { - const field_slice = slices.items(@enumFromInt(Field, i)); + const field_slice = slices.items(@as(Field, @enumFromInt(i))); field_slice[index] = field_slice[self.len - 1]; field_slice[self.len - 1] = undefined; } @@ -260,7 +259,7 @@ pub fn MultiArrayList(comptime S: type) type { pub fn orderedRemove(self: *Self, index: usize) void { const slices = self.slice(); inline for (fields, 0..) |_, field_index| { - const field_slice = slices.items(@enumFromInt(Field, field_index)); + const field_slice = slices.items(@as(Field, @enumFromInt(field_index))); var i = index; while (i < self.len - 1) : (i += 1) { field_slice[i] = field_slice[i + 1]; @@ -297,7 +296,7 @@ pub fn MultiArrayList(comptime S: type) type { const self_slice = self.slice(); inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); const dest_slice = self_slice.items(field)[new_len..]; // We use memset here for more efficient codegen in safety-checked, // valgrind-enabled builds. Otherwise the valgrind client request @@ -318,7 +317,7 @@ pub fn MultiArrayList(comptime S: type) type { const other_slice = other.slice(); inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); mem.copy(field_info.type, other_slice.items(field), self_slice.items(field)); } } @@ -379,7 +378,7 @@ pub fn MultiArrayList(comptime S: type) type { const other_slice = other.slice(); inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); mem.copy(field_info.type, other_slice.items(field), self_slice.items(field)); } } @@ -398,7 +397,7 @@ pub fn MultiArrayList(comptime S: type) type { const result_slice = result.slice(); inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); mem.copy(field_info.type, result_slice.items(field), self_slice.items(field)); } } @@ -419,7 +418,7 @@ pub fn MultiArrayList(comptime S: type) type { pub fn swap(sc: @This(), a_index: usize, b_index: usize) void { inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); const ptr = sc.slice.items(field); mem.swap(field_info.type, &ptr[a_index], &ptr[b_index]); } @@ -444,7 +443,7 @@ pub fn MultiArrayList(comptime S: type) type { return bytes; } else { const sizes_vector: @Vector(sizes.bytes.len, usize) = sizes.bytes; - const capacity_vector = @splat(sizes.bytes.len, capacity); + const capacity_vector: @Vector(sizes.bytes.len, usize) = @splat(capacity); return @reduce(.Add, capacity_vector * sizes_vector); } } @@ -456,7 +455,7 @@ pub fn MultiArrayList(comptime S: type) type { const this_slice = this.slice(); inline for (fields, 0..) |field_info, i| { if (@sizeOf(field_info.type) != 0) { - const field = @enumFromInt(Field, i); + const field = @as(Field, @enumFromInt(i)); mem.copy(field_info.type, this_slice.items(field)[offset..], other_slice.items(field)); } } @@ -550,9 +549,9 @@ test "basic usage" { var i: usize = 0; while (i < 6) : (i += 1) { try list.append(ally, .{ - .a = @intCast(u32, 4 + i), + .a = @as(u32, @intCast(4 + i)), .b = "whatever", - .c = @intCast(u8, 'd' + i), + .c = @as(u8, @intCast('d' + i)), }); } diff --git a/src/napi/napi.zig b/src/napi/napi.zig index 5caef4547..bb8f19df2 100644 --- a/src/napi/napi.zig +++ b/src/napi/napi.zig @@ -233,7 +233,7 @@ const prefilled_undefined_args_array: [128]JSC.JSValue = brk: { }; pub export fn napi_create_array_with_length(env: napi_env, length: usize, result: *napi_value) napi_status { log("napi_create_array_with_length", .{}); - const len = @intCast(u32, length); + const len = @as(u32, @intCast(length)); const array = JSC.JSValue.createEmptyArray(env, len); array.ensureStillAlive(); @@ -274,7 +274,7 @@ inline fn setNapiValue(result: *napi_value, value: JSValue) void { pub export fn napi_create_string_latin1(env: napi_env, str: [*]const u8, length: usize, result: *napi_value) napi_status { log("napi_create_string_latin1", .{}); const slice = if (NAPI_AUTO_LENGTH == length) - bun.sliceTo(@ptrCast([*:0]const u8, str), 0) + bun.sliceTo(@as([*:0]const u8, @ptrCast(str)), 0) else str[0..length]; @@ -283,7 +283,7 @@ pub export fn napi_create_string_latin1(env: napi_env, str: [*]const u8, length: } pub export fn napi_create_string_utf8(env: napi_env, str: [*]const u8, length: usize, result: *napi_value) napi_status { const slice = if (NAPI_AUTO_LENGTH == length) - bun.sliceTo(@ptrCast([*:0]const u8, str), 0) + bun.sliceTo(@as([*:0]const u8, @ptrCast(str)), 0) else str[0..length]; @@ -297,7 +297,7 @@ pub export fn napi_create_string_utf8(env: napi_env, str: [*]const u8, length: u pub export fn napi_create_string_utf16(env: napi_env, str: [*]const char16_t, length: usize, result: *napi_value) napi_status { log("napi_create_string_utf16", .{}); const slice = if (NAPI_AUTO_LENGTH == length) - bun.sliceTo(@ptrCast([*:0]const char16_t, str), 0) + bun.sliceTo(@as([*:0]const char16_t, @ptrCast(str)), 0) else str[0..length]; @@ -342,7 +342,7 @@ inline fn maybeAppendNull(ptr: anytype, doit: bool) void { pub export fn napi_get_value_string_latin1(env: napi_env, value: napi_value, buf_ptr_: ?[*:0]c_char, bufsize: usize, result_ptr: ?*usize) napi_status { log("napi_get_value_string_latin1", .{}); defer value.ensureStillAlive(); - var buf_ptr = @ptrCast(?[*:0]u8, buf_ptr_); + var buf_ptr = @as(?[*:0]u8, @ptrCast(buf_ptr_)); const str = value.toBunString(env); var buf = buf_ptr orelse { @@ -418,7 +418,7 @@ pub export fn napi_get_value_string_utf16(env: napi_env, value: napi_value, buf_ var buf_ = buf[0..bufsize]; if (bufsize == NAPI_AUTO_LENGTH) { - buf_ = bun.sliceTo(@ptrCast([*:0]u16, buf_ptr.?), 0); + buf_ = bun.sliceTo(@as([*:0]u16, @ptrCast(buf_ptr.?)), 0); if (buf_.len == 0) { if (result_ptr) |result| { result.* = 0; @@ -505,7 +505,7 @@ pub export fn napi_get_array_length(env: napi_env, value: napi_value, result: [* return .array_expected; } - result.* = @truncate(u32, value.getLength(env)); + result.* = @as(u32, @truncate(value.getLength(env))); return .ok; } pub export fn napi_strict_equals(env: napi_env, lhs: napi_value, rhs: napi_value, result: *bool) napi_status { @@ -530,7 +530,7 @@ pub export fn napi_new_instance(env: napi_env, constructor: napi_value, argc: us constructor.asObjectRef(), argc, if (argv != null) - @ptrCast([*]const JSC.C.JSValueRef, argv) + @as([*]const JSC.C.JSValueRef, @ptrCast(argv)) else null, &exception, @@ -614,7 +614,7 @@ pub export fn napi_make_callback(env: napi_env, _: *anyopaque, recv: napi_value, else JSC.JSValue.jsUndefined(), if (arg_count > 0 and args != null) - @ptrCast([*]const JSC.JSValue, args.?)[0..arg_count] + @as([*]const JSC.JSValue, @ptrCast(args.?))[0..arg_count] else &.{}, ); @@ -701,7 +701,7 @@ pub export fn napi_create_arraybuffer(env: napi_env, byte_length: usize, data: [ log("napi_create_arraybuffer", .{}); var typed_array = JSC.C.JSObjectMakeTypedArray(env.ref(), .kJSTypedArrayTypeArrayBuffer, byte_length, TODO_EXCEPTION); var array_buffer = JSValue.c(typed_array).asArrayBuffer(env) orelse return genericFailure(); - const len = @min(array_buffer.len, @truncate(u32, byte_length)); + const len = @min(array_buffer.len, @as(u32, @truncate(byte_length))); @memcpy(array_buffer.ptr[0..len], data[0..len]); result.* = JSValue.c(typed_array); return .ok; @@ -711,7 +711,7 @@ pub export fn napi_create_external_arraybuffer(env: napi_env, external_data: ?*a log("napi_create_external_arraybuffer", .{}); var external = JSC.ExternalBuffer.create( finalize_hint, - @ptrCast([*]u8, external_data.?)[0..byte_length], + @as([*]u8, @ptrCast(external_data.?))[0..byte_length], env, finalize_cb, env.bunVM().allocator, @@ -1074,7 +1074,7 @@ pub export fn napi_create_buffer(env: napi_env, length: usize, data: ?**anyopaqu } pub export fn napi_create_external_buffer(env: napi_env, length: usize, data: ?*anyopaque, finalize_cb: napi_finalize, finalize_hint: ?*anyopaque, result: *napi_value) napi_status { log("napi_create_external_buffer: {d}", .{length}); - var buf = JSC.ExternalBuffer.create(finalize_hint, @ptrCast([*]u8, data.?)[0..length], env, finalize_cb, bun.default_allocator) catch { + var buf = JSC.ExternalBuffer.create(finalize_hint, @as([*]u8, @ptrCast(data.?))[0..length], env, finalize_cb, bun.default_allocator) catch { return genericFailure(); }; diff --git a/src/network_thread.zig b/src/network_thread.zig index 49711c469..e932bc414 100644 --- a/src/network_thread.zig +++ b/src/network_thread.zig @@ -144,7 +144,7 @@ fn processEvents_(this: *@This()) !void { this.io.wait(this, queueEvents); if (comptime Environment.isDebug) { var end = std.time.nanoTimestamp(); - log("Waited {any}\n", .{std.fmt.fmtDurationSigned(@truncate(i64, end - start))}); + log("Waited {any}\n", .{std.fmt.fmtDurationSigned(@as(i64, @truncate(end - start)))}); Output.flush(); } } @@ -161,7 +161,7 @@ pub fn schedule(this: *@This(), batch: Batch) void { } if (comptime Environment.isLinux) { - const one = @bitCast([8]u8, @as(usize, batch.len)); + const one = @as([8]u8, @bitCast(@as(usize, batch.len))); _ = std.os.write(this.waker.fd, &one) catch @panic("Failed to write to eventfd"); } else { this.waker.wake() catch @panic("Failed to wake"); diff --git a/src/node_fallbacks.zig b/src/node_fallbacks.zig index 51da04be0..a8f125943 100644 --- a/src/node_fallbacks.zig +++ b/src/node_fallbacks.zig @@ -68,7 +68,7 @@ const assert_package_json = PackageJSON{ .name = "assert", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("assert@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("assert@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/assert/package.json", ""), @@ -77,7 +77,7 @@ const buffer_package_json = PackageJSON{ .name = "buffer", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("buffer@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("buffer@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/buffer/package.json", ""), @@ -86,7 +86,7 @@ const console_package_json = PackageJSON{ .name = "console", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("console@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("console@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/console/package.json", ""), @@ -95,7 +95,7 @@ const constants_package_json = PackageJSON{ .name = "constants", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("constants@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("constants@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/constants/package.json", ""), @@ -104,7 +104,7 @@ const crypto_package_json = PackageJSON{ .name = "crypto", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("crypto@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("crypto@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/crypto/package.json", ""), @@ -113,7 +113,7 @@ const domain_package_json = PackageJSON{ .name = "domain", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("domain@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("domain@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/domain/package.json", ""), @@ -122,7 +122,7 @@ const events_package_json = PackageJSON{ .name = "events", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("events@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("events@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/events/package.json", ""), @@ -131,7 +131,7 @@ const http_package_json = PackageJSON{ .name = "http", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("http@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("http@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/http/package.json", ""), @@ -140,7 +140,7 @@ const https_package_json = PackageJSON{ .name = "https", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("https@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("https@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/https/package.json", ""), @@ -149,7 +149,7 @@ const net_package_json = PackageJSON{ .name = "net", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("net@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("net@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/net/package.json", ""), @@ -158,7 +158,7 @@ const os_package_json = PackageJSON{ .name = "os", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("os@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("os@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/os/package.json", ""), @@ -167,7 +167,7 @@ const path_package_json = PackageJSON{ .name = "path", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("path@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("path@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/path/package.json", ""), @@ -176,7 +176,7 @@ const process_package_json = PackageJSON{ .name = "process", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("process@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("process@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/process/package.json", ""), @@ -185,7 +185,7 @@ const punycode_package_json = PackageJSON{ .name = "punycode", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("punycode@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("punycode@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/punycode/package.json", ""), @@ -194,7 +194,7 @@ const querystring_package_json = PackageJSON{ .name = "querystring", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("querystring@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("querystring@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/querystring/package.json", ""), @@ -203,7 +203,7 @@ const stream_package_json = PackageJSON{ .name = "stream", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("stream@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("stream@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/stream/package.json", ""), @@ -214,7 +214,7 @@ const string_decoder_package_json = PackageJSON{ .module_type = .esm, .hash = brk: { @setEvalBranchQuota(9999); - break :brk @truncate(u32, bun.hash("string_decoder@0.0.0-polyfill")); + break :brk @as(u32, @truncate(bun.hash("string_decoder@0.0.0-polyfill"))); }, .main_fields = undefined, @@ -226,7 +226,7 @@ const sys_package_json = PackageJSON{ .name = "sys", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("sys@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("sys@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/sys/package.json", ""), @@ -235,7 +235,7 @@ const timers_package_json = PackageJSON{ .name = "timers", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("timers@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("timers@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/timers/package.json", ""), @@ -244,7 +244,7 @@ const tty_package_json = PackageJSON{ .name = "tty", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("tty@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("tty@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/tty/package.json", ""), @@ -253,7 +253,7 @@ const url_package_json = PackageJSON{ .name = "url", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("url@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("url@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/url/package.json", ""), @@ -262,7 +262,7 @@ const util_package_json = PackageJSON{ .name = "util", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("util@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("util@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/util/package.json", ""), @@ -271,7 +271,7 @@ const zlib_package_json = PackageJSON{ .name = "zlib", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("zlib@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("zlib@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/zlib/package.json", ""), @@ -281,7 +281,7 @@ const node_fetch_package_json = PackageJSON{ .name = "node-fetch", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("node-fetch@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("node-fetch@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/node-fetch/package.json", ""), @@ -290,7 +290,7 @@ const isomorphic_fetch_package_json = PackageJSON{ .name = "isomorphic-fetch", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("isomorphic-fetch@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("isomorphic-fetch@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/isomorphic-fetch/package.json", ""), @@ -299,7 +299,7 @@ const supports_color_package_json = PackageJSON{ .name = "supports-color", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("supports-color@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("supports-color@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/supports-color/package.json", ""), @@ -309,7 +309,7 @@ const vercel_fetch_package_json = PackageJSON{ .name = "@vercel/fetch", .version = "0.0.0-polyfill", .module_type = .esm, - .hash = @truncate(u32, bun.hash("@vercel/fetch@0.0.0-polyfill")), + .hash = @as(u32, @truncate(bun.hash("@vercel/fetch@0.0.0-polyfill"))), .main_fields = undefined, .browser_map = undefined, .source = logger.Source.initPathString("/bun-vfs/node_modules/@vercel/fetch/package.json", ""), diff --git a/src/node_module_bundle.zig b/src/node_module_bundle.zig index 6682e2dff..e785cb61d 100644 --- a/src/node_module_bundle.zig +++ b/src/node_module_bundle.zig @@ -71,7 +71,7 @@ pub const NodeModuleBundle = struct { var buf = try allocator.alloc(u8, this.code_end_pos); const count = try file.preadAll(buf, this.codeStartOffset()); - this.code_string = AllocatedString{ .str = buf[0..count], .len = @truncate(u32, buf.len), .allocator = allocator }; + this.code_string = AllocatedString{ .str = buf[0..count], .len = @as(u32, @truncate(buf.len)), .allocator = allocator }; return this.code_string.?.str; } @@ -79,7 +79,7 @@ pub const NodeModuleBundle = struct { this.package_name_map = PackageNameMap.init(this.allocator); this.package_id_map = PackageIDMap.init(this.allocator); - const package_count = @truncate(u32, this.bundle.packages.len); + const package_count = @as(u32, @truncate(this.bundle.packages.len)); // this.package_has_multiple_versions = try std.bit_set.DynamicBitSet.initFull(package_count, this.allocator); @@ -94,9 +94,9 @@ pub const NodeModuleBundle = struct { var prev_package_ids_for_name: []u32 = &[_]u32{}; for (this.bundle.packages, 0..) |package, _package_id| { - const package_id = @truncate(u32, _package_id); + const package_id = @as(u32, @truncate(_package_id)); std.debug.assert(package.hash != 0); - this.package_id_map.putAssumeCapacityNoClobber(package.hash, @truncate(u32, package_id)); + this.package_id_map.putAssumeCapacityNoClobber(package.hash, @as(u32, @truncate(package_id))); const package_name = this.str(package.name); var entry = this.package_name_map.getOrPutAssumeCapacity(package_name); @@ -147,12 +147,12 @@ pub const NodeModuleBundle = struct { pub fn getPackage(this: *const NodeModuleBundle, name: string) ?*const Api.JavascriptBundledPackage { const package_id = this.getPackageIDByName(name) orelse return null; - return &this.bundle.packages[@intCast(usize, package_id[0])]; + return &this.bundle.packages[@as(usize, @intCast(package_id[0]))]; } pub fn hasModule(this: *const NodeModuleBundle, name: string) ?*const Api.JavascriptBundledPackage { const package_id = this.getPackageID(name) orelse return null; - return &this.bundle.packages[@intCast(usize, package_id)]; + return &this.bundle.packages[@as(usize, @intCast(package_id))]; } pub const ModuleQuery = struct { @@ -197,7 +197,7 @@ pub const NodeModuleBundle = struct { ) ?u32 { for (modulesIn(&this.bundle, package), 0..) |mod, i| { if (strings.eql(this.str(mod.path), _query)) { - return @truncate(u32, i + package.modules_offset); + return @as(u32, @truncate(i + package.modules_offset)); } } @@ -243,20 +243,20 @@ pub const NodeModuleBundle = struct { .package_id = 0, .code = .{}, .path = .{ - .offset = @truncate(u32, this.bundle.manifest_string.len), + .offset = @as(u32, @truncate(this.bundle.manifest_string.len)), }, }; var finder = ModuleFinder{ .ctx = this, .pkg = package, .query = _query }; const modules = modulesIn(&this.bundle, package); - return @intCast(u32, std.sort.binarySearch( + return @as(u32, @intCast(std.sort.binarySearch( Api.JavascriptBundledModule, to_find, modules, finder, ModuleFinder.cmpAsc, - ) orelse return null) + package.modules_offset; + ) orelse return null)) + package.modules_offset; } pub fn findModuleIDInPackageIgnoringExtension( @@ -301,20 +301,20 @@ pub const NodeModuleBundle = struct { .package_id = 0, .code = .{}, .path = .{ - .offset = @truncate(u32, this.bundle.manifest_string.len), + .offset = @as(u32, @truncate(this.bundle.manifest_string.len)), }, }; var finder = ModuleFinder{ .ctx = this, .pkg = package, .query = _query[0 .. _query.len - std.fs.path.extension(_query).len] }; const modules = modulesIn(&this.bundle, package); - return @intCast(u32, std.sort.binarySearch( + return @as(u32, @intCast(std.sort.binarySearch( Api.JavascriptBundledModule, to_find, modules, finder, ModuleFinder.cmpAsc, - ) orelse return null) + package.modules_offset; + ) orelse return null)) + package.modules_offset; } pub fn init(container: Api.JavascriptBundleContainer, allocator: std.mem.Allocator) NodeModuleBundle { @@ -355,7 +355,7 @@ pub const NodeModuleBundle = struct { .bundle = container.bundle.?, .fd = stream.handle, // sorry you can't have 4 GB of node_modules - .code_end_pos = end - @intCast(u32, jsbundle_prefix.len), + .code_end_pos = end - @as(u32, @intCast(jsbundle_prefix.len)), .bytes = read_bytes, .bytes_ptr = file_bytes, .package_id_map = undefined, @@ -402,7 +402,7 @@ pub const NodeModuleBundle = struct { Output.print("\n", .{}); } - const source_code_size = this.container.code_length.? - @intCast(u32, jsbundle_prefix.len); + const source_code_size = this.container.code_length.? - @as(u32, @intCast(jsbundle_prefix.len)); Output.pretty("<b>", .{}); prettySize(source_code_size, .neutral, ">"); @@ -412,7 +412,7 @@ pub const NodeModuleBundle = struct { } pub inline fn codeStartOffset(_: *const NodeModuleBundle) u32 { - return @intCast(u32, jsbundle_prefix.len); + return @as(u32, @intCast(jsbundle_prefix.len)); } pub fn printSummaryFromDisk( @@ -431,16 +431,16 @@ pub const NodeModuleBundle = struct { switch (size) { 0...1024 * 1024 => { switch (level) { - .bad => Output.pretty("<red>{d: " ++ align_char ++ "6.2} KB</r>", .{@floatFromInt(f64, size) / 1024.0}), - .neutral => Output.pretty("{d: " ++ align_char ++ "6.2} KB</r>", .{@floatFromInt(f64, size) / 1024.0}), - .good => Output.pretty("<green>{d: " ++ align_char ++ "6.2} KB</r>", .{@floatFromInt(f64, size) / 1024.0}), + .bad => Output.pretty("<red>{d: " ++ align_char ++ "6.2} KB</r>", .{@as(f64, @floatFromInt(size)) / 1024.0}), + .neutral => Output.pretty("{d: " ++ align_char ++ "6.2} KB</r>", .{@as(f64, @floatFromInt(size)) / 1024.0}), + .good => Output.pretty("<green>{d: " ++ align_char ++ "6.2} KB</r>", .{@as(f64, @floatFromInt(size)) / 1024.0}), } }, else => { switch (level) { - .bad => Output.pretty("<red>{d: " ++ align_char ++ "6.2} MB</r>", .{@floatFromInt(f64, size) / (1024 * 1024.0)}), - .neutral => Output.pretty("{d: " ++ align_char ++ "6.2} MB</r>", .{@floatFromInt(f64, size) / (1024 * 1024.0)}), - .good => Output.pretty("<green>{d: " ++ align_char ++ "6.2} MB</r>", .{@floatFromInt(f64, size) / (1024 * 1024.0)}), + .bad => Output.pretty("<red>{d: " ++ align_char ++ "6.2} MB</r>", .{@as(f64, @floatFromInt(size)) / (1024 * 1024.0)}), + .neutral => Output.pretty("{d: " ++ align_char ++ "6.2} MB</r>", .{@as(f64, @floatFromInt(size)) / (1024 * 1024.0)}), + .good => Output.pretty("<green>{d: " ++ align_char ++ "6.2} MB</r>", .{@as(f64, @floatFromInt(size)) / (1024 * 1024.0)}), } }, } @@ -455,11 +455,11 @@ pub const NodeModuleBundle = struct { const BufferStreamContext = struct { pub fn run(in: StreamType, out: DestinationStreamType, end_at: u32) !void { var buf: [4096]u8 = undefined; - var remain = @intCast(i64, end_at); + var remain = @as(i64, @intCast(end_at)); var read_amount: i64 = 99999; while (remain > 0 and read_amount > 0) { - read_amount = @intCast(i64, in.read(&buf) catch 0); - remain -= @intCast(i64, try out.write(buf[0..@intCast(usize, @min(read_amount, remain))])); + read_amount = @as(i64, @intCast(in.read(&buf) catch 0)); + remain -= @as(i64, @intCast(try out.write(buf[0..@as(usize, @intCast(@min(read_amount, remain)))]))); } } }; @@ -468,7 +468,7 @@ pub const NodeModuleBundle = struct { // darwin only allows reading ahead on/off, not specific amount _ = std.os.fcntl(input.handle, std.os.F.RDAHEAD, 1) catch 0; } - const end = (try getCodeEndPosition(input, false)) - @intCast(u32, jsbundle_prefix.len); + const end = (try getCodeEndPosition(input, false)) - @as(u32, @intCast(jsbundle_prefix.len)); try BufferStreamContext.run( input, diff --git a/src/options.zig b/src/options.zig index d4df6d4f5..f6b955a47 100644 --- a/src/options.zig +++ b/src/options.zig @@ -69,7 +69,7 @@ pub fn validatePath( pub fn stringHashMapFromArrays(comptime t: type, allocator: std.mem.Allocator, keys: anytype, values: anytype) !t { var hash_map = t.init(allocator); if (keys.len > 0) { - try hash_map.ensureTotalCapacity(@intCast(u32, keys.len)); + try hash_map.ensureTotalCapacity(@as(u32, @intCast(keys.len))); for (keys, 0..) |key, i| { hash_map.putAssumeCapacity(key, values[i]); } @@ -1417,6 +1417,7 @@ pub const BundleOptions = struct { public_path: []const u8 = "", extension_order: []const string = &Defaults.ExtensionOrder, esm_extension_order: []const string = &Defaults.ModuleExtensionOrder, + main_field_extension_order: []const string = &Defaults.MainFieldExtensionOrder, out_extensions: bun.StringHashMap(string), import_path_format: ImportPathFormat = ImportPathFormat.relative, framework: ?Framework = null, @@ -1556,6 +1557,16 @@ pub const BundleOptions = struct { ".json", }; + pub const MainFieldExtensionOrder = [_]string{ + ".js", + ".cjs", + ".cts", + ".tsx", + ".ts", + ".jsx", + ".json", + }; + pub const ModuleExtensionOrder = [_]string{ ".tsx", ".jsx", @@ -1699,7 +1710,7 @@ pub const BundleOptions = struct { opts.node_modules_bundle_pretty_path = try allocator.dupe(u8, pretty_path); } - const elapsed = @floatFromInt(f64, (std.time.nanoTimestamp() - time_start)) / std.time.ns_per_ms; + const elapsed = @as(f64, @floatFromInt((std.time.nanoTimestamp() - time_start))) / std.time.ns_per_ms; Output.printElapsed(elapsed); Output.prettyErrorln( " <b><d>\"{s}\"<r><d> - {d} modules, {d} packages<r>", @@ -2072,7 +2083,7 @@ pub const OutputFile = struct { if (mime_type) |mime| { blob.content_type = mime.value; } - blob.size = @truncate(JSC.WebCore.Blob.SizeType, byte_size); + blob.size = @as(JSC.WebCore.Blob.SizeType, @truncate(byte_size)); blob.allocator = bun.default_allocator; return blob.toJS(globalThis); } @@ -2272,7 +2283,7 @@ pub const OutputFile = struct { blob.content_type = this.loader.toMimeType().value; } - blob.size = @truncate(JSC.WebCore.Blob.SizeType, buffer.bytes.len); + blob.size = @as(JSC.WebCore.Blob.SizeType, @truncate(buffer.bytes.len)); var build_output = bun.default_allocator.create(JSC.API.BuildArtifact) catch @panic("Unable to allocate Artifact"); build_output.* = JSC.API.BuildArtifact{ diff --git a/src/output.zig b/src/output.zig index cf58cbccf..cffa2c414 100644 --- a/src/output.zig +++ b/src/output.zig @@ -270,21 +270,21 @@ pub const ElapsedFormatter = struct { 0...std.time.ns_per_ms * 10 => { const fmt_str = "<r><d>[{d:>.2}ms<r><d>]<r>"; switch (self.colors) { - inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@floatFromInt(f64, self.duration_ns) / std.time.ns_per_ms}), + inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@as(f64, @floatFromInt(self.duration_ns)) / std.time.ns_per_ms}), } }, std.time.ns_per_ms * 8_000...std.math.maxInt(u64) => { const fmt_str = "<r><d>[<r><yellow>{d:>.2}ms<r><d>]<r>"; switch (self.colors) { - inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@floatFromInt(f64, self.duration_ns) / std.time.ns_per_ms}), + inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@as(f64, @floatFromInt(self.duration_ns)) / std.time.ns_per_ms}), } }, else => { const fmt_str = "<r><d>[<b>{d:>.2}ms<r><d>]<r>"; switch (self.colors) { - inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@floatFromInt(f64, self.duration_ns) / std.time.ns_per_ms}), + inline else => |colors| try writer_.print(comptime prettyFmt(fmt_str, colors), .{@as(f64, @floatFromInt(self.duration_ns)) / std.time.ns_per_ms}), } }, } @@ -292,7 +292,7 @@ pub const ElapsedFormatter = struct { }; inline fn printElapsedToWithCtx(elapsed: f64, comptime printerFn: anytype, comptime has_ctx: bool, ctx: anytype) void { - switch (@intFromFloat(i64, @round(elapsed))) { + switch (@as(i64, @intFromFloat(@round(elapsed)))) { 0...1500 => { const fmt = "<r><d>[<b>{d:>.2}ms<r><d>]<r>"; const args = .{elapsed}; @@ -328,7 +328,7 @@ pub fn printElapsedStdout(elapsed: f64) void { } pub fn printElapsedStdoutTrim(elapsed: f64) void { - switch (@intFromFloat(i64, @round(elapsed))) { + switch (@as(i64, @intFromFloat(@round(elapsed)))) { 0...1500 => { const fmt = "<r><d>[<b>{d:>}ms<r><d>]<r>"; const args = .{elapsed}; @@ -344,19 +344,19 @@ pub fn printElapsedStdoutTrim(elapsed: f64) void { } pub fn printStartEnd(start: i128, end: i128) void { - const elapsed = @divTrunc(@truncate(i64, end - start), @as(i64, std.time.ns_per_ms)); - printElapsed(@floatFromInt(f64, elapsed)); + const elapsed = @divTrunc(@as(i64, @truncate(end - start)), @as(i64, std.time.ns_per_ms)); + printElapsed(@as(f64, @floatFromInt(elapsed))); } pub fn printStartEndStdout(start: i128, end: i128) void { - const elapsed = @divTrunc(@truncate(i64, end - start), @as(i64, std.time.ns_per_ms)); - printElapsedStdout(@floatFromInt(f64, elapsed)); + const elapsed = @divTrunc(@as(i64, @truncate(end - start)), @as(i64, std.time.ns_per_ms)); + printElapsedStdout(@as(f64, @floatFromInt(elapsed))); } pub fn printTimer(timer: *SystemTimer) void { if (comptime Environment.isWasm) return; const elapsed = @divTrunc(timer.read(), @as(u64, std.time.ns_per_ms)); - printElapsed(@floatFromInt(f64, elapsed)); + printElapsed(@as(f64, @floatFromInt(elapsed))); } pub noinline fn printErrorable(comptime fmt: string, args: anytype) !void { @@ -692,7 +692,7 @@ pub const DebugTimer = struct { var _opts = opts; _opts.precision = 3; std.fmt.formatFloatDecimal( - @floatCast(f64, @floatFromInt(f64, timer.read()) / std.time.ns_per_ms), + @as(f64, @floatCast(@as(f64, @floatFromInt(timer.read())) / std.time.ns_per_ms)), _opts, writer_, ) catch unreachable; diff --git a/src/renamer.zig b/src/renamer.zig index 5c7177577..b2164703d 100644 --- a/src/renamer.zig +++ b/src/renamer.zig @@ -96,7 +96,7 @@ pub const SymbolSlot = struct { pub fn init(str: []const u8) InlineString { var this: InlineString = .{}; - this.len = @intCast(u8, @min(str.len, 15)); + this.len = @as(u8, @intCast(@min(str.len, 15))); for (this.bytes[0..this.len], str[0..this.len]) |*b, c| { b.* = c; } @@ -293,7 +293,7 @@ pub const MinifyRenamer = struct { for (sorted.items, slots.items, 0..) |*elem, slot, i| { elem.* = SlotAndCount{ - .slot = @intCast(u32, i), + .slot = @as(u32, @intCast(i)), .count = slot.count, }; } @@ -596,7 +596,7 @@ pub const NumberRenamer = struct { std.sort.block(u32, sorted.items, {}, std.sort.asc(u32)); for (sorted.items) |inner_index| { - r.assignName(s, Ref.init(@intCast(Ref.Int, inner_index), source_index, false)); + r.assignName(s, Ref.init(@as(Ref.Int, @intCast(inner_index)), source_index, false)); } } @@ -884,7 +884,7 @@ pub fn computeInitialReservedNames( try names.ensureTotalCapacityContext( allocator, - @truncate(u32, JSLexer.Keywords.keys().len + JSLexer.StrictModeReservedWords.keys().len + 1 + extras.len), + @as(u32, @truncate(JSLexer.Keywords.keys().len + JSLexer.StrictModeReservedWords.keys().len + 1 + extras.len)), bun.StringHashMapContext{}, ); diff --git a/src/report.zig b/src/report.zig index c2f466b03..827f8072d 100644 --- a/src/report.zig +++ b/src/report.zig @@ -69,7 +69,7 @@ pub const CrashReportWriter = struct { const file_path = std.fmt.bufPrintZ( &crash_reporter_path, "{s}/.bun-crash/v{s}-{d}.crash", - .{ base_dir, Global.package_json_version, @intCast(u64, @max(std.time.milliTimestamp(), 0)) }, + .{ base_dir, Global.package_json_version, @as(u64, @intCast(@max(std.time.milliTimestamp(), 0))) }, ) catch return; std.fs.cwd().makeDir(std.fs.path.dirname(bun.asByteSlice(file_path)).?) catch {}; @@ -296,7 +296,7 @@ pub noinline fn handleCrash(signal: i32, addr: usize) void { } } - std.c._exit(128 + @truncate(u8, @intCast(u8, @max(signal, 0)))); + std.c._exit(128 + @as(u8, @truncate(@as(u8, @intCast(@max(signal, 0)))))); } pub noinline fn globalError(err: anyerror, trace_: @TypeOf(@errorReturnTrace())) noreturn { diff --git a/src/resolver/package_json.zig b/src/resolver/package_json.zig index e759374e7..75e6a7c98 100644 --- a/src/resolver/package_json.zig +++ b/src/resolver/package_json.zig @@ -1026,7 +1026,7 @@ pub const PackageJSON = struct { hasher.update(std.mem.asBytes(&this.hash)); hasher.update(module); - return @truncate(u32, hasher.final()); + return @as(u32, @truncate(hasher.final())); } }; @@ -1359,14 +1359,14 @@ pub const ESModule = struct { pub fn parseName(specifier: string) ?string { var slash = strings.indexOfCharNeg(specifier, '/'); if (!strings.startsWithChar(specifier, '@')) { - slash = if (slash == -1) @intCast(i32, specifier.len) else slash; - return specifier[0..@intCast(usize, slash)]; + slash = if (slash == -1) @as(i32, @intCast(specifier.len)) else slash; + return specifier[0..@as(usize, @intCast(slash))]; } else { if (slash == -1) return null; - const slash2 = strings.indexOfChar(specifier[@intCast(usize, slash) + 1 ..], '/') orelse - specifier[@intCast(u32, slash + 1)..].len; - return specifier[0 .. @intCast(usize, slash + 1) + slash2]; + const slash2 = strings.indexOfChar(specifier[@as(usize, @intCast(slash)) + 1 ..], '/') orelse + specifier[@as(u32, @intCast(slash + 1))..].len; + return specifier[0 .. @as(usize, @intCast(slash + 1)) + slash2]; } } diff --git a/src/resolver/resolve_path.zig b/src/resolver/resolve_path.zig index e63318887..877f32ded 100644 --- a/src/resolver/resolve_path.zig +++ b/src/resolver/resolve_path.zig @@ -25,11 +25,11 @@ const IsSeparatorFunc = fn (char: u8) bool; const LastSeparatorFunction = fn (slice: []const u8) ?usize; inline fn @"is .."(slice: []const u8) bool { - return slice.len >= 2 and @bitCast(u16, slice[0..2].*) == comptime std.mem.readIntNative(u16, ".."); + return slice.len >= 2 and @as(u16, @bitCast(slice[0..2].*)) == comptime std.mem.readIntNative(u16, ".."); } inline fn isDotSlash(slice: []const u8) bool { - return @bitCast(u16, slice[0..2].*) == comptime std.mem.readIntNative(u16, "./"); + return @as(u16, @bitCast(slice[0..2].*)) == comptime std.mem.readIntNative(u16, "./"); } inline fn @"is ../"(slice: []const u8) bool { @@ -376,7 +376,7 @@ pub fn relativeToCommonPath( var out_slice: []u8 = buf[0..0]; if (normalized_from.len > 0) { - var i: usize = @intCast(usize, @intFromBool(normalized_from[0] == separator)) + 1 + last_common_separator; + var i: usize = @as(usize, @intCast(@intFromBool(normalized_from[0] == separator))) + 1 + last_common_separator; while (i <= normalized_from.len) : (i += 1) { if (i == normalized_from.len or (normalized_from[i] == separator and i + 1 < normalized_from.len)) { @@ -878,14 +878,14 @@ inline fn _joinAbsStringBuf(comptime is_sentinel: bool, comptime ReturnType: typ { var part_i: u16 = 0; - var part_len: u16 = @truncate(u16, parts.len); + var part_len: u16 = @as(u16, @truncate(parts.len)); while (part_i < part_len) { if (_platform.isAbsolute(parts[part_i])) { cwd = parts[part_i]; parts = parts[part_i + 1 ..]; - part_len = @truncate(u16, parts.len); + part_len = @as(u16, @truncate(parts.len)); part_i = 0; continue; } @@ -959,7 +959,7 @@ pub fn lastIndexOfNonSeparatorPosix(slice: []const u8) ?u32 { var i: usize = slice.len; while (i != 0) : (i -= 1) { if (slice[i] != std.fs.path.sep_posix) { - return @intCast(u32, i); + return @as(u32, @intCast(i)); } } diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index 409df85af..cf337d324 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -283,10 +283,10 @@ pub const Result = struct { if (strings.lastIndexOf(module, node_module_root)) |end_| { var end: usize = end_ + node_module_root.len; - return @truncate(u32, bun.hash(module[end..])); + return @as(u32, @truncate(bun.hash(module[end..]))); } - return @truncate(u32, bun.hash(this.path_pair.primary.text)); + return @as(u32, @truncate(bun.hash(this.path_pair.primary.text))); } }; @@ -1262,7 +1262,7 @@ pub const Resolver = struct { if (NodeFallbackModules.Map.get(import_path_without_node_prefix)) |*fallback_module| { result.path_pair.primary = fallback_module.path; result.module_type = .cjs; - result.package_json = @ptrFromInt(*PackageJSON, @intFromPtr(fallback_module.package_json)); + result.package_json = @as(*PackageJSON, @ptrFromInt(@intFromPtr(fallback_module.package_json))); result.is_from_node_modules = true; return .{ .success = result }; // "node:* @@ -1693,7 +1693,7 @@ pub const Resolver = struct { // check the global cache directory for a package.json file. var manager = r.getPackageManager(); var dependency_version = Dependency.Version{}; - var dependency_behavior = @enumFromInt(Dependency.Behavior, Dependency.Behavior.normal); + var dependency_behavior = @as(Dependency.Behavior, @enumFromInt(Dependency.Behavior.normal)); var string_buf = esm.version; // const initial_pending_tasks = manager.pending_tasks; @@ -2466,15 +2466,15 @@ pub const Resolver = struct { top_parent = result; break; } - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)] = DirEntryResolveQueueItem{ + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))] = DirEntryResolveQueueItem{ .unsafe_path = top, .result = result, .fd = 0, }; if (rfs.entries.get(top)) |top_entry| { - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)].safe_path = top_entry.entries.dir; - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)].fd = top_entry.entries.fd; + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))].safe_path = top_entry.entries.dir; + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))].fd = top_entry.entries.fd; } i += 1; } @@ -2484,21 +2484,21 @@ pub const Resolver = struct { if (result.status != .unknown) { top_parent = result; } else { - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)] = DirEntryResolveQueueItem{ + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))] = DirEntryResolveQueueItem{ .unsafe_path = root_path, .result = result, .fd = 0, }; if (rfs.entries.get(top)) |top_entry| { - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)].safe_path = top_entry.entries.dir; - bufs(.dir_entry_paths_to_resolve)[@intCast(usize, i)].fd = top_entry.entries.fd; + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))].safe_path = top_entry.entries.dir; + bufs(.dir_entry_paths_to_resolve)[@as(usize, @intCast(i))].fd = top_entry.entries.fd; } i += 1; } } - var queue_slice: []DirEntryResolveQueueItem = bufs(.dir_entry_paths_to_resolve)[0..@intCast(usize, i)]; + var queue_slice: []DirEntryResolveQueueItem = bufs(.dir_entry_paths_to_resolve)[0..@as(usize, @intCast(i))]; if (Environment.allow_assert) std.debug.assert(queue_slice.len > 0); var open_dir_count: usize = 0; @@ -2626,7 +2626,7 @@ pub const Resolver = struct { // Directories must always end in a trailing slash or else various bugs can occur. // This covers "what happens when the trailing" - end += @intCast(usize, @intFromBool(safe_path.len > end and end > 0 and safe_path[end - 1] != std.fs.path.sep and safe_path[end] == std.fs.path.sep)); + end += @as(usize, @intCast(@intFromBool(safe_path.len > end and end > 0 and safe_path[end - 1] != std.fs.path.sep and safe_path[end] == std.fs.path.sep))); break :brk safe_path[dir_path_i..end]; }; @@ -2779,8 +2779,8 @@ pub const Resolver = struct { (prefix.len >= longest_match_prefix_length and suffix.len > longest_match_suffix_length)) { - longest_match_prefix_length = @intCast(i32, prefix.len); - longest_match_suffix_length = @intCast(i32, suffix.len); + longest_match_prefix_length = @as(i32, @intCast(prefix.len)); + longest_match_suffix_length = @as(i32, @intCast(suffix.len)); longest_match = TSConfigMatch{ .prefix = prefix, .suffix = suffix, .original_paths = original_paths }; } } @@ -3378,7 +3378,13 @@ pub const Resolver = struct { continue; }; - var _result = r.loadFromMainField(path, dir_info, field_rel_path, key, extension_order) orelse continue; + var _result = r.loadFromMainField( + path, + dir_info, + field_rel_path, + key, + if (strings.eqlComptime(key, "main")) r.opts.main_field_extension_order else extension_order, + ) orelse continue; // If the user did not manually configure a "main" field order, then // use a special per-module automatic algorithm to decide whether to @@ -3389,13 +3395,13 @@ pub const Resolver = struct { if (main_field_values.get("main")) |main_rel_path| { if (main_rel_path.len > 0) { - absolute_result = r.loadFromMainField(path, dir_info, main_rel_path, "main", extension_order); + absolute_result = r.loadFromMainField(path, dir_info, main_rel_path, "main", r.opts.main_field_extension_order); } } else { // Some packages have a "module" field without a "main" field but // still have an implicit "index.js" file. In that case, treat that // as the value for "main". - absolute_result = r.loadAsIndexWithBrowserRemapping(dir_info, path, extension_order); + absolute_result = r.loadAsIndexWithBrowserRemapping(dir_info, path, r.opts.main_field_extension_order); } if (absolute_result) |auto_main_result| { diff --git a/src/router.zig b/src/router.zig index 8ed16f102..685de061a 100644 --- a/src/router.zig +++ b/src/router.zig @@ -28,7 +28,7 @@ const URLPath = @import("./http/url_path.zig"); const PathnameScanner = @import("./url.zig").PathnameScanner; const CodepointIterator = @import("./string_immutable.zig").CodepointIterator; -const index_route_hash = @truncate(u32, bun.hash("$$/index-route$$-!(@*@#&*%-901823098123")); +const index_route_hash = @as(u32, @truncate(bun.hash("$$/index-route$$-!(@*@#&*%-901823098123"))); const arbitrary_max_route = 4096; pub const Param = struct { @@ -335,7 +335,7 @@ const RouteLoader = struct { const relative_dir = FileSystem.instance.relative(base_dir, config.dir); if (!strings.hasPrefixComptime(relative_dir, "..")) { - route_dirname_len = @truncate(u16, relative_dir.len + @as(usize, @intFromBool(config.dir[config.dir.len - 1] != std.fs.path.sep))); + route_dirname_len = @as(u16, @truncate(relative_dir.len + @as(usize, @intFromBool(config.dir[config.dir.len - 1] != std.fs.path.sep)))); } var this = RouteLoader{ @@ -515,7 +515,7 @@ pub const TinyPtr = packed struct { } pub inline fn eql(a: TinyPtr, b: TinyPtr) bool { - return @bitCast(u32, a) == @bitCast(u32, b); + return @as(u32, @bitCast(a)) == @as(u32, @bitCast(b)); } pub fn from(parent: string, in: string) TinyPtr { @@ -529,7 +529,7 @@ pub const TinyPtr = packed struct { const length = @max(end, right) - right; const offset = @max(@intFromPtr(in.ptr), @intFromPtr(parent.ptr)) - @intFromPtr(parent.ptr); - return TinyPtr{ .offset = @truncate(u16, offset), .len = @truncate(u16, length) }; + return TinyPtr{ .offset = @as(u16, @truncate(offset)), .len = @as(u16, @truncate(length)) }; } }; @@ -571,7 +571,7 @@ pub const Route = struct { var table: [std.math.maxInt(u8)]u8 = undefined; var i: u16 = 0; while (i < @as(u16, table.len)) { - table[i] = @intCast(u8, i); + table[i] = @as(u8, @intCast(i)); i += 1; } // move dynamic routes to the bottom @@ -770,7 +770,7 @@ pub const Route = struct { .full_hash = if (is_index) index_route_hash else - @truncate(u32, bun.hash(name)), + @as(u32, @truncate(bun.hash(name))), .param_count = validation_result.param_count, .kind = validation_result.kind, .abs_path = entry.abs_path, @@ -1184,7 +1184,7 @@ const Pattern = struct { var offset: RoutePathInt = 0; std.debug.assert(input.len > 0); var kind: u4 = @intFromEnum(Tag.static); - const end = @truncate(u32, input.len - 1); + const end = @as(u32, @truncate(input.len - 1)); while (offset < end) { const pattern: Pattern = Pattern.initUnhashed(input, offset) catch |err| { const source = Logger.Source.initEmptyFile(input); @@ -1248,10 +1248,10 @@ const Pattern = struct { }; offset = pattern.len; kind = @max(@intFromEnum(@as(Pattern.Tag, pattern.value)), kind); - count += @intCast(u16, @intFromBool(@intFromEnum(@as(Pattern.Tag, pattern.value)) > @intFromEnum(Pattern.Tag.static))); + count += @as(u16, @intCast(@intFromBool(@intFromEnum(@as(Pattern.Tag, pattern.value)) > @intFromEnum(Pattern.Tag.static)))); } - return ValidationResult{ .param_count = count, .kind = @enumFromInt(Tag, kind) }; + return ValidationResult{ .param_count = count, .kind = @as(Tag, @enumFromInt(kind)) }; } pub fn eql(a: Pattern, b: Pattern) bool { @@ -1292,13 +1292,13 @@ const Pattern = struct { if (input.len == 0 or input.len <= @as(usize, offset)) return Pattern{ .value = .{ .static = HashedString.empty }, - .len = @truncate(RoutePathInt, @min(input.len, @as(usize, offset))), + .len = @as(RoutePathInt, @truncate(@min(input.len, @as(usize, offset)))), }; var i: RoutePathInt = offset; var tag = Tag.static; - const end = @intCast(RoutePathInt, input.len - 1); + const end = @as(RoutePathInt, @intCast(input.len - 1)); if (offset == end) return Pattern{ .len = offset, .value = .{ .static = HashedString.empty } }; diff --git a/src/runtime.zig b/src/runtime.zig index 072258747..89fd66e77 100644 --- a/src/runtime.zig +++ b/src/runtime.zig @@ -105,11 +105,11 @@ pub const Fallback = struct { acc_len += 8; while (acc_len >= 6) { acc_len -= 6; - try writer.writeByte(alphabet_chars[@truncate(u6, (acc >> acc_len))]); + try writer.writeByte(alphabet_chars[@as(u6, @truncate((acc >> acc_len)))]); } } if (acc_len > 0) { - try writer.writeByte(alphabet_chars[@truncate(u6, (acc << 6 - acc_len))]); + try writer.writeByte(alphabet_chars[@as(u6, @truncate((acc << 6 - acc_len)))]); } } }; @@ -142,7 +142,7 @@ pub const Fallback = struct { var version_hash_int: u32 = 0; pub fn versionHash() u32 { if (version_hash_int == 0) { - version_hash_int = @truncate(u32, std.fmt.parseInt(u64, version(), 16) catch unreachable); + version_hash_int = @as(u32, @truncate(std.fmt.parseInt(u64, version(), 16) catch unreachable)); } return version_hash_int; } @@ -267,7 +267,7 @@ pub const Runtime = struct { var version_hash_int: u32 = 0; pub fn versionHash() u32 { if (version_hash_int == 0) { - version_hash_int = @truncate(u32, version_hash); + version_hash_int = @as(u32, @truncate(version_hash)); } return version_hash_int; } @@ -400,6 +400,7 @@ pub const Runtime = struct { "$$typeof", }; const all_sorted: [all.len]string = brk: { + @setEvalBranchQuota(1000000); var list = all; const Sorter = struct { fn compare(_: void, a: []const u8, b: []const u8) bool { diff --git a/src/sha.zig b/src/sha.zig index 8faf9fbb2..542dc494e 100644 --- a/src/sha.zig +++ b/src/sha.zig @@ -251,10 +251,10 @@ pub fn main() anyerror!void { var digest2: DigestType = undefined; var digest3: DigestType = undefined; var digest4: DigestType = undefined; - @memset(@ptrCast([*]u8, &digest1)[0..@sizeOf(DigestType)], 0); - @memset(@ptrCast([*]u8, &digest2)[0..@sizeOf(DigestType)], 0); - @memset(@ptrCast([*]u8, &digest3)[0..@sizeOf(DigestType)], 0); - @memset(@ptrCast([*]u8, &digest4)[0..@sizeOf(DigestType)], 0); + @memset(@as([*]u8, @ptrCast(&digest1))[0..@sizeOf(DigestType)], 0); + @memset(@as([*]u8, @ptrCast(&digest2))[0..@sizeOf(DigestType)], 0); + @memset(@as([*]u8, @ptrCast(&digest3))[0..@sizeOf(DigestType)], 0); + @memset(@as([*]u8, @ptrCast(&digest4))[0..@sizeOf(DigestType)], 0); defer { std.mem.doNotOptimizeAway(&digest1); std.mem.doNotOptimizeAway(&digest2); diff --git a/src/sourcemap/sourcemap.zig b/src/sourcemap/sourcemap.zig index 0b245d8c7..178422848 100644 --- a/src/sourcemap/sourcemap.zig +++ b/src/sourcemap/sourcemap.zig @@ -221,7 +221,7 @@ pub const Mapping = struct { .msg = "Missing generated column value", .err = error.MissingGeneratedColumnValue, .value = generated.columns, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -235,7 +235,7 @@ pub const Mapping = struct { .msg = "Invalid generated column value", .err = error.InvalidGeneratedColumnValue, .value = generated.columns, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -267,7 +267,7 @@ pub const Mapping = struct { .fail = .{ .msg = "Invalid source index delta", .err = error.InvalidSourceIndexDelta, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -279,7 +279,7 @@ pub const Mapping = struct { .msg = "Invalid source index value", .err = error.InvalidSourceIndexValue, .value = source_index, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -297,7 +297,7 @@ pub const Mapping = struct { .fail = .{ .msg = "Missing original line", .err = error.MissingOriginalLine, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -309,7 +309,7 @@ pub const Mapping = struct { .msg = "Invalid original line value", .err = error.InvalidOriginalLineValue, .value = original.lines, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -323,7 +323,7 @@ pub const Mapping = struct { .msg = "Missing original column value", .err = error.MissingOriginalColumnValue, .value = original.columns, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -335,7 +335,7 @@ pub const Mapping = struct { .msg = "Invalid original column value", .err = error.InvalidOriginalColumnValue, .value = original.columns, - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; } @@ -352,8 +352,8 @@ pub const Mapping = struct { .fail = .{ .msg = "Invalid character after mapping", .err = error.InvalidSourceMap, - .value = @intCast(i32, c), - .loc = .{ .start = @intCast(i32, bytes.len - remain.len) }, + .value = @as(i32, @intCast(c)), + .loc = .{ .start = @as(i32, @intCast(bytes.len - remain.len)) }, }, }; }, @@ -431,7 +431,7 @@ pub const LineColumnOffset = struct { std.debug.assert(i < input.len); var iter = strings.CodepointIterator.initOffset(input, i); - var cursor = strings.CodepointIterator.Cursor{ .i = @truncate(u32, iter.i) }; + var cursor = strings.CodepointIterator.Cursor{ .i = @as(u32, @truncate(iter.i)) }; _ = iter.next(&cursor); offset = i + cursor.width; @@ -596,7 +596,7 @@ pub fn appendSourceMapChunk(j: *Joiner, allocator: std.mem.Allocator, prev_end_s var start_state = start_state_; // Handle line breaks in between this mapping and the previous one if (start_state.generated_line > 0) { - j.append(try strings.repeatingAlloc(allocator, @intCast(usize, start_state.generated_line), ';'), 0, allocator); + j.append(try strings.repeatingAlloc(allocator, @as(usize, @intCast(start_state.generated_line)), ';'), 0, allocator); prev_end_state.generated_column = 0; } @@ -668,7 +668,7 @@ pub fn encodeVLQWithLookupTable( value: i32, ) VLQ { return if (value >= 0 and value <= 255) - vlq_lookup_table[@intCast(usize, value)] + vlq_lookup_table[@as(usize, @intCast(value))] else encodeVLQ(value); } @@ -727,9 +727,9 @@ pub fn encodeVLQ( var bytes: [vlq_max_in_bytes]u8 = undefined; var vlq: u32 = if (value >= 0) - @bitCast(u32, value << 1) + @as(u32, @bitCast(value << 1)) else - @bitCast(u32, (-value << 1) | 1); + @as(u32, @bitCast((-value << 1) | 1)); // source mappings are limited to i32 comptime var i: usize = 0; @@ -783,10 +783,10 @@ pub fn decodeVLQ(encoded: []const u8, start: usize) VLQResult { // inlining helps for the 1 or 2 byte case, hurts a little for larger comptime var i: usize = 0; inline while (i < vlq_max_in_bytes + 1) : (i += 1) { - const index = @as(u32, base64_lut[@truncate(u7, encoded_[i])]); + const index = @as(u32, base64_lut[@as(u7, @truncate(encoded_[i]))]); // decode a byte - vlq |= (index & 31) << @truncate(u5, shift); + vlq |= (index & 31) << @as(u5, @truncate(shift)); shift += 5; // Stop if there's no continuation bit @@ -794,9 +794,9 @@ pub fn decodeVLQ(encoded: []const u8, start: usize) VLQResult { return VLQResult{ .start = start + comptime (i + 1), .value = if ((vlq & 1) == 0) - @intCast(i32, vlq >> 1) + @as(i32, @intCast(vlq >> 1)) else - -@intCast(i32, (vlq >> 1)), + -@as(i32, @intCast((vlq >> 1))), }; } } @@ -825,10 +825,10 @@ pub const LineOffsetTable = struct { pub fn findLine(byte_offsets_to_start_of_line: []const u32, loc: Logger.Loc) i32 { std.debug.assert(loc.start > -1); // checked by caller var original_line: usize = 0; - const loc_start = @intCast(usize, loc.start); + const loc_start = @as(usize, @intCast(loc.start)); { - var count = @truncate(usize, byte_offsets_to_start_of_line.len); + var count = @as(usize, @truncate(byte_offsets_to_start_of_line.len)); var i: usize = 0; while (count > 0) { const step = count / 2; @@ -842,13 +842,13 @@ pub const LineOffsetTable = struct { } } - return @intCast(i32, original_line) - 1; + return @as(i32, @intCast(original_line)) - 1; } pub fn generate(allocator: std.mem.Allocator, contents: []const u8, approximate_line_count: i32) List { var list = List{}; // Preallocate the top-level table using the approximate line count from the lexer - list.ensureUnusedCapacity(allocator, @intCast(usize, @max(approximate_line_count, 1))) catch unreachable; + list.ensureUnusedCapacity(allocator, @as(usize, @intCast(@max(approximate_line_count, 1)))) catch unreachable; var column: i32 = 0; var byte_offset_to_first_non_ascii: u32 = 0; var column_byte_offset: u32 = 0; @@ -869,9 +869,9 @@ pub const LineOffsetTable = struct { const cp_len = @as(usize, len_); if (column == 0) { - line_byte_offset = @truncate( + line_byte_offset = @as( u32, - @intFromPtr(remaining.ptr) - @intFromPtr(contents.ptr), + @truncate(@intFromPtr(remaining.ptr) - @intFromPtr(contents.ptr)), ); } @@ -884,23 +884,23 @@ pub const LineOffsetTable = struct { // we have a non-ASCII character, so we need to keep track of the // mapping from byte offsets to UTF-16 code unit counts columns_for_non_ascii.appendAssumeCapacity(column); - column_byte_offset = @intCast( + column_byte_offset = @as( u32, - (@intFromPtr( + @intCast((@intFromPtr( remaining.ptr, ) - @intFromPtr( contents.ptr, - )) - line_byte_offset, + )) - line_byte_offset), ); byte_offset_to_first_non_ascii = line_byte_offset; } // Update the per-byte column offsets if (columns_for_non_ascii.items.len > 0) { - const line_bytes_so_far = @intCast(u32, @truncate( + const line_bytes_so_far = @as(u32, @intCast(@as( u32, - @intFromPtr(remaining.ptr) - @intFromPtr(contents.ptr), - )) - line_byte_offset; + @truncate(@intFromPtr(remaining.ptr) - @intFromPtr(contents.ptr)), + ))) - line_byte_offset; columns_for_non_ascii.ensureUnusedCapacity((line_bytes_so_far - column_byte_offset) + 1) catch unreachable; while (column_byte_offset <= line_bytes_so_far) : (column_byte_offset += 1) { columns_for_non_ascii.appendAssumeCapacity(column); @@ -910,11 +910,11 @@ pub const LineOffsetTable = struct { (@max('\r', '\n') + 1)...127 => { // skip ahead to the next newline or non-ascii character if (strings.indexOfNewlineOrNonASCIICheckStart(remaining, @as(u32, len_), false)) |j| { - column += @intCast(i32, j); + column += @as(i32, @intCast(j)); remaining = remaining[j..]; } else { // if there are no more lines, we are done! - column += @intCast(i32, remaining.len); + column += @as(i32, @intCast(remaining.len)); remaining = remaining[remaining.len..]; } @@ -965,11 +965,11 @@ pub const LineOffsetTable = struct { // Mark the start of the next line if (column == 0) { - line_byte_offset = @intCast(u32, contents.len); + line_byte_offset = @as(u32, @intCast(contents.len)); } if (columns_for_non_ascii.items.len > 0) { - const line_bytes_so_far = @intCast(u32, contents.len) - line_byte_offset; + const line_bytes_so_far = @as(u32, @intCast(contents.len)) - line_byte_offset; columns_for_non_ascii.ensureUnusedCapacity((line_bytes_so_far - column_byte_offset) + 1) catch unreachable; while (column_byte_offset <= line_bytes_so_far) : (column_byte_offset += 1) { columns_for_non_ascii.appendAssumeCapacity(column); @@ -1216,8 +1216,8 @@ pub const Chunk = struct { pub noinline fn generateChunk(b: *ThisBuilder, output: []const u8) Chunk { b.updateGeneratedLineAndColumn(output); if (b.prepend_count) { - b.source_map.getBuffer().list.items[0..8].* = @bitCast([8]u8, b.source_map.getBuffer().list.items.len); - b.source_map.getBuffer().list.items[8..16].* = @bitCast([8]u8, b.source_map.getCount()); + b.source_map.getBuffer().list.items[0..8].* = @as([8]u8, @bitCast(b.source_map.getBuffer().list.items.len)); + b.source_map.getBuffer().list.items[8..16].* = @as([8]u8, @bitCast(b.source_map.getCount())); } return Chunk{ .buffer = b.source_map.getBuffer(), @@ -1235,7 +1235,7 @@ pub const Chunk = struct { var needs_mapping = b.cover_lines_without_mappings and !b.line_starts_with_mapping and b.has_prev_state; var i: usize = 0; - const n = @intCast(usize, slice.len); + const n = @as(usize, @intCast(slice.len)); var c: i32 = 0; while (i < n) { const len = strings.wtf8ByteSequenceLengthWithInvalid(slice[i]); @@ -1244,12 +1244,12 @@ pub const Chunk = struct { switch (c) { 14...127 => { - if (strings.indexOfNewlineOrNonASCII(slice, @intCast(u32, i))) |j| { - b.generated_column += @intCast(i32, (@as(usize, j) - i) + 1); + if (strings.indexOfNewlineOrNonASCII(slice, @as(u32, @intCast(i)))) |j| { + b.generated_column += @as(i32, @intCast((@as(usize, j) - i) + 1)); i = j; continue; } else { - b.generated_column += @intCast(i32, slice[i..].len) + 1; + b.generated_column += @as(i32, @intCast(slice[i..].len)) + 1; i = n; break; } @@ -1293,7 +1293,7 @@ pub const Chunk = struct { } } - b.last_generated_update = @truncate(u32, output.len); + b.last_generated_update = @as(u32, @truncate(output.len)); } pub fn appendMapping(b: *ThisBuilder, current_state_: SourceMapState) void { @@ -1327,12 +1327,12 @@ pub const Chunk = struct { b.prev_loc = loc; const list = b.line_offset_tables; const original_line = LineOffsetTable.findLine(b.line_offset_table_byte_offset_list, loc); - const line = list.get(@intCast(usize, @max(original_line, 0))); + const line = list.get(@as(usize, @intCast(@max(original_line, 0)))); // Use the line to compute the column - var original_column = loc.start - @intCast(i32, line.byte_offset_to_start_of_line); - if (line.columns_for_non_ascii.len > 0 and original_column >= @intCast(i32, line.byte_offset_to_first_non_ascii)) { - original_column = line.columns_for_non_ascii.ptr[@intCast(u32, original_column) - line.byte_offset_to_first_non_ascii]; + var original_column = loc.start - @as(i32, @intCast(line.byte_offset_to_start_of_line)); + if (line.columns_for_non_ascii.len > 0 and original_column >= @as(i32, @intCast(line.byte_offset_to_first_non_ascii))) { + original_column = line.columns_for_non_ascii.ptr[@as(u32, @intCast(original_column)) - line.byte_offset_to_first_non_ascii]; } b.updateGeneratedLineAndColumn(output); diff --git a/src/sourcemap/vlq_bench.zig b/src/sourcemap/vlq_bench.zig index ca5b1ed8e..4da9db8ff 100644 --- a/src/sourcemap/vlq_bench.zig +++ b/src/sourcemap/vlq_bench.zig @@ -30,7 +30,7 @@ const SourceMap = struct { value: i32, ) VLQ { return if (value >= 0 and value <= 255) - vlq_lookup_table[@intCast(usize, value)] + vlq_lookup_table[@as(usize, @intCast(value))] else encodeVLQ(value); } @@ -54,9 +54,9 @@ const SourceMap = struct { var bytes: [vlq_max_in_bytes]u8 = undefined; var vlq: u32 = if (value >= 0) - @bitCast(u32, value << 1) + @as(u32, @bitCast(value << 1)) else - @bitCast(u32, (-value << 1) | 1); + @as(u32, @bitCast((-value << 1) | 1)); // source mappings are limited to i32 comptime var i: usize = 0; @@ -111,10 +111,10 @@ const SourceMap = struct { // inlining helps for the 1 or 2 byte case, hurts a little for larger comptime var i: usize = 0; inline while (i < vlq_max_in_bytes + 1) : (i += 1) { - const index = @as(u32, base64_lut[@truncate(u7, encoded_[i])]); + const index = @as(u32, base64_lut[@as(u7, @truncate(encoded_[i]))]); // decode a byte - vlq |= (index & 31) << @truncate(u5, shift); + vlq |= (index & 31) << @as(u5, @truncate(shift)); shift += 5; // Stop if there's no continuation bit @@ -122,9 +122,9 @@ const SourceMap = struct { return VLQResult{ .start = i + start, .value = if ((vlq & 1) == 0) - @intCast(i32, vlq >> 1) + @as(i32, @intCast(vlq >> 1)) else - -@intCast(i32, (vlq >> 1)), + -@as(i32, @intCast((vlq >> 1))), }; } } diff --git a/src/standalone_bun.zig b/src/standalone_bun.zig index b18fe384e..03cec9370 100644 --- a/src/standalone_bun.zig +++ b/src/standalone_bun.zig @@ -211,7 +211,7 @@ pub const StandaloneModuleGraph = struct { } var offsets = Offsets{ - .entry_point_id = @truncate(u32, entry_point_id.?), + .entry_point_id = @as(u32, @truncate(entry_point_id.?)), .modules_ptr = string_builder.appendCount(std.mem.sliceAsBytes(modules.items)), .byte_count = string_builder.len, }; @@ -230,7 +230,7 @@ pub const StandaloneModuleGraph = struct { pub fn inject(bytes: []const u8) i32 { var buf: [bun.MAX_PATH_BYTES]u8 = undefined; - var zname: [:0]const u8 = bun.span(bun.fs.FileSystem.instance.tmpname("bun-build", &buf, @bitCast(u64, std.time.milliTimestamp())) catch |err| { + var zname: [:0]const u8 = bun.span(bun.fs.FileSystem.instance.tmpname("bun-build", &buf, @as(u64, @bitCast(std.time.milliTimestamp()))) catch |err| { Output.prettyErrorln("<r><red>error<r><d>:<r> failed to get temporary file name: {s}", .{@errorName(err)}); Global.exit(1); return -1; @@ -338,7 +338,7 @@ pub const StandaloneModuleGraph = struct { break :brk fd; }; - const seek_position = @intCast(u64, brk: { + const seek_position = @as(u64, @intCast(brk: { const fstat = switch (Syscall.fstat(cloned_executable_fd)) { .result => |res| res, .err => |err| { @@ -349,7 +349,7 @@ pub const StandaloneModuleGraph = struct { }; break :brk @max(fstat.size, 0); - }); + })); const total_byte_count = seek_position + bytes.len + 8; @@ -479,7 +479,7 @@ pub const StandaloneModuleGraph = struct { return null; var end = @as([]u8, &trailer_bytes).ptr + read_amount - @sizeOf(usize); - const total_byte_count: usize = @bitCast(usize, end[0..8].*); + const total_byte_count: usize = @as(usize, @bitCast(end[0..8].*)); if (total_byte_count > std.math.maxInt(u32) or total_byte_count < 4096) { // sanity check: the total byte count should never be more than 4 GB @@ -511,7 +511,7 @@ pub const StandaloneModuleGraph = struct { // if you have not a ton of code, we only do a single read() call if (Environment.allow_assert or offsets.byte_count > 1024 * 3) { const offset_from_end = trailer_bytes.len - (@intFromPtr(end) - @intFromPtr(@as([]u8, &trailer_bytes).ptr)); - std.os.lseek_END(self_exe, -@intCast(i64, offset_from_end + offsets.byte_count)) catch return null; + std.os.lseek_END(self_exe, -@as(i64, @intCast(offset_from_end + offsets.byte_count))) catch return null; if (comptime Environment.allow_assert) { // actually we just want to verify this logic is correct in development diff --git a/src/string.zig b/src/string.zig index 26cd86d8c..e592537c2 100644 --- a/src/string.zig +++ b/src/string.zig @@ -706,7 +706,7 @@ pub const String = extern struct { if (uchar > 255) return null; - buffer[i] = @intCast(u8, uchar); + buffer[i] = @as(u8, @intCast(uchar)); } inline for (0..values.len) |i| { @@ -747,7 +747,7 @@ pub const String = extern struct { if (uchar > 255) return null; - byte.* = @intCast(u8, uchar); + byte.* = @as(u8, @intCast(uchar)); } break :brk bytes; }; diff --git a/src/string_builder.zig b/src/string_builder.zig index 7aba5cd89..8acef5f07 100644 --- a/src/string_builder.zig +++ b/src/string_builder.zig @@ -64,7 +64,7 @@ pub fn add(this: *StringBuilder, len: usize) bun.StringPointer { if (comptime Environment.allow_assert) assert(this.len <= this.cap); - return bun.StringPointer{ .offset = @truncate(u32, start), .length = @truncate(u32, len) }; + return bun.StringPointer{ .offset = @as(u32, @truncate(start)), .length = @as(u32, @truncate(len)) }; } pub fn appendCount(this: *StringBuilder, slice: string) bun.StringPointer { if (comptime Environment.allow_assert) { @@ -80,7 +80,7 @@ pub fn appendCount(this: *StringBuilder, slice: string) bun.StringPointer { if (comptime Environment.allow_assert) assert(this.len <= this.cap); - return bun.StringPointer{ .offset = @truncate(u32, start), .length = @truncate(u32, slice.len) }; + return bun.StringPointer{ .offset = @as(u32, @truncate(start)), .length = @as(u32, @truncate(slice.len)) }; } pub fn fmt(this: *StringBuilder, comptime str: string, args: anytype) string { @@ -112,8 +112,8 @@ pub fn fmtAppendCount(this: *StringBuilder, comptime str: string, args: anytype) if (comptime Environment.allow_assert) assert(this.len <= this.cap); return bun.StringPointer{ - .offset = @truncate(u32, off), - .length = @truncate(u32, out.len), + .offset = @as(u32, @truncate(off)), + .length = @as(u32, @truncate(out.len)), }; } diff --git a/src/string_immutable.zig b/src/string_immutable.zig index 6c4eaa943..9ca60c860 100644 --- a/src/string_immutable.zig +++ b/src/string_immutable.zig @@ -52,16 +52,16 @@ pub fn indexOfAny(slice: string, comptime str: anytype) ?OptionalUsize { if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - var cmp = @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, str[0]))); + var cmp: AsciiVectorU1 = @bitCast(vec == @as(AsciiVector, @splat(@as(u8, str[0])))); inline for (str[1..]) |c| { - cmp |= @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, c))); + cmp |= @bitCast(vec == @as(AsciiVector, @splat(@as(u8, c)))); } if (@reduce(.Max, cmp) > 0) { - const bitmask = @bitCast(AsciiVectorInt, cmp); + const bitmask = @as(AsciiVectorInt, @bitCast(cmp)); const first = @ctz(bitmask); - return @intCast(OptionalUsize, first + slice.len - remaining.len); + return @as(OptionalUsize, @intCast(first + slice.len - remaining.len)); } remaining = remaining[ascii_vector_size..]; @@ -72,7 +72,7 @@ pub fn indexOfAny(slice: string, comptime str: anytype) ?OptionalUsize { for (remaining, 0..) |c, i| { if (strings.indexOfChar(str, c) != null) { - return @intCast(OptionalUsize, i + slice.len - remaining.len); + return @as(OptionalUsize, @intCast(i + slice.len - remaining.len)); } } @@ -82,7 +82,7 @@ pub fn indexOfAny16(self: []const u16, comptime str: anytype) ?OptionalUsize { for (self, 0..) |c, i| { inline for (str) |a| { if (c == a) { - return @intCast(OptionalUsize, i); + return @as(OptionalUsize, @intCast(i)); } } } @@ -94,7 +94,7 @@ pub inline fn containsComptime(self: string, comptime str: string) bool { const Int = std.meta.Int(.unsigned, str.len * 8); while (remain.len >= comptime str.len) { - if (@bitCast(Int, remain.ptr[0..str.len].*) == @bitCast(Int, str.ptr[0..str.len].*)) { + if (@as(Int, @bitCast(remain.ptr[0..str.len].*)) == @as(Int, @bitCast(str.ptr[0..str.len].*))) { return true; } remain = remain[str.len..]; @@ -179,7 +179,7 @@ pub fn repeatingBuf(self: []u8, char: u8) void { pub fn indexOfCharNeg(self: string, char: u8) i32 { var i: u32 = 0; while (i < self.len) : (i += 1) { - if (self[i] == char) return @intCast(i32, i); + if (self[i] == char) return @as(i32, @intCast(i)); } return -1; } @@ -259,7 +259,7 @@ pub const FormatValidIdentifier = struct { pub fn indexOfSigned(self: string, str: string) i32 { const i = std.mem.indexOf(u8, self, str) orelse return -1; - return @intCast(i32, i); + return @as(i32, @intCast(i)); } pub inline fn lastIndexOfChar(self: string, char: u8) ?usize { @@ -291,7 +291,7 @@ pub inline fn indexOf(self: string, str: string) ?usize { const i = @intFromPtr(start) - @intFromPtr(self_ptr); std.debug.assert(i < self_len); - return @intCast(usize, i); + return @as(usize, @intCast(i)); } pub fn split(self: string, delimiter: string) SplitIterator { @@ -400,7 +400,7 @@ pub const StringOrTinyString = struct { // This is a switch expression instead of a statement to make sure it uses the faster assembly return switch (this.is_tiny_string) { 1 => this.remainder_buf[0..this.remainder_len], - 0 => @ptrFromInt([*]const u8, std.mem.readIntNative(usize, this.remainder_buf[0..@sizeOf(usize)]))[0..std.mem.readIntNative(usize, this.remainder_buf[@sizeOf(usize) .. @sizeOf(usize) * 2])], + 0 => @as([*]const u8, @ptrFromInt(std.mem.readIntNative(usize, this.remainder_buf[0..@sizeOf(usize)])))[0..std.mem.readIntNative(usize, this.remainder_buf[@sizeOf(usize) .. @sizeOf(usize) * 2])], }; } @@ -436,7 +436,7 @@ pub const StringOrTinyString = struct { @setRuntimeSafety(false); var tiny = StringOrTinyString{ .is_tiny_string = 1, - .remainder_len = @truncate(u7, stringy.len), + .remainder_len = @as(u7, @truncate(stringy.len)), }; @memcpy(tiny.remainder_buf[0..tiny.remainder_len], stringy[0..tiny.remainder_len]); return tiny; @@ -462,7 +462,7 @@ pub const StringOrTinyString = struct { @setRuntimeSafety(false); var tiny = StringOrTinyString{ .is_tiny_string = 1, - .remainder_len = @truncate(u7, stringy.len), + .remainder_len = @as(u7, @truncate(stringy.len)), }; _ = copyLowercase(stringy, &tiny.remainder_buf); return tiny; @@ -734,9 +734,9 @@ pub fn endsWithAny(self: string, str: string) bool { // - Strips ANSI output as it will appear malformed. pub fn githubActionWriter(writer: anytype, self: string) !void { var offset: usize = 0; - const end = @truncate(u32, self.len); + const end = @as(u32, @truncate(self.len)); while (offset < end) { - if (indexOfNewlineOrNonASCIIOrANSI(self, @truncate(u32, offset))) |i| { + if (indexOfNewlineOrNonASCIIOrANSI(self, @as(u32, @truncate(offset)))) |i| { const byte = self[i]; if (byte > 0x7F) { offset += @max(wtf8ByteSequenceLength(byte), 1); @@ -842,11 +842,11 @@ pub fn countChar(self: string, char: u8) usize { var total: usize = 0; var remaining = self; - const splatted: AsciiVector = @splat(ascii_vector_size, char); + const splatted: AsciiVector = @splat(char); while (remaining.len >= 16) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @popCount(@bitCast(@Vector(ascii_vector_size, u1), vec == splatted)); + const cmp = @popCount(@as(@Vector(ascii_vector_size, u1), @bitCast(vec == splatted))); total += @as(usize, @reduce(.Add, cmp)); remaining = remaining[ascii_vector_size..]; } @@ -936,7 +936,7 @@ inline fn eqlComptimeCheckLenWithKnownType(comptime Type: type, a: []const Type, comptime var b_ptr: usize = 0; inline while (dword_length > 0) : (dword_length -= 1) { - if (@bitCast(usize, a[b_ptr..][0 .. @sizeOf(usize) / divisor].*) != comptime @bitCast(usize, (slice[b_ptr..])[0 .. @sizeOf(usize) / divisor].*)) + if (@as(usize, @bitCast(a[b_ptr..][0 .. @sizeOf(usize) / divisor].*)) != comptime @as(usize, @bitCast((slice[b_ptr..])[0 .. @sizeOf(usize) / divisor].*))) return false; comptime b_ptr += @sizeOf(usize); if (comptime b_ptr == b.len) return true; @@ -944,7 +944,7 @@ inline fn eqlComptimeCheckLenWithKnownType(comptime Type: type, a: []const Type, if (comptime @sizeOf(usize) == 8) { if (comptime (len & 4) != 0) { - if (@bitCast(u32, a[b_ptr..][0 .. @sizeOf(u32) / divisor].*) != comptime @bitCast(u32, (slice[b_ptr..])[0 .. @sizeOf(u32) / divisor].*)) + if (@as(u32, @bitCast(a[b_ptr..][0 .. @sizeOf(u32) / divisor].*)) != comptime @as(u32, @bitCast((slice[b_ptr..])[0 .. @sizeOf(u32) / divisor].*))) return false; comptime b_ptr += @sizeOf(u32); @@ -954,7 +954,7 @@ inline fn eqlComptimeCheckLenWithKnownType(comptime Type: type, a: []const Type, } if (comptime (len & 2) != 0) { - if (@bitCast(u16, a[b_ptr..][0 .. @sizeOf(u16) / divisor].*) != comptime @bitCast(u16, slice[b_ptr .. b_ptr + (@sizeOf(u16) / divisor)].*)) + if (@as(u16, @bitCast(a[b_ptr..][0 .. @sizeOf(u16) / divisor].*)) != comptime @as(u16, @bitCast(slice[b_ptr .. b_ptr + (@sizeOf(u16) / divisor)].*))) return false; comptime b_ptr += @sizeOf(u16); @@ -1027,7 +1027,7 @@ pub fn eqlLong(a_str: string, b_str: string, comptime check_len: bool) bool { { var dword_length = len >> 3; while (dword_length > 0) : (dword_length -= 1) { - if (@bitCast(usize, a[0..@sizeOf(usize)].*) != @bitCast(usize, b[0..@sizeOf(usize)].*)) + if (@as(usize, @bitCast(a[0..@sizeOf(usize)].*)) != @as(usize, @bitCast(b[0..@sizeOf(usize)].*))) return false; b += @sizeOf(usize); if (b == end) return true; @@ -1037,7 +1037,7 @@ pub fn eqlLong(a_str: string, b_str: string, comptime check_len: bool) bool { if (comptime @sizeOf(usize) == 8) { if ((len & 4) != 0) { - if (@bitCast(u32, a[0..@sizeOf(u32)].*) != @bitCast(u32, b[0..@sizeOf(u32)].*)) + if (@as(u32, @bitCast(a[0..@sizeOf(u32)].*)) != @as(u32, @bitCast(b[0..@sizeOf(u32)].*))) return false; b += @sizeOf(u32); @@ -1047,7 +1047,7 @@ pub fn eqlLong(a_str: string, b_str: string, comptime check_len: bool) bool { } if ((len & 2) != 0) { - if (@bitCast(u16, a[0..@sizeOf(u16)].*) != @bitCast(u16, b[0..@sizeOf(u16)].*)) + if (@as(u16, @bitCast(a[0..@sizeOf(u16)].*)) != @as(u16, @bitCast(b[0..@sizeOf(u16)].*))) return false; b += @sizeOf(u16); @@ -1098,7 +1098,7 @@ pub inline fn joinBuf(out: []u8, parts: anytype, comptime parts_len: usize) []u8 pub fn index(self: string, str: string) i32 { if (strings.indexOf(self, str)) |i| { - return @intCast(i32, i); + return @as(i32, @intCast(i)); } else { return -1; } @@ -1117,12 +1117,12 @@ pub fn toUTF8Alloc(allocator: std.mem.Allocator, js: []const u16) !string { } pub inline fn appendUTF8MachineWordToUTF16MachineWord(output: *[@sizeOf(usize) / 2]u16, input: *const [@sizeOf(usize) / 2]u8) void { - output[0 .. @sizeOf(usize) / 2].* = @bitCast( + output[0 .. @sizeOf(usize) / 2].* = @as( [4]u16, - @as( + @bitCast(@as( @Vector(4, u16), - @bitCast(@Vector(4, u8), input[0 .. @sizeOf(usize) / 2].*), - ), + @as(@Vector(4, u8), @bitCast(input[0 .. @sizeOf(usize) / 2].*)), + )), ); } @@ -1160,7 +1160,7 @@ pub fn copyU8IntoU16WithAlignment(comptime alignment: u21, output_: []align(alig } if (std.mem.isAligned(@intFromPtr(output.ptr), @alignOf(u16)) and input.len > 0) { - copyU8IntoU16(@alignCast(@alignOf(u16), output.ptr)[0..output.len], input); + copyU8IntoU16(@as([*]u16, @alignCast(output.ptr))[0..output.len], input); return; } @@ -1213,7 +1213,7 @@ pub inline fn copyU16IntoU8(output_: []u8, comptime InputType: type, input_: Inp while (last_vector_ptr != input_ptr) { const input_vec1: @Vector(group, u16) = input_ptr[0..group].*; inline for (0..group) |i| { - output_ptr[i] = @truncate(u8, input_vec1[i]); + output_ptr[i] = @as(u8, @truncate(input_vec1[i])); } output_ptr += group; @@ -1227,7 +1227,7 @@ pub inline fn copyU16IntoU8(output_: []u8, comptime InputType: type, input_: Inp const last_input_ptr = input_ptr + @min(input.len, output.len); while (last_input_ptr != input_ptr) { - output_ptr[0] = @truncate(u8, input_ptr[0]); + output_ptr[0] = @as(u8, @truncate(input_ptr[0])); output_ptr += 1; input_ptr += 1; } @@ -1239,7 +1239,7 @@ pub fn copyLatin1IntoASCII(dest: []u8, src: []const u8) void { var remain = src; var to = dest; - const non_ascii_offset = strings.firstNonASCII(remain) orelse @truncate(u32, remain.len); + const non_ascii_offset = strings.firstNonASCII(remain) orelse @as(u32, @truncate(remain.len)); if (non_ascii_offset > 0) { @memcpy(to[0..non_ascii_offset], remain[0..non_ascii_offset]); remain = remain[non_ascii_offset..]; @@ -1277,7 +1277,7 @@ pub fn copyLatin1IntoASCII(dest: []u8, src: []const u8) void { } for (to) |*to_byte| { - to_byte.* = @as(u8, @truncate(u7, remain[0])); + to_byte.* = @as(u8, @as(u7, @truncate(remain[0]))); remain = remain[1..]; } } @@ -1349,7 +1349,7 @@ pub fn toUTF16Alloc(allocator: std.mem.Allocator, bytes: []const u8, comptime fa //#define U16_LENGTH(c) ((uint32_t)(c)<=0xffff ? 1 : 2) switch (replacement.code_point) { 0...0xffff => |c| { - try output.append(@intCast(u16, c)); + try output.append(@as(u16, @intCast(c))); }, else => |c| { try output.appendSlice(&[_]u16{ strings.u16Lead(c), strings.u16Trail(c) }); @@ -1384,7 +1384,7 @@ pub fn toUTF16Alloc(allocator: std.mem.Allocator, bytes: []const u8, comptime fa //#define U16_LENGTH(c) ((uint32_t)(c)<=0xffff ? 1 : 2) switch (replacement.code_point) { 0...0xffff => |c| { - try output.append(@intCast(u16, c)); + try output.append(@as(u16, @intCast(c))); }, else => |c| { try output.appendSlice(&[_]u16{ strings.u16Lead(c), strings.u16Trail(c) }); @@ -1529,7 +1529,7 @@ pub fn toUTF8ListWithTypeBun(list_: std.ArrayList(u8), comptime Type: type, utf1 utf16_remaining = utf16_remaining[replacement.len..]; const count: usize = replacement.utf8Width(); - try list.ensureTotalCapacityPrecise(i + count + list.items.len + @intFromFloat(usize, (@floatFromInt(f64, @truncate(u52, utf16_remaining.len)) * 1.2))); + try list.ensureTotalCapacityPrecise(i + count + list.items.len + @as(usize, @intFromFloat((@as(f64, @floatFromInt(@as(u52, @truncate(utf16_remaining.len)))) * 1.2)))); list.items.len += i; copyU16IntoU8( @@ -1597,7 +1597,7 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list // zig or LLVM doesn't do @ctz nicely with SIMD if (comptime ascii_vector_size >= 8) { { - const bytes = @bitCast(Int, latin1[0..size].*); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -1605,19 +1605,19 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list const first_set_byte = @ctz(mask) / 8; if (comptime Environment.allow_assert) std.debug.assert(latin1[first_set_byte] >= 127); - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); buf = buf[first_set_byte..]; latin1 = latin1[first_set_byte..]; break :inner; } - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); latin1 = latin1[size..]; buf = buf[size..]; } if (comptime ascii_vector_size >= 16) { - const bytes = @bitCast(Int, latin1[0..size].*); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -1625,7 +1625,7 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list const first_set_byte = @ctz(mask) / 8; if (comptime Environment.allow_assert) std.debug.assert(latin1[first_set_byte] >= 127); - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); buf = buf[first_set_byte..]; latin1 = latin1[first_set_byte..]; break :inner; @@ -1635,7 +1635,7 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list unreachable; } - buf[0..ascii_vector_size].* = @bitCast([ascii_vector_size]u8, vec)[0..ascii_vector_size].*; + buf[0..ascii_vector_size].* = @as([ascii_vector_size]u8, @bitCast(vec))[0..ascii_vector_size].*; latin1 = latin1[ascii_vector_size..]; buf = buf[ascii_vector_size..]; } @@ -1644,7 +1644,7 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list const Int = u64; const size = @sizeOf(Int); - const bytes = @bitCast(Int, latin1[0..size].*); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -1652,13 +1652,13 @@ pub fn allocateLatin1IntoUTF8WithList(list_: std.ArrayList(u8), offset_into_list const first_set_byte = @ctz(mask) / 8; if (comptime Environment.allow_assert) std.debug.assert(latin1[first_set_byte] >= 127); - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); latin1 = latin1[first_set_byte..]; buf = buf[first_set_byte..]; break :inner; } - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); latin1 = latin1[size..]; buf = buf[size..]; } @@ -1808,7 +1808,7 @@ pub fn copyLatin1IntoUTF8(buf_: []u8, comptime Type: type, latin1_: Type) Encode pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_: Type, comptime stop: bool) EncodeIntoResult { if (comptime bun.FeatureFlags.latin1_is_now_ascii) { - const to_copy = @truncate(u32, @min(buf_.len, latin1_.len)); + const to_copy = @as(u32, @truncate(@min(buf_.len, latin1_.len))); @memcpy(buf_[0..to_copy], latin1_[0..to_copy]); return .{ .written = to_copy, .read = to_copy }; @@ -1834,11 +1834,11 @@ pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_ const size = @sizeOf(Int); { - const bytes = @bitCast(Int, latin1[0..size].*); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); if (mask > 0) { const first_set_byte = @ctz(mask) / 8; @@ -1854,11 +1854,11 @@ pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_ } if (comptime ascii_vector_size >= 16) { - const bytes = @bitCast(Int, latin1[0..size].*); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; - buf[0..size].* = @bitCast([size]u8, bytes); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); if (comptime Environment.allow_assert) std.debug.assert(mask > 0); const first_set_byte = @ctz(mask) / 8; @@ -1872,7 +1872,7 @@ pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_ unreachable; } - buf[0..ascii_vector_size].* = @bitCast([ascii_vector_size]u8, vec)[0..ascii_vector_size].*; + buf[0..ascii_vector_size].* = @as([ascii_vector_size]u8, @bitCast(vec))[0..ascii_vector_size].*; latin1 = latin1[ascii_vector_size..]; buf = buf[ascii_vector_size..]; } @@ -1881,8 +1881,8 @@ pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_ const Int = u64; const size = @sizeOf(Int); while (@min(buf.len, latin1.len) >= size) { - const bytes = @bitCast(Int, latin1[0..size].*); - buf[0..size].* = @bitCast([size]u8, bytes); + const bytes = @as(Int, @bitCast(latin1[0..size].*)); + buf[0..size].* = @as([size]u8, @bitCast(bytes)); // https://dotat.at/@/2022-06-27-tolower-swar.html @@ -1931,8 +1931,8 @@ pub fn copyLatin1IntoUTF8StopOnNonASCII(buf_: []u8, comptime Type: type, latin1_ } return .{ - .written = @truncate(u32, buf_.len - buf.len), - .read = @truncate(u32, latin1_.len - latin1.len), + .written = @as(u32, @truncate(buf_.len - buf.len)), + .read = @as(u32, @truncate(latin1_.len - latin1.len)), }; } @@ -1959,16 +1959,14 @@ pub fn elementLengthLatin1IntoUTF8(comptime Type: type, latin1_: Type) usize { const vec: AsciiVector = latin1[0..ascii_vector_size].*; // Shifting a unsigned 8 bit integer to the right by 7 bits always produces a value of 0 or 1. - const cmp = vec >> @splat( - ascii_vector_size, + const cmp = vec >> @as(AsciiVector, @splat( @as(u8, 7), - ); + )); // Anding that value rather than converting it into a @Vector(16, u1) produces better code from LLVM. - const mask = cmp & @splat( - ascii_vector_size, + const mask: AsciiVector = cmp & @as(AsciiVector, @splat( @as(u8, 1), - ); + )); total_non_ascii_count += @as(usize, @reduce(.Add, mask)); latin1 = latin1[ascii_vector_size..]; @@ -1992,7 +1990,7 @@ pub fn copyLatin1IntoUTF16(comptime Buffer: type, buf_: Buffer, comptime Type: t var buf = buf_; var latin1 = latin1_; while (buf.len > 0 and latin1.len > 0) { - const to_write = strings.firstNonASCII(latin1) orelse @truncate(u32, @min(latin1.len, buf.len)); + const to_write = strings.firstNonASCII(latin1) orelse @as(u32, @truncate(@min(latin1.len, buf.len))); if (comptime std.meta.alignment(Buffer) != @alignOf(u16)) { strings.copyU8IntoU16WithAlignment(std.meta.alignment(Buffer), buf, latin1[0..to_write]); } else { @@ -2009,8 +2007,8 @@ pub fn copyLatin1IntoUTF16(comptime Buffer: type, buf_: Buffer, comptime Type: t } return .{ - .read = @truncate(u32, buf_.len - buf.len), - .written = @truncate(u32, latin1_.len - latin1.len), + .read = @as(u32, @truncate(buf_.len - buf.len)), + .written = @as(u32, @truncate(latin1_.len - latin1.len)), }; } @@ -2024,7 +2022,7 @@ pub fn elementLengthLatin1IntoUTF16(comptime Type: type, latin1_: Type) usize { var latin1 = latin1_; while (latin1.len > 0) { const function = comptime if (std.meta.Child(Type) == u8) strings.firstNonASCIIWithType else strings.firstNonASCII16; - const to_write = function(Type, latin1) orelse @truncate(u32, latin1.len); + const to_write = function(Type, latin1) orelse @as(u32, @truncate(latin1.len)); count += to_write; latin1 = latin1[to_write..]; if (latin1.len > 0) { @@ -2186,7 +2184,7 @@ pub fn escapeHTMLForLatin1Input(allocator: std.mem.Allocator, latin1: []const u8 const vecs: [vec_chars.len]AsciiVector = comptime brk: { var _vecs: [vec_chars.len]AsciiVector = undefined; for (vec_chars, 0..) |c, i| { - _vecs[i] = @splat(ascii_vector_size, c); + _vecs[i] = @splat(c); } break :brk _vecs; }; @@ -2204,11 +2202,11 @@ pub fn escapeHTMLForLatin1Input(allocator: std.mem.Allocator, latin1: []const u8 scan_and_allocate_lazily: while (remaining.len >= ascii_vector_size) { if (comptime Environment.allow_assert) std.debug.assert(!any_needs_escape); const vec: AsciiVector = remaining[0..ascii_vector_size].*; - if (@reduce(.Max, @bitCast(AsciiVectorU1, (vec == vecs[0])) | - @bitCast(AsciiVectorU1, (vec == vecs[1])) | - @bitCast(AsciiVectorU1, (vec == vecs[2])) | - @bitCast(AsciiVectorU1, (vec == vecs[3])) | - @bitCast(AsciiVectorU1, (vec == vecs[4]))) == 1) + if (@reduce(.Max, @as(AsciiVectorU1, @bitCast((vec == vecs[0]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[1]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[2]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[3]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[4])))) == 1) { if (comptime Environment.allow_assert) std.debug.assert(buf.capacity == 0); @@ -2264,11 +2262,11 @@ pub fn escapeHTMLForLatin1Input(allocator: std.mem.Allocator, latin1: []const u8 // so we'll go ahead and copy the buffer into a new buffer while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - if (@reduce(.Max, @bitCast(AsciiVectorU1, (vec == vecs[0])) | - @bitCast(AsciiVectorU1, (vec == vecs[1])) | - @bitCast(AsciiVectorU1, (vec == vecs[2])) | - @bitCast(AsciiVectorU1, (vec == vecs[3])) | - @bitCast(AsciiVectorU1, (vec == vecs[4]))) == 1) + if (@reduce(.Max, @as(AsciiVectorU1, @bitCast((vec == vecs[0]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[1]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[2]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[3]))) | + @as(AsciiVectorU1, @bitCast((vec == vecs[4])))) == 1) { buf.ensureUnusedCapacity(ascii_vector_size + 6) catch unreachable; comptime var i: usize = 0; @@ -2448,7 +2446,7 @@ pub fn escapeHTMLForUTF16Input(allocator: std.mem.Allocator, utf16: []const u16) const vecs: [vec_chars.len]AsciiU16Vector = brk: { var _vecs: [vec_chars.len]AsciiU16Vector = undefined; for (vec_chars, 0..) |c, i| { - _vecs[i] = @splat(ascii_u16_vector_size, @as(u16, c)); + _vecs[i] = @splat(@as(u16, c)); } break :brk _vecs; }; @@ -2457,12 +2455,12 @@ pub fn escapeHTMLForUTF16Input(allocator: std.mem.Allocator, utf16: []const u16) scan_and_allocate_lazily: while (remaining.len >= ascii_u16_vector_size) { if (comptime Environment.allow_assert) std.debug.assert(!any_needs_escape); const vec: AsciiU16Vector = remaining[0..ascii_u16_vector_size].*; - if (@reduce(.Max, @bitCast(AsciiVectorU16U1, vec > @splat(ascii_u16_vector_size, @as(u16, 127))) | - @bitCast(AsciiVectorU16U1, (vec == vecs[0])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[1])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[2])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[3])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[4]))) == 1) + if (@reduce(.Max, @as(AsciiVectorU16U1, @bitCast(vec > @as(AsciiU16Vector, @splat(@as(u16, 127))))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[0]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[1]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[2]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[3]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[4])))) == 1) { var i: u16 = 0; lazy: { @@ -2536,12 +2534,12 @@ pub fn escapeHTMLForUTF16Input(allocator: std.mem.Allocator, utf16: []const u16) // so we'll go ahead and copy the buffer into a new buffer while (remaining.len >= ascii_u16_vector_size) { const vec: AsciiU16Vector = remaining[0..ascii_u16_vector_size].*; - if (@reduce(.Max, @bitCast(AsciiVectorU16U1, vec > @splat(ascii_u16_vector_size, @as(u16, 127))) | - @bitCast(AsciiVectorU16U1, (vec == vecs[0])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[1])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[2])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[3])) | - @bitCast(AsciiVectorU16U1, (vec == vecs[4]))) == 1) + if (@reduce(.Max, @as(AsciiVectorU16U1, @bitCast(vec > @as(AsciiU16Vector, @splat(@as(u16, 127))))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[0]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[1]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[2]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[3]))) | + @as(AsciiVectorU16U1, @bitCast((vec == vecs[4])))) == 1) { buf.ensureUnusedCapacity(ascii_u16_vector_size) catch unreachable; var i: u16 = 0; @@ -2698,9 +2696,9 @@ test "copyLatin1IntoUTF8 - latin1" { } pub fn latin1ToCodepointAssumeNotASCII(char: u8, comptime CodePointType: type) CodePointType { - return @intCast( + return @as( CodePointType, - latin1ToCodepointBytesAssumeNotASCII16(char), + @intCast(latin1ToCodepointBytesAssumeNotASCII16(char)), ); } @@ -2741,12 +2739,12 @@ const latin1_to_utf16_conversion_table = [256]u16{ pub fn latin1ToCodepointBytesAssumeNotASCII(char: u32) [2]u8 { var bytes = [4]u8{ 0, 0, 0, 0 }; - _ = encodeWTF8Rune(&bytes, @intCast(i32, char)); + _ = encodeWTF8Rune(&bytes, @as(i32, @intCast(char))); return bytes[0..2].*; } pub fn latin1ToCodepointBytesAssumeNotASCII16(char: u32) u16 { - return latin1_to_utf16_conversion_table[@truncate(u8, char)]; + return latin1_to_utf16_conversion_table[@as(u8, @truncate(char))]; } pub fn copyUTF16IntoUTF8(buf: []u8, comptime Type: type, utf16: Type, comptime allow_partial_write: bool) EncodeIntoResult { @@ -2784,8 +2782,8 @@ pub fn copyUTF16IntoUTF8WithBuffer(buf: []u8, comptime Type: type, utf16: Type, if (result.status == .surrogate) break :brk; return EncodeIntoResult{ - .read = @truncate(u32, trimmed.len), - .written = @truncate(u32, result.count), + .read = @as(u32, @truncate(trimmed.len)), + .written = @as(u32, @truncate(result.count)), }; } } @@ -2810,7 +2808,7 @@ pub fn copyUTF16IntoUTF8WithBuffer(buf: []u8, comptime Type: type, utf16: Type, 2 => { if (remaining.len > 0) { //only first will be written - remaining[0] = @truncate(u8, 0xC0 | (replacement.code_point >> 6)); + remaining[0] = @as(u8, @truncate(0xC0 | (replacement.code_point >> 6))); remaining = remaining[remaining.len..]; } }, @@ -2818,12 +2816,12 @@ pub fn copyUTF16IntoUTF8WithBuffer(buf: []u8, comptime Type: type, utf16: Type, //only first to second written switch (remaining.len) { 1 => { - remaining[0] = @truncate(u8, 0xE0 | (replacement.code_point >> 12)); + remaining[0] = @as(u8, @truncate(0xE0 | (replacement.code_point >> 12))); remaining = remaining[remaining.len..]; }, 2 => { - remaining[0] = @truncate(u8, 0xE0 | (replacement.code_point >> 12)); - remaining[1] = @truncate(u8, 0x80 | (replacement.code_point >> 6) & 0x3F); + remaining[0] = @as(u8, @truncate(0xE0 | (replacement.code_point >> 12))); + remaining[1] = @as(u8, @truncate(0x80 | (replacement.code_point >> 6) & 0x3F)); remaining = remaining[remaining.len..]; }, else => {}, @@ -2833,18 +2831,18 @@ pub fn copyUTF16IntoUTF8WithBuffer(buf: []u8, comptime Type: type, utf16: Type, //only 1 to 3 written switch (remaining.len) { 1 => { - remaining[0] = @truncate(u8, 0xF0 | (replacement.code_point >> 18)); + remaining[0] = @as(u8, @truncate(0xF0 | (replacement.code_point >> 18))); remaining = remaining[remaining.len..]; }, 2 => { - remaining[0] = @truncate(u8, 0xF0 | (replacement.code_point >> 18)); - remaining[1] = @truncate(u8, 0x80 | (replacement.code_point >> 12) & 0x3F); + remaining[0] = @as(u8, @truncate(0xF0 | (replacement.code_point >> 18))); + remaining[1] = @as(u8, @truncate(0x80 | (replacement.code_point >> 12) & 0x3F)); remaining = remaining[remaining.len..]; }, 3 => { - remaining[0] = @truncate(u8, 0xF0 | (replacement.code_point >> 18)); - remaining[1] = @truncate(u8, 0x80 | (replacement.code_point >> 12) & 0x3F); - remaining[2] = @truncate(u8, 0x80 | (replacement.code_point >> 6) & 0x3F); + remaining[0] = @as(u8, @truncate(0xF0 | (replacement.code_point >> 18))); + remaining[1] = @as(u8, @truncate(0x80 | (replacement.code_point >> 12) & 0x3F)); + remaining[2] = @as(u8, @truncate(0x80 | (replacement.code_point >> 6) & 0x3F)); remaining = remaining[remaining.len..]; }, else => {}, @@ -2869,8 +2867,8 @@ pub fn copyUTF16IntoUTF8WithBuffer(buf: []u8, comptime Type: type, utf16: Type, } return .{ - .read = @truncate(u32, utf16.len - utf16_remaining.len), - .written = @truncate(u32, buf.len - remaining.len), + .read = @as(u32, @truncate(utf16.len - utf16_remaining.len)), + .written = @as(u32, @truncate(buf.len - remaining.len)), }; } @@ -2967,7 +2965,7 @@ pub fn encodeWTF8Rune(p: *[4]u8, r: i32) u3 { .{ p, u32, - @intCast(u32, r), + @as(u32, @intCast(r)), }, ); } @@ -2975,25 +2973,25 @@ pub fn encodeWTF8Rune(p: *[4]u8, r: i32) u3 { pub fn encodeWTF8RuneT(p: *[4]u8, comptime R: type, r: R) u3 { switch (r) { 0...0x7F => { - p[0] = @intCast(u8, r); + p[0] = @as(u8, @intCast(r)); return 1; }, (0x7F + 1)...0x7FF => { - p[0] = @truncate(u8, 0xC0 | ((r >> 6))); - p[1] = @truncate(u8, 0x80 | (r & 0x3F)); + p[0] = @as(u8, @truncate(0xC0 | ((r >> 6)))); + p[1] = @as(u8, @truncate(0x80 | (r & 0x3F))); return 2; }, (0x7FF + 1)...0xFFFF => { - p[0] = @truncate(u8, 0xE0 | ((r >> 12))); - p[1] = @truncate(u8, 0x80 | ((r >> 6) & 0x3F)); - p[2] = @truncate(u8, 0x80 | (r & 0x3F)); + p[0] = @as(u8, @truncate(0xE0 | ((r >> 12)))); + p[1] = @as(u8, @truncate(0x80 | ((r >> 6) & 0x3F))); + p[2] = @as(u8, @truncate(0x80 | (r & 0x3F))); return 3; }, else => { - p[0] = @truncate(u8, 0xF0 | ((r >> 18))); - p[1] = @truncate(u8, 0x80 | ((r >> 12) & 0x3F)); - p[2] = @truncate(u8, 0x80 | ((r >> 6) & 0x3F)); - p[3] = @truncate(u8, 0x80 | (r & 0x3F)); + p[0] = @as(u8, @truncate(0xF0 | ((r >> 18)))); + p[1] = @as(u8, @truncate(0x80 | ((r >> 12) & 0x3F))); + p[2] = @as(u8, @truncate(0x80 | ((r >> 6) & 0x3F))); + p[3] = @as(u8, @truncate(0x80 | (r & 0x3F))); return 4; }, } @@ -3070,17 +3068,17 @@ pub const ascii_vector_size = if (Environment.isWasm) 8 else 16; pub const ascii_u16_vector_size = if (Environment.isWasm) 4 else 8; pub const AsciiVectorInt = std.meta.Int(.unsigned, ascii_vector_size); pub const AsciiVectorIntU16 = std.meta.Int(.unsigned, ascii_u16_vector_size); -pub const max_16_ascii = @splat(ascii_vector_size, @as(u8, 127)); -pub const min_16_ascii = @splat(ascii_vector_size, @as(u8, 0x20)); -pub const max_u16_ascii = @splat(ascii_u16_vector_size, @as(u16, 127)); -pub const min_u16_ascii = @splat(ascii_u16_vector_size, @as(u16, 0x20)); +pub const max_16_ascii: @Vector(ascii_vector_size, u8) = @splat(@as(u8, 127)); +pub const min_16_ascii: @Vector(ascii_vector_size, u8) = @splat(@as(u8, 0x20)); +pub const max_u16_ascii: @Vector(ascii_u16_vector_size, u16) = @splat(@as(u16, 127)); +pub const min_u16_ascii: @Vector(ascii_u16_vector_size, u16) = @splat(@as(u16, 0x20)); pub const AsciiVector = @Vector(ascii_vector_size, u8); pub const AsciiVectorSmall = @Vector(8, u8); pub const AsciiVectorU1 = @Vector(ascii_vector_size, u1); pub const AsciiVectorU1Small = @Vector(8, u1); pub const AsciiVectorU16U1 = @Vector(ascii_u16_vector_size, u1); pub const AsciiU16Vector = @Vector(ascii_u16_vector_size, u16); -pub const max_4_ascii = @splat(4, @as(u8, 127)); +pub const max_4_ascii: @Vector(4, u8) = @splat(@as(u8, 127)); pub fn isAllASCII(slice: []const u8) bool { if (bun.FeatureFlags.use_simdutf) return bun.simdutf.validate.ascii(slice); @@ -3103,7 +3101,7 @@ pub fn isAllASCII(slice: []const u8) bool { const size = @sizeOf(Int); const remaining_last8 = slice.ptr + slice.len - (slice.len % size); while (remaining.ptr != remaining_last8) : (remaining.ptr += size) { - const bytes = @bitCast(Int, remaining[0..size].*); + const bytes = @as(Int, @bitCast(remaining[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -3133,12 +3131,12 @@ pub fn isAllASCIISimple(comptime slice: []const u8) bool { //#define U16_LEAD(supplementary) (UChar)(((supplementary)>>10)+0xd7c0) pub inline fn u16Lead(supplementary: anytype) u16 { - return @intCast(u16, (supplementary >> 10) + 0xd7c0); + return @as(u16, @intCast((supplementary >> 10) + 0xd7c0)); } //#define U16_TRAIL(supplementary) (UChar)(((supplementary)&0x3ff)|0xdc00) pub inline fn u16Trail(supplementary: anytype) u16 { - return @intCast(u16, (supplementary & 0x3ff) | 0xdc00); + return @as(u16, @intCast((supplementary & 0x3ff) | 0xdc00)); } pub fn firstNonASCII(slice: []const u8) ?u32 { @@ -3154,7 +3152,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { return null; } - return @truncate(u32, result.count); + return @as(u32, @truncate(result.count)); } if (comptime Environment.enableSIMD) { @@ -3171,7 +3169,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { remaining.len -= @intFromPtr(remaining.ptr) - @intFromPtr(remaining_start); { - const bytes = @bitCast(Int, remaining[0..size].*); + const bytes = @as(Int, @bitCast(remaining[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -3185,12 +3183,12 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { } } - return @as(u32, first_set_byte) + @intCast(u32, slice.len - remaining.len); + return @as(u32, first_set_byte) + @as(u32, @intCast(slice.len - remaining.len)); } remaining = remaining[size..]; } { - const bytes = @bitCast(Int, remaining[0..size].*); + const bytes = @as(Int, @bitCast(remaining[0..size].*)); const mask = bytes & 0x8080808080808080; if (mask > 0) { @@ -3203,7 +3201,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { } } - return @as(u32, first_set_byte) + @intCast(u32, slice.len - remaining.len); + return @as(u32, first_set_byte) + @as(u32, @intCast(slice.len - remaining.len)); } } unreachable; @@ -3233,7 +3231,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { if (remaining.len >= size) { while (remaining.ptr != remaining_end) { - const bytes = @bitCast(Int, remaining[0..size].*); + const bytes = @as(Int, @bitCast(remaining[0..size].*)); // https://dotat.at/@/2022-06-27-tolower-swar.html const mask = bytes & 0x8080808080808080; @@ -3248,7 +3246,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { } } - return @as(u32, first_set_byte) + @intCast(u32, slice.len - remaining.len); + return @as(u32, first_set_byte) + @as(u32, @intCast(slice.len - remaining.len)); } remaining.ptr += size; @@ -3262,7 +3260,7 @@ pub fn firstNonASCIIWithType(comptime Type: type, slice: Type) ?u32 { for (remaining) |*char| { if (char.* > 127) { // try to prevent it from reading the length of the slice - return @truncate(u32, @intFromPtr(char) - @intFromPtr(slice.ptr)); + return @as(u32, @truncate(@intFromPtr(char) - @intFromPtr(slice.ptr))); } } @@ -3279,16 +3277,16 @@ pub fn indexOfNewlineOrNonASCIIOrANSI(slice_: []const u8, offset: u32) ?u32 { if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @bitCast(AsciiVectorU1, (vec > max_16_ascii)) | @bitCast(AsciiVectorU1, (vec < min_16_ascii)) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\r'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\n'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\x1b'))); + const cmp = @as(AsciiVectorU1, @bitCast((vec > max_16_ascii))) | @as(AsciiVectorU1, @bitCast((vec < min_16_ascii))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\r'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\n'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\x1b'))))); if (@reduce(.Max, cmp) > 0) { - const bitmask = @bitCast(AsciiVectorInt, cmp); + const bitmask = @as(AsciiVectorInt, @bitCast(cmp)); const first = @ctz(bitmask); - return @as(u32, first) + @intCast(u32, slice.len - remaining.len) + offset; + return @as(u32, first) + @as(u32, @intCast(slice.len - remaining.len)) + offset; } remaining = remaining[ascii_vector_size..]; @@ -3300,7 +3298,7 @@ pub fn indexOfNewlineOrNonASCIIOrANSI(slice_: []const u8, offset: u32) ?u32 { for (remaining) |*char_| { const char = char_.*; if (char > 127 or char < 0x20 or char == '\n' or char == '\r' or char == '\x1b') { - return @truncate(u32, (@intFromPtr(char_) - @intFromPtr(slice.ptr))) + offset; + return @as(u32, @truncate((@intFromPtr(char_) - @intFromPtr(slice.ptr)))) + offset; } } @@ -3328,15 +3326,15 @@ pub fn indexOfNewlineOrNonASCIICheckStart(slice_: []const u8, offset: u32, compt if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @bitCast(AsciiVectorU1, (vec > max_16_ascii)) | @bitCast(AsciiVectorU1, (vec < min_16_ascii)) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\r'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\n'))); + const cmp = @as(AsciiVectorU1, @bitCast((vec > max_16_ascii))) | @as(AsciiVectorU1, @bitCast((vec < min_16_ascii))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\r'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\n'))))); if (@reduce(.Max, cmp) > 0) { - const bitmask = @bitCast(AsciiVectorInt, cmp); + const bitmask = @as(AsciiVectorInt, @bitCast(cmp)); const first = @ctz(bitmask); - return @as(u32, first) + @intCast(u32, slice.len - remaining.len) + offset; + return @as(u32, first) + @as(u32, @intCast(slice.len - remaining.len)) + offset; } remaining = remaining[ascii_vector_size..]; @@ -3348,7 +3346,7 @@ pub fn indexOfNewlineOrNonASCIICheckStart(slice_: []const u8, offset: u32, compt for (remaining) |*char_| { const char = char_.*; if (char > 127 or char < 0x20 or char == '\n' or char == '\r') { - return @truncate(u32, (@intFromPtr(char_) - @intFromPtr(slice.ptr))) + offset; + return @as(u32, @truncate((@intFromPtr(char_) - @intFromPtr(slice.ptr)))) + offset; } } @@ -3365,10 +3363,10 @@ pub fn containsNewlineOrNonASCIIOrQuote(slice_: []const u8) bool { if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @bitCast(AsciiVectorU1, (vec > max_16_ascii)) | @bitCast(AsciiVectorU1, (vec < min_16_ascii)) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\r'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\n'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '"'))); + const cmp = @as(AsciiVectorU1, @bitCast((vec > max_16_ascii))) | @as(AsciiVectorU1, @bitCast((vec < min_16_ascii))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\r'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\n'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '"'))))); if (@reduce(.Max, cmp) > 0) { return true; @@ -3402,15 +3400,15 @@ pub fn indexOfNeedsEscape(slice: []const u8) ?u32 { if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @bitCast(AsciiVectorU1, (vec > max_16_ascii)) | @bitCast(AsciiVectorU1, (vec < min_16_ascii)) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '\\'))) | - @bitCast(AsciiVectorU1, vec == @splat(ascii_vector_size, @as(u8, '"'))); + const cmp = @as(AsciiVectorU1, @bitCast((vec > max_16_ascii))) | @as(AsciiVectorU1, @bitCast((vec < min_16_ascii))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '\\'))))) | + @as(AsciiVectorU1, @bitCast(vec == @as(AsciiVector, @splat(@as(u8, '"'))))); if (@reduce(.Max, cmp) > 0) { - const bitmask = @bitCast(AsciiVectorInt, cmp); + const bitmask = @as(AsciiVectorInt, @bitCast(cmp)); const first = @ctz(bitmask); - return @as(u32, first) + @truncate(u32, @intFromPtr(remaining.ptr) - @intFromPtr(slice.ptr)); + return @as(u32, first) + @as(u32, @truncate(@intFromPtr(remaining.ptr) - @intFromPtr(slice.ptr))); } remaining = remaining[ascii_vector_size..]; @@ -3420,7 +3418,7 @@ pub fn indexOfNeedsEscape(slice: []const u8) ?u32 { for (remaining) |*char_| { const char = char_.*; if (char > 127 or char < 0x20 or char == '\\' or char == '"') { - return @truncate(u32, @intFromPtr(char_) - @intFromPtr(slice.ptr)); + return @as(u32, @truncate(@intFromPtr(char_) - @intFromPtr(slice.ptr))); } } @@ -3444,11 +3442,11 @@ pub fn indexOfCharZ(sliceZ: [:0]const u8, char: u8) ?u63 { @intFromPtr(ptr) < @intFromPtr(sliceZ.ptr + sliceZ.len) and pos <= sliceZ.len); - return @truncate(u63, pos); + return @as(u63, @truncate(pos)); } pub fn indexOfChar(slice: []const u8, char: u8) ?u32 { - return @truncate(u32, indexOfCharUsize(slice, char) orelse return null); + return @as(u32, @truncate(indexOfCharUsize(slice, char) orelse return null)); } pub fn indexOfCharUsize(slice: []const u8, char: u8) ?usize { @@ -3493,7 +3491,7 @@ test "indexOfChar" { inline for (pairs) |pair| { try std.testing.expectEqual( indexOfChar(pair.@"0", pair.@"1").?, - @truncate(u32, std.mem.indexOfScalar(u8, pair.@"0", pair.@"1").?), + @as(u32, @truncate(std.mem.indexOfScalar(u8, pair.@"0", pair.@"1").?)), ); } } @@ -3509,11 +3507,11 @@ pub fn indexOfNotChar(slice: []const u8, char: u8) ?u32 { if (comptime Environment.enableSIMD) { while (remaining.len >= ascii_vector_size) { const vec: AsciiVector = remaining[0..ascii_vector_size].*; - const cmp = @splat(ascii_vector_size, char) != vec; - if (@reduce(.Max, @bitCast(AsciiVectorU1, cmp)) > 0) { - const bitmask = @bitCast(AsciiVectorInt, cmp); + const cmp = @as(AsciiVector, @splat(char)) != vec; + if (@reduce(.Max, @as(AsciiVectorU1, @bitCast(cmp))) > 0) { + const bitmask = @as(AsciiVectorInt, @bitCast(cmp)); const first = @ctz(bitmask); - return @as(u32, first) + @intCast(u32, slice.len - remaining.len); + return @as(u32, first) + @as(u32, @intCast(slice.len - remaining.len)); } remaining = remaining[ascii_vector_size..]; @@ -3522,7 +3520,7 @@ pub fn indexOfNotChar(slice: []const u8, char: u8) ?u32 { for (remaining) |*current| { if (current.* != char) { - return @truncate(u32, @intFromPtr(current) - @intFromPtr(slice.ptr)); + return @as(u32, @truncate(@intFromPtr(current) - @intFromPtr(slice.ptr))); } } @@ -3578,8 +3576,8 @@ inline fn _decodeHexToBytes(destination: []u8, comptime Char: type, source: []co return error.InvalidByteSequence; } } - const a = hex_table[@truncate(u8, int[0])]; - const b = hex_table[@truncate(u8, int[1])]; + const a = hex_table[@as(u8, @truncate(int[0]))]; + const b = hex_table[@as(u8, @truncate(int[1]))]; if (a == invalid_char or b == invalid_char) { if (comptime truncate) break; return error.InvalidByteSequence; @@ -3617,7 +3615,7 @@ pub fn encodeBytesToHex(destination: []u8, source: []const u8) usize { test "decodeHexToBytes" { var buffer = std.mem.zeroes([1024]u8); for (buffer, 0..) |_, i| { - buffer[i] = @truncate(u8, i % 256); + buffer[i] = @as(u8, @truncate(i % 256)); } var written: [2048]u8 = undefined; var hex = std.fmt.bufPrint(&written, "{}", .{std.fmt.fmtSliceHexLower(&buffer)}) catch unreachable; @@ -3733,24 +3731,24 @@ pub fn firstNonASCII16CheckMin(comptime Slice: type, slice: Slice, comptime chec // it does it element-wise for every single u8 on the vector // instead of doing the SIMD instructions // it removes a loop, but probably is slower in the end - const cmp = @bitCast(AsciiVectorU16U1, vec > max_u16_ascii) | - @bitCast(AsciiVectorU16U1, vec < min_u16_ascii); - const bitmask: u8 = @bitCast(u8, cmp); + const cmp = @as(AsciiVectorU16U1, @bitCast(vec > max_u16_ascii)) | + @as(AsciiVectorU16U1, @bitCast(vec < min_u16_ascii)); + const bitmask: u8 = @as(u8, @bitCast(cmp)); const first = @ctz(bitmask); - return @intCast(u32, @as(u32, first) + - @intCast(u32, slice.len - remaining.len)); + return @as(u32, @intCast(@as(u32, first) + + @as(u32, @intCast(slice.len - remaining.len)))); } } else if (comptime !check_min) { if (max_value > 127) { remaining.len -= (@intFromPtr(remaining.ptr) - @intFromPtr(remaining_start)) / 2; const cmp = vec > max_u16_ascii; - const bitmask: u8 = @bitCast(u8, cmp); + const bitmask: u8 = @as(u8, @bitCast(cmp)); const first = @ctz(bitmask); - return @intCast(u32, @as(u32, first) + - @intCast(u32, slice.len - remaining.len)); + return @as(u32, @intCast(@as(u32, first) + + @as(u32, @intCast(slice.len - remaining.len)))); } } @@ -3764,7 +3762,7 @@ pub fn firstNonASCII16CheckMin(comptime Slice: type, slice: Slice, comptime chec var i: usize = 0; for (remaining) |char| { if (char > 127 or char < 0x20) { - return @truncate(u32, i); + return @as(u32, @truncate(i)); } i += 1; @@ -3773,7 +3771,7 @@ pub fn firstNonASCII16CheckMin(comptime Slice: type, slice: Slice, comptime chec var i: usize = 0; for (remaining) |char| { if (char > 127) { - return @truncate(u32, i); + return @as(u32, @truncate(i)); } i += 1; @@ -3794,17 +3792,17 @@ pub fn @"nextUTF16NonASCIIOr$`\\"( while (remaining.len >= ascii_u16_vector_size) { const vec: AsciiU16Vector = remaining[0..ascii_u16_vector_size].*; - const cmp = @bitCast(AsciiVectorU16U1, (vec > max_u16_ascii)) | - @bitCast(AsciiVectorU16U1, (vec < min_u16_ascii)) | - @bitCast(AsciiVectorU16U1, (vec == @splat(ascii_u16_vector_size, @as(u16, '$')))) | - @bitCast(AsciiVectorU16U1, (vec == @splat(ascii_u16_vector_size, @as(u16, '`')))) | - @bitCast(AsciiVectorU16U1, (vec == @splat(ascii_u16_vector_size, @as(u16, '\\')))); + const cmp = @as(AsciiVectorU16U1, @bitCast((vec > max_u16_ascii))) | + @as(AsciiVectorU16U1, @bitCast((vec < min_u16_ascii))) | + @as(AsciiVectorU16U1, @bitCast((vec == @as(AsciiU16Vector, @splat(@as(u16, '$')))))) | + @as(AsciiVectorU16U1, @bitCast((vec == @as(AsciiU16Vector, @splat(@as(u16, '`')))))) | + @as(AsciiVectorU16U1, @bitCast((vec == @as(AsciiU16Vector, @splat(@as(u16, '\\')))))); - const bitmask = @bitCast(u8, cmp); + const bitmask = @as(u8, @bitCast(cmp)); const first = @ctz(bitmask); if (first < ascii_u16_vector_size) { - return @intCast(u32, @as(u32, first) + - @intCast(u32, slice.len - remaining.len)); + return @as(u32, @intCast(@as(u32, first) + + @as(u32, @intCast(slice.len - remaining.len)))); } remaining = remaining[ascii_u16_vector_size..]; @@ -3814,7 +3812,7 @@ pub fn @"nextUTF16NonASCIIOr$`\\"( for (remaining, 0..) |char, i| { switch (char) { '$', '`', '\\', 0...0x20 - 1, 128...std.math.maxInt(u16) => { - return @truncate(u32, i + (slice.len - remaining.len)); + return @as(u32, @truncate(i + (slice.len - remaining.len))); }, else => {}, @@ -4193,7 +4191,7 @@ pub fn NewCodePointIterator(comptime CodePointType: type, comptime zeroValue: co it.i = @min(next_, bytes.len); const slice = bytes[prev..][0..cp_len]; - it.width = @intCast(u3, slice.len); + it.width = @as(u3, @intCast(slice.len)); return slice; } @@ -4235,10 +4233,10 @@ pub fn NewCodePointIterator(comptime CodePointType: type, comptime zeroValue: co it.c = switch (slice.len) { 0 => zeroValue, - 1 => @intCast(CodePointType, slice[0]), - 2 => @intCast(CodePointType, std.unicode.utf8Decode2(slice) catch unreachable), - 3 => @intCast(CodePointType, std.unicode.utf8Decode3(slice) catch unreachable), - 4 => @intCast(CodePointType, std.unicode.utf8Decode4(slice) catch unreachable), + 1 => @as(CodePointType, @intCast(slice[0])), + 2 => @as(CodePointType, @intCast(std.unicode.utf8Decode2(slice) catch unreachable)), + 3 => @as(CodePointType, @intCast(std.unicode.utf8Decode3(slice) catch unreachable)), + 4 => @as(CodePointType, @intCast(std.unicode.utf8Decode4(slice) catch unreachable)), else => unreachable, }; diff --git a/src/string_joiner.zig b/src/string_joiner.zig index 9abdc8a58..6e01ff50c 100644 --- a/src/string_joiner.zig +++ b/src/string_joiner.zig @@ -120,7 +120,7 @@ pub fn ensureNewlineAtEnd(this: *Joiner) void { pub fn append(this: *Joiner, slice: string, offset: u32, allocator: ?Allocator) void { const data = slice[offset..]; - this.len += @truncate(u32, data.len); + this.len += @as(u32, @truncate(data.len)); var new_tail = if (this.use_pool) Joinable.Pool.get(default_allocator) @@ -138,7 +138,7 @@ pub fn append(this: *Joiner, slice: string, offset: u32, allocator: ?Allocator) new_tail.* = .{ .allocator = default_allocator, .data = Joinable{ - .offset = @truncate(u31, offset), + .offset = @as(u31, @truncate(offset)), .allocator = allocator orelse undefined, .needs_deinit = allocator != null, .slice = slice, diff --git a/src/string_mutable.zig b/src/string_mutable.zig index 103f03aa3..239713407 100644 --- a/src/string_mutable.zig +++ b/src/string_mutable.zig @@ -224,7 +224,7 @@ pub const MutableString = struct { ); } pub inline fn lenI(self: *MutableString) i32 { - return @intCast(i32, self.list.items.len); + return @as(i32, @intCast(self.list.items.len)); } pub fn toOwnedSlice(self: *MutableString) string { diff --git a/src/string_types.zig b/src/string_types.zig index c091e2a86..ab048b008 100644 --- a/src/string_types.zig +++ b/src/string_types.zig @@ -40,20 +40,20 @@ pub const PathString = packed struct { pub inline fn slice(this: anytype) string { @setRuntimeSafety(false); // "cast causes pointer to be null" is fine here. if it is null, the len will be 0. - return @ptrFromInt([*]u8, @intCast(usize, this.ptr))[0..this.len]; + return @as([*]u8, @ptrFromInt(@as(usize, @intCast(this.ptr))))[0..this.len]; } pub inline fn sliceAssumeZ(this: anytype) stringZ { @setRuntimeSafety(false); // "cast causes pointer to be null" is fine here. if it is null, the len will be 0. - return @ptrFromInt([*:0]u8, @intCast(usize, this.ptr))[0..this.len :0]; + return @as([*:0]u8, @ptrFromInt(@as(usize, @intCast(this.ptr))))[0..this.len :0]; } pub inline fn init(str: string) @This() { @setRuntimeSafety(false); // "cast causes pointer to be null" is fine here. if it is null, the len will be 0. return @This(){ - .ptr = @truncate(PointerIntType, @intFromPtr(str.ptr)), - .len = @truncate(PathInt, str.len), + .ptr = @as(PointerIntType, @truncate(@intFromPtr(str.ptr))), + .len = @as(PathInt, @truncate(str.len)), }; } @@ -78,20 +78,20 @@ pub const HashedString = struct { len: u32, hash: u32, - pub const empty = HashedString{ .ptr = @ptrFromInt([*]const u8, 0xDEADBEEF), .len = 0, .hash = 0 }; + pub const empty = HashedString{ .ptr = @as([*]const u8, @ptrFromInt(0xDEADBEEF)), .len = 0, .hash = 0 }; pub fn init(buf: string) HashedString { return HashedString{ .ptr = buf.ptr, - .len = @truncate(u32, buf.len), - .hash = @truncate(u32, bun.hash(buf)), + .len = @as(u32, @truncate(buf.len)), + .hash = @as(u32, @truncate(bun.hash(buf))), }; } pub fn initNoHash(buf: string) HashedString { return HashedString{ .ptr = buf.ptr, - .len = @truncate(u32, buf.len), + .len = @as(u32, @truncate(buf.len)), .hash = 0, }; } @@ -106,7 +106,7 @@ pub const HashedString = struct { return ((@max(this.hash, other.hash) > 0 and this.hash == other.hash) or (this.ptr == other.ptr)) and this.len == other.len; }, else => { - return @as(usize, this.len) == other.len and @truncate(u32, bun.hash(other[0..other.len])) == this.hash; + return @as(usize, this.len) == other.len and @as(u32, @truncate(bun.hash(other[0..other.len]))) == this.hash; }, } } diff --git a/src/sync.zig b/src/sync.zig index 598831099..d2ecd95bd 100644 --- a/src/sync.zig +++ b/src/sync.zig @@ -571,7 +571,7 @@ pub const RwLock = if (@import("builtin").os.tag != .windows and @import("builti } const PTHREAD_RWLOCK_INITIALIZER = pthread_rwlock_t{}; - const pthread_rwlock_t = switch (@import("builtin").os.tag) { + pub const pthread_rwlock_t = switch (@import("builtin").os.tag) { .macos, .ios, .watchos, .tvos => extern struct { __sig: c_long = 0x2DA8B3B4, __opaque: [192]u8 = [_]u8{0} ** 192, @@ -977,7 +977,7 @@ else if (@import("builtin").os.tag == .linux) } Futex.wait( - @ptrCast(*const i32, &self.state), + @as(*const i32, @ptrCast(&self.state)), @intFromEnum(new_state), ); } @@ -994,7 +994,7 @@ else if (@import("builtin").os.tag == .linux) fn unlockSlow(self: *Mutex) void { @setCold(true); - Futex.wake(@ptrCast(*const i32, &self.state)); + Futex.wake(@as(*const i32, @ptrCast(&self.state))); } } else diff --git a/src/tagged_pointer.zig b/src/tagged_pointer.zig index a246ee355..6c2462139 100644 --- a/src/tagged_pointer.zig +++ b/src/tagged_pointer.zig @@ -26,26 +26,26 @@ pub const TaggedPointer = packed struct { const address = @intFromPtr(ptr); return TaggedPointer{ - ._ptr = @truncate(AddressableSize, address), + ._ptr = @as(AddressableSize, @truncate(address)), .data = data, }; } pub inline fn get(this: TaggedPointer, comptime Type: type) *Type { - return @ptrFromInt(*Type, @intCast(usize, this._ptr)); + return @as(*Type, @ptrFromInt(@as(usize, @intCast(this._ptr)))); } pub inline fn from(val: anytype) TaggedPointer { const ValueType = @TypeOf(val); return switch (ValueType) { - f64, i64, u64 => @bitCast(TaggedPointer, val), - ?*anyopaque, *anyopaque => @bitCast(TaggedPointer, @intFromPtr(val)), + f64, i64, u64 => @as(TaggedPointer, @bitCast(val)), + ?*anyopaque, *anyopaque => @as(TaggedPointer, @bitCast(@intFromPtr(val))), else => @compileError("Unsupported type: " ++ @typeName(ValueType)), }; } pub inline fn to(this: TaggedPointer) *anyopaque { - return @ptrFromInt(*anyopaque, @bitCast(u64, this)); + return @as(*anyopaque, @ptrFromInt(@as(u64, @bitCast(this)))); } }; @@ -111,7 +111,7 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { } pub inline fn tag(this: This) TagType { - return @enumFromInt(TagType, this.repr.data); + return @as(TagType, @enumFromInt(this.repr.data)); } /// unsafely cast a tagged pointer to a specific type, without checking that it's really that type diff --git a/src/thread_pool.zig b/src/thread_pool.zig index 3359311d6..402f6b1d6 100644 --- a/src/thread_pool.zig +++ b/src/thread_pool.zig @@ -17,7 +17,7 @@ on_thread_spawn: ?OnSpawnCallback = null, threadpool_context: ?*anyopaque = null, stack_size: u32, max_threads: u32, -sync: Atomic(u32) = Atomic(u32).init(@bitCast(u32, Sync{})), +sync: Atomic(u32) = Atomic(u32).init(@as(u32, @bitCast(Sync{}))), idle_event: Event = .{}, join_event: Event = .{}, run_queue: Node.Queue = .{}, @@ -352,7 +352,7 @@ pub fn Do( } } - wait_group.counter += @intCast(u32, values.len); + wait_group.counter += @as(u32, @intCast(values.len)); this.schedule(batch); wait_group.wait(); } @@ -431,7 +431,7 @@ inline fn notify(self: *ThreadPool, is_waking: bool) void { // Fast path to check the Sync state to avoid calling into notifySlow(). // If we're waking, then we need to update the state regardless if (!is_waking) { - const sync = @bitCast(Sync, self.sync.load(.Monotonic)); + const sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); if (sync.notified) { return; } @@ -443,20 +443,20 @@ inline fn notify(self: *ThreadPool, is_waking: bool) void { /// Warm the thread pool up to the given number of threads. /// https://www.youtube.com/watch?v=ys3qcbO5KWw pub fn warm(self: *ThreadPool, count: u14) void { - var sync = @bitCast(Sync, self.sync.load(.Monotonic)); + var sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); if (sync.spawned >= count) return; - const to_spawn = @min(count - sync.spawned, @truncate(u14, self.max_threads)); + const to_spawn = @min(count - sync.spawned, @as(u14, @truncate(self.max_threads))); while (sync.spawned < to_spawn) { var new_sync = sync; new_sync.spawned += 1; - sync = @bitCast(Sync, self.sync.tryCompareAndSwap( - @bitCast(u32, sync), - @bitCast(u32, new_sync), + sync = @as(Sync, @bitCast(self.sync.tryCompareAndSwap( + @as(u32, @bitCast(sync)), + @as(u32, @bitCast(new_sync)), .Release, .Monotonic, - ) orelse break); + ) orelse break)); const spawn_config = if (Environment.isMac) // stack size must be a multiple of page_size // macOS will fail to spawn a thread if the stack size is not a multiple of page_size @@ -470,7 +470,7 @@ pub fn warm(self: *ThreadPool, count: u14) void { } noinline fn notifySlow(self: *ThreadPool, is_waking: bool) void { - var sync = @bitCast(Sync, self.sync.load(.Monotonic)); + var sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); while (sync.state != .shutdown) { const can_wake = is_waking or (sync.state == .pending); if (is_waking) { @@ -492,9 +492,9 @@ noinline fn notifySlow(self: *ThreadPool, is_waking: bool) void { // Release barrier synchronizes with Acquire in wait() // to ensure pushes to run queues happen before observing a posted notification. - sync = @bitCast(Sync, self.sync.tryCompareAndSwap( - @bitCast(u32, sync), - @bitCast(u32, new_sync), + sync = @as(Sync, @bitCast(self.sync.tryCompareAndSwap( + @as(u32, @bitCast(sync)), + @as(u32, @bitCast(new_sync)), .Release, .Monotonic, ) orelse { @@ -518,14 +518,14 @@ noinline fn notifySlow(self: *ThreadPool, is_waking: bool) void { } return; - }); + })); } } noinline fn wait(self: *ThreadPool, _is_waking: bool) error{Shutdown}!bool { var is_idle = false; var is_waking = _is_waking; - var sync = @bitCast(Sync, self.sync.load(.Monotonic)); + var sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); while (true) { if (sync.state == .shutdown) return error.Shutdown; @@ -542,44 +542,44 @@ noinline fn wait(self: *ThreadPool, _is_waking: bool) error{Shutdown}!bool { // Acquire barrier synchronizes with notify() // to ensure that pushes to run queue are observed after wait() returns. - sync = @bitCast(Sync, self.sync.tryCompareAndSwap( - @bitCast(u32, sync), - @bitCast(u32, new_sync), + sync = @as(Sync, @bitCast(self.sync.tryCompareAndSwap( + @as(u32, @bitCast(sync)), + @as(u32, @bitCast(new_sync)), .Acquire, .Monotonic, ) orelse { return is_waking or (sync.state == .signaled); - }); + })); } else if (!is_idle) { var new_sync = sync; new_sync.idle += 1; if (is_waking) new_sync.state = .pending; - sync = @bitCast(Sync, self.sync.tryCompareAndSwap( - @bitCast(u32, sync), - @bitCast(u32, new_sync), + sync = @as(Sync, @bitCast(self.sync.tryCompareAndSwap( + @as(u32, @bitCast(sync)), + @as(u32, @bitCast(new_sync)), .Monotonic, .Monotonic, ) orelse { is_waking = false; is_idle = true; continue; - }); + })); } else { if (Thread.current) |current| { current.drainIdleEvents(); } self.idle_event.wait(); - sync = @bitCast(Sync, self.sync.load(.Monotonic)); + sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); } } } /// Marks the thread pool as shutdown pub noinline fn shutdown(self: *ThreadPool) void { - var sync = @bitCast(Sync, self.sync.load(.Monotonic)); + var sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); while (sync.state != .shutdown) { var new_sync = sync; new_sync.notified = true; @@ -587,9 +587,9 @@ pub noinline fn shutdown(self: *ThreadPool) void { new_sync.idle = 0; // Full barrier to synchronize with both wait() and notify() - sync = @bitCast(Sync, self.sync.tryCompareAndSwap( - @bitCast(u32, sync), - @bitCast(u32, new_sync), + sync = @as(Sync, @bitCast(self.sync.tryCompareAndSwap( + @as(u32, @bitCast(sync)), + @as(u32, @bitCast(new_sync)), .AcqRel, .Monotonic, ) orelse { @@ -597,7 +597,7 @@ pub noinline fn shutdown(self: *ThreadPool) void { // TODO: I/O polling notification here. if (sync.idle > 0) self.idle_event.shutdown(); return; - }); + })); } } @@ -628,8 +628,8 @@ pub fn setThreadContext(noalias pool: *ThreadPool, ctx: ?*anyopaque) void { fn unregister(noalias self: *ThreadPool, noalias maybe_thread: ?*Thread) void { // Un-spawn one thread, either due to a failed OS thread spawning or the thread is exiting. - const one_spawned = @bitCast(u32, Sync{ .spawned = 1 }); - const sync = @bitCast(Sync, self.sync.fetchSub(one_spawned, .Release)); + const one_spawned = @as(u32, @bitCast(Sync{ .spawned = 1 })); + const sync = @as(Sync, @bitCast(self.sync.fetchSub(one_spawned, .Release))); assert(sync.spawned > 0); // The last thread to exit must wake up the thread pool join()er @@ -651,10 +651,10 @@ fn unregister(noalias self: *ThreadPool, noalias maybe_thread: ?*Thread) void { fn join(self: *ThreadPool) void { // Wait for the thread pool to be shutdown() then for all threads to enter a joinable state - var sync = @bitCast(Sync, self.sync.load(.Monotonic)); + var sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); if (!(sync.state == .shutdown and sync.spawned == 0)) { self.join_event.wait(); - sync = @bitCast(Sync, self.sync.load(.Monotonic)); + sync = @as(Sync, @bitCast(self.sync.load(.Monotonic))); } assert(sync.state == .shutdown); @@ -753,7 +753,7 @@ pub const Thread = struct { } // Then try work stealing from other threads - var num_threads: u32 = @bitCast(Sync, thread_pool.sync.load(.Monotonic)).spawned; + var num_threads: u32 = @as(Sync, @bitCast(thread_pool.sync.load(.Monotonic))).spawned; while (num_threads > 0) : (num_threads -= 1) { // Traverse the stack of registered threads on the thread pool const target = self.target orelse thread_pool.threads.load(.Acquire) orelse unreachable; @@ -945,7 +945,7 @@ pub const Node = struct { var stack = self.stack.load(.Monotonic); while (true) { // Attach the list to the stack (pt. 1) - list.tail.next = @ptrFromInt(?*Node, stack & PTR_MASK); + list.tail.next = @as(?*Node, @ptrFromInt(stack & PTR_MASK)); // Update the stack with the list (pt. 2). // Don't change the HAS_CACHE and IS_CONSUMING bits of the consumer. @@ -985,7 +985,7 @@ pub const Node = struct { new_stack, .Acquire, .Monotonic, - ) orelse return self.cache orelse @ptrFromInt(*Node, stack & PTR_MASK); + ) orelse return self.cache orelse @as(*Node, @ptrFromInt(stack & PTR_MASK)); } } @@ -1022,7 +1022,7 @@ pub const Node = struct { assert(stack & IS_CONSUMING != 0); assert(stack & PTR_MASK != 0); - const node = @ptrFromInt(*Node, stack & PTR_MASK); + const node = @as(*Node, @ptrFromInt(stack & PTR_MASK)); consumer_ref.* = node.next; return node; } diff --git a/src/toml/toml_lexer.zig b/src/toml/toml_lexer.zig index 7d576af86..701a91d99 100644 --- a/src/toml/toml_lexer.zig +++ b/src/toml/toml_lexer.zig @@ -150,7 +150,7 @@ pub const Lexer = struct { const code_point = switch (slice.len) { 0 => -1, 1 => @as(CodePoint, slice[0]), - else => strings.decodeWTF8RuneTMultibyte(slice.ptr[0..4], @intCast(u3, slice.len), CodePoint, strings.unicode_replacement), + else => strings.decodeWTF8RuneTMultibyte(slice.ptr[0..4], @as(u3, @intCast(slice.len)), CodePoint, strings.unicode_replacement), }; it.end = it.current; @@ -464,9 +464,9 @@ pub const Lexer = struct { // Parse a 32-bit integer (very fast path); var number: u32 = 0; for (text) |c| { - number = number * 10 + @intCast(u32, c - '0'); + number = number * 10 + @as(u32, @intCast(c - '0')); } - lexer.number = @floatFromInt(f64, number); + lexer.number = @as(f64, @floatFromInt(number)); } else { // Parse a double-precision floating-point number; if (std.fmt.parseFloat(f64, text)) |num| { @@ -910,10 +910,10 @@ pub const Lexer = struct { }, } - iter.c = @intCast(i32, value); + iter.c = @as(i32, @intCast(value)); if (is_bad) { lexer.addRangeError( - logger.Range{ .loc = .{ .start = @intCast(i32, octal_start) }, .len = @intCast(i32, iter.i - octal_start) }, + logger.Range{ .loc = .{ .start = @as(i32, @intCast(octal_start)) }, .len = @as(i32, @intCast(iter.i - octal_start)) }, "Invalid legacy octal literal", .{}, false, @@ -1025,7 +1025,7 @@ pub const Lexer = struct { if (is_out_of_range) { try lexer.addRangeError( - .{ .loc = .{ .start = @intCast(i32, start + hex_start) }, .len = @intCast(i32, (iter.i - hex_start)) }, + .{ .loc = .{ .start = @as(i32, @intCast(start + hex_start)) }, .len = @as(i32, @intCast((iter.i - hex_start))) }, "Unicode escape sequence is out of range", .{}, true, @@ -1064,7 +1064,7 @@ pub const Lexer = struct { } } - iter.c = @truncate(CodePoint, value); + iter.c = @as(CodePoint, @truncate(value)); }, '\r' => { if (comptime !allow_multiline) { @@ -1098,7 +1098,7 @@ pub const Lexer = struct { switch (iter.c) { -1 => return try lexer.addDefaultError("Unexpected end of file"), 0...127 => { - buf.append(@intCast(u8, iter.c)) catch unreachable; + buf.append(@as(u8, @intCast(iter.c))) catch unreachable; }, else => { var part: [4]u8 = undefined; @@ -1215,5 +1215,5 @@ pub fn isLatin1Identifier(comptime Buffer: type, name: Buffer) bool { } inline fn float64(num: anytype) f64 { - return @floatFromInt(f64, num); + return @as(f64, @floatFromInt(num)); } diff --git a/src/tracy.zig b/src/tracy.zig index 583a3be25..fb900442b 100644 --- a/src/tracy.zig +++ b/src/tracy.zig @@ -129,7 +129,7 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type { } fn allocFn(ptr: *anyopaque, len: usize, ptr_align: u8, ret_addr: usize) ?[*]u8 { - const self = @ptrCast(*Self, @alignCast(@alignOf(Self), ptr)); + const self = @as(*Self, @ptrCast(@alignCast(ptr))); const result = self.parent_allocator.rawAlloc(len, ptr_align, ret_addr); if (result) |data| { if (len != 0) { @@ -146,7 +146,7 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type { } fn resizeFn(ptr: *anyopaque, buf: []u8, buf_align: u8, new_len: usize, ret_addr: usize) bool { - const self = @ptrCast(*Self, @alignCast(@alignOf(Self), ptr)); + const self = @as(*Self, @ptrCast(@alignCast(ptr))); if (self.parent_allocator.rawResize(buf, buf_align, new_len, ret_addr)) { if (name) |n| { freeNamed(buf.ptr, n); @@ -165,7 +165,7 @@ pub fn TracyAllocator(comptime name: ?[:0]const u8) type { } fn freeFn(ptr: *anyopaque, buf: []u8, buf_align: u8, ret_addr: usize) void { - const self = @ptrCast(*Self, @alignCast(@alignOf(Self), ptr)); + const self = @as(*Self, @ptrCast(@alignCast(ptr))); self.parent_allocator.rawFree(buf, buf_align, ret_addr); // this condition is to handle free being called on an empty slice that was never even allocated // example case: `std.process.getSelfExeSharedLibPaths` can return `&[_][:0]u8{}` diff --git a/src/url.zig b/src/url.zig index af13b139c..550704491 100644 --- a/src/url.zig +++ b/src/url.zig @@ -254,14 +254,14 @@ pub const URL = struct { } if (strings.indexOfChar(base[offset..], '?')) |q| { - offset += @intCast(u31, q); + offset += @as(u31, @intCast(q)); url.path = base[path_offset..][0..q]; can_update_path = false; url.search = base[offset..]; } if (strings.indexOfChar(base[offset..], '#')) |hash| { - offset += @intCast(u31, hash); + offset += @as(u31, @intCast(hash)); hash_offset = offset; if (can_update_path) { url.path = base[path_offset..][0..hash]; @@ -304,7 +304,7 @@ pub const URL = struct { url.pathname = "/"; } - while (url.pathname.len > 1 and @bitCast(u16, url.pathname[0..2].*) == comptime std.mem.readIntNative(u16, "//")) { + while (url.pathname.len > 1 and @as(u16, @bitCast(url.pathname[0..2].*)) == comptime std.mem.readIntNative(u16, "//")) { url.pathname = url.pathname[1..]; } @@ -633,10 +633,10 @@ pub const QueryStringMap = struct { var value = result.value; const name_slice = result.rawName(scanner.pathname.routename); - name.length = @truncate(u32, name_slice.len); + name.length = @as(u32, @truncate(name_slice.len)); name.offset = buf_writer_pos; try writer.writeAll(name_slice); - buf_writer_pos += @truncate(u32, name_slice.len); + buf_writer_pos += @as(u32, @truncate(name_slice.len)); var name_hash: u64 = bun.hash(name_slice); @@ -844,7 +844,7 @@ pub const PercentEncoding = struct { // scan ahead assuming .writeAll is faster than .writeByte one at a time while (i < input.len and input[i] != '%') : (i += 1) {} try writer.writeAll(input[start..i]); - written += @truncate(u32, i - start); + written += @as(u32, @truncate(i - start)); }, } } @@ -933,7 +933,7 @@ pub const FormData = struct { if (begin.len == 0) return null; - var boundary_end = strings.indexOfChar(begin, ';') orelse @truncate(u32, begin.len); + var boundary_end = strings.indexOfChar(begin, ';') orelse @as(u32, @truncate(begin.len)); if (begin[0] == '"' and boundary_end > 0 and begin[boundary_end -| 1] == '"') { boundary_end -|= 1; return begin[1..boundary_end]; @@ -1207,8 +1207,8 @@ fn stringPointerFromStrings(parent: string, in: string) Api.StringPointer { } return Api.StringPointer{ - .offset = @truncate(u32, i), - .length = @truncate(u32, in.len), + .offset = @as(u32, @truncate(i)), + .length = @as(u32, @truncate(in.len)), }; } } @@ -1301,7 +1301,7 @@ pub const Scanner = struct { var slice = this.query_string[this.i..]; relative_i = 0; - var name = Api.StringPointer{ .offset = @truncate(u32, this.i), .length = 0 }; + var name = Api.StringPointer{ .offset = @as(u32, @truncate(this.i)), .length = 0 }; var value = Api.StringPointer{ .offset = 0, .length = 0 }; var name_needs_decoding = false; @@ -1309,10 +1309,10 @@ pub const Scanner = struct { const char = slice[relative_i]; switch (char) { '=' => { - name.length = @truncate(u32, relative_i); + name.length = @as(u32, @truncate(relative_i)); relative_i += 1; - value.offset = @truncate(u32, relative_i + this.i); + value.offset = @as(u32, @truncate(relative_i + this.i)); const offset = relative_i; var value_needs_decoding = false; @@ -1322,7 +1322,7 @@ pub const Scanner = struct { else => false, }; } - value.length = @truncate(u32, relative_i - offset); + value.length = @as(u32, @truncate(relative_i - offset)); // If the name is empty and it's just a value, skip it. // This is kind of an opinion. But, it's hard to see where that might be intentional. if (name.length == 0) return null; @@ -1334,7 +1334,7 @@ pub const Scanner = struct { '&' => { // key& if (relative_i > 0) { - name.length = @truncate(u32, relative_i); + name.length = @as(u32, @truncate(relative_i)); return Result{ .name = name, .value = value, .name_needs_decoding = name_needs_decoding, .value_needs_decoding = false }; } @@ -1355,7 +1355,7 @@ pub const Scanner = struct { return null; } - name.length = @truncate(u32, relative_i); + name.length = @as(u32, @truncate(relative_i)); return Result{ .name = name, .value = value, .name_needs_decoding = name_needs_decoding }; } } diff --git a/src/util.zig b/src/util.zig index 1664cadd9..671e9fc27 100644 --- a/src/util.zig +++ b/src/util.zig @@ -218,7 +218,7 @@ pub fn fromSlice( map.items.len = default.len; slice = map.items; } else if (comptime @hasField(Array, "len")) { - map.len = @intCast(u32, default.len); + map.len = @as(u32, @intCast(default.len)); slice = map.slice(); } else { @compileError("Cannot set length of " ++ @typeName(Array)); @@ -229,8 +229,8 @@ pub fn fromSlice( slice = try allocator.alloc(Of(Array), default.len); map = .{ .ptr = slice.ptr, - .len = @truncate(u32, default.len), - .cap = @truncate(u32, default.len), + .len = @as(u32, @truncate(default.len)), + .cap = @as(u32, @truncate(default.len)), }; } @@ -269,7 +269,7 @@ pub fn Batcher(comptime Type: type) type { } pub inline fn eat(this: *@This(), value: Type) *Type { - return @ptrCast(*Type, &this.head.eat1(value).ptr); + return @as(*Type, @ptrCast(&this.head.eat1(value).ptr)); } pub inline fn eat1(this: *@This(), value: Type) []Type { diff --git a/src/watcher.zig b/src/watcher.zig index e3b3600ad..aded993e8 100644 --- a/src/watcher.zig +++ b/src/watcher.zig @@ -73,7 +73,7 @@ pub const INotify = struct { // it includes alignment / padding // but it is a sentineled value // so we can just trim it to the first null byte - return bun.sliceTo(@ptrFromInt([*:0]u8, @intFromPtr(&this.name_len) + @sizeOf(u32)), 0)[0.. :0]; + return bun.sliceTo(@as([*:0]u8, @ptrFromInt(@intFromPtr(&this.name_len) + @sizeOf(u32))), 0)[0.. :0]; } }; pub var inotify_fd: EventListIndex = 0; @@ -131,13 +131,13 @@ pub const INotify = struct { Futex.wait(&watch_count, 0, null) catch unreachable; const rc = std.os.system.read( inotify_fd, - @ptrCast([*]u8, @alignCast(@alignOf([*]u8), &eventlist)), + @as([*]u8, @ptrCast(@alignCast(&eventlist))), @sizeOf(EventListBuffer), ); switch (std.os.errno(rc)) { .SUCCESS => { - var len = @intCast(usize, rc); + var len = @as(usize, @intCast(rc)); if (len == 0) return &[_]*INotifyEvent{}; @@ -154,12 +154,12 @@ pub const INotify = struct { while (true) { const new_rc = std.os.system.read( inotify_fd, - @ptrCast([*]u8, @alignCast(@alignOf([*]u8), &eventlist)) + len, + @as([*]u8, @ptrCast(@alignCast(&eventlist))) + len, @sizeOf(EventListBuffer) - len, ); switch (std.os.errno(new_rc)) { .SUCCESS => { - len += @intCast(usize, new_rc); + len += @as(usize, @intCast(new_rc)); }, .AGAIN => continue, .INTR => continue, @@ -186,7 +186,7 @@ pub const INotify = struct { var i: u32 = 0; while (i < len) : (i += @sizeOf(INotifyEvent)) { @setRuntimeSafety(false); - var event = @ptrCast(*INotifyEvent, @alignCast(@alignOf(*INotifyEvent), eventlist[i..][0..@sizeOf(INotifyEvent)])); + var event = @as(*INotifyEvent, @ptrCast(@alignCast(eventlist[i..][0..@sizeOf(INotifyEvent)]))); i += event.name_len; eventlist_ptrs[count] = event; @@ -284,7 +284,7 @@ pub const WatchEvent = struct { pub fn ignoreINotifyEvent(event: INotify.INotifyEvent) bool { var stack: WatchEvent = undefined; stack.fromINotify(event, 0); - return @bitCast(std.meta.Int(.unsigned, @bitSizeOf(Op)), stack.op) == 0; + return @as(std.meta.Int(.unsigned, @bitSizeOf(Op)), @bitCast(stack.op)) == 0; } pub fn names(this: WatchEvent, buf: []?[:0]u8) []?[:0]u8 { @@ -319,7 +319,7 @@ pub const WatchEvent = struct { .rename = (kevent.fflags & (std.c.NOTE_RENAME | std.c.NOTE_LINK)) > 0, .write = (kevent.fflags & std.c.NOTE_WRITE) > 0, }, - .index = @truncate(WatchItemIndex, kevent.udata), + .index = @as(WatchItemIndex, @truncate(kevent.udata)), }; } @@ -377,7 +377,7 @@ pub fn NewWatcher(comptime ContextType: type) type { var evict_list: [WATCHER_MAX_LIST]WatchItemIndex = undefined; pub fn getHash(filepath: string) HashType { - return @truncate(HashType, bun.hash(filepath)); + return @as(HashType, @truncate(bun.hash(filepath))); } pub fn init(ctx: ContextType, fs: *Fs.FileSystem, allocator: std.mem.Allocator) !*Watcher { @@ -464,7 +464,7 @@ pub fn NewWatcher(comptime ContextType: type) type { if (comptime kind == .directory) { for (parents) |parent| { if (parent == hash) { - evict_list[evict_list_i] = @truncate(WatchItemIndex, parent); + evict_list[evict_list_i] = @as(WatchItemIndex, @truncate(parent)); evict_list_i += 1; } } @@ -538,9 +538,9 @@ pub fn NewWatcher(comptime ContextType: type) type { var timespec = std.os.timespec{ .tv_sec = 0, .tv_nsec = 100_000 }; const extra = std.os.system.kevent( DarwinWatcher.fd, - @as([*]KEvent, changelist[@intCast(usize, count_)..].ptr), + @as([*]KEvent, changelist[@as(usize, @intCast(count_))..].ptr), 0, - @as([*]KEvent, changelist[@intCast(usize, count_)..].ptr), + @as([*]KEvent, changelist[@as(usize, @intCast(count_))..].ptr), remain, ×pec, @@ -549,7 +549,7 @@ pub fn NewWatcher(comptime ContextType: type) type { count_ += extra; } - var changes = changelist[0..@intCast(usize, @max(0, count_))]; + var changes = changelist[0..@as(usize, @intCast(@max(0, count_)))]; var watchevents = this.watch_events[0..changes.len]; var out_len: usize = 0; if (changes.len > 0) { @@ -603,13 +603,13 @@ pub fn NewWatcher(comptime ContextType: type) type { for (slice) |event| { watchevents[watch_event_id].fromINotify( event.*, - @intCast( + @as( WatchItemIndex, - std.mem.indexOfScalar( + @intCast(std.mem.indexOfScalar( INotify.EventListIndex, eventlist_index, event.watch_descriptor, - ) orelse continue, + ) orelse continue), ), ); temp_name_list[temp_name_off] = if (event.name_len > 0) @@ -661,7 +661,7 @@ pub fn NewWatcher(comptime ContextType: type) type { pub fn indexOf(this: *Watcher, hash: HashType) ?u32 { for (this.watchlist.items(.hash), 0..) |other, i| { if (hash == other) { - return @truncate(u32, i); + return @as(u32, @truncate(i)); } } return null; @@ -725,10 +725,10 @@ pub fn NewWatcher(comptime ContextType: type) type { event.fflags = std.c.NOTE_WRITE | std.c.NOTE_RENAME | std.c.NOTE_DELETE; // id - event.ident = @intCast(usize, fd); + event.ident = @as(usize, @intCast(fd)); // Store the hash for fast filtering later - event.udata = @intCast(usize, watchlist_id); + event.udata = @as(usize, @intCast(watchlist_id)); var events: [1]KEvent = .{event}; // This took a lot of work to figure out the right permutation @@ -777,7 +777,7 @@ pub fn NewWatcher(comptime ContextType: type) type { if (fd_ > 0) break :brk fd_; const dir = try std.fs.cwd().openIterableDir(file_path, .{}); - break :brk @truncate(StoredFileDescriptorType, dir.dir.fd); + break :brk @as(StoredFileDescriptorType, @truncate(dir.dir.fd)); }; const parent_hash = Watcher.getHash(Fs.PathName.init(file_path).dirWithTrailingSlash()); @@ -807,10 +807,10 @@ pub fn NewWatcher(comptime ContextType: type) type { event.fflags = std.c.NOTE_WRITE | std.c.NOTE_RENAME | std.c.NOTE_DELETE; // id - event.ident = @intCast(usize, fd); + event.ident = @as(usize, @intCast(fd)); // Store the hash for fast filtering later - event.udata = @intCast(usize, watchlist_id); + event.udata = @as(usize, @intCast(watchlist_id)); var events: [1]KEvent = .{event}; // This took a lot of work to figure out the right permutation @@ -845,7 +845,7 @@ pub fn NewWatcher(comptime ContextType: type) type { .kind = .directory, .package_json = null, }); - return @truncate(WatchItemIndex, this.watchlist.len - 1); + return @as(WatchItemIndex, @truncate(this.watchlist.len - 1)); } pub inline fn isEligibleDirectory(this: *Watcher, dir: string) bool { @@ -898,18 +898,18 @@ pub fn NewWatcher(comptime ContextType: type) type { if (dir_fd > 0) { var fds = watchlist_slice.items(.fd); if (std.mem.indexOfScalar(StoredFileDescriptorType, fds, dir_fd)) |i| { - parent_watch_item = @truncate(WatchItemIndex, i); + parent_watch_item = @as(WatchItemIndex, @truncate(i)); } } if (parent_watch_item == null) { const hashes = watchlist_slice.items(.hash); if (std.mem.indexOfScalar(HashType, hashes, parent_dir_hash)) |i| { - parent_watch_item = @truncate(WatchItemIndex, i); + parent_watch_item = @as(WatchItemIndex, @truncate(i)); } } } - try this.watchlist.ensureUnusedCapacity(this.allocator, 1 + @intCast(usize, @intFromBool(parent_watch_item == null))); + try this.watchlist.ensureUnusedCapacity(this.allocator, 1 + @as(usize, @intCast(@intFromBool(parent_watch_item == null)))); if (autowatch_parent_dir) { parent_watch_item = parent_watch_item orelse try this.appendDirectoryAssumeCapacity(dir_fd, parent_dir, parent_dir_hash, copy_file_path); diff --git a/src/which.zig b/src/which.zig index 8c29e7e4a..69356e611 100644 --- a/src/which.zig +++ b/src/which.zig @@ -7,7 +7,7 @@ fn isValid(buf: *[bun.MAX_PATH_BYTES]u8, segment: []const u8, bin: []const u8) ? buf[segment.len + 1 + bin.len ..][0] = 0; const filepath = buf[0 .. segment.len + 1 + bin.len :0]; if (!checkPath(filepath)) return null; - return @intCast(u16, filepath.len); + return @as(u16, @intCast(filepath.len)); } extern "C" fn is_executable_file(path: [*:0]const u8) bool; diff --git a/src/work_pool.zig b/src/work_pool.zig index cb59c0143..7e1fda872 100644 --- a/src/work_pool.zig +++ b/src/work_pool.zig @@ -13,7 +13,7 @@ pub fn NewWorkPool(comptime max_threads: ?usize) type { @setCold(true); pool = ThreadPool.init(.{ - .max_threads = max_threads orelse @max(@truncate(u32, std.Thread.getCpuCount() catch 0), 2), + .max_threads = max_threads orelse @max(@as(u32, @truncate(std.Thread.getCpuCount() catch 0)), 2), .stack_size = 2 * 1024 * 1024, }); return &pool; diff --git a/src/wyhash.zig b/src/wyhash.zig index bd5cbf62b..acb100682 100644 --- a/src/wyhash.zig +++ b/src/wyhash.zig @@ -25,7 +25,7 @@ fn read_8bytes_swapped(data: []const u8) u64 { fn mum(a: u64, b: u64) u64 { var r = std.math.mulWide(u64, a, b); r = (r >> 64) ^ r; - return @truncate(u64, r); + return @as(u64, @truncate(r)); } fn mix0(a: u64, b: u64, seed: u64) u64 { @@ -80,7 +80,7 @@ const WyhashStateless = struct { std.debug.assert(b.len < 32); const seed = self.seed; - const rem_len = @intCast(u5, b.len); + const rem_len = @as(u5, @intCast(b.len)); const rem_key = b[0..rem_len]; self.seed = switch (rem_len) { @@ -164,7 +164,7 @@ pub const Wyhash = struct { self.state.update(b[off .. off + aligned_len]); mem.copy(u8, self.buf[self.buf_len..], b[off + aligned_len ..]); - self.buf_len += @intCast(u8, b[off + aligned_len ..].len); + self.buf_len += @as(u8, @intCast(b[off + aligned_len ..].len)); } pub fn final(self: *Wyhash) u64 { diff --git a/src/zlib.zig b/src/zlib.zig index b85ddf431..d79965a2a 100644 --- a/src/zlib.zig +++ b/src/zlib.zig @@ -242,7 +242,7 @@ pub fn NewZlibReader(comptime Writer: type, comptime buffer_size: usize) type { state: State = State.Uninitialized, pub fn alloc(ctx: *anyopaque, items: uInt, len: uInt) callconv(.C) *anyopaque { - var this = @ptrCast(*ZlibReader, @alignCast(@alignOf(*ZlibReader), ctx)); + var this = @as(*ZlibReader, @ptrCast(@alignCast(ctx))); const buf = this.arena.allocator().alloc(u8, items * len) catch unreachable; return buf.ptr; } @@ -277,8 +277,8 @@ pub fn NewZlibReader(comptime Writer: type, comptime buffer_size: usize) type { zlib_reader.zlib = zStream_struct{ .next_in = input.ptr, - .avail_in = @intCast(uInt, input.len), - .total_in = @intCast(uInt, input.len), + .avail_in = @as(uInt, @intCast(input.len)), + .total_in = @as(uInt, @intCast(input.len)), .next_out = &zlib_reader.buf, .avail_out = buffer_size, @@ -426,7 +426,7 @@ pub const ZlibReaderArrayList = struct { state: State = State.Uninitialized, pub fn alloc(ctx: *anyopaque, items: uInt, len: uInt) callconv(.C) *anyopaque { - var this = @ptrCast(*ZlibReader, @alignCast(@alignOf(*ZlibReader), ctx)); + var this = @as(*ZlibReader, @ptrCast(@alignCast(ctx))); const buf = this.allocator.alloc(u8, items * len) catch unreachable; return buf.ptr; } @@ -478,11 +478,11 @@ pub const ZlibReaderArrayList = struct { zlib_reader.zlib = zStream_struct{ .next_in = input.ptr, - .avail_in = @intCast(uInt, input.len), - .total_in = @intCast(uInt, input.len), + .avail_in = @as(uInt, @intCast(input.len)), + .total_in = @as(uInt, @intCast(input.len)), .next_out = zlib_reader.list.items.ptr, - .avail_out = @intCast(u32, zlib_reader.list.items.len), + .avail_out = @as(u32, @intCast(zlib_reader.list.items.len)), .total_out = zlib_reader.list.items.len, .err_msg = null, @@ -562,7 +562,7 @@ pub const ZlibReaderArrayList = struct { try this.list.ensureUnusedCapacity(this.list_allocator, 4096); this.list.expandToCapacity(); this.zlib.next_out = &this.list.items[initial]; - this.zlib.avail_out = @intCast(u32, this.list.items.len - initial); + this.zlib.avail_out = @as(u32, @intCast(this.list.items.len - initial)); } if (this.zlib.avail_in == 0) { @@ -833,7 +833,7 @@ pub const ZlibCompressorArrayList = struct { state: State = State.Uninitialized, pub fn alloc(ctx: *anyopaque, items: uInt, len: uInt) callconv(.C) *anyopaque { - var this = @ptrCast(*ZlibCompressor, @alignCast(@alignOf(*ZlibCompressor), ctx)); + var this = @as(*ZlibCompressor, @ptrCast(@alignCast(ctx))); const buf = this.allocator.alloc(u8, items * len) catch unreachable; return buf.ptr; } @@ -873,11 +873,11 @@ pub const ZlibCompressorArrayList = struct { zlib_reader.zlib = zStream_struct{ .next_in = input.ptr, - .avail_in = @intCast(uInt, input.len), - .total_in = @intCast(uInt, input.len), + .avail_in = @as(uInt, @intCast(input.len)), + .total_in = @as(uInt, @intCast(input.len)), .next_out = zlib_reader.list.items.ptr, - .avail_out = @intCast(u32, zlib_reader.list.items.len), + .avail_out = @as(u32, @intCast(zlib_reader.list.items.len)), .total_out = zlib_reader.list.items.len, .err_msg = null, @@ -905,7 +905,7 @@ pub const ZlibCompressorArrayList = struct { ReturnCode.Ok => { try zlib_reader.list.ensureTotalCapacityPrecise(allocator, deflateBound(&zlib_reader.zlib, input.len)); zlib_reader.list_ptr.* = zlib_reader.list; - zlib_reader.zlib.avail_out = @truncate(uInt, zlib_reader.list.capacity); + zlib_reader.zlib.avail_out = @as(uInt, @truncate(zlib_reader.list.capacity)); zlib_reader.zlib.next_out = zlib_reader.list.items.ptr; return zlib_reader; @@ -973,7 +973,7 @@ pub const ZlibCompressorArrayList = struct { try this.list.ensureUnusedCapacity(this.list_allocator, 4096); this.list.expandToCapacity(); this.zlib.next_out = &this.list.items[initial]; - this.zlib.avail_out = @intCast(u32, this.list.items.len - initial); + this.zlib.avail_out = @as(u32, @intCast(this.list.items.len - initial)); } if (this.zlib.avail_out == 0) { diff --git a/test/bun.lockb b/test/bun.lockb Binary files differindex 01afbfa4e..12f9a5519 100755 --- a/test/bun.lockb +++ b/test/bun.lockb diff --git a/test/bundler/esbuild/packagejson.test.ts b/test/bundler/esbuild/packagejson.test.ts index e6ca66ac6..5d459b968 100644 --- a/test/bundler/esbuild/packagejson.test.ts +++ b/test/bundler/esbuild/packagejson.test.ts @@ -915,6 +915,82 @@ describe("bundler", () => { stdout: "browser main\nbrowser main", }, }); + itBundled("packagejson/DualPackageHazardMainFieldWithoutExtension", { + files: { + "/Users/user/project/src/entry.js": /* js */ ` + const { foo } = require("bar"); + const { foo: foo2 } = await import("bar"); + console.log(foo === foo2); + `, + "/Users/user/project/node_modules/bar/package.json": /* json */ ` + { + "name": "bar", + "version": "2.0.0", + "main": "index" + } + `, + "/Users/user/project/node_modules/bar/index.js": /* js */ ` + module.exports.foo = function() { return "cjs"; }; + `, + "/Users/user/project/node_modules/bar/index.mjs": /* js */ ` + export const foo = function(){ return "esm"; }; + `, + }, + run: { + stdout: "true", + }, + }); + itBundled("packagejson/DualPackageHazardModuleFieldAndMainFieldWithoutExtension", { + files: { + "/Users/user/project/src/entry.js": /* js */ ` + const { foo } = require("bar"); + const { foo: foo2 } = await import("bar"); + console.log(foo === foo2); + `, + "/Users/user/project/node_modules/bar/package.json": /* json */ ` + { + "name": "bar", + "version": "2.0.0", + "main": "index", + "module": "index.mjs" + } + `, + "/Users/user/project/node_modules/bar/index.js": /* js */ ` + module.exports.foo = function() { return "cjs"; }; + `, + "/Users/user/project/node_modules/bar/index.mjs": /* js */ ` + export const foo = function(){ return "esm"; }; + `, + }, + run: { + stdout: "true", + }, + }); + itBundled("packagejson/DualPackageHazardModuleFieldNoMainField", { + files: { + "/Users/user/project/src/entry.js": /* js */ ` + const { foo } = require("bar"); + const { foo: foo2 } = await import("bar"); + console.log(foo === foo2); + `, + "/Users/user/project/node_modules/bar/package.json": /* json */ ` + { + "name": "bar", + "version": "2.0.0", + "module": "index.mjs" + } + `, + "/Users/user/project/node_modules/bar/index.js": /* js */ ` + module.exports.foo = function() { return "cjs"; }; + `, + "/Users/user/project/node_modules/bar/index.mjs": /* js */ ` + export const foo = function(){ return "esm"; }; + `, + }, + run: { + stdout: "true", + }, + }); itBundled("packagejson/MainFieldsA", { files: { "/Users/user/project/src/entry.js": /* js */ ` diff --git a/test/cli/install/bun-install.test.ts b/test/cli/install/bun-install.test.ts index f2483c8d2..f1d8e0d17 100644 --- a/test/cli/install/bun-install.test.ts +++ b/test/cli/install/bun-install.test.ts @@ -4589,3 +4589,175 @@ it("should handle trustedDependencies", async () => { expect(await file(join(package_dir, "node_modules", "moo", "package.json")).text()).toEqual(moo_package); await access(join(package_dir, "bun.lockb")); }); + +it("should handle `workspaces:*` and `workspace:*` gracefully", async () => { + await writeFile( + join(package_dir, "package.json"), + JSON.stringify({ + name: "foo", + workspaces: ["*"], + dependencies: { + bar: "workspace:*", + }, + }), + ); + await mkdir(join(package_dir, "bar")); + const bar_package = JSON.stringify({ + name: "bar", + version: "0.0.1", + }); + await writeFile(join(package_dir, "bar", "package.json"), bar_package); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install"], + cwd: package_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).toContain("Saved lockfile"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ + " + bar@workspace:bar", + "", + " 1 packages installed", + ]); + expect(await exited).toBe(0); + expect(requested).toBe(0); + expect(await readdirSorted(join(package_dir, "node_modules"))).toEqual([".cache", "bar"]); + expect(await readlink(join(package_dir, "node_modules", "bar"))).toBe(join("..", "bar")); + expect(await file(join(package_dir, "node_modules", "bar", "package.json")).text()).toEqual(bar_package); + await access(join(package_dir, "bun.lockb")); +}); + +it("should handle `workspaces:bar` and `workspace:*` gracefully", async () => { + await writeFile( + join(package_dir, "package.json"), + JSON.stringify({ + name: "foo", + workspaces: ["bar"], + dependencies: { + bar: "workspace:*", + }, + }), + ); + await mkdir(join(package_dir, "bar")); + const bar_package = JSON.stringify({ + name: "bar", + version: "0.0.1", + }); + await writeFile(join(package_dir, "bar", "package.json"), bar_package); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install"], + cwd: package_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).toContain("Saved lockfile"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ + " + bar@workspace:bar", + "", + " 1 packages installed", + ]); + expect(await exited).toBe(0); + expect(requested).toBe(0); + expect(await readdirSorted(join(package_dir, "node_modules"))).toEqual([".cache", "bar"]); + expect(await readlink(join(package_dir, "node_modules", "bar"))).toBe(join("..", "bar")); + expect(await file(join(package_dir, "node_modules", "bar", "package.json")).text()).toEqual(bar_package); + await access(join(package_dir, "bun.lockb")); +}); + +it("should handle `workspaces:*` and `workspace:bar` gracefully", async () => { + await writeFile( + join(package_dir, "package.json"), + JSON.stringify({ + name: "foo", + workspaces: ["*"], + dependencies: { + bar: "workspace:bar", + }, + }), + ); + await mkdir(join(package_dir, "bar")); + const bar_package = JSON.stringify({ + name: "bar", + version: "0.0.1", + }); + await writeFile(join(package_dir, "bar", "package.json"), bar_package); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install"], + cwd: package_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).toContain("Saved lockfile"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ + " + bar@workspace:bar", + "", + " 1 packages installed", + ]); + expect(await exited).toBe(0); + expect(requested).toBe(0); + expect(await readdirSorted(join(package_dir, "node_modules"))).toEqual([".cache", "bar"]); + expect(await readlink(join(package_dir, "node_modules", "bar"))).toBe(join("..", "bar")); + expect(await file(join(package_dir, "node_modules", "bar", "package.json")).text()).toEqual(bar_package); + await access(join(package_dir, "bun.lockb")); +}); + +it("should handle `workspaces:bar` and `workspace:bar` gracefully", async () => { + await writeFile( + join(package_dir, "package.json"), + JSON.stringify({ + name: "foo", + workspaces: ["bar"], + dependencies: { + bar: "workspace:bar", + }, + }), + ); + await mkdir(join(package_dir, "bar")); + const bar_package = JSON.stringify({ + name: "bar", + version: "0.0.1", + }); + await writeFile(join(package_dir, "bar", "package.json"), bar_package); + const { stdout, stderr, exited } = spawn({ + cmd: [bunExe(), "install"], + cwd: package_dir, + stdout: null, + stdin: "pipe", + stderr: "pipe", + env, + }); + expect(stderr).toBeDefined(); + const err = await new Response(stderr).text(); + expect(err).toContain("Saved lockfile"); + expect(stdout).toBeDefined(); + const out = await new Response(stdout).text(); + expect(out.replace(/\s*\[[0-9\.]+m?s\]\s*$/, "").split(/\r?\n/)).toEqual([ + " + bar@workspace:bar", + "", + " 1 packages installed", + ]); + expect(await exited).toBe(0); + expect(requested).toBe(0); + expect(await readdirSorted(join(package_dir, "node_modules"))).toEqual([".cache", "bar"]); + expect(await readlink(join(package_dir, "node_modules", "bar"))).toBe(join("..", "bar")); + expect(await file(join(package_dir, "node_modules", "bar", "package.json")).text()).toEqual(bar_package); + await access(join(package_dir, "bun.lockb")); +}); diff --git a/test/js/bun/websocket/websocket-server.test.ts b/test/js/bun/websocket/websocket-server.test.ts index 7a31fa396..191bb6f92 100644 --- a/test/js/bun/websocket/websocket-server.test.ts +++ b/test/js/bun/websocket/websocket-server.test.ts @@ -2,7 +2,6 @@ import { describe, it, expect, afterEach } from "bun:test"; import type { Server, Subprocess, WebSocketHandler } from "bun"; import { serve, spawn } from "bun"; import { bunEnv, bunExe, nodeExe } from "harness"; -import { drainMicrotasks, fullGC } from "bun:jsc"; const strings = [ { diff --git a/test/js/node/process/process.test.js b/test/js/node/process/process.test.js index e32f34936..539a92f2c 100644 --- a/test/js/node/process/process.test.js +++ b/test/js/node/process/process.test.js @@ -317,7 +317,8 @@ describe("process.cpuUsage", () => { it("works with diff", () => { const init = process.cpuUsage(); - for (let i = 0; i < 1000; i++) {} + init.system = 1; + init.user = 1; const delta = process.cpuUsage(init); expect(delta.user).toBeGreaterThan(0); expect(delta.system).toBeGreaterThan(0); @@ -328,7 +329,6 @@ describe("process.cpuUsage", () => { user: 0, system: 0, }; - for (let i = 0; i < 1000; i++) {} const delta = process.cpuUsage(init); expect(delta.user).toBeGreaterThan(0); expect(delta.system).toBeGreaterThan(0); @@ -478,3 +478,13 @@ for (const stub of emptyArrayStubs) { expect(process[stub]).toHaveLength(0); }); } + +it("dlopen args parsing", () => { + expect(() => process.dlopen({ module: "42" }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: 42 }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: { exports: "42" } }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: { exports: 42 } }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: Symbol() }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: { exports: Symbol("123") } }, "/tmp/not-found.so")).toThrow(); + expect(() => process.dlopen({ module: { exports: Symbol("123") } }, Symbol("badddd"))).toThrow(); +}); diff --git a/test/js/node/tls/node-tls-connect.test.ts b/test/js/node/tls/node-tls-connect.test.ts index 791dba88a..716dac3c6 100644 --- a/test/js/node/tls/node-tls-connect.test.ts +++ b/test/js/node/tls/node-tls-connect.test.ts @@ -30,3 +30,94 @@ it("should work with alpnProtocols", done => { done(err); } }); + +it("should have peer certificate", async () => { + const socket = (await new Promise((resolve, reject) => { + const instance = connect( + { + ALPNProtocols: ["http/1.1"], + host: "bun.sh", + servername: "bun.sh", + port: 443, + rejectUnauthorized: false, + requestCert: true, + }, + function () { + resolve(instance); + }, + ).on("error", reject); + })) as TLSSocket; + + try { + expect(socket).toBeDefined(); + const cert = socket.getPeerCertificate(); + expect(cert).toBeDefined(); + expect(cert.subject).toBeDefined(); + expect(cert.subject.CN).toBe("bun.sh"); + expect(cert.issuer).toBeDefined(); + expect(cert.issuer.C).toBe("US"); + expect(cert.issuer.O).toBe("Google Trust Services LLC"); + expect(cert.issuer.CN).toBe("GTS CA 1P5"); + expect(cert.subjectaltname).toBe("DNS:bun.sh, DNS:*.bun.sh"); + expect(cert.infoAccess).toBeDefined(); + + const infoAccess = cert.infoAccess as NodeJS.Dict<string[]>; + expect(infoAccess["OCSP - URI"]).toBeDefined(); + expect(infoAccess["CA Issuers - URI"]).toBeDefined(); + expect(cert.ca).toBeFalse(); + expect(cert.bits).toBe(2048); + expect(cert.modulus).toBe( + "A9F58B9925E08DD3393E4A5DFDBFD249A21C33AF0F38624FAF20D39EB3AC78400789CF3FCBE8C3B18B1F03B3C96B2455D88A60A8D7B2112D35159DB39A592624545CE52E6184D0504D59E6C81DD1025526DEBA547D89A47F16830AC55929C80888F65066D29517905DB1C7E8446580DC439D715C4452D03A97BB0DBC82970C8A3F7E8ABADBBA30FBF6475E2D1783793A4AC60BC57EF5E945C976CE54EECB4A3DA7920AC5C711D5FC8D6A235EFC7FA4024F3930EDDDD1680E6AEA9BD50C89394018761187B4838B07D70BF10E28E4A62F8E2FC4998BC3B9189CD50F61693D79FF761E2D4DEB3998578A6D6015926F60A4172125255FAD01485513DC3C1AE082EF", + ); + expect(cert.exponent).toBe("0x10001"); + expect(cert.pubkey).toBeInstanceOf(Buffer); + expect(cert.valid_from).toBe("Jun 1 01:36:52 2023 GMT"); // yes this space is intentional + expect(cert.valid_to).toBe("Aug 30 01:36:51 2023 GMT"); + expect(cert.fingerprint).toBe("41:66:63:69:DC:31:95:B6:89:7C:54:72:80:19:EA:58:EE:26:FC:FA"); + expect(cert.fingerprint256).toBe( + "51:5D:10:ED:F9:F1:71:9C:03:EB:1D:17:37:2E:B0:CE:CA:8E:E7:E2:D7:D9:F0:9F:25:8D:4C:30:61:FE:86:3A", + ); + expect(cert.fingerprint512).toBe( + "61:C6:22:B6:19:B6:28:EC:5E:B1:B5:C7:A2:45:3B:A6:BA:D6:1D:A6:96:28:07:47:04:3B:04:3A:2D:A1:D7:8E:C4:55:83:B9:11:7F:6C:3B:EB:5A:66:C5:CC:E0:44:E8:4F:F1:6C:16:14:03:5B:71:76:F9:42:0C:04:5F:C0:F1", + ); + expect(cert.serialNumber).toBe("03E071FE809E66081139F0BDD02AC346"); + expect(cert.raw).toBeInstanceOf(Buffer); + } finally { + socket.end(); + } +}); + +it("getCipher, getProtocol, getEphemeralKeyInfo, getSharedSigalgs, getSession, exportKeyingMaterial and isSessionReused should work", async () => { + const socket = (await new Promise((resolve, reject) => { + connect({ + ALPNProtocols: ["http/1.1"], + host: "bun.sh", + servername: "bun.sh", + port: 443, + rejectUnauthorized: false, + requestCert: true, + }) + .on("secure", resolve) + .on("error", reject); + })) as TLSSocket; + + try { + expect(socket.getCipher()).toMatchObject({ + name: "TLS_AES_128_GCM_SHA256", + standardName: "TLS_AES_128_GCM_SHA256", + version: "TLSv1/SSLv3", + }); + expect(socket.getProtocol()).toBe("TLSv1.3"); + expect(typeof socket.getEphemeralKeyInfo()).toBe("object"); + expect(socket.getSharedSigalgs()).toBeInstanceOf(Array); + expect(socket.getSession()).toBeInstanceOf(Buffer); + expect(socket.exportKeyingMaterial(512, "client finished")).toBeInstanceOf(Buffer); + expect(socket.isSessionReused()).toBe(false); + + // BoringSSL does not support these methods for >= TLSv1.3 + expect(socket.getFinished()).toBeUndefined(); + expect(socket.getPeerFinished()).toBeUndefined(); + } finally { + socket.end(); + } +}); diff --git a/test/js/node/tls/node-tls-server.test.ts b/test/js/node/tls/node-tls-server.test.ts index 2a6101b9f..051458488 100644 --- a/test/js/node/tls/node-tls-server.test.ts +++ b/test/js/node/tls/node-tls-server.test.ts @@ -1,4 +1,5 @@ -import { createServer, Server, TLSSocket } from "tls"; +import { connect, createServer, Server, TLSSocket } from "tls"; +import type { PeerCertificate } from "tls"; import { realpathSync, readFileSync } from "fs"; import { tmpdir } from "os"; import { join } from "path"; @@ -287,6 +288,80 @@ describe("tls.createServer listen", () => { }); }); +describe("tls.createServer", () => { + it("should work with getCertificate", done => { + let timeout: Timer; + let client: TLSSocket | null = null; + const server: Server = createServer(COMMON_CERT, socket => { + socket.on("secure", () => { + try { + expect(socket).toBeDefined(); + const cert = socket.getCertificate() as PeerCertificate; + expect(cert).toBeDefined(); + expect(cert.subject).toBeDefined(); + expect(cert.subject).toMatchObject({ + C: "AU", + ST: "Some-State", + O: "Internet Widgits Pty Ltd", + }); + + expect(cert.issuer).toBeDefined(); + expect(cert.issuer).toMatchObject({ + C: "AU", + ST: "Some-State", + O: "Internet Widgits Pty Ltd", + }); + + expect(cert.ca).toBeTrue(); + expect(cert.bits).toBe(2048); + expect(cert.modulus).toBe( + "EE2EC82047480938924D5C7E99AEB11F13AD71B77AC065B79E4C650A427552E57C366639A2F32C1A718384926D510DA3E6283905C2547F7B5ECEA08D5B8B4A9D23A048849F1002AFA67D813EF685AB7CB1D988F3D2BBAF7062A90CC6415E607F000B46C8DFD4157CE4ADC7E9A662C72536816061BA2A7994E3780F9120F2E22C38E8224550EBA9739D40148CFB46C13B99B4F5A6508CF1EEF981FA9A6529F693E5A6CBEF27D471B2607855212455BCFAA44BB8152D254475379A52D28FD55C7FF35F3F1C35A4DE822F0D5588F42147EF77A5371064307E7302B48D2014DE85D9DE87201EBE363845A0BF90AF2BB253B77B812D27D4A7038B303A30A2A8021013", + ); + expect(cert.exponent).toBe("0x10001"); + expect(cert.pubkey).toBeInstanceOf(Buffer); + // yes these spaces are intentional + expect(cert.valid_from).toBe("Feb 3 14:49:35 2019 GMT"); + expect(cert.valid_to).toBe("Feb 3 14:49:35 2020 GMT"); + expect(cert.fingerprint).toBe("48:5F:4B:DB:FD:56:50:32:F0:27:84:3C:3F:B9:6C:DB:13:42:D2:D4"); + expect(cert.fingerprint256).toBe( + "40:F9:8C:B8:9D:3C:0D:93:09:C4:A7:96:B8:A4:69:03:6C:DB:1B:83:C9:0E:76:AE:4A:F4:16:1A:A6:13:50:B2", + ); + expect(cert.fingerprint512).toBe( + "98:56:9F:C0:A7:21:AD:BE:F3:11:AD:78:17:61:7C:36:AE:85:AB:AC:9E:1E:BF:AA:F2:92:0D:8B:36:50:07:CF:7B:C3:16:19:0F:1F:B9:09:C9:45:9D:EC:C9:44:66:72:EE:EA:CF:74:23:13:B5:FB:E1:88:52:51:D2:C6:B6:4D", + ); + expect(cert.serialNumber).toBe("A2DD4153F2F748E3"); + + expect(cert.raw).toBeInstanceOf(Buffer); + client?.end(); + server.close(); + done(); + } catch (err) { + client?.end(); + server.close(); + done(err); + } + }); + }); + + const closeAndFail = (err: any) => { + clearTimeout(timeout); + server.close(); + client?.end(); + done(err || "Timeout"); + }; + server.on("error", closeAndFail); + timeout = setTimeout(closeAndFail, 1000); + + server.listen(0, () => { + const address = server.address() as AddressInfo; + client = connect({ + port: address.port, + host: address.address, + }); + }); + }); +}); + describe("tls.createServer events", () => { it("should receive data", done => { const { mustCall, mustNotCall } = createCallCheckCtx(done); diff --git a/test/js/third_party/prisma/prisma.test.ts b/test/js/third_party/prisma/prisma.test.ts index 2c87a9fcb..a3d270857 100644 --- a/test/js/third_party/prisma/prisma.test.ts +++ b/test/js/third_party/prisma/prisma.test.ts @@ -10,7 +10,7 @@ function* TestIDGenerator() { } const test_id = TestIDGenerator(); -["sqlite" /*"postgres", "mongodb"*/].forEach(async type => { +["sqlite", "postgres" /*"mongodb"*/].forEach(async type => { let Client: typeof PrismaClient; try { |