diff options
154 files changed, 4561 insertions, 6271 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json index 93635220e..40db540a7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,7 +6,7 @@ "search.exclude": {}, "search.followSymlinks": false, "search.useIgnoreFiles": true, - "zig.buildOnSave": false, + "zig.buildOnSave": true, "[zig]": { "editor.defaultFormatter": "tiehuis.zig" }, @@ -52,8 +52,8 @@ ZIG ?= $(shell which zig || echo -e "error: Missing zig. Please make sure zig is # This is easier to happen than you'd expect. # Using realpath here causes issues because clang uses clang++ as a symlink # so if that's resolved, it won't build for C++ -CC = $(shell which clang-12 || which clang) -CXX = $(shell which clang++-12 || which clang++) +CC = $(shell which clang-13 || which clang) +CXX = $(shell which clang++-13 || which clang++) # macOS sed is different SED = $(shell which gsed || which sed) @@ -135,7 +135,7 @@ MACOS_MIN_FLAG= POSIX_PKG_MANAGER=sudo apt -STRIP ?= $(shell which llvm-strip || which llvm-strip-12 || echo "Missing llvm-strip. Please pass it in the STRIP environment var"; exit 1;) +STRIP ?= $(shell which llvm-strip || which llvm-strip-13 || echo "Missing llvm-strip. Please pass it in the STRIP environment var"; exit 1;) HOMEBREW_PREFIX ?= $(BREW_PREFIX_PATH) @@ -443,6 +443,8 @@ jsc-bindings-headers: $(SED) -i '/pub const max_align_t/{N;N;N;d;}' src/javascript/jsc/bindings/headers.zig $(SED) -i '/pub const ZigErrorCode/d' src/javascript/jsc/bindings/headers.zig $(SED) -i '/pub const JSClassRef/d' src/javascript/jsc/bindings/headers.zig + cat src/javascript/jsc/bindings/headers.zig > /tmp/headers.zig + cat src/javascript/jsc/bindings/headers-replacements.zig /tmp/headers.zig > src/javascript/jsc/bindings/headers.zig $(ZIG) fmt src/javascript/jsc/bindings/headers.zig @@ -1020,6 +1020,7 @@ If you want to copy the completions manually, run `bun completions > path-to-fil ## Credits - While written in Zig instead of Go, Bun’s JS transpiler, CSS lexer, and node module resolver source code is based off of @evanw’s esbuild project. @evanw did a fantastic job with esbuild. +- The idea for the name "Bun" came from [@kipply](https://github.com/kipply) ## License @@ -1039,8 +1040,6 @@ You can find the patched version of WebKit used by Bun here: <https://github.com This compiles JavaScriptCore, compiles Bun’s `.cpp` bindings for JavaScriptCore (which are the object files using JavaScriptCore) and outputs a new `bun` binary with your changes. -To successfully run `zig build`, you will need to install a patched version of Zig available here: <https://github.com/jarred-sumner/zig/tree/jarred/zig-sloppy>. - Bun also statically links these libraries: - `libicu` 66.1, which can be found here: <https://github.com/unicode-org/icu/blob/main/icu4c/LICENSE> @@ -1130,38 +1129,25 @@ Install LLVM 12 and homebrew dependencies: brew install llvm@12 coreutils libtool cmake libiconv automake openssl@1.1 ninja gnu-sed pkg-config ``` -Bun (& the version of Zig) need LLVM 12 and Clang 12 (clang is part of LLVM). Weird build & runtime errors will happen otherwise. +Bun (& the version of Zig) need LLVM 13 and Clang 13 (clang is part of LLVM). Weird build & runtime errors will happen otherwise. -Make sure LLVM 12 is in your `$PATH`: +Make sure LLVM 13 is in your `$PATH`: ```bash -which clang-12 +which clang-13 ``` If it is not, you will have to run this to link it: ```bash -export PATH=$(brew --prefix llvm@12)/bin:$PATH -export LDFLAGS="$LDFLAGS -L$(brew --prefix llvm@12)/lib" -export CPPFLAGS="$CPPFLAGS -I$(brew --prefix llvm@12)/include" +export PATH=$(brew --prefix llvm@13)/bin:$PATH +export LDFLAGS="$LDFLAGS -L$(brew --prefix llvm@13)/lib" +export CPPFLAGS="$CPPFLAGS -I$(brew --prefix llvm@13)/include" ``` -On fish that looks like `fish_add_path (brew --prefix llvm@12)/bin` - -#### Compile Zig (macOS) - -```bash -git clone https://github.com/jarred-sumner/zig -cd zig -git checkout jarred/zig-sloppy-with-small-structs -cmake . -DCMAKE_PREFIX_PATH=$(brew --prefix llvm@12) -DZIG_STATIC_LLVM=ON -DCMAKE_BUILD_TYPE=Release && make -j 16 -``` - -Note that `brew install zig` won’t work. Bun uses a build of Zig with a couple patches. - -Additionally, you’ll need `cmake`, `npm` and `esbuild` installed globally. +On fish that looks like `fish_add_path (brew --prefix llvm@13)/bin` -You’ll want to make sure `zig` is in `$PATH`. The `zig` binary wil be in the same folder as the newly-cloned `zig` repo. If you use fish, you can run `fish_add_path (pwd)`. +You’ll want to make sure `zig` is in `$PATH`. #### Build bun (macOS) @@ -40,7 +40,7 @@ const color_map = std.ComptimeStringMap([]const u8, .{ &.{ "yellow", "33m" }, }); -fn addInternalPackages(step: *std.build.LibExeObjStep, allocator: *std.mem.Allocator, target: anytype) !void { +fn addInternalPackages(step: *std.build.LibExeObjStep, _: std.mem.Allocator, target: anytype) !void { var boringssl: std.build.Pkg = .{ .name = "boringssl", .path = pkgPath("src/deps/boringssl.zig"), @@ -87,19 +87,30 @@ fn addInternalPackages(step: *std.build.LibExeObjStep, allocator: *std.mem.Alloc var network_thread: std.build.Pkg = .{ .name = "network_thread", - .path = pkgPath("src/http/network_thread.zig"), + .path = pkgPath("src/network_thread.zig"), }; - - thread_pool.dependencies = &.{ io, http }; + var javascript_core: std.build.Pkg = .{ + .name = "javascript_core", + .path = pkgPath("src/jsc.zig"), + }; + javascript_core.dependencies = &.{ network_thread, http, strings, picohttp }; + thread_pool.dependencies = &.{ io, http, network_thread }; + http.dependencies = &.{ + network_thread, + strings, + picohttp, + io, + boringssl, + thread_pool, + }; + thread_pool.dependencies = &.{ io, http, network_thread }; network_thread.dependencies = &.{ io, thread_pool, }; - http.dependencies = &.{ io, network_thread, strings, boringssl, picohttp }; thread_pool.dependencies = &.{ io, http }; - http.dependencies = &.{ io, network_thread, thread_pool, strings, boringssl, picohttp }; step.addPackage(thread_pool); step.addPackage(picohttp); @@ -109,6 +120,7 @@ fn addInternalPackages(step: *std.build.LibExeObjStep, allocator: *std.mem.Alloc step.addPackage(http); step.addPackage(network_thread); step.addPackage(boringssl); + step.addPackage(javascript_core); } var output_dir: []const u8 = ""; fn panicIfNotFound(comptime filepath: []const u8) []const u8 { @@ -154,7 +166,6 @@ pub fn build(b: *std.build.Builder) !void { // between Debug, ReleaseSafe, ReleaseFast, and ReleaseSmall. mode = b.standardReleaseOptions(); - var cwd_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; const cwd: []const u8 = b.pathFromRoot("."); var exe: *std.build.LibExeObjStep = undefined; var output_dir_buf = std.mem.zeroes([4096]u8); @@ -168,9 +179,9 @@ pub fn build(b: *std.build.Builder) !void { if (std.mem.eql(u8, os_tagname, "macos")) { os_tagname = "darwin"; if (arch.isAARCH64()) { - target.os_version_min = std.build.Target.OsVersion{ .semver = .{ .major = 11, .minor = 0, .patch = 0 } }; + target.os_version_min = std.zig.CrossTarget.OsVersion{ .semver = .{ .major = 11, .minor = 0, .patch = 0 } }; } else if (arch.isX86()) { - target.os_version_min = std.build.Target.OsVersion{ .semver = .{ .major = 10, .minor = 14, .patch = 0 } }; + target.os_version_min = std.zig.CrossTarget.OsVersion{ .semver = .{ .major = 10, .minor = 14, .patch = 0 } }; } } @@ -195,67 +206,12 @@ pub fn build(b: *std.build.Builder) !void { const output_dir_base = try std.fmt.bufPrint(&output_dir_buf, "{s}{s}", .{ bin_label, triplet }); output_dir = b.pathFromRoot(output_dir_base); const bun_executable_name = if (mode == std.builtin.Mode.Debug) "bun-debug" else "bun"; - - if (target.getOsTag() == .wasi) { - exe.enable_wasmtime = true; - exe = b.addExecutable(bun_executable_name, "src/main_wasi.zig"); - exe.linkage = .dynamic; - exe.setOutputDir(output_dir); - } else if (target.getCpuArch().isWasm()) { - // exe = b.addExecutable( - // "bun", - // "src/main_wasm.zig", - // ); - // exe.is_linking_libc = false; - // exe.is_dynamic = true; - var lib = b.addExecutable(bun_executable_name, "src/main_wasm.zig"); - lib.single_threaded = true; - // exe.want_lto = true; - // exe.linkLibrary(lib); - - if (mode == std.builtin.Mode.Debug) { - // exception_handling - var features = target.getCpuFeatures(); - features.addFeature(2); - target.updateCpuFeatures(&features); - } else { - // lib.strip = true; - } - - lib.setOutputDir(output_dir); - lib.want_lto = true; - b.install_path = lib.getOutputSource().getPath(b); - - std.debug.print("Build: ./{s}\n", .{b.install_path}); - b.default_step.dependOn(&lib.step); - b.verbose_link = true; - lib.setTarget(target); - lib.setBuildMode(mode); - - std.fs.deleteTreeAbsolute(std.fs.path.join(b.allocator, &.{ cwd, lib.getOutputSource().getPath(b) }) catch unreachable) catch {}; - var install = b.getInstallStep(); - lib.strip = false; - lib.install(); - - const run_cmd = lib.run(); - run_cmd.step.dependOn(b.getInstallStep()); - if (b.args) |args| { - run_cmd.addArgs(args); - } - - const run_step = b.step("run", "Run the app"); - run_step.dependOn(&run_cmd.step); - - return; - } else { - exe = b.addExecutable(bun_executable_name, "src/main.zig"); - } + exe = b.addExecutable(bun_executable_name, "src/main.zig"); // exe.setLibCFile("libc.txt"); exe.linkLibC(); // exe.linkLibCpp(); exe.setOutputDir(output_dir); - var cwd_dir = std.fs.cwd(); updateRuntime() catch {}; exe.setTarget(target); @@ -266,17 +222,15 @@ pub fn build(b: *std.build.Builder) !void { typings_exe.setMainPkgPath(b.pathFromRoot(".")); // exe.want_lto = true; - - { - b.default_step.dependOn(&b.addLog( - "Build {s} v{} - v{}", - .{ - triplet, - target.getOsVersionMin().semver, - target.getOsVersionMax().semver, - }, - ).step); - } + defer b.default_step.dependOn(&b.addLog("Output: {s}/{s}\n", .{ output_dir, bun_executable_name }).step); + defer b.default_step.dependOn(&b.addLog( + "Build {s} v{} - v{}\n", + .{ + triplet, + target.getOsVersionMin().semver, + target.getOsVersionMax().semver, + }, + ).step); var obj_step = b.step("obj", "Build Bun as a .o file"); var obj = b.addObject(bun_executable_name, exe.root_src.?.path); @@ -453,7 +407,7 @@ pub fn linkObjectFiles(b: *std.build.Builder, obj: *std.build.LibExeObjStep, tar }); for (dirs_to_search.slice()) |deps_path| { - var deps_dir = std.fs.cwd().openDir(deps_path, .{ .iterate = true }) catch |err| @panic("Failed to open dependencies directory"); + var deps_dir = std.fs.cwd().openDir(deps_path, .{ .iterate = true }) catch @panic("Failed to open dependencies directory"); var iterator = deps_dir.iterate(); while (iterator.next() catch null) |entr| { Binary files differdiff --git a/integration/snapshots/caught-require.debug.js b/integration/snapshots/caught-require.debug.js new file mode 100644 index 000000000..690ec4db5 --- /dev/null +++ b/integration/snapshots/caught-require.debug.js @@ -0,0 +1,30 @@ +import { +__require as require +} from "http://localhost:8080/__runtime.js"; +try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + +} catch (exception) { +} + +try { + await import("this-package-should-not-exist"); +} catch (exception) { +} +import("this-package-should-not-exist").then(() => { +}, () => { +}); +export async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); +} diff --git a/integration/snapshots/caught-require.hmr.debug.js b/integration/snapshots/caught-require.hmr.debug.js new file mode 100644 index 000000000..25883fac7 --- /dev/null +++ b/integration/snapshots/caught-require.hmr.debug.js @@ -0,0 +1,50 @@ +import { +__require as require +} from "http://localhost:8080/__runtime.js"; +import { +__HMRModule as HMR +} from "http://localhost:8080/__runtime.js"; +import { +__HMRClient as Bun +} from "http://localhost:8080/__runtime.js"; +Bun.activate(true); + +var hmr = new HMR(2398506918, "caught-require.js"), exports = hmr.exports; +await (hmr._load = async function() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + async function test() { + try { + require((() => { throw (new Error(`Cannot require module '"this-package-should-not-exist"'`)); } )()); + } catch (exception) { + } + try { + await import("this-package-should-not-exist"); + } catch (exception) { + } + import("this-package-should-not-exist").then(() => { + }, () => { + }); + return testDone(import.meta.url); + } + hmr.exportAll({ + test: () => test + }); +})(); +var $$hmr_test = hmr.exports.test; +hmr._update = function(exports) { + $$hmr_test = exports.test; +}; + +export { + $$hmr_test as test +}; diff --git a/integration/snapshots/jsx-entities.debug.jsx b/integration/snapshots/jsx-entities.debug.jsx index 5d289b3d0..cfaf14c10 100644 --- a/integration/snapshots/jsx-entities.debug.jsx +++ b/integration/snapshots/jsx-entities.debug.jsx @@ -908,7 +908,7 @@ const elements = { children: "." }, undefined, false, undefined, this))]: 46, [ReactDOM.renderToString(jsx(JSXFrag, { - children: "\x2F" + children: "/" }, undefined, false, undefined, this))]: 47, [ReactDOM.renderToString(jsx(JSXFrag, { children: "0" diff --git a/integration/snapshots/number-literal-bug.debug.js b/integration/snapshots/number-literal-bug.debug.js new file mode 100644 index 000000000..c62e2d9ff --- /dev/null +++ b/integration/snapshots/number-literal-bug.debug.js @@ -0,0 +1,9 @@ +export function test() { + const precision = 10; + try { + parseFloat(0 .toPrecision(precision) + "1"); + } catch (exception) { + throw new Error("Test Failed", exception); + } + testDone(import.meta.url); +} diff --git a/integration/snapshots/optional-chain-with-function.debug.js b/integration/snapshots/optional-chain-with-function.debug.js index bf007b0a8..6f963caa2 100644 --- a/integration/snapshots/optional-chain-with-function.debug.js +++ b/integration/snapshots/optional-chain-with-function.debug.js @@ -3,9 +3,9 @@ export function test() { const multipleSecondaryValues = undefined; const ratings = ["123"]; var bar = multipleSecondaryValues?.map((value) => false); - bar = (bar?.multipleSecondaryValues)?.map((value) => false); - bar = (bar?.bar?.multipleSecondaryValues)?.map((value) => false); - bar = ({}?.bar?.multipleSecondaryValues)?.map((value) => false); + bar = bar?.multipleSecondaryValues?.map((value) => false); + bar = bar?.bar?.multipleSecondaryValues?.map((value) => false); + bar = {}?.bar?.multipleSecondaryValues?.map((value) => false); } catch (e) { throw e; } diff --git a/integration/snapshots/template-literal.debug.js b/integration/snapshots/template-literal.debug.js new file mode 100644 index 000000000..e5c4c09a7 --- /dev/null +++ b/integration/snapshots/template-literal.debug.js @@ -0,0 +1,37 @@ +const css = (templ) => templ.toString(); +const fooNoBracesUTF8 = css` + before + /* */ + after +`; +const fooNoBracesUT16 = css` + before + 🙃 + after +`; +const fooUTF8 = css` + before + ${true} + after + +`; +const fooUTF16 = css` + before + 🙃 ${true} + after + +`; +const templateLiteralWhichDefinesAFunction = ((...args) => args[args.length - 1]().toString())` + before + 🙃 ${() => true} + after + +`; +export function test() { + for (let foo of [fooNoBracesUT16, fooNoBracesUTF8, fooUTF16, fooUTF8]) { + console.assert(foo.includes("before"), `Expected ${foo} to include "before"`); + console.assert(foo.includes("after"), `Expected ${foo} to include "after"`); + } + console.assert(templateLiteralWhichDefinesAFunction.includes("true"), "Expected fooFunction to include 'true'"); + return testDone(import.meta.url); +} diff --git a/integration/snapshots/unicode-identifiers.debug.js b/integration/snapshots/unicode-identifiers.debug.js index c495d69f6..4a192c22a 100644 --- a/integration/snapshots/unicode-identifiers.debug.js +++ b/integration/snapshots/unicode-identifiers.debug.js @@ -1,7 +1,7 @@ -var ε = 1.0e-06, ε2 = ε * ε, Ï€ = Math.PI, Ï„ = 2 * Ï€, τε = Ï„ - ε, halfÏ€ = Ï€ / 2, d3_radians = Ï€ / 180, d3_degrees = 180 / Ï€; +var ε = 0.000001, ε2 = ε * ε, Ï€ = Math.PI, Ï„ = 2 * Ï€, τε = Ï„ - ε, halfÏ€ = Ï€ / 2, d3_radians = Ï€ / 180, d3_degrees = 180 / Ï€; export {d3_radians}; export function test() { - console.assert(ε === 1.0e-06); + console.assert(ε === 0.000001); return testDone(import.meta.url); } diff --git a/integration/snapshots/unicode-identifiers.hmr.debug.js b/integration/snapshots/unicode-identifiers.hmr.debug.js index 729365d1d..894cd0fe5 100644 --- a/integration/snapshots/unicode-identifiers.hmr.debug.js +++ b/integration/snapshots/unicode-identifiers.hmr.debug.js @@ -8,9 +8,9 @@ Bun.activate(true); var hmr = new HMR(1398361736, "unicode-identifiers.js"), exports = hmr.exports; (hmr._load = function() { - var ε = 1.0e-06, ε2 = ε * ε, Ï€ = Math.PI, Ï„ = 2 * Ï€, τε = Ï„ - ε, halfÏ€ = Ï€ / 2, d3_radians = Ï€ / 180, d3_degrees = 180 / Ï€; + var ε = 0.000001, ε2 = ε * ε, Ï€ = Math.PI, Ï„ = 2 * Ï€, τε = Ï„ - ε, halfÏ€ = Ï€ / 2, d3_radians = Ï€ / 180, d3_degrees = 180 / Ï€; function test() { - console.assert(ε === 1.0e-06); + console.assert(ε === 0.000001); return testDone(import.meta.url); } hmr.exportAll({ diff --git a/misctools/features.zig b/misctools/features.zig index 9886c12cb..6e1aa7a3e 100644 --- a/misctools/features.zig +++ b/misctools/features.zig @@ -1,7 +1,16 @@ const std = @import("std"); const path_handler = @import("../src/resolver/resolve_path.zig"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Features = @import("../src/analytics/analytics_thread.zig").Features; // zig run --main-pkg-path ../ ./features.zig diff --git a/misctools/fetch.zig b/misctools/fetch.zig index 776ac3950..7f6a68c45 100644 --- a/misctools/fetch.zig +++ b/misctools/fetch.zig @@ -1,9 +1,18 @@ const std = @import("std"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const clap = @import("../src/deps/zig-clap/clap.zig"); const URL = @import("../src/query_string_map.zig").URL; -const Headers = @import("../src/javascript/jsc/webcore/response.zig").Headers; +const Headers = @import("http").Headers; const Method = @import("../src/http/method.zig").Method; const ColonListType = @import("../src/cli/colon_list_type.zig").ColonListType; const HeadersTuple = ColonListType(string, noop_resolver); @@ -62,7 +71,7 @@ pub const Arguments = struct { body: string = "", turbo: bool = false, - pub fn parse(allocator: *std.mem.Allocator) !Arguments { + pub fn parse(allocator: std.mem.Allocator) !Arguments { var diag = clap.Diagnostic{}; var args = clap.parse(clap.Help, ¶ms, .{ @@ -174,7 +183,7 @@ pub fn main() anyerror!void { var request_body_string = try default_allocator.create(MutableString); request_body_string.* = body_in_str; - try channel.buffer.ensureCapacity(1); + try channel.buffer.ensureTotalCapacity(1); try NetworkThread.init(); diff --git a/misctools/headers-cleaner.zig b/misctools/headers-cleaner.zig index a8261ae4f..e9304d3d7 100644 --- a/misctools/headers-cleaner.zig +++ b/misctools/headers-cleaner.zig @@ -1,58 +1,58 @@ const std = @import("std"); pub fn main() anyerror!void { - const headers_zig_file_src: std.builtin.SourceLocation = @src(); - var paths = [_][]const u8{std.mem.span(headers_zig_file_src.file), "../../src/javascript/jsc/bindings/headers.zig"}; - const headers_zig_file = try std.fs.path.resolve(std.heap.c_allocator, &paths); - std.debug.print("Writing to {s}", .{headers_zig_file}); - var headers_zig: std.fs.File = try std.fs.openFileAbsolute(headers_zig_file, .{ .write = true }); - var contents = try headers_zig.readToEndAlloc(std.heap.page_allocator, headers_zig.getEndPos() catch unreachable); - const last_extern_i = std.mem.lastIndexOf(u8, contents, "pub extern fn") orelse @panic("Expected contents"); - const last_newline = std.mem.indexOf(u8, contents[last_extern_i..], "\n") orelse @panic("Expected newline"); - const to_splice = "usingnamespace @import(\"./headers-replacements.zig\");\n"; - var new_contents = try std.heap.page_allocator.alloc(u8, contents.len + to_splice.len); - std.mem.copy(u8, new_contents, to_splice); - std.mem.copy(u8, new_contents[to_splice.len..], contents); - var i: usize = to_splice.len; - var remainder = new_contents[i..]; - while (remainder.len > 0) { - i = std.mem.indexOf(u8, remainder, "\npub const struct_b") orelse break + "\npub const struct_b".len; - var begin = remainder[i..]; - const end_line = std.mem.indexOf(u8, begin, "extern struct {") orelse break; - const end_struct = std.mem.indexOf(u8, begin, "\n};\n") orelse break + "\n};\n".len; + const headers_zig_file_src: std.builtin.SourceLocation = @src(); + var paths = [_][]const u8{ std.mem.span(headers_zig_file_src.file), "../../src/javascript/jsc/bindings/headers.zig" }; + const headers_zig_file = try std.fs.path.resolve(std.heap.c_allocator, &paths); + std.debug.print("Writing to {s}", .{headers_zig_file}); + var headers_zig: std.fs.File = try std.fs.openFileAbsolute(headers_zig_file, .{ .write = true }); + var contents = try headers_zig.readToEndAlloc(std.heap.page_allocator, headers_zig.getEndPos() catch unreachable); + const last_extern_i = std.mem.lastIndexOf(u8, contents, "pub extern fn") orelse @panic("Expected contents"); + const last_newline = std.mem.indexOf(u8, contents[last_extern_i..], "\n") orelse @panic("Expected newline"); + const to_splice = "// GENERATED CODE - DO NOT MODIFY BY HAND\n\n"; + var new_contents = try std.heap.page_allocator.alloc(u8, contents.len + to_splice.len); + std.mem.copy(u8, new_contents, to_splice); + std.mem.copy(u8, new_contents[to_splice.len..], contents); + var i: usize = to_splice.len; + var remainder = new_contents[i..]; + while (remainder.len > 0) { + i = (std.mem.indexOf(u8, remainder, "\npub const struct_b") orelse break); + var begin = remainder[i..]; + const end_line = (std.mem.indexOf(u8, begin, "extern struct {") orelse break); + const end_struct = (std.mem.indexOf(u8, begin, "\n};\n") orelse break) + "\n};\n".len; - std.mem.set(u8, begin[1 .. end_struct + 3], ' '); - remainder = begin[end_struct..]; - } - i = to_splice.len; - remainder = new_contents[i..]; - while (remainder.len > 0) { - i = std.mem.indexOf(u8, remainder, "\npub const struct_") orelse break + "\npub const struct_".len; - var begin = remainder[i..]; - var end_struct = std.mem.indexOf(u8, begin, "opaque {};") orelse break; - end_struct += std.mem.indexOf(u8, begin[end_struct..], "\n") orelse break; - i = 0; + std.mem.set(u8, begin[1 .. end_struct + 3], ' '); + remainder = begin[end_struct..]; + } + i = to_splice.len; + remainder = new_contents[i..]; + while (remainder.len > 0) { + i = (std.mem.indexOf(u8, remainder, "\npub const struct_") orelse break); + var begin = remainder[i..]; + var end_struct = (std.mem.indexOf(u8, begin, "opaque {};") orelse break); + end_struct += (std.mem.indexOf(u8, begin[end_struct..], "\n") orelse break); + i = 0; - std.mem.set(u8, begin[1..end_struct], ' '); - remainder = begin[end_struct..]; - } + std.mem.set(u8, begin[1..end_struct], ' '); + remainder = begin[end_struct..]; + } - const HARDCODE = [_][]const u8{ - "[*c][*c]JSC__Exception", - "*?*JSC__Exception ", - "[*c]?*c_void", - "[*c]*c_void", - }; - i = 0; - while (i < HARDCODE.len) : (i += 2) { - _ = std.mem.replace(u8, new_contents, HARDCODE[i], HARDCODE[i + 1], new_contents); - } + const HARDCODE = [_][]const u8{ + "[*c][*c]JSC__Exception", + "*?*JSC__Exception ", + "[*c]?*anyopaque", + "[*c]*anyopaque", + }; + i = 0; + while (i < HARDCODE.len) : (i += 2) { + _ = std.mem.replace(u8, new_contents, HARDCODE[i], HARDCODE[i + 1], new_contents); + } - const js_value_start = std.mem.indexOf(u8, new_contents, "pub const JSC__JSValue") orelse unreachable; - const js_value_end = std.mem.indexOf(u8, new_contents[js_value_start..], "\n") orelse unreachable; - std.mem.set(u8, new_contents[js_value_start..][0..js_value_end], ' '); + const js_value_start = std.mem.indexOf(u8, new_contents, "pub const JSC__JSValue") orelse unreachable; + const js_value_end = std.mem.indexOf(u8, new_contents[js_value_start..], "\n") orelse unreachable; + std.mem.set(u8, new_contents[js_value_start..][0..js_value_end], ' '); - try headers_zig.seekTo(0); - try headers_zig.writeAll(new_contents); - try headers_zig.setEndPos(last_newline + last_extern_i + to_splice.len); -}
\ No newline at end of file + try headers_zig.seekTo(0); + try headers_zig.writeAll(new_contents); + try headers_zig.setEndPos(last_newline + last_extern_i + to_splice.len); +} diff --git a/misctools/http_bench.zig b/misctools/http_bench.zig index 1db8e6061..be7527256 100644 --- a/misctools/http_bench.zig +++ b/misctools/http_bench.zig @@ -1,5 +1,14 @@ const std = @import("std"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const clap = @import("../src/deps/zig-clap/clap.zig"); const URL = @import("../src/query_string_map.zig").URL; @@ -70,7 +79,7 @@ pub const Arguments = struct { repeat: usize = 0, concurrency: u16 = 32, - pub fn parse(allocator: *std.mem.Allocator) !Arguments { + pub fn parse(allocator: std.mem.Allocator) !Arguments { var diag = clap.Diagnostic{}; var args = clap.parse(clap.Help, ¶ms, .{ @@ -192,7 +201,7 @@ pub fn main() anyerror!void { var channel = try default_allocator.create(HTTP.HTTPChannel); channel.* = HTTP.HTTPChannel.init(); - try channel.buffer.ensureCapacity(args.count); + try channel.buffer.ensureTotalCapacity(args.count); try NetworkThread.init(); if (args.concurrency > 0) HTTP.AsyncHTTP.max_simultaneous_requests = args.concurrency; @@ -288,16 +297,16 @@ pub fn main() anyerror!void { Output.flush(); } + Output.prettyErrorln("\n<d>------<r>\n\n", .{}); + Output.prettyErrorln("Success: <b><green>{d}<r>\nFailure: <b><red>{d}<r>\n\n", .{ + success_count, + fail_count, + }); + + Output.printElapsed(@floatCast(f64, @intToFloat(f128, timer.read()) / std.time.ns_per_ms)); + Output.prettyErrorln(" {d} requests", .{ + read_count, + }); + Output.flush(); } - Output.prettyErrorln("\n<d>------<r>\n\n", .{}); - Output.prettyErrorln("Success: <b><green>{d}<r>\nFailure: <b><red>{d}<r>\n\n", .{ - success_count, - fail_count, - }); - - Output.printElapsed(@floatCast(f64, @intToFloat(f128, timer.read()) / std.time.ns_per_ms)); - Output.prettyErrorln(" {d} requests", .{ - read_count, - }); - Output.flush(); } diff --git a/misctools/readlink-getfd.zig b/misctools/readlink-getfd.zig index cd97cb2d0..3e7cba5b9 100644 --- a/misctools/readlink-getfd.zig +++ b/misctools/readlink-getfd.zig @@ -1,7 +1,16 @@ const std = @import("std"); const path_handler = @import("../src/resolver/resolve_path.zig"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; // zig build-exe -Drelease-fast --main-pkg-path ../ ./readlink-getfd.zig pub fn main() anyerror!void { diff --git a/misctools/readlink-realpath.zig b/misctools/readlink-realpath.zig index ed7fd14cf..cb7c7de2a 100644 --- a/misctools/readlink-realpath.zig +++ b/misctools/readlink-realpath.zig @@ -1,7 +1,16 @@ const std = @import("std"); const path_handler = @import("../src/resolver/resolve_path.zig"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; // zig build-exe -Drelease-fast --main-pkg-path ../ ./readlink-getfd.zig pub fn main() anyerror!void { diff --git a/misctools/tgz.zig b/misctools/tgz.zig index 64b966554..ef319056e 100644 --- a/misctools/tgz.zig +++ b/misctools/tgz.zig @@ -1,7 +1,16 @@ const std = @import("std"); const path_handler = @import("../src/resolver/resolve_path.zig"); -usingnamespace @import("../src/global.zig"); +const _global = @import("../src/global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Archive = @import("../src/libarchive/libarchive.zig").Archive; const Zlib = @import("../src/zlib.zig"); diff --git a/package.json b/package.json index 7542e8529..eba1bf4b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "peechy": "0.4.20" + "peechy": "0.4.22" }, "scripts": { "build-runtime": "esbuild --target=esnext --bundle src/runtime/index.ts --format=iife --platform=browser --global-name=BUN_RUNTIME > src/runtime.out.js; cat src/runtime.footer.js >> src/runtime.out.js", diff --git a/src/allocators.zig b/src/allocators.zig index 254827ad0..ae961fc92 100644 --- a/src/allocators.zig +++ b/src/allocators.zig @@ -3,63 +3,7 @@ const std = @import("std"); const FeatureFlags = @import("./feature_flags.zig"); const Wyhash = std.hash.Wyhash; const FixedBufferAllocator = std.heap.FixedBufferAllocator; - -// https://en.wikipedia.org/wiki/.bss#BSS_in_C -pub fn BSSSectionAllocator(comptime size: usize) type { - return struct { - var backing_buf: [size]u8 = undefined; - var fixed_buffer_allocator = FixedBufferAllocator.init(&backing_buf); - var buf_allocator = &fixed_buffer_allocator.allocator; - const Allocator = std.mem.Allocator; - const Self = @This(); - - allocator: Allocator, - fallback_allocator: *Allocator, - - is_overflowed: bool = false, - - pub fn get(self: *Self) *Allocator { - return &self.allocator; - } - - pub fn init(fallback_allocator: *Allocator) Self { - return Self{ .fallback_allocator = fallback_allocator, .allocator = Allocator{ - .allocFn = BSSSectionAllocator(size).alloc, - .resizeFn = BSSSectionAllocator(size).resize, - } }; - } - - pub fn alloc( - allocator: *Allocator, - len: usize, - ptr_align: u29, - len_align: u29, - return_address: usize, - ) error{OutOfMemory}![]u8 { - const self = @fieldParentPtr(Self, "allocator", allocator); - return buf_allocator.allocFn(buf_allocator, len, ptr_align, len_align, return_address) catch |err| { - self.is_overflowed = true; - return self.fallback_allocator.allocFn(self.fallback_allocator, len, ptr_align, len_align, return_address); - }; - } - - pub fn resize( - allocator: *Allocator, - buf: []u8, - buf_align: u29, - new_len: usize, - len_align: u29, - return_address: usize, - ) error{OutOfMemory}!usize { - const self = @fieldParentPtr(Self, "allocator", allocator); - if (fixed_buffer_allocator.ownsPtr(buf.ptr)) { - return fixed_buffer_allocator.allocator.resizeFn(&fixed_buffer_allocator.allocator, buf, buf_align, new_len, len_align, return_address); - } else { - return self.fallback_allocator.resizeFn(self.fallback_allocator, buf, buf_align, new_len, len_align, return_address); - } - } - }; -} +const constStrToU8 = @import("./global.zig").constStrToU8; pub fn isSliceInBuffer(slice: anytype, buffer: anytype) bool { return (@ptrToInt(&buffer) <= @ptrToInt(slice.ptr) and (@ptrToInt(slice.ptr) + slice.len) <= (@ptrToInt(buffer) + buffer.len)); @@ -83,11 +27,11 @@ pub const IndexType = packed struct { const HashKeyType = u64; const IndexMapContext = struct { - pub fn hash(ctx: @This(), key: HashKeyType) HashKeyType { + pub fn hash(_: @This(), key: HashKeyType) HashKeyType { return key; } - pub fn eql(ctx: @This(), a: HashKeyType, b: HashKeyType) bool { + pub fn eql(_: @This(), a: HashKeyType, b: HashKeyType) bool { return a == b; } }; @@ -107,10 +51,6 @@ pub const Result = struct { pub fn isOverflowing(r: *const Result, comptime count: usize) bool { return r.index >= count; } - - pub fn realIndex(r: *const Result, comptime count: anytype) IndexType { - return if (r.isOverflowing(count)) @intCast(IndexType, r.index - max_index) else r.index; - } }; const Seed = 999; @@ -127,12 +67,11 @@ pub const ItemStatus = enum(u3) { not_found, }; -const hasDeinit = std.meta.trait.hasFn("deinit")(ValueType); +// const hasDeinit = std.meta.trait.hasFn("deinit")(ValueType); pub fn BSSList(comptime ValueType: type, comptime _count: anytype) type { const count = _count * 2; const max_index = count - 1; - const overflow_init_count = std.math.max(count / 8, 32); return struct { pub var backing_buf: [count]ValueType = undefined; const ChunkSize = 256; @@ -153,7 +92,7 @@ pub fn BSSList(comptime ValueType: type, comptime _count: anytype) type { const Allocator = std.mem.Allocator; const Self = @This(); - allocator: *Allocator, + allocator: Allocator, mutex: Mutex = Mutex.init(), head: *OverflowBlock = undefined, tail: OverflowBlock = OverflowBlock{}, @@ -165,7 +104,7 @@ pub fn BSSList(comptime ValueType: type, comptime _count: anytype) type { return index / ChunkSize; } - pub fn init(allocator: *std.mem.Allocator) *Self { + pub fn init(allocator: std.mem.Allocator) *Self { if (!loaded) { instance = Self{ .allocator = allocator, @@ -182,7 +121,7 @@ pub fn BSSList(comptime ValueType: type, comptime _count: anytype) type { return used >= @as(u16, count); } - pub fn exists(self: *Self, value: ValueType) bool { + pub fn exists(_: *Self, value: ValueType) bool { return isSliceInBuffer(value, backing_buf); } @@ -240,7 +179,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type const Self = @This(); overflow_list: std.ArrayListUnmanaged(ValueType), - allocator: *Allocator, + allocator: Allocator, pub var instance: Self = undefined; var loaded: bool = false; @@ -251,7 +190,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type len: usize = 0, }; - pub fn init(allocator: *std.mem.Allocator) *Self { + pub fn init(allocator: std.mem.Allocator) *Self { if (!loaded) { instance = Self{ .allocator = allocator, @@ -268,7 +207,7 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type return slice_buf_used >= @as(u16, count); } - pub fn exists(self: *const Self, value: ValueType) bool { + pub fn exists(_: *const Self, value: ValueType) bool { return isSliceInBuffer(value, &backing_buf); } @@ -398,7 +337,6 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type if (result.is_overflow) { if (self.overflow_list.items.len == result.index) { - const real_index = self.overflow_list.items.len; try self.overflow_list.append(self.allocator, value); } else { self.overflow_list.items[result.index] = value; @@ -411,33 +349,6 @@ pub fn BSSStringList(comptime _count: usize, comptime _item_length: usize) type return slice_buf[result.index]; } } - - pub fn remove(self: *Self, index: IndexType) void { - // @compileError("Not implemented yet."); - // switch (index) { - // Unassigned.index => { - // self.index.remove(_key); - // }, - // NotFound.index => { - // self.index.remove(_key); - // }, - // 0...max_index => { - // if (hasDeinit(ValueType)) { - // slice_buf[index].deinit(); - // } - // slice_buf[index] = undefined; - // }, - // else => { - // const i = index - count; - // if (hasDeinit(ValueType)) { - // self.overflow_list.items[i].deinit(); - // } - // self.overflow_list.items[index - count] = undefined; - // }, - // } - - // return index; - } }; } @@ -452,14 +363,14 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, store_keys: boo index: IndexMap, overflow_list: std.ArrayListUnmanaged(ValueType), - allocator: *Allocator, + allocator: Allocator, mutex: Mutex = Mutex.init(), pub var instance: Self = undefined; var loaded: bool = false; - pub fn init(allocator: *std.mem.Allocator) *Self { + pub fn init(allocator: std.mem.Allocator) *Self { if (!loaded) { instance = Self{ .index = IndexMap{}, @@ -551,7 +462,6 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, store_keys: boo if (result.index.is_overflow) { if (self.overflow_list.items.len == result.index.index) { - const real_index = self.overflow_list.items.len; try self.overflow_list.append(self.allocator, value); } else { self.overflow_list.items[result.index.index] = value; @@ -609,7 +519,7 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, store_keys: boo var key_list_slices: [count][]u8 = undefined; var key_list_overflow: std.ArrayListUnmanaged([]u8) = undefined; var instance_loaded = false; - pub fn init(allocator: *std.mem.Allocator) *Self { + pub fn init(allocator: std.mem.Allocator) *Self { if (!instance_loaded) { instance = Self{ .map = BSSMapType.init(allocator), @@ -634,7 +544,7 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, store_keys: boo return @call(.{ .modifier = .always_inline }, BSSMapType.atIndex, .{ self.map, index }); } - pub fn keyAtIndex(self: *Self, index: IndexType) ?[]const u8 { + pub fn keyAtIndex(_: *Self, index: IndexType) ?[]const u8 { return switch (index.index) { Unassigned.index, NotFound.index => null, else => { @@ -709,7 +619,3 @@ pub fn BSSMap(comptime ValueType: type, comptime count: anytype, store_keys: boo } }; } - -pub inline fn constStrToU8(s: []const u8) []u8 { - return @intToPtr([*]u8, @ptrToInt(s.ptr))[0..s.len]; -} diff --git a/src/allocators/mimalloc.zig b/src/allocators/mimalloc.zig index f3e994c78..a6123a696 100644 --- a/src/allocators/mimalloc.zig +++ b/src/allocators/mimalloc.zig @@ -1,48 +1,58 @@ -pub usingnamespace @import("std").zig.c_builtins; +const C = @import("std").zig.c_builtins; +const __attribute__ = C.__attribute__; +const _Nonnull = C._Nonnull; +const _Null_unspecified = C._Null_unspecified; +const _Nullable = C._Nullable; +const enum_mi_option_e = C.enum_mi_option_e; +const L = C.L; +const LL = C.LL; +const U = C.U; +const UL = C.UL; +const ULL = C.ULL; pub const ptrdiff_t = c_long; pub const wchar_t = c_int; pub const max_align_t = c_longdouble; -pub extern fn mi_malloc(size: usize) ?*c_void; -pub extern fn mi_calloc(count: usize, size: usize) ?*c_void; -pub extern fn mi_realloc(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_expand(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_free(p: ?*c_void) void; +pub extern fn mi_malloc(size: usize) ?*anyopaque; +pub extern fn mi_calloc(count: usize, size: usize) ?*anyopaque; +pub extern fn mi_realloc(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_expand(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_free(p: ?*anyopaque) void; pub extern fn mi_strdup(s: [*c]const u8) [*c]u8; pub extern fn mi_strndup(s: [*c]const u8, n: usize) [*c]u8; pub extern fn mi_realpath(fname: [*c]const u8, resolved_name: [*c]u8) [*c]u8; -pub extern fn mi_malloc_small(size: usize) ?*c_void; -pub extern fn mi_zalloc_small(size: usize) ?*c_void; -pub extern fn mi_zalloc(size: usize) ?*c_void; -pub extern fn mi_mallocn(count: usize, size: usize) ?*c_void; -pub extern fn mi_reallocn(p: ?*c_void, count: usize, size: usize) ?*c_void; -pub extern fn mi_reallocf(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_usable_size(p: ?*const c_void) usize; +pub extern fn mi_malloc_small(size: usize) ?*anyopaque; +pub extern fn mi_zalloc_small(size: usize) ?*anyopaque; +pub extern fn mi_zalloc(size: usize) ?*anyopaque; +pub extern fn mi_mallocn(count: usize, size: usize) ?*anyopaque; +pub extern fn mi_reallocn(p: ?*anyopaque, count: usize, size: usize) ?*anyopaque; +pub extern fn mi_reallocf(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_usable_size(p: ?*const anyopaque) usize; pub extern fn mi_good_size(size: usize) usize; -pub const mi_deferred_free_fun = fn (bool, c_ulonglong, ?*c_void) callconv(.C) void; -pub extern fn mi_register_deferred_free(deferred_free: ?mi_deferred_free_fun, arg: ?*c_void) void; -pub const mi_output_fun = fn ([*c]const u8, ?*c_void) callconv(.C) void; -pub extern fn mi_register_output(out: ?mi_output_fun, arg: ?*c_void) void; -pub const mi_error_fun = fn (c_int, ?*c_void) callconv(.C) void; -pub extern fn mi_register_error(fun: ?mi_error_fun, arg: ?*c_void) void; +pub const mi_deferred_free_fun = fn (bool, c_ulonglong, ?*anyopaque) callconv(.C) void; +pub extern fn mi_register_deferred_free(deferred_free: ?mi_deferred_free_fun, arg: ?*anyopaque) void; +pub const mi_output_fun = fn ([*c]const u8, ?*anyopaque) callconv(.C) void; +pub extern fn mi_register_output(out: ?mi_output_fun, arg: ?*anyopaque) void; +pub const mi_error_fun = fn (c_int, ?*anyopaque) callconv(.C) void; +pub extern fn mi_register_error(fun: ?mi_error_fun, arg: ?*anyopaque) void; pub extern fn mi_collect(force: bool) void; pub extern fn mi_version() c_int; pub extern fn mi_stats_reset() void; pub extern fn mi_stats_merge() void; -pub extern fn mi_stats_print(out: ?*c_void) void; -pub extern fn mi_stats_print_out(out: ?mi_output_fun, arg: ?*c_void) void; +pub extern fn mi_stats_print(out: ?*anyopaque) void; +pub extern fn mi_stats_print_out(out: ?mi_output_fun, arg: ?*anyopaque) void; pub extern fn mi_process_init() void; pub extern fn mi_thread_init() void; pub extern fn mi_thread_done() void; -pub extern fn mi_thread_stats_print_out(out: ?mi_output_fun, arg: ?*c_void) void; +pub extern fn mi_thread_stats_print_out(out: ?mi_output_fun, arg: ?*anyopaque) void; pub extern fn mi_process_info(elapsed_msecs: [*c]usize, user_msecs: [*c]usize, system_msecs: [*c]usize, current_rss: [*c]usize, peak_rss: [*c]usize, current_commit: [*c]usize, peak_commit: [*c]usize, page_faults: [*c]usize) void; -pub extern fn mi_malloc_aligned(size: usize, alignment: usize) ?*c_void; -pub extern fn mi_malloc_aligned_at(size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_zalloc_aligned(size: usize, alignment: usize) ?*c_void; -pub extern fn mi_zalloc_aligned_at(size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_calloc_aligned(count: usize, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_calloc_aligned_at(count: usize, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_realloc_aligned(p: ?*c_void, newsize: usize, alignment: usize) ?*c_void; -pub extern fn mi_realloc_aligned_at(p: ?*c_void, newsize: usize, alignment: usize, offset: usize) ?*c_void; +pub extern fn mi_malloc_aligned(size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_malloc_aligned_at(size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_zalloc_aligned(size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_zalloc_aligned_at(size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_calloc_aligned(count: usize, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_calloc_aligned_at(count: usize, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_realloc_aligned(p: ?*anyopaque, newsize: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_realloc_aligned_at(p: ?*anyopaque, newsize: usize, alignment: usize, offset: usize) ?*anyopaque; pub const struct_mi_heap_s = opaque {}; pub const mi_heap_t = struct_mi_heap_s; pub extern fn mi_heap_new() ?*mi_heap_t; @@ -52,56 +62,56 @@ pub extern fn mi_heap_set_default(heap: ?*mi_heap_t) ?*mi_heap_t; pub extern fn mi_heap_get_default() ?*mi_heap_t; pub extern fn mi_heap_get_backing() ?*mi_heap_t; pub extern fn mi_heap_collect(heap: ?*mi_heap_t, force: bool) void; -pub extern fn mi_heap_malloc(heap: ?*mi_heap_t, size: usize) ?*c_void; -pub extern fn mi_heap_zalloc(heap: ?*mi_heap_t, size: usize) ?*c_void; -pub extern fn mi_heap_calloc(heap: ?*mi_heap_t, count: usize, size: usize) ?*c_void; -pub extern fn mi_heap_mallocn(heap: ?*mi_heap_t, count: usize, size: usize) ?*c_void; -pub extern fn mi_heap_malloc_small(heap: ?*mi_heap_t, size: usize) ?*c_void; -pub extern fn mi_heap_realloc(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_heap_reallocn(heap: ?*mi_heap_t, p: ?*c_void, count: usize, size: usize) ?*c_void; -pub extern fn mi_heap_reallocf(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize) ?*c_void; +pub extern fn mi_heap_malloc(heap: ?*mi_heap_t, size: usize) ?*anyopaque; +pub extern fn mi_heap_zalloc(heap: ?*mi_heap_t, size: usize) ?*anyopaque; +pub extern fn mi_heap_calloc(heap: ?*mi_heap_t, count: usize, size: usize) ?*anyopaque; +pub extern fn mi_heap_mallocn(heap: ?*mi_heap_t, count: usize, size: usize) ?*anyopaque; +pub extern fn mi_heap_malloc_small(heap: ?*mi_heap_t, size: usize) ?*anyopaque; +pub extern fn mi_heap_realloc(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_heap_reallocn(heap: ?*mi_heap_t, p: ?*anyopaque, count: usize, size: usize) ?*anyopaque; +pub extern fn mi_heap_reallocf(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize) ?*anyopaque; pub extern fn mi_heap_strdup(heap: ?*mi_heap_t, s: [*c]const u8) [*c]u8; pub extern fn mi_heap_strndup(heap: ?*mi_heap_t, s: [*c]const u8, n: usize) [*c]u8; pub extern fn mi_heap_realpath(heap: ?*mi_heap_t, fname: [*c]const u8, resolved_name: [*c]u8) [*c]u8; -pub extern fn mi_heap_malloc_aligned(heap: ?*mi_heap_t, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_malloc_aligned_at(heap: ?*mi_heap_t, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_zalloc_aligned(heap: ?*mi_heap_t, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_zalloc_aligned_at(heap: ?*mi_heap_t, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_calloc_aligned(heap: ?*mi_heap_t, count: usize, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_calloc_aligned_at(heap: ?*mi_heap_t, count: usize, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_realloc_aligned(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_realloc_aligned_at(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_rezalloc(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_recalloc(p: ?*c_void, newcount: usize, size: usize) ?*c_void; -pub extern fn mi_rezalloc_aligned(p: ?*c_void, newsize: usize, alignment: usize) ?*c_void; -pub extern fn mi_rezalloc_aligned_at(p: ?*c_void, newsize: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_recalloc_aligned(p: ?*c_void, newcount: usize, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_recalloc_aligned_at(p: ?*c_void, newcount: usize, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_rezalloc(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_heap_recalloc(heap: ?*mi_heap_t, p: ?*c_void, newcount: usize, size: usize) ?*c_void; -pub extern fn mi_heap_rezalloc_aligned(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_rezalloc_aligned_at(heap: ?*mi_heap_t, p: ?*c_void, newsize: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_recalloc_aligned(heap: ?*mi_heap_t, p: ?*c_void, newcount: usize, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_heap_recalloc_aligned_at(heap: ?*mi_heap_t, p: ?*c_void, newcount: usize, size: usize, alignment: usize, offset: usize) ?*c_void; -pub extern fn mi_heap_contains_block(heap: ?*mi_heap_t, p: ?*const c_void) bool; -pub extern fn mi_heap_check_owned(heap: ?*mi_heap_t, p: ?*const c_void) bool; -pub extern fn mi_check_owned(p: ?*const c_void) bool; +pub extern fn mi_heap_malloc_aligned(heap: ?*mi_heap_t, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_malloc_aligned_at(heap: ?*mi_heap_t, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_zalloc_aligned(heap: ?*mi_heap_t, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_zalloc_aligned_at(heap: ?*mi_heap_t, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_calloc_aligned(heap: ?*mi_heap_t, count: usize, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_calloc_aligned_at(heap: ?*mi_heap_t, count: usize, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_realloc_aligned(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_realloc_aligned_at(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_rezalloc(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_recalloc(p: ?*anyopaque, newcount: usize, size: usize) ?*anyopaque; +pub extern fn mi_rezalloc_aligned(p: ?*anyopaque, newsize: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_rezalloc_aligned_at(p: ?*anyopaque, newsize: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_recalloc_aligned(p: ?*anyopaque, newcount: usize, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_recalloc_aligned_at(p: ?*anyopaque, newcount: usize, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_rezalloc(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_heap_recalloc(heap: ?*mi_heap_t, p: ?*anyopaque, newcount: usize, size: usize) ?*anyopaque; +pub extern fn mi_heap_rezalloc_aligned(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_rezalloc_aligned_at(heap: ?*mi_heap_t, p: ?*anyopaque, newsize: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_recalloc_aligned(heap: ?*mi_heap_t, p: ?*anyopaque, newcount: usize, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_heap_recalloc_aligned_at(heap: ?*mi_heap_t, p: ?*anyopaque, newcount: usize, size: usize, alignment: usize, offset: usize) ?*anyopaque; +pub extern fn mi_heap_contains_block(heap: ?*mi_heap_t, p: ?*const anyopaque) bool; +pub extern fn mi_heap_check_owned(heap: ?*mi_heap_t, p: ?*const anyopaque) bool; +pub extern fn mi_check_owned(p: ?*const anyopaque) bool; pub const struct_mi_heap_area_s = extern struct { - blocks: ?*c_void, + blocks: ?*anyopaque, reserved: usize, committed: usize, used: usize, block_size: usize, }; pub const mi_heap_area_t = struct_mi_heap_area_s; -pub const mi_block_visit_fun = fn (?*const mi_heap_t, [*c]const mi_heap_area_t, ?*c_void, usize, ?*c_void) callconv(.C) bool; -pub extern fn mi_heap_visit_blocks(heap: ?*const mi_heap_t, visit_all_blocks: bool, visitor: ?mi_block_visit_fun, arg: ?*c_void) bool; -pub extern fn mi_is_in_heap_region(p: ?*const c_void) bool; +pub const mi_block_visit_fun = fn (?*const mi_heap_t, [*c]const mi_heap_area_t, ?*anyopaque, usize, ?*anyopaque) callconv(.C) bool; +pub extern fn mi_heap_visit_blocks(heap: ?*const mi_heap_t, visit_all_blocks: bool, visitor: ?mi_block_visit_fun, arg: ?*anyopaque) bool; +pub extern fn mi_is_in_heap_region(p: ?*const anyopaque) bool; pub extern fn mi_is_redirected() bool; pub extern fn mi_reserve_huge_os_pages_interleave(pages: usize, numa_nodes: usize, timeout_msecs: usize) c_int; pub extern fn mi_reserve_huge_os_pages_at(pages: usize, numa_node: c_int, timeout_msecs: usize) c_int; pub extern fn mi_reserve_os_memory(size: usize, commit: bool, allow_large: bool) c_int; -pub extern fn mi_manage_os_memory(start: ?*c_void, size: usize, is_committed: bool, is_large: bool, is_zero: bool, numa_node: c_int) bool; +pub extern fn mi_manage_os_memory(start: ?*anyopaque, size: usize, is_committed: bool, is_large: bool, is_zero: bool, numa_node: c_int) bool; pub extern fn mi_reserve_huge_os_pages(pages: usize, max_secs: f64, pages_reserved: [*c]usize) c_int; pub const mi_option_t = enum(c_uint) { show_errors = 0, @@ -133,32 +143,32 @@ pub extern fn mi_option_set_enabled_default(option: mi_option_t, enable: bool) v pub extern fn mi_option_get(option: mi_option_t) c_long; pub extern fn mi_option_set(option: mi_option_t, value: c_long) void; pub extern fn mi_option_set_default(option: mi_option_t, value: c_long) void; -pub extern fn mi_cfree(p: ?*c_void) void; -pub extern fn mi__expand(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_malloc_size(p: ?*const c_void) usize; -pub extern fn mi_malloc_usable_size(p: ?*const c_void) usize; -pub extern fn mi_posix_memalign(p: [*c]?*c_void, alignment: usize, size: usize) c_int; -pub extern fn mi_memalign(alignment: usize, size: usize) ?*c_void; -pub extern fn mi_valloc(size: usize) ?*c_void; -pub extern fn mi_pvalloc(size: usize) ?*c_void; -pub extern fn mi_aligned_alloc(alignment: usize, size: usize) ?*c_void; -pub extern fn mi_reallocarray(p: ?*c_void, count: usize, size: usize) ?*c_void; -pub extern fn mi_aligned_recalloc(p: ?*c_void, newcount: usize, size: usize, alignment: usize) ?*c_void; -pub extern fn mi_aligned_offset_recalloc(p: ?*c_void, newcount: usize, size: usize, alignment: usize, offset: usize) ?*c_void; +pub extern fn mi_cfree(p: ?*anyopaque) void; +pub extern fn mi__expand(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_malloc_size(p: ?*const anyopaque) usize; +pub extern fn mi_malloc_usable_size(p: ?*const anyopaque) usize; +pub extern fn mi_posix_memalign(p: [*c]?*anyopaque, alignment: usize, size: usize) c_int; +pub extern fn mi_memalign(alignment: usize, size: usize) ?*anyopaque; +pub extern fn mi_valloc(size: usize) ?*anyopaque; +pub extern fn mi_pvalloc(size: usize) ?*anyopaque; +pub extern fn mi_aligned_alloc(alignment: usize, size: usize) ?*anyopaque; +pub extern fn mi_reallocarray(p: ?*anyopaque, count: usize, size: usize) ?*anyopaque; +pub extern fn mi_aligned_recalloc(p: ?*anyopaque, newcount: usize, size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_aligned_offset_recalloc(p: ?*anyopaque, newcount: usize, size: usize, alignment: usize, offset: usize) ?*anyopaque; pub extern fn mi_wcsdup(s: [*c]const c_ushort) [*c]c_ushort; pub extern fn mi_mbsdup(s: [*c]const u8) [*c]u8; pub extern fn mi_dupenv_s(buf: [*c][*c]u8, size: [*c]usize, name: [*c]const u8) c_int; pub extern fn mi_wdupenv_s(buf: [*c][*c]c_ushort, size: [*c]usize, name: [*c]const c_ushort) c_int; -pub extern fn mi_free_size(p: ?*c_void, size: usize) void; -pub extern fn mi_free_size_aligned(p: ?*c_void, size: usize, alignment: usize) void; -pub extern fn mi_free_aligned(p: ?*c_void, alignment: usize) void; -pub extern fn mi_new(size: usize) ?*c_void; -pub extern fn mi_new_aligned(size: usize, alignment: usize) ?*c_void; -pub extern fn mi_new_nothrow(size: usize) ?*c_void; -pub extern fn mi_new_aligned_nothrow(size: usize, alignment: usize) ?*c_void; -pub extern fn mi_new_n(count: usize, size: usize) ?*c_void; -pub extern fn mi_new_realloc(p: ?*c_void, newsize: usize) ?*c_void; -pub extern fn mi_new_reallocn(p: ?*c_void, newcount: usize, size: usize) ?*c_void; +pub extern fn mi_free_size(p: ?*anyopaque, size: usize) void; +pub extern fn mi_free_size_aligned(p: ?*anyopaque, size: usize, alignment: usize) void; +pub extern fn mi_free_aligned(p: ?*anyopaque, alignment: usize) void; +pub extern fn mi_new(size: usize) ?*anyopaque; +pub extern fn mi_new_aligned(size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_new_nothrow(size: usize) ?*anyopaque; +pub extern fn mi_new_aligned_nothrow(size: usize, alignment: usize) ?*anyopaque; +pub extern fn mi_new_n(count: usize, size: usize) ?*anyopaque; +pub extern fn mi_new_realloc(p: ?*anyopaque, newsize: usize) ?*anyopaque; +pub extern fn mi_new_reallocn(p: ?*anyopaque, newcount: usize, size: usize) ?*anyopaque; pub const mi_attr_alloc_size = @compileError("unable to translate C expr: unexpected token .Eof"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:66:13 pub const mi_attr_alloc_size2 = @compileError("unable to translate C expr: unexpected token .Eof"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:67:13 pub const mi_attr_alloc_align = @compileError("unable to translate C expr: unexpected token .Eof"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:68:13 @@ -175,385 +185,14 @@ pub const mi_heap_calloc_tp = @compileError("unable to translate C expr: unexpec pub const mi_heap_mallocn_tp = @compileError("unable to translate C expr: unexpected token .RParen"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:289:9 pub const mi_heap_reallocn_tp = @compileError("unable to translate C expr: unexpected token .RParen"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:290:9 pub const mi_heap_recalloc_tp = @compileError("unable to translate C expr: unexpected token .RParen"); // /Users/jarred/Downloads/mimalloc-1.7.2/include/mimalloc.h:291:9 -pub const __llvm__ = @as(c_int, 1); -pub const __clang__ = @as(c_int, 1); -pub const __clang_major__ = @as(c_int, 12); -pub const __clang_minor__ = @as(c_int, 0); -pub const __clang_patchlevel__ = @as(c_int, 1); -pub const __clang_version__ = "12.0.1 "; -pub const __GNUC__ = @as(c_int, 4); -pub const __GNUC_MINOR__ = @as(c_int, 2); -pub const __GNUC_PATCHLEVEL__ = @as(c_int, 1); -pub const __GXX_ABI_VERSION = @as(c_int, 1002); -pub const __ATOMIC_RELAXED = @as(c_int, 0); -pub const __ATOMIC_CONSUME = @as(c_int, 1); -pub const __ATOMIC_ACQUIRE = @as(c_int, 2); -pub const __ATOMIC_RELEASE = @as(c_int, 3); -pub const __ATOMIC_ACQ_REL = @as(c_int, 4); -pub const __ATOMIC_SEQ_CST = @as(c_int, 5); -pub const __OPENCL_MEMORY_SCOPE_WORK_ITEM = @as(c_int, 0); -pub const __OPENCL_MEMORY_SCOPE_WORK_GROUP = @as(c_int, 1); -pub const __OPENCL_MEMORY_SCOPE_DEVICE = @as(c_int, 2); -pub const __OPENCL_MEMORY_SCOPE_ALL_SVM_DEVICES = @as(c_int, 3); -pub const __OPENCL_MEMORY_SCOPE_SUB_GROUP = @as(c_int, 4); -pub const __PRAGMA_REDEFINE_EXTNAME = @as(c_int, 1); -pub const __VERSION__ = "Homebrew Clang 12.0.1"; -pub const __OBJC_BOOL_IS_BOOL = @as(c_int, 0); -pub const __CONSTANT_CFSTRINGS__ = @as(c_int, 1); -pub const __block = __attribute__(__blocks__(byref)); -pub const __BLOCKS__ = @as(c_int, 1); -pub const __OPTIMIZE__ = @as(c_int, 1); -pub const __ORDER_LITTLE_ENDIAN__ = @as(c_int, 1234); -pub const __ORDER_BIG_ENDIAN__ = @as(c_int, 4321); -pub const __ORDER_PDP_ENDIAN__ = @as(c_int, 3412); -pub const __BYTE_ORDER__ = __ORDER_LITTLE_ENDIAN__; -pub const __LITTLE_ENDIAN__ = @as(c_int, 1); -pub const _LP64 = @as(c_int, 1); -pub const __LP64__ = @as(c_int, 1); -pub const __CHAR_BIT__ = @as(c_int, 8); -pub const __SCHAR_MAX__ = @as(c_int, 127); -pub const __SHRT_MAX__ = @as(c_int, 32767); -pub const __INT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __LONG_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal); -pub const __LONG_LONG_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __WCHAR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __WINT_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __INTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal); -pub const __SIZE_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal); -pub const __UINTMAX_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal); -pub const __PTRDIFF_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal); -pub const __INTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_long, 9223372036854775807, .decimal); -pub const __UINTPTR_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_ulong, 18446744073709551615, .decimal); -pub const __SIZEOF_DOUBLE__ = @as(c_int, 8); -pub const __SIZEOF_FLOAT__ = @as(c_int, 4); -pub const __SIZEOF_INT__ = @as(c_int, 4); -pub const __SIZEOF_LONG__ = @as(c_int, 8); -pub const __SIZEOF_LONG_DOUBLE__ = @as(c_int, 16); -pub const __SIZEOF_LONG_LONG__ = @as(c_int, 8); -pub const __SIZEOF_POINTER__ = @as(c_int, 8); -pub const __SIZEOF_SHORT__ = @as(c_int, 2); -pub const __SIZEOF_PTRDIFF_T__ = @as(c_int, 8); -pub const __SIZEOF_SIZE_T__ = @as(c_int, 8); -pub const __SIZEOF_WCHAR_T__ = @as(c_int, 4); -pub const __SIZEOF_WINT_T__ = @as(c_int, 4); -pub const __SIZEOF_INT128__ = @as(c_int, 16); -pub const __INTMAX_TYPE__ = c_long; -pub const __INTMAX_FMTd__ = "ld"; -pub const __INTMAX_FMTi__ = "li"; -pub const __INTMAX_C_SUFFIX__ = L; -pub const __UINTMAX_TYPE__ = c_ulong; -pub const __UINTMAX_FMTo__ = "lo"; -pub const __UINTMAX_FMTu__ = "lu"; -pub const __UINTMAX_FMTx__ = "lx"; -pub const __UINTMAX_FMTX__ = "lX"; -pub const __UINTMAX_C_SUFFIX__ = UL; -pub const __INTMAX_WIDTH__ = @as(c_int, 64); -pub const __PTRDIFF_TYPE__ = c_long; -pub const __PTRDIFF_FMTd__ = "ld"; -pub const __PTRDIFF_FMTi__ = "li"; -pub const __PTRDIFF_WIDTH__ = @as(c_int, 64); -pub const __INTPTR_TYPE__ = c_long; -pub const __INTPTR_FMTd__ = "ld"; -pub const __INTPTR_FMTi__ = "li"; -pub const __INTPTR_WIDTH__ = @as(c_int, 64); -pub const __SIZE_TYPE__ = c_ulong; -pub const __SIZE_FMTo__ = "lo"; -pub const __SIZE_FMTu__ = "lu"; -pub const __SIZE_FMTx__ = "lx"; -pub const __SIZE_FMTX__ = "lX"; -pub const __SIZE_WIDTH__ = @as(c_int, 64); -pub const __WCHAR_TYPE__ = c_int; -pub const __WCHAR_WIDTH__ = @as(c_int, 32); -pub const __WINT_TYPE__ = c_int; -pub const __WINT_WIDTH__ = @as(c_int, 32); -pub const __SIG_ATOMIC_WIDTH__ = @as(c_int, 32); -pub const __SIG_ATOMIC_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __CHAR16_TYPE__ = c_ushort; -pub const __CHAR32_TYPE__ = c_uint; -pub const __UINTMAX_WIDTH__ = @as(c_int, 64); -pub const __UINTPTR_TYPE__ = c_ulong; -pub const __UINTPTR_FMTo__ = "lo"; -pub const __UINTPTR_FMTu__ = "lu"; -pub const __UINTPTR_FMTx__ = "lx"; -pub const __UINTPTR_FMTX__ = "lX"; -pub const __UINTPTR_WIDTH__ = @as(c_int, 64); -pub const __FLT_DENORM_MIN__ = @as(f32, 1.40129846e-45); -pub const __FLT_HAS_DENORM__ = @as(c_int, 1); -pub const __FLT_DIG__ = @as(c_int, 6); -pub const __FLT_DECIMAL_DIG__ = @as(c_int, 9); -pub const __FLT_EPSILON__ = @as(f32, 1.19209290e-7); -pub const __FLT_HAS_INFINITY__ = @as(c_int, 1); -pub const __FLT_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __FLT_MANT_DIG__ = @as(c_int, 24); -pub const __FLT_MAX_10_EXP__ = @as(c_int, 38); -pub const __FLT_MAX_EXP__ = @as(c_int, 128); -pub const __FLT_MAX__ = @as(f32, 3.40282347e+38); -pub const __FLT_MIN_10_EXP__ = -@as(c_int, 37); -pub const __FLT_MIN_EXP__ = -@as(c_int, 125); -pub const __FLT_MIN__ = @as(f32, 1.17549435e-38); -pub const __DBL_DENORM_MIN__ = 4.9406564584124654e-324; -pub const __DBL_HAS_DENORM__ = @as(c_int, 1); -pub const __DBL_DIG__ = @as(c_int, 15); -pub const __DBL_DECIMAL_DIG__ = @as(c_int, 17); -pub const __DBL_EPSILON__ = 2.2204460492503131e-16; -pub const __DBL_HAS_INFINITY__ = @as(c_int, 1); -pub const __DBL_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __DBL_MANT_DIG__ = @as(c_int, 53); -pub const __DBL_MAX_10_EXP__ = @as(c_int, 308); -pub const __DBL_MAX_EXP__ = @as(c_int, 1024); -pub const __DBL_MAX__ = 1.7976931348623157e+308; -pub const __DBL_MIN_10_EXP__ = -@as(c_int, 307); -pub const __DBL_MIN_EXP__ = -@as(c_int, 1021); -pub const __DBL_MIN__ = 2.2250738585072014e-308; -pub const __LDBL_DENORM_MIN__ = @as(c_longdouble, 3.64519953188247460253e-4951); -pub const __LDBL_HAS_DENORM__ = @as(c_int, 1); -pub const __LDBL_DIG__ = @as(c_int, 18); -pub const __LDBL_DECIMAL_DIG__ = @as(c_int, 21); -pub const __LDBL_EPSILON__ = @as(c_longdouble, 1.08420217248550443401e-19); -pub const __LDBL_HAS_INFINITY__ = @as(c_int, 1); -pub const __LDBL_HAS_QUIET_NAN__ = @as(c_int, 1); -pub const __LDBL_MANT_DIG__ = @as(c_int, 64); -pub const __LDBL_MAX_10_EXP__ = @as(c_int, 4932); -pub const __LDBL_MAX_EXP__ = @as(c_int, 16384); -pub const __LDBL_MAX__ = @as(c_longdouble, 1.18973149535723176502e+4932); -pub const __LDBL_MIN_10_EXP__ = -@as(c_int, 4931); -pub const __LDBL_MIN_EXP__ = -@as(c_int, 16381); -pub const __LDBL_MIN__ = @as(c_longdouble, 3.36210314311209350626e-4932); -pub const __POINTER_WIDTH__ = @as(c_int, 64); -pub const __BIGGEST_ALIGNMENT__ = @as(c_int, 16); -pub const __INT8_TYPE__ = i8; -pub const __INT8_FMTd__ = "hhd"; -pub const __INT8_FMTi__ = "hhi"; -pub const __INT16_TYPE__ = c_short; -pub const __INT16_FMTd__ = "hd"; -pub const __INT16_FMTi__ = "hi"; -pub const __INT32_TYPE__ = c_int; -pub const __INT32_FMTd__ = "d"; -pub const __INT32_FMTi__ = "i"; -pub const __INT64_TYPE__ = c_longlong; -pub const __INT64_FMTd__ = "lld"; -pub const __INT64_FMTi__ = "lli"; -pub const __INT64_C_SUFFIX__ = LL; -pub const __UINT8_TYPE__ = u8; -pub const __UINT8_FMTo__ = "hho"; -pub const __UINT8_FMTu__ = "hhu"; -pub const __UINT8_FMTx__ = "hhx"; -pub const __UINT8_FMTX__ = "hhX"; -pub const __UINT8_MAX__ = @as(c_int, 255); -pub const __INT8_MAX__ = @as(c_int, 127); -pub const __UINT16_TYPE__ = c_ushort; -pub const __UINT16_FMTo__ = "ho"; -pub const __UINT16_FMTu__ = "hu"; -pub const __UINT16_FMTx__ = "hx"; -pub const __UINT16_FMTX__ = "hX"; -pub const __UINT16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __INT16_MAX__ = @as(c_int, 32767); -pub const __UINT32_TYPE__ = c_uint; -pub const __UINT32_FMTo__ = "o"; -pub const __UINT32_FMTu__ = "u"; -pub const __UINT32_FMTx__ = "x"; -pub const __UINT32_FMTX__ = "X"; -pub const __UINT32_C_SUFFIX__ = U; -pub const __UINT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __INT32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __UINT64_TYPE__ = c_ulonglong; -pub const __UINT64_FMTo__ = "llo"; -pub const __UINT64_FMTu__ = "llu"; -pub const __UINT64_FMTx__ = "llx"; -pub const __UINT64_FMTX__ = "llX"; -pub const __UINT64_C_SUFFIX__ = ULL; -pub const __UINT64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __INT64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_LEAST8_TYPE__ = i8; -pub const __INT_LEAST8_MAX__ = @as(c_int, 127); -pub const __INT_LEAST8_FMTd__ = "hhd"; -pub const __INT_LEAST8_FMTi__ = "hhi"; -pub const __UINT_LEAST8_TYPE__ = u8; -pub const __UINT_LEAST8_MAX__ = @as(c_int, 255); -pub const __UINT_LEAST8_FMTo__ = "hho"; -pub const __UINT_LEAST8_FMTu__ = "hhu"; -pub const __UINT_LEAST8_FMTx__ = "hhx"; -pub const __UINT_LEAST8_FMTX__ = "hhX"; -pub const __INT_LEAST16_TYPE__ = c_short; -pub const __INT_LEAST16_MAX__ = @as(c_int, 32767); -pub const __INT_LEAST16_FMTd__ = "hd"; -pub const __INT_LEAST16_FMTi__ = "hi"; -pub const __UINT_LEAST16_TYPE__ = c_ushort; -pub const __UINT_LEAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __UINT_LEAST16_FMTo__ = "ho"; -pub const __UINT_LEAST16_FMTu__ = "hu"; -pub const __UINT_LEAST16_FMTx__ = "hx"; -pub const __UINT_LEAST16_FMTX__ = "hX"; -pub const __INT_LEAST32_TYPE__ = c_int; -pub const __INT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __INT_LEAST32_FMTd__ = "d"; -pub const __INT_LEAST32_FMTi__ = "i"; -pub const __UINT_LEAST32_TYPE__ = c_uint; -pub const __UINT_LEAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __UINT_LEAST32_FMTo__ = "o"; -pub const __UINT_LEAST32_FMTu__ = "u"; -pub const __UINT_LEAST32_FMTx__ = "x"; -pub const __UINT_LEAST32_FMTX__ = "X"; -pub const __INT_LEAST64_TYPE__ = c_longlong; -pub const __INT_LEAST64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_LEAST64_FMTd__ = "lld"; -pub const __INT_LEAST64_FMTi__ = "lli"; -pub const __UINT_LEAST64_TYPE__ = c_ulonglong; -pub const __UINT_LEAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINT_LEAST64_FMTo__ = "llo"; -pub const __UINT_LEAST64_FMTu__ = "llu"; -pub const __UINT_LEAST64_FMTx__ = "llx"; -pub const __UINT_LEAST64_FMTX__ = "llX"; -pub const __INT_FAST8_TYPE__ = i8; -pub const __INT_FAST8_MAX__ = @as(c_int, 127); -pub const __INT_FAST8_FMTd__ = "hhd"; -pub const __INT_FAST8_FMTi__ = "hhi"; -pub const __UINT_FAST8_TYPE__ = u8; -pub const __UINT_FAST8_MAX__ = @as(c_int, 255); -pub const __UINT_FAST8_FMTo__ = "hho"; -pub const __UINT_FAST8_FMTu__ = "hhu"; -pub const __UINT_FAST8_FMTx__ = "hhx"; -pub const __UINT_FAST8_FMTX__ = "hhX"; -pub const __INT_FAST16_TYPE__ = c_short; -pub const __INT_FAST16_MAX__ = @as(c_int, 32767); -pub const __INT_FAST16_FMTd__ = "hd"; -pub const __INT_FAST16_FMTi__ = "hi"; -pub const __UINT_FAST16_TYPE__ = c_ushort; -pub const __UINT_FAST16_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 65535, .decimal); -pub const __UINT_FAST16_FMTo__ = "ho"; -pub const __UINT_FAST16_FMTu__ = "hu"; -pub const __UINT_FAST16_FMTx__ = "hx"; -pub const __UINT_FAST16_FMTX__ = "hX"; -pub const __INT_FAST32_TYPE__ = c_int; -pub const __INT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 2147483647, .decimal); -pub const __INT_FAST32_FMTd__ = "d"; -pub const __INT_FAST32_FMTi__ = "i"; -pub const __UINT_FAST32_TYPE__ = c_uint; -pub const __UINT_FAST32_MAX__ = @import("std").zig.c_translation.promoteIntLiteral(c_uint, 4294967295, .decimal); -pub const __UINT_FAST32_FMTo__ = "o"; -pub const __UINT_FAST32_FMTu__ = "u"; -pub const __UINT_FAST32_FMTx__ = "x"; -pub const __UINT_FAST32_FMTX__ = "X"; -pub const __INT_FAST64_TYPE__ = c_longlong; -pub const __INT_FAST64_MAX__ = @as(c_longlong, 9223372036854775807); -pub const __INT_FAST64_FMTd__ = "lld"; -pub const __INT_FAST64_FMTi__ = "lli"; -pub const __UINT_FAST64_TYPE__ = c_ulonglong; -pub const __UINT_FAST64_MAX__ = @as(c_ulonglong, 18446744073709551615); -pub const __UINT_FAST64_FMTo__ = "llo"; -pub const __UINT_FAST64_FMTu__ = "llu"; -pub const __UINT_FAST64_FMTx__ = "llx"; -pub const __UINT_FAST64_FMTX__ = "llX"; -pub const __USER_LABEL_PREFIX__ = @"_"; -pub const __FINITE_MATH_ONLY__ = @as(c_int, 0); -pub const __GNUC_STDC_INLINE__ = @as(c_int, 1); -pub const __GCC_ATOMIC_TEST_AND_SET_TRUEVAL = @as(c_int, 1); -pub const __CLANG_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); -pub const __CLANG_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_BOOL_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR16_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_CHAR32_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_WCHAR_T_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_SHORT_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_INT_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_LONG_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_LLONG_LOCK_FREE = @as(c_int, 2); -pub const __GCC_ATOMIC_POINTER_LOCK_FREE = @as(c_int, 2); -pub const __PIC__ = @as(c_int, 2); -pub const __pic__ = @as(c_int, 2); -pub const __FLT_EVAL_METHOD__ = @as(c_int, 0); -pub const __FLT_RADIX__ = @as(c_int, 2); -pub const __DECIMAL_DIG__ = __LDBL_DECIMAL_DIG__; -pub const __SSP_STRONG__ = @as(c_int, 2); -pub const __nonnull = _Nonnull; -pub const __null_unspecified = _Null_unspecified; -pub const __nullable = _Nullable; -pub const __GCC_ASM_FLAG_OUTPUTS__ = @as(c_int, 1); -pub const __code_model_small__ = @as(c_int, 1); -pub const __amd64__ = @as(c_int, 1); -pub const __amd64 = @as(c_int, 1); -pub const __x86_64 = @as(c_int, 1); -pub const __x86_64__ = @as(c_int, 1); -pub const __SEG_GS = @as(c_int, 1); -pub const __SEG_FS = @as(c_int, 1); -pub const __seg_gs = __attribute__(address_space(@as(c_int, 256))); -pub const __seg_fs = __attribute__(address_space(@as(c_int, 257))); -pub const __corei7 = @as(c_int, 1); -pub const __corei7__ = @as(c_int, 1); -pub const __tune_corei7__ = @as(c_int, 1); -pub const __NO_MATH_INLINES = @as(c_int, 1); -pub const __AES__ = @as(c_int, 1); -pub const __PCLMUL__ = @as(c_int, 1); -pub const __LAHF_SAHF__ = @as(c_int, 1); -pub const __LZCNT__ = @as(c_int, 1); -pub const __RDRND__ = @as(c_int, 1); -pub const __FSGSBASE__ = @as(c_int, 1); -pub const __BMI__ = @as(c_int, 1); -pub const __BMI2__ = @as(c_int, 1); -pub const __POPCNT__ = @as(c_int, 1); -pub const __PRFCHW__ = @as(c_int, 1); -pub const __RDSEED__ = @as(c_int, 1); -pub const __ADX__ = @as(c_int, 1); -pub const __MOVBE__ = @as(c_int, 1); -pub const __FMA__ = @as(c_int, 1); -pub const __F16C__ = @as(c_int, 1); -pub const __FXSR__ = @as(c_int, 1); -pub const __XSAVE__ = @as(c_int, 1); -pub const __XSAVEOPT__ = @as(c_int, 1); -pub const __XSAVEC__ = @as(c_int, 1); -pub const __XSAVES__ = @as(c_int, 1); -pub const __CLFLUSHOPT__ = @as(c_int, 1); -pub const __SGX__ = @as(c_int, 1); -pub const __INVPCID__ = @as(c_int, 1); -pub const __AVX2__ = @as(c_int, 1); -pub const __AVX__ = @as(c_int, 1); -pub const __SSE4_2__ = @as(c_int, 1); -pub const __SSE4_1__ = @as(c_int, 1); -pub const __SSSE3__ = @as(c_int, 1); -pub const __SSE3__ = @as(c_int, 1); -pub const __SSE2__ = @as(c_int, 1); -pub const __SSE2_MATH__ = @as(c_int, 1); -pub const __SSE__ = @as(c_int, 1); -pub const __SSE_MATH__ = @as(c_int, 1); -pub const __MMX__ = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 = @as(c_int, 1); -pub const __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 = @as(c_int, 1); -pub const __APPLE_CC__ = @as(c_int, 6000); -pub const __APPLE__ = @as(c_int, 1); -pub const __STDC_NO_THREADS__ = @as(c_int, 1); -pub const __weak = __attribute__(objc_gc(weak)); -pub const __DYNAMIC__ = @as(c_int, 1); -pub const __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ = @import("std").zig.c_translation.promoteIntLiteral(c_int, 110502, .decimal); -pub const __MACH__ = @as(c_int, 1); -pub const __STDC__ = @as(c_int, 1); -pub const __STDC_HOSTED__ = @as(c_int, 1); -pub const __STDC_VERSION__ = @as(c_long, 201710); -pub const __STDC_UTF_16__ = @as(c_int, 1); -pub const __STDC_UTF_32__ = @as(c_int, 1); -pub const _DEBUG = @as(c_int, 1); pub const MI_MALLOC_VERSION = @as(c_int, 171); -pub const mi_decl_nodiscard = __attribute__(warn_unused_result); -pub const mi_decl_export = __attribute__(visibility("default")); -pub const mi_attr_malloc = __attribute__(malloc); -pub const NULL = @import("std").zig.c_translation.cast(?*c_void, @as(c_int, 0)); +pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0)); pub const bool_1 = bool; pub const true_2 = @as(c_int, 1); pub const false_3 = @as(c_int, 0); pub const __bool_true_false_are_defined = @as(c_int, 1); pub const MI_SMALL_WSIZE_MAX = @as(c_int, 128); -pub const MI_SMALL_SIZE_MAX = MI_SMALL_WSIZE_MAX * @import("std").zig.c_translation.sizeof(?*c_void); +pub const MI_SMALL_SIZE_MAX = MI_SMALL_WSIZE_MAX * @import("std").zig.c_translation.sizeof(?*anyopaque); pub const mi_heap_s = struct_mi_heap_s; pub const mi_heap_area_s = struct_mi_heap_area_s; pub const mi_option_e = enum_mi_option_e; diff --git a/src/analytics/analytics_schema.zig b/src/analytics/analytics_schema.zig index e1e703e81..b9d074249 100644 --- a/src/analytics/analytics_schema.zig +++ b/src/analytics/analytics_schema.zig @@ -6,9 +6,9 @@ pub const Reader = struct { buf: []u8, remain: []u8, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn init(buf: []u8, allocator: *std.mem.Allocator) Reader { + pub fn init(buf: []u8, allocator: std.mem.Allocator) Reader { return Reader{ .buf = buf, .remain = buf, @@ -161,7 +161,7 @@ pub const Reader = struct { else => {}, } }, - .Enum => |type_info| { + .Enum => { return try this.readEnum(T); }, else => {}, diff --git a/src/analytics/analytics_thread.zig b/src/analytics/analytics_thread.zig index bd35aa422..894aa7626 100644 --- a/src/analytics/analytics_thread.zig +++ b/src/analytics/analytics_thread.zig @@ -1,4 +1,14 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const FeatureFlags = _global.FeatureFlags; +const C = _global.C; const sync = @import("../sync.zig"); const std = @import("std"); @@ -8,7 +18,7 @@ const URL = @import("../query_string_map.zig").URL; const Fs = @import("../fs.zig"); const Analytics = @import("./analytics_schema.zig").analytics; const Writer = @import("./analytics_schema.zig").Writer; -const Headers = @import("../javascript/jsc/webcore/response.zig").Headers; +const Headers = @import("http").Headers; const Futex = @import("../futex.zig"); fn NewUint64(val: u64) Analytics.Uint64 { @@ -179,7 +189,7 @@ var event_queue: EventQueue = undefined; pub const GenerateHeader = struct { pub fn generate() Analytics.EventListHeader { - if (comptime isDebug) { + if (comptime Environment.isDebug) { if (project_id.first == 0 and project_id.second == 0) { Output.prettyErrorln("warn: project_id is 0", .{}); } @@ -190,7 +200,7 @@ pub const GenerateHeader = struct { .machine_id = GenerateMachineID.forMac() catch Analytics.Uint64{}, .platform = GeneratePlatform.forMac(), .build_id = comptime @truncate(u32, Global.build_id), - .session_id = random.random.int(u32), + .session_id = random.random().int(u32), .project_id = project_id, }; } @@ -200,7 +210,7 @@ pub const GenerateHeader = struct { .machine_id = GenerateMachineID.forLinux() catch Analytics.Uint64{}, .platform = GeneratePlatform.forLinux(), .build_id = comptime @truncate(u32, Global.build_id), - .session_id = random.random.int(u32), + .session_id = random.random().int(u32), .project_id = project_id, }; } @@ -214,8 +224,6 @@ pub const GenerateHeader = struct { std.mem.set(u8, std.mem.span(&osversion_name), 0); var platform = Analytics.Platform{ .os = Analytics.OperatingSystem.macos, .version = &[_]u8{}, .arch = platform_arch }; - var osversion_name_buf: [2]c_int = undefined; - var osversion_name_ptr = osversion_name.len - 1; var len = osversion_name.len - 1; if (std.c.sysctlbyname("kern.osrelease", &osversion_name, &len, null, 0) == -1) return platform; @@ -277,7 +285,7 @@ pub const GenerateHeader = struct { pub var linux_machine_id: [256]u8 = undefined; pub fn forLinux() !Analytics.Uint64 { - var file = std.fs.openFileAbsoluteZ("/var/lib/dbus/machine-id", .{ .read = true }) catch |err| brk: { + var file = std.fs.openFileAbsoluteZ("/var/lib/dbus/machine-id", .{ .read = true }) catch brk: { break :brk try std.fs.openFileAbsoluteZ("/etc/machine-id", .{ .read = true }); }; defer file.close(); @@ -318,7 +326,7 @@ fn start() bool { event_queue = EventQueue.init(std.heap.c_allocator); spawn() catch |err| { - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyErrorln("[Analytics] error spawning thread {s}", .{@errorName(err)}); Output.flush(); } @@ -465,6 +473,7 @@ pub const EventList = struct { this.events.clearRetainingCapacity(); var retry_remaining: usize = 10; + const rand = random.random(); retry: while (retry_remaining > 0) { const response = this.async_http.sendSync() catch |err| { if (FeatureFlags.verbose_analytics) { @@ -475,7 +484,7 @@ pub const EventList = struct { @atomicStore(bool, &is_stuck, true, .Release); const min_delay = (11 - retry_remaining) * std.time.ns_per_s / 2; Output.flush(); - std.time.sleep(random.random.intRangeAtMost(u64, min_delay, min_delay * 2)); + std.time.sleep(rand.intRangeAtMost(u64, min_delay, min_delay * 2)); continue :retry; }; @@ -488,7 +497,7 @@ pub const EventList = struct { @atomicStore(bool, &is_stuck, true, .Release); const min_delay = (11 - retry_remaining) * std.time.ns_per_s / 2; Output.flush(); - std.time.sleep(random.random.intRangeAtMost(u64, min_delay, min_delay * 2)); + std.time.sleep(rand.intRangeAtMost(u64, min_delay, min_delay * 2)); continue :retry; } diff --git a/src/api/schema.zig b/src/api/schema.zig index 45589a431..2153ce0f3 100644 --- a/src/api/schema.zig +++ b/src/api/schema.zig @@ -6,9 +6,9 @@ pub const Reader = struct { buf: []u8, remain: []u8, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn init(buf: []u8, allocator: *std.mem.Allocator) Reader { + pub fn init(buf: []u8, allocator: std.mem.Allocator) Reader { return Reader{ .buf = buf, .remain = buf, @@ -161,7 +161,7 @@ pub const Reader = struct { else => {}, } }, - .Enum => |type_info| { + .Enum => { return try this.readEnum(T); }, else => {}, diff --git a/src/ast/base.zig b/src/ast/base.zig index f1877018c..f2312677f 100644 --- a/src/ast/base.zig +++ b/src/ast/base.zig @@ -24,11 +24,11 @@ pub const NodeIndexNone = 4294967293; // all inner arrays from all parsed files. pub const RefHashCtx = struct { - pub fn hash(ctx: @This(), key: Ref) u32 { + pub fn hash(_: @This(), key: Ref) u32 { return @truncate(u32, std.hash.Wyhash.hash(0, std.mem.asBytes(&key))); } - pub fn eql(ctx: @This(), ref: Ref, b: Ref) bool { + pub fn eql(_: @This(), ref: Ref, b: Ref) bool { return std.mem.readIntNative(u64, std.mem.asBytes(&ref)) == std.mem.readIntNative(u64, std.mem.asBytes(&b)); } }; @@ -85,11 +85,3 @@ pub const RequireOrImportMeta = struct { exports_ref: Ref = Ref.None, is_wrapper_async: bool = false, }; -pub inline fn debug(comptime fmt: []const u8, args: anytype) void { - // Output.print(fmt, args); -} -pub inline fn debugl( - comptime fmt: []const u8, -) void { - // Output.print("{s}\n", .{fmt}); -} diff --git a/src/blob.zig b/src/blob.zig index 9e0eba407..65679978d 100644 --- a/src/blob.zig +++ b/src/blob.zig @@ -1,6 +1,15 @@ const std = @import("std"); const Lock = @import("./lock.zig").Lock; -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Blob = @This(); @@ -9,10 +18,10 @@ len: usize, pub const Map = struct { const MapContext = struct { - pub fn hash(self: @This(), s: u64) u32 { + pub fn hash(_: @This(), s: u64) u32 { return @truncate(u32, s); } - pub fn eql(self: @This(), a: u64, b: u64) bool { + pub fn eql(_: @This(), a: u64, b: u64) bool { return a == b; } }; @@ -20,9 +29,9 @@ pub const Map = struct { const HashMap = std.ArrayHashMap(u64, Blob, MapContext, false); lock: Lock, map: HashMap, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn init(allocator: *std.mem.Allocator) Map { + pub fn init(allocator: std.mem.Allocator) Map { return Map{ .lock = Lock.init(), .map = HashMap.init(allocator), @@ -53,9 +62,9 @@ pub const Map = struct { pub const Group = struct { persistent: Map, temporary: Map, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn init(allocator: *std.mem.Allocator) !*Group { + pub fn init(allocator: std.mem.Allocator) !*Group { var group = try allocator.create(Group); group.* = Group{ .persistent = Map.init(allocator), .temporary = Map.init(allocator), .allocator = allocator }; return group; diff --git a/src/builder.zig b/src/builder.zig index 19daa0a20..a25acf554 100644 --- a/src/builder.zig +++ b/src/builder.zig @@ -14,7 +14,7 @@ pub fn Builder(comptime Type: type) type { this.cap += slice.len; } - pub fn allocate(this: *This, allocator: *Allocator) !void { + pub fn allocate(this: *This, allocator: Allocator) !void { var slice = try allocator.alloc(Type, this.cap); this.ptr = slice.ptr; this.len = 0; diff --git a/src/bun_js.zig b/src/bun_js.zig index 985faf6c9..533aa3f43 100644 --- a/src/bun_js.zig +++ b/src/bun_js.zig @@ -1,4 +1,13 @@ -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("js_lexer.zig"); @@ -29,7 +38,7 @@ pub const Run = struct { vm: *VirtualMachine, entry_path: string, pub fn boot(ctx: Command.Context, file: std.fs.File, entry_path: string) !void { - @import("javascript/jsc/JavascriptCore.zig").JSCInitialize(); + @import("javascript/jsc/javascript_core_c_api.zig").JSCInitialize(); js_ast.Expr.Data.Store.create(default_allocator); js_ast.Stmt.Data.Store.create(default_allocator); @@ -41,7 +50,7 @@ pub const Run = struct { .entry_path = entry_path, }; - run.vm.bundler.configureRouter(false) catch |err| { + run.vm.bundler.configureRouter(false) catch { if (Output.enable_ansi_colors) { run.vm.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true) catch {}; } else { @@ -51,7 +60,7 @@ pub const Run = struct { Output.flush(); std.os.exit(1); }; - run.vm.bundler.configureDefines() catch |err| { + run.vm.bundler.configureDefines() catch { if (Output.enable_ansi_colors) { run.vm.log.printForLogLevelWithEnableAnsiColors(Output.errorWriter(), true) catch {}; } else { diff --git a/src/bun_queue.zig b/src/bun_queue.zig index e602adc6d..fc3edef52 100644 --- a/src/bun_queue.zig +++ b/src/bun_queue.zig @@ -1,7 +1,16 @@ const std = @import("std"); const Mutex = @import("./lock.zig").Mutex; const WaitGroup = @import("./sync.zig").WaitGroup; -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Wyhash = std.hash.Wyhash; const assert = std.debug.assert; @@ -21,11 +30,11 @@ pub fn NewBlockQueue(comptime Value: type, comptime block_size: comptime_int, co write_lock: bool = false, overflow_write_lock: bool = false, overflow_readers: std.atomic.Atomic(u8) = std.atomic.Atomic(u8).init(0), - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, empty_queue: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(1), rand: std.rand.DefaultPrng = std.rand.DefaultPrng.init(100), - pub fn new(this: *BlockQueue, allocator: *std.mem.Allocator) void { + pub fn new(this: *BlockQueue, allocator: std.mem.Allocator) void { this.* = BlockQueue{ .allocator = allocator, .overflow = std.ArrayList(*Block).init(allocator), @@ -38,8 +47,10 @@ pub fn NewBlockQueue(comptime Value: type, comptime block_size: comptime_int, co pub fn get(this: *BlockQueue) ?Value { if (this.len.fetchMax(-1, .SeqCst) <= 0) return null; + const rand = this.rand.random(); + while (@atomicRmw(bool, &this.write_lock, .Xchg, true, .SeqCst)) { - const end = this.rand.random.uintAtMost(u8, 64); + const end = rand.uintAtMost(u8, 64); var i: u8 = 0; while (i < end) : (i += 1) {} std.atomic.spinLoopHint(); @@ -68,17 +79,14 @@ pub fn NewBlockQueue(comptime Value: type, comptime block_size: comptime_int, co const ptr = @atomicLoad(*Block, &this.blocks[current_block], .SeqCst); return ptr[index]; }, - else => { - const is_overflowing = current_block > block_count; - - unreachable; - }, + else => unreachable, } } pub fn enqueue(this: *BlockQueue, value: Value) !void { + const rand = this.rand.random(); while (@atomicRmw(bool, &this.write_lock, .Xchg, true, .SeqCst)) { - const end = this.rand.random.uintAtMost(u8, 32); + const end = rand.uintAtMost(u8, 32); var i: u8 = 0; while (i < end) : (i += 1) {} std.atomic.spinLoopHint(); @@ -144,12 +152,12 @@ pub fn NewBunQueue(comptime Value: type) type { const KeyType = u32; const BunQueue = @This(); const Queue = NewBlockQueue(Value, 64, 48); - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, queue: Queue, keys: Keys, count: std.atomic.Atomic(u32) = std.atomic.Atomic(u32).init(0), - pub fn init(allocator: *std.mem.Allocator) !*BunQueue { + pub fn init(allocator: std.mem.Allocator) !*BunQueue { var bun = try allocator.create(BunQueue); bun.* = BunQueue{ .allocator = allocator, @@ -409,7 +417,7 @@ test "BunQueue: Single-threaded" { const end_offset = queue.getOffset().len; - for (greet) |ing, i| { + for (greet) |ing| { const key = @truncate(u32, hash(0, ing)); try queue.upsert( key, @@ -464,10 +472,9 @@ test "BunQueue: Dedupes" { var deduped = std.BufSet.init(default_allocator); var consumed = std.BufSet.init(default_allocator); - for (greet) |ing, i| { + for (greet) |ing| { const key = @truncate(u32, hash(0, ing)); - const is_new = !deduped.contains(ing); try deduped.insert(ing); try queue.upsert(key, ing); } @@ -631,31 +638,6 @@ test "BunQueue: SCMP Threaded" { try dedup_list.insert(cur); } } - - pub fn run1(queue: *BunQueue, num: u8, dedup_list: *std.BufSet, wg: *WaitGroup, mut: *Mutex) !void { - defer wg.done(); - const tasks = more_work[num]; - var remain = tasks; - try queue.upsert(@truncate(u32, std.hash.Wyhash.hash(0, remain[0])), remain[0]); - remain = tasks[1..]; - loop: while (true) { - while (queue.next()) |cur| { - mut.acquire(); - try dedup_list.insert(cur); - mut.release(); - } - - if (remain.len > 0) { - try queue.upsert(@truncate(u32, std.hash.Wyhash.hash(0, remain[0])), remain[0]); - remain = tasks[1..]; - var j: usize = 0; - while (j < 1000) : (j += 1) {} - continue :loop; - } - - break :loop; - } - } }; var out = try default_allocator.create(std.BufSet); diff --git a/src/bundler.zig b/src/bundler.zig index 26f3aeb24..b726996a1 100644 --- a/src/bundler.zig +++ b/src/bundler.zig @@ -1,4 +1,15 @@ -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FeatureFlags = _global.FeatureFlags; +const C = _global.C; const std = @import("std"); const lex = @import("js_lexer.zig"); @@ -9,8 +20,9 @@ const json_parser = @import("json_parser.zig"); const js_printer = @import("js_printer.zig"); const js_ast = @import("js_ast.zig"); const linker = @import("linker.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("defines.zig"); +const Ref = @import("ast/base.zig").Ref; +const Define = @import("defines.zig").Define; + const panicky = @import("panic_handler.zig"); const Fs = @import("fs.zig"); const schema = @import("api/schema.zig"); @@ -104,7 +116,7 @@ pub const Bundler = struct { options: options.BundleOptions, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, result: options.TransformResult = undefined, resolver: Resolver, fs: *Fs.FileSystem, @@ -127,7 +139,7 @@ pub const Bundler = struct { pub const isCacheEnabled = cache_files; - pub fn clone(this: *ThisBundler, allocator: *std.mem.Allocator, to: *ThisBundler) !void { + pub fn clone(this: *ThisBundler, allocator: std.mem.Allocator, to: *ThisBundler) !void { to.* = this.*; to.setAllocator(allocator); to.log = try allocator.create(logger.Log); @@ -142,7 +154,7 @@ pub const Bundler = struct { this.resolver.log = log; } - pub fn setAllocator(this: *ThisBundler, allocator: *std.mem.Allocator) void { + pub fn setAllocator(this: *ThisBundler, allocator: std.mem.Allocator) void { this.allocator = allocator; this.linker.allocator = allocator; this.resolver.allocator = allocator; @@ -174,7 +186,7 @@ pub const Bundler = struct { // thread_pool: *ThreadPool, pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, opts: Api.TransformOptions, existing_bundle: ?*NodeModuleBundle, @@ -278,7 +290,7 @@ pub const Bundler = struct { if (this.env.map.get("CI") orelse this.env.map.get("TDDIUM") orelse this.env.map.get("JENKINS_URL") orelse - this.env.map.get("bamboo.buildKey")) |IS_CI| + this.env.map.get("bamboo.buildKey")) |_| { Analytics.is_ci = true; } @@ -395,7 +407,7 @@ pub const Bundler = struct { var entry = this.fs.absBuf(&paths, &pages_dir_buf); if (std.fs.path.extension(entry).len == 0) { - allocators.constStrToU8(entry).ptr[entry.len] = '/'; + _global.constStrToU8(entry).ptr[entry.len] = '/'; // Only throw if they actually passed in a route config and the directory failed to load var dir_info_ = this.resolver.readDirInfo(entry) catch return; @@ -437,12 +449,12 @@ pub const Bundler = struct { } } - pub fn resetStore(bundler: *ThisBundler) void { + pub fn resetStore(_: *const ThisBundler) void { js_ast.Expr.Data.Store.reset(); js_ast.Stmt.Data.Store.reset(); } - pub noinline fn dumpEnvironmentVariables(bundler: *ThisBundler) void { + pub noinline fn dumpEnvironmentVariables(bundler: *const ThisBundler) void { @setCold(true); const opts = std.json.StringifyOptions{ .whitespace = std.json.StringifyOptions.Whitespace{ @@ -450,7 +462,6 @@ pub const Bundler = struct { }, }; Output.flush(); - var writer = Output.writer(); std.json.stringify(bundler.env.map.*, opts, Output.writer()) catch unreachable; Output.flush(); } @@ -474,7 +485,7 @@ pub const Bundler = struct { if (generator.bundler.env.map.get("GOMAXPROCS")) |max_procs| { if (std.fmt.parseInt(u32, max_procs, 10)) |cpu_count| { this.cpu_count = std.math.min(this.cpu_count, cpu_count); - } else |err| {} + } else |_| {} } if (this.cpu_count <= 1) return; @@ -542,7 +553,7 @@ pub const Bundler = struct { thread_id: std.Thread.Id, thread: std.Thread, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, generator: *GenerateNodeModuleBundle, data: *WorkerData = undefined, quit: bool = false, @@ -556,7 +567,7 @@ pub const Bundler = struct { estimated_input_lines_of_code: usize = 0, macro_context: js_ast.Macro.MacroContext, - pub fn deinit(this: *WorkerData, allocator: *std.mem.Allocator) void { + pub fn deinit(this: *WorkerData, allocator: std.mem.Allocator) void { this.shared_buffer.deinit(); this.scan_pass_result.named_imports.deinit(); this.scan_pass_result.import_records.deinit(); @@ -581,11 +592,11 @@ pub const Bundler = struct { pub fn run(this: *Worker) void { Output.Source.configureThread(); this.thread_id = std.Thread.getCurrentId(); - if (isDebug) { + if (Environment.isDebug) { Output.prettyln("Thread started.\n", .{}); } defer { - if (isDebug) { + if (Environment.isDebug) { Output.prettyln("Thread stopped.\n", .{}); } Output.flush(); @@ -661,7 +672,7 @@ pub const Bundler = struct { package_list_map: std.AutoHashMap(u64, u32), queue: *BunQueue, bundler: *ThisBundler, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, tmpfile: std.fs.File, log: *logger.Log, pool: *ThreadPool, @@ -758,13 +769,13 @@ pub const Bundler = struct { pub fn generate( bundler: *ThisBundler, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, framework_config: ?Api.LoadedFramework, route_config: ?Api.LoadedRouteConfig, destination: [*:0]const u8, estimated_input_lines_of_code: *usize, ) !?Api.JavascriptBundleContainer { - var tmpdir: std.fs.Dir = try bundler.fs.fs.openTmpDir(); + _ = try bundler.fs.fs.openTmpDir(); var tmpname_buf: [64]u8 = undefined; bundler.resetStore(); try bundler.configureDefines(); @@ -812,9 +823,7 @@ pub const Bundler = struct { var this = generator; // Always inline the runtime into the bundle try generator.appendBytes(&initial_header); - // If we try to be smart and rely on .written, it turns out incorrect - const code_start_pos = try this.tmpfile.getPos(); - if (isDebug) { + if (Environment.isDebug) { try generator.appendBytes(runtime.Runtime.sourceContent()); try generator.appendBytes("\n\n"); } else { @@ -828,7 +837,7 @@ pub const Bundler = struct { Analytics.Features.bun_bun = true; always_bundled: { - const root_package_json_resolved: _resolver.Result = bundler.resolver.resolve(bundler.fs.top_level_dir, "./package.json", .stmt) catch |err| { + const root_package_json_resolved: _resolver.Result = bundler.resolver.resolve(bundler.fs.top_level_dir, "./package.json", .stmt) catch { generator.log.addWarning(null, logger.Loc.Empty, "Please run `bun bun` from a directory containing a package.json.") catch unreachable; break :always_bundled; }; @@ -900,11 +909,6 @@ pub const Bundler = struct { Analytics.Features.fast_refresh = this.bundler.options.jsx.supports_fast_refresh; - const resolve_queue_estimate = bundler.options.entry_points.len + - @intCast(usize, @boolToInt(framework_config != null)) + - @intCast(usize, @boolToInt(include_refresh_runtime)) + - @intCast(usize, @boolToInt(bundler.options.jsx.parse)); - if (bundler.router) |router| { defer this.bundler.resetStore(); Analytics.Features.filesystem_router = true; @@ -926,7 +930,7 @@ pub const Bundler = struct { try this.enqueueItem(resolved); } - if (framework_config) |conf| { + if (framework_config != null) { defer this.bundler.resetStore(); try this.bundler.configureFramework(true); @@ -981,7 +985,7 @@ pub const Bundler = struct { .require, )) |new_jsx_runtime| { try this.enqueueItem(new_jsx_runtime); - } else |err| {} + } else |_| {} } var refresh_runtime_module_id: u32 = 0; @@ -997,7 +1001,7 @@ pub const Bundler = struct { if (BundledModuleData.get(this, &refresh_runtime)) |mod| { refresh_runtime_module_id = mod.module_id; } - } else |err| {} + } else |_| {} } this.bundler.resetStore(); @@ -1060,7 +1064,7 @@ pub const Bundler = struct { GenerateNodeModuleBundle.sortJavascriptModuleByPath, ); - if (comptime isDebug) { + if (comptime Environment.isDebug) { const SeenHash = std.AutoHashMap(u64, void); var map = SeenHash.init(this.allocator); var ids = SeenHash.init(this.allocator); @@ -1175,7 +1179,7 @@ pub const Bundler = struct { try tmpwriter.flush(); // sanity check - if (isDebug) { + if (Environment.isDebug) { try this.tmpfile.seekTo(start_pos); var contents = try allocator.alloc(u8, (try this.tmpfile.getEndPos()) - start_pos); var read_bytes = try this.tmpfile.read(contents); @@ -1405,7 +1409,7 @@ pub const Bundler = struct { return code_offset; } - fn processImportRecord(this: *GenerateNodeModuleBundle, import_record: ImportRecord) !void {} + fn processImportRecord(_: *GenerateNodeModuleBundle, _: ImportRecord) !void {} var json_ast_symbols = [_]js_ast.Symbol{ js_ast.Symbol{ .original_name = "$$m" }, js_ast.Symbol{ .original_name = "exports" }, @@ -1429,7 +1433,7 @@ pub const Bundler = struct { const code_length = @atomicLoad(u32, &this.tmpfile_byte_offset, .SeqCst) - code_offset; - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert(code_length > 0); std.debug.assert(package.hash != 0); std.debug.assert(package.version.len > 0); @@ -1495,7 +1499,6 @@ pub const Bundler = struct { // If we're in a node_module, build that almost normally if (is_from_node_modules) { - var written: usize = undefined; var code_offset: u32 = 0; const module_data = BundledModuleData.getForceBundleForMain(this, &resolve) orelse { @@ -1606,7 +1609,7 @@ pub const Bundler = struct { approximate_newline_count = ast.approximate_newline_count; if (ast.import_records.len > 0) { - for (ast.import_records) |*import_record, record_id| { + for (ast.import_records) |*import_record| { // Don't resolve the runtime if (import_record.is_internal or import_record.is_unused) { @@ -1654,7 +1657,7 @@ pub const Bundler = struct { _resolved_import.*, ); } else |err| { - if (comptime isDebug) { + if (comptime Environment.isDebug) { if (!import_record.handles_import_errors) { Output.prettyErrorln("\n<r><red>{s}<r> on resolving \"{s}\" from \"{s}\"", .{ @errorName(err), @@ -1738,7 +1741,7 @@ pub const Bundler = struct { } }; - var stmt = js_ast.Stmt.alloc(worker.allocator, js_ast.S.ExportDefault, js_ast.S.ExportDefault{ + var stmt = js_ast.Stmt.alloc(js_ast.S.ExportDefault, js_ast.S.ExportDefault{ .value = js_ast.StmtOrExpr{ .expr = expr }, .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} }, }, logger.Loc{ .start = 0 }); @@ -1950,7 +1953,7 @@ pub const Bundler = struct { } } - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyln("{s}@{s}/{s} - {d}:{d} \n", .{ package.name, package.version, package_relative_path, package.hash, module_id }); Output.flush(); std.debug.assert(package_relative_path.len > 0); @@ -1999,7 +2002,7 @@ pub const Bundler = struct { worker.data.estimated_input_lines_of_code += scan_pass_result.approximate_newline_count; { - for (scan_pass_result.import_records.items) |*import_record, i| { + for (scan_pass_result.import_records.items) |*import_record| { if (import_record.is_internal or import_record.is_unused) { continue; } @@ -2153,7 +2156,7 @@ pub const Bundler = struct { pub fn buildWithResolveResult( bundler: *ThisBundler, resolve_result: _resolver.Result, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, loader: options.Loader, comptime Writer: type, writer: Writer, @@ -2560,7 +2563,7 @@ pub const Bundler = struct { } pub const ParseOptions = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, dirname_fd: StoredFileDescriptorType, file_descriptor: ?StoredFileDescriptorType = null, file_hash: ?u32 = null, @@ -2591,7 +2594,6 @@ pub const Bundler = struct { bundler.elapsed += bundler.timer.read(); } } - var result: ParseResult = undefined; var input_fd: ?StoredFileDescriptorType = null; const source: logger.Source = brk: { @@ -2686,7 +2688,7 @@ pub const Bundler = struct { }, .json => { var expr = json_parser.ParseJSON(&source, bundler.log, allocator) catch return null; - var stmt = js_ast.Stmt.alloc(allocator, js_ast.S.ExportDefault, js_ast.S.ExportDefault{ + var stmt = js_ast.Stmt.alloc(js_ast.S.ExportDefault, js_ast.S.ExportDefault{ .value = js_ast.StmtOrExpr{ .expr = expr }, .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} }, }, logger.Loc{ .start = 0 }); @@ -2719,15 +2721,13 @@ pub const Bundler = struct { pub fn buildFile( bundler: *ThisBundler, log: *logger.Log, - allocator: *std.mem.Allocator, + _: std.mem.Allocator, path_to_use_: string, - _extension: string, + _: string, comptime client_entry_point_enabled: bool, - comptime serve_as_package_path: bool, + comptime _: bool, ) !ServeResult { - var extension = _extension; var old_log = bundler.log; - var old_allocator = bundler.allocator; bundler.setLog(log); defer bundler.setLog(old_log); @@ -2829,9 +2829,8 @@ pub const Bundler = struct { var paths = [_]string{_entry}; var entry = bundler.fs.abs(&paths); - std.fs.accessAbsolute(entry, .{}) catch |err| { + std.fs.accessAbsolute(entry, .{}) catch return _entry; - }; entry = bundler.fs.relativeTo(entry); @@ -2891,7 +2890,7 @@ pub const Bundler = struct { } pub fn bundle( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, opts: Api.TransformOptions, ) !options.TransformResult { @@ -3089,7 +3088,7 @@ pub const Bundler = struct { pub const Transformer = struct { opts: Api.TransformOptions, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, platform: options.Platform = undefined, out_extensions: std.StringHashMap(string) = undefined, output_path: string, @@ -3097,7 +3096,7 @@ pub const Transformer = struct { define: *Define, pub fn transform( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, opts: Api.TransformOptions, ) !options.TransformResult { @@ -3127,11 +3126,6 @@ pub const Transformer = struct { var jsx = if (opts.jsx) |_jsx| try options.JSX.Pragma.fromApi(_jsx, allocator) else options.JSX.Pragma{}; - var output_i: usize = 0; - var chosen_alloc: *std.mem.Allocator = allocator; - var arena: std.heap.ArenaAllocator = undefined; - const use_arenas = opts.entry_points.len > 8; - var ulimit: usize = Fs.FileSystem.RealFS.adjustUlimit() catch unreachable; var care_about_closing_files = !(FeatureFlags.store_file_descriptors and opts.entry_points.len * 2 < ulimit); @@ -3189,7 +3183,7 @@ pub const Transformer = struct { pub fn processEntryPoint( transformer: *Transformer, entry_point: string, - i: usize, + _: usize, output_files: *std.ArrayList(options.OutputFile), _output_dir: ?std.fs.Dir, comptime write_destination_type: options.WriteDestination, @@ -3202,7 +3196,6 @@ pub const Transformer = struct { var log = transformer.log; var _log = logger.Log.init(allocator); - var __log = &_log; const absolutePath = resolve_path.joinAbs(transformer.cwd, .auto, entry_point); const file = try std.fs.openFileAbsolute(absolutePath, std.fs.File.OpenFlags{ .read = true }); @@ -3290,7 +3283,7 @@ pub const Transformer = struct { .transform_imports = false, .runtime_imports = ast.runtime_imports, }, - ?*c_void, + ?*anyopaque, null, ); }, @@ -3305,7 +3298,7 @@ pub const Transformer = struct { } pub fn _transform( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, opts: js_parser.Parser.Options, loader: options.Loader, @@ -3319,7 +3312,7 @@ pub const Transformer = struct { switch (loader) { .json => { var expr = try json_parser.ParseJSON(source, log, allocator); - var stmt = js_ast.Stmt.alloc(allocator, js_ast.S.ExportDefault{ + var stmt = js_ast.Stmt.alloc(js_ast.S.ExportDefault{ .value = js_ast.StmtOrExpr{ .expr = expr }, .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} }, }, logger.Loc{ .start = 0 }); @@ -3390,7 +3383,6 @@ pub const FallbackEntryPoint = struct { // We go through the steps of printing the code -- only to then parse/transpile it because // we want it to go through the linker and the rest of the transpilation process - const dir_to_use: string = bundler.fs.top_level_dir; const disable_css_imports = bundler.options.framework.?.client_css_in_js != .auto_onimportcss; var code: string = undefined; @@ -3527,7 +3519,7 @@ pub const ServerEntryPoint = struct { pub fn generate( entry: *ServerEntryPoint, comptime BundlerType: type, - bundler: *BundlerType, + _: *BundlerType, original_path: Fs.PathName, name: string, ) !void { @@ -3605,7 +3597,7 @@ pub const MacroEntryPoint = struct { pub fn generate( entry: *MacroEntryPoint, - bundler: *Bundler, + _: *Bundler, import_path: Fs.PathName, function_name: string, macro_id: i32, @@ -1,12 +1,13 @@ const std = @import("std"); const Enviroment = @import("./env.zig"); -pub usingnamespace switch (std.Target.current.os.tag) { +const PlatformSpecific = switch (@import("builtin").target.os.tag) { .macos => @import("./darwin_c.zig"), else => struct {}, }; +pub usingnamespace PlatformSpecific; -usingnamespace std.c; +const C = std.c; const builtin = @import("builtin"); const os = std.os; const mem = std.mem; @@ -14,6 +15,8 @@ const Stat = std.fs.File.Stat; const Kind = std.fs.File.Kind; const StatError = std.fs.File.StatError; const errno = os.errno; +const mode_t = C.mode_t; +const libc_stat = C.Stat; const zeroes = mem.zeroes; pub extern "c" fn chmod([*c]const u8, mode_t) c_int; @@ -26,25 +29,7 @@ pub extern "c" fn lstat64([*c]const u8, [*c]libc_stat) c_int; pub fn lstat_absolute(path: [:0]const u8) StatError!Stat { if (builtin.os.tag == .windows) { - var io_status_block: windows.IO_STATUS_BLOCK = undefined; - var info: windows.FILE_ALL_INFORMATION = undefined; - const rc = windows.ntdll.NtQueryInformationFile(self.handle, &io_status_block, &info, @sizeOf(windows.FILE_ALL_INFORMATION), .FileAllInformation); - switch (rc) { - .SUCCESS => {}, - .BUFFER_OVERFLOW => {}, - .INVALID_PARAMETER => unreachable, - .ACCESS_DENIED => return error.AccessDenied, - else => return windows.unexpectedStatus(rc), - } - return Stat{ - .inode = info.InternalInformation.IndexNumber, - .size = @bitCast(u64, info.StandardInformation.EndOfFile), - .mode = 0, - .kind = if (info.StandardInformation.Directory == 0) .File else .Directory, - .atime = windows.fromSysTime(info.BasicInformation.LastAccessTime), - .mtime = windows.fromSysTime(info.BasicInformation.LastWriteTime), - .ctime = windows.fromSysTime(info.BasicInformation.CreationTime), - }; + @compileError("Not implemented yet"); } var st = zeroes(libc_stat); @@ -74,14 +59,14 @@ pub fn lstat_absolute(path: [:0]const u8) StatError!Stat { os.FILETYPE_SOCKET_STREAM, os.FILETYPE_SOCKET_DGRAM => Kind.UnixDomainSocket, else => Kind.Unknown, }, - else => switch (st.mode & os.S_IFMT) { - os.S_IFBLK => Kind.BlockDevice, - os.S_IFCHR => Kind.CharacterDevice, - os.S_IFDIR => Kind.Directory, - os.S_IFIFO => Kind.NamedPipe, - os.S_IFLNK => Kind.SymLink, - os.S_IFREG => Kind.File, - os.S_IFSOCK => Kind.UnixDomainSocket, + else => switch (st.mode & os.S.IFMT) { + os.S.IFBLK => Kind.BlockDevice, + os.S.IFCHR => Kind.CharacterDevice, + os.S.IFDIR => Kind.Directory, + os.S.IFIFO => Kind.NamedPipe, + os.S.IFLNK => Kind.SymLink, + os.S.IFREG => Kind.File, + os.S.IFSOCK => Kind.UnixDomainSocket, else => Kind.Unknown, }, }, @@ -122,7 +107,7 @@ pub fn moveFileZWithHandle(from_handle: std.os.fd_t, from_dir: std.os.fd_t, file // On Linux, this will be fast because sendfile() supports copying between two file descriptors on disk // macOS & BSDs will be slow because pub fn moveFileZSlow(from_dir: std.os.fd_t, filename: [*:0]const u8, to_dir: std.os.fd_t, destination: [*:0]const u8) !void { - const in_handle = try std.os.openatZ(from_dir, filename, std.os.O_RDONLY | std.os.O_CLOEXEC, 0600); + const in_handle = try std.os.openatZ(from_dir, filename, std.os.O.RDONLY | std.os.O.CLOEXEC, 0600); try moveFileZSlowWithHandle(in_handle, to_dir, destination); } @@ -133,7 +118,7 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest // ftruncate() instead didn't work. // this is technically racy because it could end up deleting the file without saving std.os.unlinkatZ(to_dir, destination, 0) catch {}; - const out_handle = try std.os.openatZ(to_dir, destination, std.os.O_WRONLY | std.os.O_CREAT | std.os.O_CLOEXEC, 022); + const out_handle = try std.os.openatZ(to_dir, destination, std.os.O.WRONLY | std.os.O.CREAT | std.os.O.CLOEXEC, 022); defer std.os.close(out_handle); if (comptime Enviroment.isLinux) { _ = std.os.system.fallocate(out_handle, 0, 0, @intCast(i64, stat_.size)); @@ -142,7 +127,7 @@ pub fn moveFileZSlowWithHandle(in_handle: std.os.fd_t, to_dir: std.os.fd_t, dest if (comptime Enviroment.isMac) { // if this fails, it doesn't matter // we only really care about read & write succeeding - preallocate_file( + PlatformSpecific.preallocate_file( out_handle, @intCast(std.os.off_t, 0), @intCast(std.os.off_t, stat_.size), diff --git a/src/cache.zig b/src/cache.zig index 869c083f0..3a3429105 100644 --- a/src/cache.zig +++ b/src/cache.zig @@ -1,4 +1,15 @@ -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const FeatureFlags = _global.FeatureFlags; +const default_allocator = _global.default_allocator; +const C = _global.C; const js_ast = @import("./js_ast.zig"); const logger = @import("./logger.zig"); @@ -12,13 +23,14 @@ const sync = @import("sync.zig"); const Mutex = @import("./lock.zig").Lock; const import_record = @import("./import_record.zig"); + const ImportRecord = import_record.ImportRecord; pub const FsCacheEntry = struct { contents: string, fd: StoredFileDescriptorType = 0, - pub fn deinit(entry: *FsCacheEntry, allocator: *std.mem.Allocator) void { + pub fn deinit(entry: *FsCacheEntry, allocator: std.mem.Allocator) void { if (entry.contents.len > 0) { allocator.free(entry.contents); entry.contents = ""; @@ -31,7 +43,7 @@ pub const Set = struct { fs: Fs, json: Json, - pub fn init(allocator: *std.mem.Allocator) Set { + pub fn init(allocator: std.mem.Allocator) Set { return Set{ .js = JavaScript.init(allocator), .fs = Fs{ @@ -55,10 +67,10 @@ pub const Fs = struct { } pub fn readFileShared( - c: *Fs, + _: *Fs, _fs: *fs.FileSystem, path: [:0]const u8, - dirname_fd: StoredFileDescriptorType, + _: StoredFileDescriptorType, _file_handle: ?StoredFileDescriptorType, shared: *MutableString, ) !Entry { @@ -76,7 +88,7 @@ pub const Fs = struct { } const file = rfs.readFileWithHandle(path, null, file_handle, true, shared) catch |err| { - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) }); } return err; @@ -127,7 +139,7 @@ pub const Fs = struct { } const file = rfs.readFileWithHandle(path, null, file_handle, use_shared_buffer, &c.shared_buffer) catch |err| { - if (isDebug) { + if (Environment.isDebug) { Output.printError("{s}: readFile error -- {s}", .{ path, @errorName(err) }); } return err; @@ -146,7 +158,7 @@ pub const Css = struct { ok: bool, value: void, }; - pub fn parse(cache: *@This(), log: *logger.Log, source: logger.Source) !Result { + pub fn parse(_: *@This(), _: *logger.Log, _: logger.Source) !Result { Global.notimpl(); } }; @@ -154,21 +166,21 @@ pub const Css = struct { pub const JavaScript = struct { pub const Result = js_ast.Result; - pub fn init(allocator: *std.mem.Allocator) JavaScript { + pub fn init(_: std.mem.Allocator) JavaScript { return JavaScript{}; } // For now, we're not going to cache JavaScript ASTs. // It's probably only relevant when bundling for production. pub fn parse( - cache: *@This(), - allocator: *std.mem.Allocator, + _: *const @This(), + allocator: std.mem.Allocator, opts: js_parser.Parser.Options, defines: *Define, log: *logger.Log, source: *const logger.Source, ) anyerror!?js_ast.Ast { var temp_log = logger.Log.init(allocator); - var parser = js_parser.Parser.init(opts, &temp_log, source, defines, allocator) catch |err| { + var parser = js_parser.Parser.init(opts, &temp_log, source, defines, allocator) catch { temp_log.appendToMaybeRecycled(log, source) catch {}; return null; }; @@ -187,8 +199,8 @@ pub const JavaScript = struct { } pub fn scan( - cache: *@This(), - allocator: *std.mem.Allocator, + _: *@This(), + allocator: std.mem.Allocator, scan_pass_result: *js_parser.ScanPassResult, opts: js_parser.Parser.Options, defines: *Define, @@ -198,19 +210,17 @@ pub const JavaScript = struct { var temp_log = logger.Log.init(allocator); defer temp_log.appendToMaybeRecycled(log, source) catch {}; - var parser = js_parser.Parser.init(opts, &temp_log, source, defines, allocator) catch |err| { - return; - }; + var parser = js_parser.Parser.init(opts, &temp_log, source, defines, allocator) catch return; return try parser.scanImports(scan_pass_result); } }; pub const Json = struct { - pub fn init(allocator: *std.mem.Allocator) Json { + pub fn init(_: std.mem.Allocator) Json { return Json{}; } - fn parse(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: *std.mem.Allocator, is_tsconfig: bool, func: anytype) anyerror!?js_ast.Expr { + fn parse(_: *@This(), log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator, comptime func: anytype) anyerror!?js_ast.Expr { var temp_log = logger.Log.init(allocator); defer { temp_log.appendToMaybeRecycled(log, &source) catch {}; @@ -219,11 +229,11 @@ pub const Json = struct { break :handler null; }; } - pub fn parseJSON(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: *std.mem.Allocator) anyerror!?js_ast.Expr { - return try parse(cache, log, source, allocator, false, json_parser.ParseJSON); + pub fn parseJSON(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator) anyerror!?js_ast.Expr { + return try parse(cache, log, source, allocator, json_parser.ParseJSON); } - pub fn parseTSConfig(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: *std.mem.Allocator) anyerror!?js_ast.Expr { - return try parse(cache, log, source, allocator, true, json_parser.ParseTSConfig); + pub fn parseTSConfig(cache: *@This(), log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator) anyerror!?js_ast.Expr { + return try parse(cache, log, source, allocator, json_parser.ParseTSConfig); } }; diff --git a/src/cli.zig b/src/cli.zig index 7f2bd16a2..a7406a412 100644 --- a/src/cli.zig +++ b/src/cli.zig @@ -1,5 +1,15 @@ -usingnamespace @import("global.zig"); -usingnamespace @import("./http.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const constStrToU8 = _global.constStrToU8; +const FeatureFlags = _global.FeatureFlags; +const C = _global.C; const std = @import("std"); const lex = @import("js_lexer.zig"); @@ -10,8 +20,6 @@ const json_parser = @import("json_parser.zig"); const js_printer = @import("js_printer.zig"); const js_ast = @import("js_ast.zig"); const linker = @import("linker.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("defines.zig"); const panicky = @import("panic_handler.zig"); const sync = @import("./sync.zig"); const Api = @import("api/schema.zig").Api; @@ -47,8 +55,8 @@ var start_time: i128 = undefined; pub const Cli = struct { var wait_group: sync.WaitGroup = undefined; - pub fn startTransform(allocator: *std.mem.Allocator, args: Api.TransformOptions, log: *logger.Log) anyerror!void {} - pub fn start(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype, comptime MainPanicHandler: type) anyerror!void { + pub fn startTransform(_: std.mem.Allocator, _: Api.TransformOptions, _: *logger.Log) anyerror!void {} + pub fn start(allocator: std.mem.Allocator, _: anytype, _: anytype, comptime MainPanicHandler: type) anyerror!void { start_time = std.time.nanoTimestamp(); var log = try allocator.create(logger.Log); log.* = logger.Log.init(allocator); @@ -102,7 +110,7 @@ pub const Arguments = struct { } pub fn readFile( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, cwd: string, filename: string, ) ![]u8 { @@ -173,7 +181,7 @@ pub const Arguments = struct { std.os.exit(0); } - pub fn parse(allocator: *std.mem.Allocator, ctx: *Command.Context, comptime cmd: Command.Tag) !Api.TransformOptions { + pub fn parse(allocator: std.mem.Allocator, ctx: *Command.Context, comptime cmd: Command.Tag) !Api.TransformOptions { var diag = clap.Diagnostic{}; var args = clap.parse(clap.Help, ¶ms, .{ @@ -250,10 +258,6 @@ pub const Arguments = struct { // var output_dir = args.option("--outdir"); var output_dir: ?string = null; - var define_keys = defines_tuple.keys; - var define_values = defines_tuple.values; - var loader_keys = loader_tuple.keys; - var loader_values = loader_tuple.values; var entry_points = args.positionals(); switch (comptime cmd) { @@ -346,7 +350,7 @@ pub const Arguments = struct { else => {}, } - const ResolveMatcher = strings.ExactSizeMatcher(8); + // const ResolveMatcher = strings.ExactSizeMatcher(8); opts.resolve = Api.ResolveMode.lazy; @@ -438,15 +442,15 @@ pub const Arguments = struct { }; const AutoCommand = struct { - pub fn exec(allocator: *std.mem.Allocator) !void { + pub fn exec(allocator: std.mem.Allocator) !void { try HelpCommand.execWithReason(allocator, .invalid_command); } }; const InitCommand = struct { - pub fn exec(allocator: *std.mem.Allocator) !void {} + pub fn exec(_: std.mem.Allocator) !void {} }; pub const HelpCommand = struct { - pub fn exec(allocator: *std.mem.Allocator) !void { + pub fn exec(allocator: std.mem.Allocator) !void { @setCold(true); execWithReason(allocator, .explicit); } @@ -483,10 +487,6 @@ pub const HelpCommand = struct { }; pub fn printWithReason(comptime reason: Reason) void { - var cwd_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; - const cwd = std.os.getcwd(&cwd_buf) catch unreachable; - const dirname = std.fs.path.basename(cwd); - const fmt = \\> <r> <b><green>dev <r><d> ./a.ts ./b.jsx<r> Start a Bun Dev Server \\> <r> <b><magenta>bun <r><d> ./a.ts ./b.jsx<r> Bundle dependencies of input files into a <r><magenta>.bun<r> @@ -504,9 +504,9 @@ pub const HelpCommand = struct { \\ ; - var rand = std.rand.DefaultPrng.init(@intCast(u64, @maximum(std.time.milliTimestamp(), 0))); - const package_add_i = rand.random.uintAtMost(usize, packages_to_add_filler.len - 1); - const package_remove_i = rand.random.uintAtMost(usize, packages_to_remove_filler.len - 1); + var rand = std.rand.DefaultPrng.init(@intCast(u64, @maximum(std.time.milliTimestamp(), 0))).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); const args = .{ packages_to_add_filler[package_add_i], @@ -526,7 +526,7 @@ pub const HelpCommand = struct { Output.flush(); } - pub fn execWithReason(allocator: *std.mem.Allocator, comptime reason: Reason) void { + pub fn execWithReason(_: std.mem.Allocator, comptime reason: Reason) void { @setCold(true); printWithReason(reason); @@ -544,12 +544,12 @@ pub const PrintBundleCommand = struct { var out_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; var stdout = std.io.getStdOut(); - var input = try std.fs.openFileAbsolute(try std.os.realpath(ctx.args.entry_points[0], &out_buffer), .{ .read = true }); + var input = try std.fs.openFileAbsolute(try std.os.realpath(entry_point, &out_buffer), .{ .read = true }); const params = comptime [_]Arguments.ParamType{ clap.parseParam("--summary Peek inside the .bun") catch unreachable, }; - var jsBundleArgs = clap.parse(clap.Help, ¶ms, .{ .allocator = ctx.allocator }) catch |err| { + var jsBundleArgs = clap.parse(clap.Help, ¶ms, .{ .allocator = ctx.allocator }) catch { try NodeModuleBundle.printBundle(std.fs.File, input, @TypeOf(stdout), stdout); return; }; @@ -577,12 +577,12 @@ pub const Command = struct { start_time: i128, args: Api.TransformOptions = std.mem.zeroes(Api.TransformOptions), log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, positionals: []const string = &[_]string{}, debug: DebugOptions = DebugOptions{}, - pub fn create(allocator: *std.mem.Allocator, log: *logger.Log, comptime command: Command.Tag) anyerror!Context { + pub fn create(allocator: std.mem.Allocator, log: *logger.Log, comptime command: Command.Tag) anyerror!Context { var ctx = Command.Context{ .args = std.mem.zeroes(Api.TransformOptions), .log = log, @@ -598,7 +598,7 @@ pub const Command = struct { } }; - pub fn which(allocator: *std.mem.Allocator) Tag { + pub fn which(allocator: std.mem.Allocator) Tag { var args_iter = std.process.args(); // first one is the executable name const skipped = args_iter.skip(); @@ -607,9 +607,9 @@ pub const Command = struct { return .AutoCommand; } - var next_arg = (args_iter.next(allocator) orelse return .AutoCommand) catch unreachable; + var next_arg = ((args_iter.next(allocator) catch null) orelse return .AutoCommand); while (next_arg[0] == '-') { - next_arg = (args_iter.next(allocator) orelse return .AutoCommand) catch unreachable; + next_arg = ((args_iter.next(allocator) catch null) orelse return .AutoCommand); } const first_arg_name = std.mem.span(next_arg); @@ -660,7 +660,7 @@ pub const Command = struct { "help", }; - pub fn start(allocator: *std.mem.Allocator, log: *logger.Log) !void { + pub fn start(allocator: std.mem.Allocator, log: *logger.Log) !void { const tag = which(allocator); switch (tag) { .DiscordCommand => return try DiscordCommand.exec(allocator), @@ -809,7 +809,6 @@ pub const Command = struct { if (args.len > 2) { var remainder = args[2..]; var remainder_i: usize = 0; - var i: usize = 0; while (remainder_i < remainder.len and positional_i < positionals.len) : (remainder_i += 1) { var slice = std.mem.trim(u8, std.mem.span(remainder[remainder_i]), " \t\n;"); if (slice.len > 0) { diff --git a/src/cli/add_completions.zig b/src/cli/add_completions.zig index 6502a6850..b8001884d 100644 --- a/src/cli/add_completions.zig +++ b/src/cli/add_completions.zig @@ -37,8 +37,7 @@ pub const index: Index = if (Environment.isDebug) Index.initFill(&.{"OOMWorkArou var i: u8 = 'a'; var tokenizer = std.mem.tokenize(u8, add_completions, "\n"); - var last_index: usize = 0; - var last_len: usize = 0; + while (i <= 'z') { var init_tokenizer = tokenizer; var count: usize = 0; diff --git a/src/cli/build_command.zig b/src/cli/build_command.zig index b1acb357c..3d9f49ca0 100644 --- a/src/cli/build_command.zig +++ b/src/cli/build_command.zig @@ -1,4 +1,14 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const FeatureFlags = _global.FeatureFlags; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("../js_lexer.zig"); @@ -8,8 +18,6 @@ const options = @import("../options.zig"); const js_parser = @import("../js_parser.zig"); const js_ast = @import("../js_ast.zig"); const linker = @import("../linker.zig"); -usingnamespace @import("../ast/base.zig"); -usingnamespace @import("../defines.zig"); const panicky = @import("../panic_handler.zig"); const allocators = @import("../allocators.zig"); const sync = @import("../sync.zig"); @@ -20,6 +28,7 @@ const Command = @import("../cli.zig").Command; const bundler = @import("../bundler.zig"); const NodeModuleBundle = @import("../node_module_bundle.zig").NodeModuleBundle; const fs = @import("../fs.zig"); +const constStrToU8 = _global.constStrToU8; pub const BuildCommand = struct { pub fn exec(ctx: Command.Context) !void { @@ -48,8 +57,7 @@ pub const BuildCommand = struct { }, } var did_write = false; - var stderr_writer = Output.errorWriter(); - var buffered_writer = Output.errorWriter(); + defer Output.flush(); var writer = Output.writer(); var err_writer = writer; @@ -60,18 +68,17 @@ pub const BuildCommand = struct { const root_dir = result.root_dir orelse unreachable; if (std.os.getrlimit(.NOFILE)) |limit| { open_file_limit = limit.cur; - } else |err| {} + } else |_| {} var all_paths = try ctx.allocator.alloc([]const u8, result.output_files.len); var max_path_len: usize = 0; - var max_padded_size: usize = 0; for (result.output_files) |f, i| { all_paths[i] = f.input.text; } var from_path = resolve_path.longestCommonPath(all_paths); - for (result.output_files) |f, i| { + for (result.output_files) |f| { max_path_len = std.math.max( std.math.max(from_path.len, f.input.text.len) + 2 - from_path.len, max_path_len, @@ -83,13 +90,13 @@ pub const BuildCommand = struct { // On posix, file handles automatically close on process exit by the OS // Closing files shows up in profiling. // So don't do that unless we actually need to. - const do_we_need_to_close = !FeatureFlags.store_file_descriptors or (@intCast(usize, root_dir.fd) + open_file_limit) < result.output_files.len; + // const do_we_need_to_close = !FeatureFlags.store_file_descriptors or (@intCast(usize, root_dir.fd) + open_file_limit) < result.output_files.len; var filepath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; filepath_buf[0] = '.'; filepath_buf[1] = '/'; - for (result.output_files) |f, i| { + for (result.output_files) |f| { var rel_path: []const u8 = undefined; switch (f.value) { // easy mode: write the buffer @@ -109,12 +116,10 @@ pub const BuildCommand = struct { .copy => |value| { rel_path = value.pathname; - try f.copyTo(result.outbase, allocators.constStrToU8(rel_path), root_dir.fd); + try f.copyTo(result.outbase, constStrToU8(rel_path), root_dir.fd); }, .noop => {}, - .pending => |value| { - unreachable; - }, + .pending => unreachable, } // Print summary @@ -130,7 +135,7 @@ pub const BuildCommand = struct { } } - if (isDebug) { + if (Environment.isDebug) { err_writer.print("\nExpr count: {d}\n", .{js_ast.Expr.icount}) catch {}; err_writer.print("Stmt count: {d}\n", .{js_ast.Stmt.icount}) catch {}; err_writer.print("Binding count: {d}\n", .{js_ast.Binding.icount}) catch {}; diff --git a/src/cli/bun_command.zig b/src/cli/bun_command.zig index 33508ffdd..479b95e32 100644 --- a/src/cli/bun_command.zig +++ b/src/cli/bun_command.zig @@ -1,6 +1,15 @@ const std = @import("std"); const Command = @import("../cli.zig").Command; -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const lex = @import("../js_lexer.zig"); const logger = @import("../logger.zig"); @@ -30,7 +39,7 @@ const ServerBundleGeneratorThread = struct { inline fn _generate( logs: *logger.Log, env_loader_: *DotEnv.Loader, - allocator_: *std.mem.Allocator, + allocator_: std.mem.Allocator, ctx: Command.Context, _filepath: [*:0]const u8, server_conf: Api.LoadedFramework, diff --git a/src/cli/colon_list_type.zig b/src/cli/colon_list_type.zig index bb243feff..2dd5e2522 100644 --- a/src/cli/colon_list_type.zig +++ b/src/cli/colon_list_type.zig @@ -1,9 +1,18 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); pub fn ColonListType(comptime t: type, value_resolver: anytype) type { return struct { - pub fn init(allocator: *std.mem.Allocator, count: usize) !@This() { + pub fn init(allocator: std.mem.Allocator, count: usize) !@This() { var keys = try allocator.alloc(string, count); var values = try allocator.alloc(t, count); @@ -27,7 +36,7 @@ pub fn ColonListType(comptime t: type, value_resolver: anytype) type { } } - pub fn resolve(allocator: *std.mem.Allocator, input: []const string) !@This() { + pub fn resolve(allocator: std.mem.Allocator, input: []const string) !@This() { var list = try init(allocator, input.len); try list.load(input); return list; diff --git a/src/cli/create_command.zig b/src/cli/create_command.zig index 7245c9b06..ecb8b5cac 100644 --- a/src/cli/create_command.zig +++ b/src/cli/create_command.zig @@ -1,4 +1,14 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const constStrToU8 = _global.constStrToU8; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("../js_lexer.zig"); @@ -8,8 +18,6 @@ const options = @import("../options.zig"); const js_parser = @import("../js_parser.zig"); const js_ast = @import("../js_ast.zig"); const linker = @import("../linker.zig"); -usingnamespace @import("../ast/base.zig"); -usingnamespace @import("../defines.zig"); const panicky = @import("../panic_handler.zig"); const allocators = @import("../allocators.zig"); const sync = @import("../sync.zig"); @@ -32,7 +40,7 @@ const NPMClient = @import("../which_npm_client.zig").NPMClient; const which = @import("../which.zig").which; const clap = @import("clap"); const Lock = @import("../lock.zig").Lock; -const Headers = @import("../javascript/jsc/webcore/response.zig").Headers; +const Headers = @import("http").Headers; const CopyFile = @import("../copy_file.zig"); var bun_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; const Futex = @import("../futex.zig"); @@ -85,7 +93,7 @@ const UnsupportedPackages = struct { }; var bun_path: ?[:0]const u8 = null; -fn execTask(allocator: *std.mem.Allocator, task_: string, cwd: string, PATH: string, npm_client: ?NPMClient) void { +fn execTask(allocator: std.mem.Allocator, task_: string, cwd: string, _: string, npm_client: ?NPMClient) void { const task = std.mem.trim(u8, task_, " \n\r\t"); if (task.len == 0) return; @@ -238,7 +246,7 @@ const CreateOptions = struct { const BUN_CREATE_DIR = ".bun-create"; var home_dir_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; pub const CreateCommand = struct { - pub fn exec(ctx: Command.Context, positionals_: []const []const u8) !void { + pub fn exec(ctx: Command.Context, _: []const []const u8) !void { Global.configureAllocator(.{ .long_running = false }); try NetworkThread.init(); @@ -365,7 +373,6 @@ pub const CreateCommand = struct { break :brk positionals[1]; }; - var filename_writer = filesystem.dirname_store; const destination = try filesystem.dirname_store.append([]const u8, resolve_path.joinAbs(filesystem.top_level_dir, .auto, dirname)); var progress = std.Progress{}; @@ -527,7 +534,7 @@ pub const CreateCommand = struct { } } - const extracted_file_count = try Archive.extractToDisk( + _ = try Archive.extractToDisk( tarball_buf_list.items, destination, &archive_context, @@ -580,8 +587,6 @@ pub const CreateCommand = struct { var walker_ = try Walker.walk(template_dir, ctx.allocator, skip_files, skip_dirs); defer walker_.deinit(); - var count: usize = 0; - const FileCopier = struct { pub fn copy( destination_dir_: std.fs.Dir, @@ -712,7 +717,7 @@ pub const CreateCommand = struct { var source = logger.Source.initPathString("package.json", package_json_contents.list.items); - var package_json_expr = ParseJSON(&source, ctx.log, ctx.allocator) catch |err| { + var package_json_expr = ParseJSON(&source, ctx.log, ctx.allocator) catch { package_json_file = null; break :process_package_json; }; @@ -835,8 +840,7 @@ pub const CreateCommand = struct { is_nextjs = true; needs.bun_bun_for_nextjs = true; - const original_version = next_q.expr.data.e_string.utf8; - next_q.expr.data.e_string.utf8 = allocators.constStrToU8(target_nextjs_version); + next_q.expr.data.e_string.utf8 = constStrToU8(target_nextjs_version); } has_bun_framework_next = has_bun_framework_next or property.hasAnyPropertyNamed(&.{"bun-framework-next"}); @@ -1486,7 +1490,7 @@ pub const CreateCommand = struct { } if (npm_client_ != null and preinstall_tasks.items.len > 0) { - for (preinstall_tasks.items) |task, i| { + for (preinstall_tasks.items) |task| { execTask(ctx.allocator, task, destination, PATH, npm_client_.?); } } @@ -1496,7 +1500,6 @@ pub const CreateCommand = struct { const install_args = &[_]string{ npm_client.bin, "install" }; Output.flush(); Output.pretty("\n<r><d>$ <b><cyan>{s}<r><d> install", .{@tagName(npm_client.tag)}); - var writer = Output.writer(); if (install_args.len > 2) { for (install_args[2..]) |arg| { @@ -1522,13 +1525,13 @@ pub const CreateCommand = struct { } defer process.deinit(); - var term = try process.spawnAndWait(); + _ = try process.spawnAndWait(); _ = process.kill() catch undefined; } if (postinstall_tasks.items.len > 0) { - for (postinstall_tasks.items) |task, i| { + for (postinstall_tasks.items) |task| { execTask(ctx.allocator, task, destination, PATH, npm_client_); } } @@ -1688,7 +1691,7 @@ pub const Example = struct { var app_name_buf: [512]u8 = undefined; pub fn print(examples: []const Example, default_app_name: ?string) void { - for (examples) |example, i| { + for (examples) |example| { var app_name = default_app_name orelse (std.fmt.bufPrint(&app_name_buf, "./{s}-app", .{example.name[0..std.math.min(example.name.len, 492)]}) catch unreachable); if (example.description.len > 0) { @@ -1899,7 +1902,6 @@ pub const Example = struct { progress.name = "Fetching package.json"; refresher.refresh(); - const example_start = std.time.nanoTimestamp(); var url_buf: [1024]u8 = undefined; var mutable = try ctx.allocator.create(MutableString); mutable.* = try MutableString.init(ctx.allocator, 2048); @@ -2072,10 +2074,7 @@ pub const Example = struct { if (examples_object.asProperty("examples")) |q| { if (q.expr.data == .e_object) { - var count: usize = 0; - for (q.expr.data.e_object.properties) |property| { - count += 1; - } + const count = q.expr.data.e_object.properties.len; var list = try ctx.allocator.alloc(Example, count); for (q.expr.data.e_object.properties) |property, i| { @@ -2230,7 +2229,7 @@ const GitHandler = struct { process.stderr_behavior = .Inherit; defer process.deinit(); - var term = try process.spawnAndWait(); + _ = try process.spawnAndWait(); _ = process.kill() catch undefined; } diff --git a/src/cli/discord_command.zig b/src/cli/discord_command.zig index 3fea0626b..8b2d92cc5 100644 --- a/src/cli/discord_command.zig +++ b/src/cli/discord_command.zig @@ -1,10 +1,19 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const open = @import("../open.zig"); pub const DiscordCommand = struct { const discord_url: string = "https://bun.sh/discord"; - pub fn exec(allocator: *std.mem.Allocator) !void { + pub fn exec(_: std.mem.Allocator) !void { try open.openURL(discord_url); } }; diff --git a/src/cli/install_completions_command.zig b/src/cli/install_completions_command.zig index 0af95827c..80511eca9 100644 --- a/src/cli/install_completions_command.zig +++ b/src/cli/install_completions_command.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("../js_lexer.zig"); @@ -30,13 +39,13 @@ const NPMClient = @import("../which_npm_client.zig").NPMClient; const which = @import("../which.zig").which; const clap = @import("clap"); const Lock = @import("../lock.zig").Lock; -const Headers = @import("../javascript/jsc/webcore/response.zig").Headers; +const Headers = @import("http").Headers; const CopyFile = @import("../copy_file.zig"); const ShellCompletions = @import("./shell_completions.zig"); pub const InstallCompletionsCommand = struct { - pub fn testPath(completions_dir: string) !std.fs.Dir {} - pub fn exec(allocator: *std.mem.Allocator) !void { + pub fn testPath(_: string) !std.fs.Dir {} + pub fn exec(allocator: std.mem.Allocator) !void { var shell = ShellCompletions.Shell.unknown; if (std.os.getenvZ("SHELL")) |shell_name| { shell = ShellCompletions.Shell.fromEnv(@TypeOf(shell_name), shell_name); @@ -115,9 +124,8 @@ pub const InstallCompletionsCommand = struct { outer: { var paths = [_]string{ std.mem.span(config_dir), "./fish/completions" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } @@ -126,9 +134,8 @@ pub const InstallCompletionsCommand = struct { var paths = [_]string{ std.mem.span(data_dir), "./fish/completions" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } @@ -136,9 +143,8 @@ pub const InstallCompletionsCommand = struct { outer: { var paths = [_]string{ std.mem.span(home_dir), "./.config/fish/completions" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } @@ -147,15 +153,13 @@ pub const InstallCompletionsCommand = struct { if (!Environment.isAarch64) { // homebrew fish completions_dir = "/usr/local/share/fish/completions"; - break :found std.fs.openDirAbsoluteZ("/usr/local/share/fish/completions", .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsoluteZ("/usr/local/share/fish/completions", .{ .iterate = true }) catch break :outer; - }; } else { // homebrew fish completions_dir = "/opt/homebrew/share/fish/completions"; - break :found std.fs.openDirAbsoluteZ("/opt/homebrew/share/fish/completions", .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsoluteZ("/opt/homebrew/share/fish/completions", .{ .iterate = true }) catch break :outer; - }; } } } @@ -180,18 +184,16 @@ pub const InstallCompletionsCommand = struct { var paths = [_]string{ std.mem.span(data_dir), "./zsh-completions" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } if (std.os.getenvZ("BUN_INSTALL")) |home_dir| { outer: { completions_dir = home_dir; - break :found std.fs.openDirAbsolute(home_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(home_dir, .{ .iterate = true }) catch break :outer; - }; } } @@ -200,9 +202,8 @@ pub const InstallCompletionsCommand = struct { outer: { var paths = [_]string{ std.mem.span(home_dir), "./.oh-my-zsh/completions" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } @@ -210,9 +211,8 @@ pub const InstallCompletionsCommand = struct { outer: { var paths = [_]string{ std.mem.span(home_dir), "./.bun" }; completions_dir = resolve_path.joinAbsString(cwd, &paths, .auto); - break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch |err| { + break :found std.fs.openDirAbsolute(completions_dir, .{ .iterate = true }) catch break :outer; - }; } } } diff --git a/src/cli/package_manager_command.zig b/src/cli/package_manager_command.zig index 31064948a..447a21775 100644 --- a/src/cli/package_manager_command.zig +++ b/src/cli/package_manager_command.zig @@ -4,7 +4,7 @@ const std = @import("std"); const strings = @import("strings"); pub const PackageManagerCommand = struct { - pub fn printHelp(allocator: *std.mem.Allocator) void {} + pub fn printHelp(_: std.mem.Allocator) void {} pub fn exec(ctx: Command.Context) !void { var args = try std.process.argsAlloc(ctx.allocator); args = args[1..]; diff --git a/src/cli/run_command.zig b/src/cli/run_command.zig index ae9dfd715..2f33e872f 100644 --- a/src/cli/run_command.zig +++ b/src/cli/run_command.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("../js_lexer.zig"); @@ -74,7 +83,7 @@ pub const RunCommand = struct { return null; } - const BUN_BIN_NAME = if (isDebug) "bun-debug" else "bun"; + const BUN_BIN_NAME = if (Environment.isDebug) "bun-debug" else "bun"; const BUN_RUN = std.fmt.comptimePrint("{s} run", .{BUN_BIN_NAME}); // Look for invocations of any: @@ -95,7 +104,6 @@ pub const RunCommand = struct { 'y' => { if (delimiter > 0) { if (entry_i + "arn".len < script.len) { - const yarn_i = entry_i + "arn ".len; var remainder = script[start..]; if (remainder.len > "yarn ".len and strings.eqlComptimeIgnoreLen(remainder[0.."yarn ".len], "yarn ")) { const next = remainder["yarn ".len..]; @@ -219,7 +227,7 @@ pub const RunCommand = struct { if (passthrough.len > 0) { var combined_script_len: usize = script.len; - for (passthrough) |p, i| { + for (passthrough) |p| { combined_script_len += p.len + 1; } var combined_script_buf = try ctx.allocator.alloc(u8, combined_script_len); @@ -383,7 +391,6 @@ pub const RunCommand = struct { if (bin_dir.getEntriesConst()) |entries| { var iter = entries.data.iterator(); var has_copied = false; - var path_slice: string = ""; var dir_slice: string = ""; while (iter.next()) |entry| { if (entry.value.kind(&this_bundler.fs.fs) == .file) { @@ -544,7 +551,7 @@ pub const RunCommand = struct { if (strings.eqlComptime(std.mem.span(argv), "--")) { if (std.os.argv.len > i + 1) { var count: usize = 0; - for (std.os.argv[i + 1 ..]) |arg| { + for (std.os.argv[i + 1 ..]) |_| { count += 1; } try passthrough_list.ensureTotalCapacity(count); @@ -798,7 +805,6 @@ pub const RunCommand = struct { did_print = true; Output.prettyln("<r><blue><b>{s}<r> scripts:<r>\n", .{display_name}); - var is_first = true; while (iterator.next()) |entry| { Output.prettyln("\n", .{}); Output.prettyln(" bun run <blue>{s}<r>\n", .{entry.key_ptr.*}); diff --git a/src/cli/shell_completions.zig b/src/cli/shell_completions.zig index 08f78d19c..10269de11 100644 --- a/src/cli/shell_completions.zig +++ b/src/cli/shell_completions.zig @@ -1,5 +1,14 @@ const std = @import("std"); -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; pub const Shell = enum { unknown, diff --git a/src/cli/upgrade_command.zig b/src/cli/upgrade_command.zig index 801461a03..9c1aa67bc 100644 --- a/src/cli/upgrade_command.zig +++ b/src/cli/upgrade_command.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const lex = @import("../js_lexer.zig"); @@ -30,7 +39,7 @@ const DotEnv = @import("../env_loader.zig"); const which = @import("../which.zig").which; const clap = @import("clap"); const Lock = @import("../lock.zig").Lock; -const Headers = @import("../javascript/jsc/webcore/response.zig").Headers; +const Headers = @import("http").Headers; const CopyFile = @import("../copy_file.zig"); const NetworkThread = @import("network_thread"); @@ -79,7 +88,7 @@ pub const UpgradeCheckerThread = struct { fn _run(env_loader: *DotEnv.Loader) anyerror!void { var rand = std.rand.DefaultPrng.init(@intCast(u64, @maximum(std.time.milliTimestamp(), 0))); - const delay = rand.random.intRangeAtMost(u64, 100, 10000); + const delay = rand.random().intRangeAtMost(u64, 100, 10000); std.time.sleep(std.time.ns_per_ms * delay); Output.Source.configureThread(); @@ -113,7 +122,7 @@ pub const UpgradeCommand = struct { var tmpdir_path_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; pub fn getLatestVersion( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, env_loader: *DotEnv.Loader, refresher: *std.Progress, progress: *std.Progress.Node, @@ -268,7 +277,7 @@ pub const UpgradeCommand = struct { while (assets.next()) |asset| { if (asset.asProperty("content_type")) |content_type| { const content_type_ = (content_type.expr.asString(allocator)) orelse continue; - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyln("Content-type: {s}", .{content_type_}); Output.flush(); } @@ -278,13 +287,13 @@ pub const UpgradeCommand = struct { if (asset.asProperty("name")) |name_| { if (name_.expr.asString(allocator)) |name| { - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyln("Comparing {s} vs {s}", .{ name, Version.zip_filename }); Output.flush(); } if (strings.eqlComptime(name, Version.zip_filename)) { version.zip_url = (asset.asProperty("browser_download_url") orelse break :get_asset).expr.asString(allocator) orelse break :get_asset; - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyln("Found Zip {s}", .{version.zip_url}); Output.flush(); } @@ -414,12 +423,12 @@ pub const UpgradeCommand = struct { const version_name = version.name().?; var save_dir_ = filesystem.tmpdir(); - var save_dir = save_dir_.makeOpenPath(version_name, .{ .iterate = true }) catch |err| { + var save_dir = save_dir_.makeOpenPath(version_name, .{ .iterate = true }) catch { Output.prettyErrorln("<r><red>error:<r> Failed to open temporary directory", .{}); Output.flush(); std.os.exit(1); }; - var tmpdir_path = std.os.getFdPath(save_dir.fd, &tmpdir_path_buf) catch |err| { + var tmpdir_path = std.os.getFdPath(save_dir.fd, &tmpdir_path_buf) catch { Output.prettyErrorln("<r><red>error:<r> Failed to read temporary directory", .{}); Output.flush(); std.os.exit(1); diff --git a/src/copy_file.zig b/src/copy_file.zig index f60638f9f..7fe6dddb1 100644 --- a/src/copy_file.zig +++ b/src/copy_file.zig @@ -8,7 +8,7 @@ const CopyFileError = error{SystemResources} || os.CopyFileRangeError || os.Send // The copy starts at offset 0, the initial offsets are preserved. // No metadata is transferred over. pub fn copy(fd_in: os.fd_t, fd_out: os.fd_t) CopyFileError!void { - if (comptime std.Target.current.isDarwin()) { + if (comptime @import("builtin").target.isDarwin()) { const rc = os.system.fcopyfile(fd_in, fd_out, null, os.system.COPYFILE_DATA); switch (os.errno(rc)) { .SUCCESS => return, @@ -21,7 +21,7 @@ pub fn copy(fd_in: os.fd_t, fd_out: os.fd_t) CopyFileError!void { } } - if (comptime std.Target.current.os.tag == .linux) { + if (comptime @import("builtin").target.os.tag == .linux) { // Try copy_file_range first as that works at the FS level and is the // most efficient method (if available). var offset: u64 = 0; diff --git a/src/css_scanner.zig b/src/css_scanner.zig index b92397214..aa5062cbb 100644 --- a/src/css_scanner.zig +++ b/src/css_scanner.zig @@ -1,12 +1,25 @@ const Fs = @import("fs.zig"); const std = @import("std"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const CodePoint = _global.CodePoint; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FeatureFlags = _global.FeatureFlags; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const options = @import("./options.zig"); const import_record = @import("import_record.zig"); const logger = @import("./logger.zig"); const Options = options; const resolver = @import("./resolver/resolver.zig"); const _linker = @import("./linker.zig"); + const replacementCharacter: CodePoint = 0xFFFD; pub const Chunk = struct { @@ -107,7 +120,7 @@ pub const Scanner = struct { has_newline_before: bool = false, has_delimiter_before: bool = false, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, source: *const logger.Source, codepoint: CodePoint = -1, @@ -115,7 +128,7 @@ pub const Scanner = struct { did_warn_tailwind: bool = false, - pub fn init(log: *logger.Log, allocator: *std.mem.Allocator, source: *const logger.Source) Scanner { + pub fn init(log: *logger.Log, allocator: std.mem.Allocator, source: *const logger.Source) Scanner { return Scanner{ .log = log, .source = source, .allocator = allocator }; } @@ -130,7 +143,7 @@ pub const Scanner = struct { scanner.codepoint = scanner.nextCodepoint(); scanner.approximate_newline_count += @boolToInt(scanner.codepoint == '\n'); } - pub fn raw(scanner: *Scanner) string {} + pub fn raw(_: *Scanner) string {} pub fn isValidEscape(scanner: *Scanner) bool { if (scanner.codepoint != '\\') return false; @@ -557,8 +570,6 @@ pub const Scanner = struct { // We want to avoid messing with other rules scanner.start = start; - var url_token_start = scanner.current; - var url_token_end = scanner.current; // "Imported rules must precede all other types of rule" // https://developer.mozilla.org/en-US/docs/Web/CSS/@import // @import url; @@ -566,8 +577,6 @@ pub const Scanner = struct { // @import url supports( supports-query ); // @import url supports( supports-query ) list-of-media-queries; - var is_url_token = false; - var quote: CodePoint = -1; while (isWhitespace(scanner.codepoint)) { scanner.step(); } @@ -889,7 +898,7 @@ pub fn NewWriter( pub fn scan( writer: *Writer, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, did_warn_tailwind: *bool, ) !void { var scanner = Scanner.init( @@ -907,7 +916,7 @@ pub fn NewWriter( pub fn append( writer: *Writer, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, did_warn_tailwind: *bool, ) !usize { var scanner = Scanner.init( @@ -928,7 +937,7 @@ pub fn NewWriter( pub fn run( writer: *Writer, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, did_warn_tailwind: *bool, ) !void { var scanner = Scanner.init( @@ -1004,7 +1013,7 @@ pub fn NewWriter( pub fn scanChunk(writer: *Writer, chunk: Chunk) !void { switch (chunk.content) { - .t_url => |url| {}, + .t_url => {}, .t_import => |import| { const resolved = writer.linker.resolveCSS( writer.source.path, @@ -1037,7 +1046,7 @@ pub fn NewWriter( try writer.buildCtx.addCSSImport(resolved); }, - .t_verbatim => |verbatim| {}, + .t_verbatim => {}, } } @@ -1089,7 +1098,7 @@ pub fn NewWriter( writer.written += 1; } }, - .t_verbatim => |verbatim| { + .t_verbatim => { defer writer.written += @intCast(usize, chunk.range.len); if (comptime std.meta.trait.hasFn("copyFileRange")(WriterType)) { try writer.ctx.copyFileRange( @@ -1145,7 +1154,7 @@ pub fn NewBundler( watcher: *Watcher, fs_reader: FileReader, fs: FSType, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, pub fn bundle( absolute_path: string, fs: FSType, @@ -1153,8 +1162,8 @@ pub fn NewBundler( watcher: *Watcher, fs_reader: FileReader, hash: u32, - input_fd: ?StoredFileDescriptorType, - allocator: *std.mem.Allocator, + _: ?StoredFileDescriptorType, + allocator: std.mem.Allocator, log: *logger.Log, linker: Linker, ) !CodeCount { diff --git a/src/darwin_c.zig b/src/darwin_c.zig index 559ebe8da..e227ee8bf 100644 --- a/src/darwin_c.zig +++ b/src/darwin_c.zig @@ -1,11 +1,11 @@ const std = @import("std"); -usingnamespace std.c; const builtin = @import("builtin"); const os = std.os; const mem = std.mem; const Stat = std.fs.File.Stat; const Kind = std.fs.File.Kind; const StatError = std.fs.File.StatError; +const off_t = std.c.off_t; const errno = os.errno; const zeroes = mem.zeroes; @@ -66,14 +66,14 @@ pub extern "c" fn clonefile([*c]const u8, [*c]const u8, uint32_t: c_int) c_int; // os.FILETYPE_SOCKET_STREAM, os.FILETYPE_SOCKET_DGRAM => Kind.UnixDomainSocket, // else => Kind.Unknown, // }, -// else => switch (st.mode & os.S_IFMT) { -// os.S_IFBLK => Kind.BlockDevice, -// os.S_IFCHR => Kind.CharacterDevice, -// os.S_IFDIR => Kind.Directory, -// os.S_IFIFO => Kind.NamedPipe, -// os.S_IFLNK => Kind.SymLink, -// os.S_IFREG => Kind.File, -// os.S_IFSOCK => Kind.UnixDomainSocket, +// else => switch (st.mode & os.S.IFMT) { +// os.S.IFBLK => Kind.BlockDevice, +// os.S.IFCHR => Kind.CharacterDevice, +// os.S.IFDIR => Kind.Directory, +// os.S.IFIFO => Kind.NamedPipe, +// os.S.IFLNK => Kind.SymLink, +// os.S.IFREG => Kind.File, +// os.S.IFSOCK => Kind.UnixDomainSocket, // else => Kind.Unknown, // }, // }, @@ -105,13 +105,13 @@ pub fn preallocate_file(fd: os.fd_t, offset: off_t, len: off_t) !void { fstore.fst_length = len + offset; // Based on https://api.kde.org/frameworks/kcoreaddons/html/posix__fallocate__mac_8h_source.html - var rc = os.system.fcntl(fd, os.F_PREALLOCATE, &fstore); + var rc = os.system.fcntl(fd, os.F.PREALLOCATE, &fstore); switch (rc) { 0 => return, else => { fstore.fst_flags = F_ALLOCATEALL; - rc = os.system.fcntl(fd, os.F_PREALLOCATE, &fstore); + rc = os.system.fcntl(fd, os.F.PREALLOCATE, &fstore); }, } diff --git a/src/defines-table.zig b/src/defines-table.zig index a09d304df..1e12d21f7 100644 --- a/src/defines-table.zig +++ b/src/defines-table.zig @@ -1,4 +1,13 @@ -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; // If something is in this list, then a direct identifier expression or property // access chain matching this will be assumed to have no side effects and will diff --git a/src/defines.zig b/src/defines.zig index e2f7b3378..7259f41d2 100644 --- a/src/defines.zig +++ b/src/defines.zig @@ -4,8 +4,17 @@ const logger = @import("logger.zig"); const js_lexer = @import("js_lexer.zig"); const json_parser = @import("json_parser.zig"); const fs = @import("fs.zig"); -usingnamespace @import("global.zig"); -usingnamespace @import("ast/base.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const Ref = @import("ast/base.zig").Ref; const GlobalDefinesKey = @import("./defines-table.zig").GlobalDefinesKey; @@ -66,7 +75,7 @@ pub const DefineData = struct { }; } - pub fn from_mergable_input(defines: RawDefines, user_defines: *UserDefines, log: *logger.Log, allocator: *std.mem.Allocator) !void { + 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())); var iter = defines.iterator(); while (iter.next()) |entry| { @@ -157,7 +166,7 @@ pub const DefineData = struct { } } - pub fn from_input(defines: RawDefines, log: *logger.Log, allocator: *std.mem.Allocator) !UserDefines { + pub fn from_input(defines: RawDefines, log: *logger.Log, allocator: std.mem.Allocator) !UserDefines { var user_defines = UserDefines.init(allocator); try from_mergable_input(defines, &user_defines, log, allocator); @@ -199,9 +208,9 @@ var __filename = js_ast.E.String{ .utf8 = __filename_str }; pub const Define = struct { identifiers: std.StringHashMap(IdentifierDefine), dots: std.StringHashMap([]DotDefine), - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn insertFromIterator(define: *Define, allocator: *std.mem.Allocator, comptime Iterator: type, iter: Iterator) !void { + pub fn insertFromIterator(define: *Define, allocator: std.mem.Allocator, comptime Iterator: type, iter: Iterator) !void { while (iter.next()) |user_define| { const user_define_key = user_define.key_ptr.*; // If it has a dot, then it's a DotDefine. @@ -255,18 +264,16 @@ pub const Define = struct { } } - pub fn init(allocator: *std.mem.Allocator, _user_defines: ?UserDefines, string_defines: ?UserDefinesArray) !*@This() { + pub fn init(allocator: std.mem.Allocator, _user_defines: ?UserDefines, string_defines: ?UserDefinesArray) !*@This() { var define = try allocator.create(Define); define.allocator = allocator; define.identifiers = std.StringHashMap(IdentifierDefine).init(allocator); define.dots = std.StringHashMap([]DotDefine).init(allocator); - try define.identifiers.ensureCapacity(641 + 2 + 1); - try define.dots.ensureCapacity(64); + try define.identifiers.ensureTotalCapacity(641 + 2 + 1); + try define.dots.ensureTotalCapacity(64); var val = js_ast.Expr.Data{ .e_undefined = .{} }; - var ident_define = IdentifierDefine{ - .value = val, - }; + var value_define = DefineData{ .value = val, .valueless = true }; // Step 1. Load the globals into the hash tables for (GlobalDefinesKey) |global| { diff --git a/src/deps/boringssl.translated.zig b/src/deps/boringssl.translated.zig index 7e2bb77e5..b0509ef1e 100644 --- a/src/deps/boringssl.translated.zig +++ b/src/deps/boringssl.translated.zig @@ -1,5 +1,36 @@ const std = @import("std"); -pub usingnamespace @import("std").zig.c_builtins; +const C = @import("std").zig.c_builtins; + +const pthread_rwlock_t = C.pthread_rwlock_t; +const time_t = C.time_t; +const va_list = C.va_list; +const struct_timeval = C.struct_timeval; +const __attribute__ = C.__attribute__; +const ERR_LIB_DSO = C.ERR_LIB_DSO; +const ERR_LIB_STORE = C.ERR_LIB_STORE; +const ERR_LIB_FIPS = C.ERR_LIB_FIPS; +const ERR_LIB_CMS = C.ERR_LIB_CMS; +const ERR_LIB_TS = C.ERR_LIB_TS; +const ERR_LIB_JPAKE = C.ERR_LIB_JPAKE; +const DEFINE_NAMED_STACK_OF = C.DEFINE_NAMED_STACK_OF; +const __FILE__ = C.__FILE__; +const struct_timespec = C.struct_timespec; +const _CLOCK_REALTIME = C._CLOCK_REALTIME; +const _CLOCK_MONOTONIC = C._CLOCK_MONOTONIC; +const _CLOCK_MONOTONIC_RAW = C._CLOCK_MONOTONIC_RAW; +const _CLOCK_MONOTONIC_RAW_APPROX = C._CLOCK_MONOTONIC_RAW_APPROX; +const _CLOCK_UPTIME_RAW = C._CLOCK_UPTIME_RAW; +const _CLOCK_UPTIME_RAW_APPROX = C._CLOCK_UPTIME_RAW_APPROX; +const _CLOCK_PROCESS_CPUTIME_ID = C._CLOCK_PROCESS_CPUTIME_ID; +const _CLOCK_THREAD_CPUTIME_ID = C._CLOCK_THREAD_CPUTIME_ID; +const NULL = C.NULL; +const DECLARE_ASN1_FUNCTIONS_name = C.DECLARE_ASN1_FUNCTIONS_name; +const DECLARE_ASN1_ALLOC_FUNCTIONS_name = C.DECLARE_ASN1_ALLOC_FUNCTIONS_name; +const timercmp = C.timercmp; +const doesnt_exist = C.doesnt_exist; +const struct_tm = C.struct_tm; +const enum_ssl_verify_result_t = C.enum_ssl_verify_result_t; + pub const CRYPTO_THREADID = c_int; pub const struct_asn1_null_st = opaque {}; pub const ASN1_NULL = struct_asn1_null_st; @@ -128,7 +159,7 @@ pub const struct_openssl_method_common_st = extern struct { }; pub const struct_rsa_meth_st = extern struct { common: struct_openssl_method_common_st, - app_data: ?*c_void, + app_data: ?*anyopaque, init: ?fn (?*RSA) callconv(.C) c_int, finish: ?fn (?*RSA) callconv(.C) c_int, size: ?fn (?*const RSA) callconv(.C) usize, @@ -190,7 +221,7 @@ pub const DH = struct_dh_st; pub const struct_ec_key_st = opaque {}; pub const EC_KEY = struct_ec_key_st; const union_unnamed_2 = extern union { - ptr: ?*c_void, + ptr: ?*anyopaque, rsa: ?*RSA, dsa: [*c]DSA, dh: [*c]DH, @@ -207,8 +238,8 @@ pub const struct_evp_pkey_st = extern struct { pub const EVP_PKEY = struct_evp_pkey_st; pub const struct_evp_cipher_ctx_st = extern struct { cipher: [*c]const EVP_CIPHER, - app_data: ?*c_void, - cipher_data: ?*c_void, + app_data: ?*anyopaque, + cipher_data: ?*anyopaque, key_len: c_uint, encrypt: c_int, flags: u32, @@ -228,11 +259,11 @@ pub const struct_evp_cipher_st = extern struct { iv_len: c_uint, ctx_size: c_uint, flags: u32, - app_data: ?*c_void, + app_data: ?*anyopaque, init: ?fn ([*c]EVP_CIPHER_CTX, [*c]const u8, [*c]const u8, c_int) callconv(.C) c_int, cipher: ?fn ([*c]EVP_CIPHER_CTX, [*c]u8, [*c]const u8, usize) callconv(.C) c_int, cleanup: ?fn ([*c]EVP_CIPHER_CTX) callconv(.C) void, - ctrl: ?fn ([*c]EVP_CIPHER_CTX, c_int, c_int, ?*c_void) callconv(.C) c_int, + ctrl: ?fn ([*c]EVP_CIPHER_CTX, c_int, c_int, ?*anyopaque) callconv(.C) c_int, }; pub const EVP_CIPHER = struct_evp_cipher_st; pub const struct_evp_cipher_info_st = extern struct { @@ -280,7 +311,7 @@ pub const struct_bio_method_st = extern struct { bread: ?fn ([*c]BIO, [*c]u8, c_int) callconv(.C) c_int, bputs: ?fn ([*c]BIO, [*c]const u8) callconv(.C) c_int, bgets: ?fn ([*c]BIO, [*c]u8, c_int) callconv(.C) c_int, - ctrl: ?fn ([*c]BIO, c_int, c_long, ?*c_void) callconv(.C) c_long, + ctrl: ?fn ([*c]BIO, c_int, c_long, ?*anyopaque) callconv(.C) c_long, create: ?fn ([*c]BIO) callconv(.C) c_int, destroy: ?fn ([*c]BIO) callconv(.C) c_int, callback_ctrl: ?fn ([*c]BIO, c_int, bio_info_cb) callconv(.C) c_long, @@ -288,7 +319,7 @@ pub const struct_bio_method_st = extern struct { pub const struct_blake2b_state_st = opaque {}; pub const BLAKE2B_CTX = struct_blake2b_state_st; pub const struct_bn_gencb_st = extern struct { - arg: ?*c_void, + arg: ?*anyopaque, callback: ?fn (c_int, c_int, [*c]struct_bn_gencb_st) callconv(.C) c_int, }; pub const BN_GENCB = struct_bn_gencb_st; @@ -335,7 +366,7 @@ pub const struct_ec_point_st = opaque {}; pub const EC_POINT = struct_ec_point_st; pub const struct_ecdsa_method_st = extern struct { common: struct_openssl_method_common_st, - app_data: ?*c_void, + app_data: ?*anyopaque, init: ?fn (?*EC_KEY) callconv(.C) c_int, finish: ?fn (?*EC_KEY) callconv(.C) c_int, group_order_size: ?fn (?*const EC_KEY) callconv(.C) usize, @@ -357,7 +388,7 @@ pub const EVP_PKEY_CTX = struct_evp_pkey_ctx_st; pub const struct_evp_md_pctx_ops = opaque {}; pub const struct_env_md_ctx_st = extern struct { digest: ?*const EVP_MD, - md_data: ?*c_void, + md_data: ?*anyopaque, pctx: ?*EVP_PKEY_CTX, pctx_ops: ?*const struct_evp_md_pctx_ops, }; @@ -561,10 +592,10 @@ pub const struct_x509_trust_st = extern struct { check_trust: ?fn ([*c]struct_x509_trust_st, ?*X509, c_int) callconv(.C) c_int, name: [*c]u8, arg1: c_int, - arg2: ?*c_void, + arg2: ?*anyopaque, }; pub const X509_TRUST = struct_x509_trust_st; -pub const OPENSSL_BLOCK = ?*c_void; +pub const OPENSSL_BLOCK = ?*anyopaque; pub const fpos_t = isize; pub const struct___sbuf = extern struct { _base: [*c]u8, @@ -579,11 +610,11 @@ pub const struct___sFILE = extern struct { _file: c_short, _bf: struct___sbuf, _lbfsize: c_int, - _cookie: ?*c_void, - _close: ?fn (?*c_void) callconv(.C) c_int, - _read: ?fn (?*c_void, [*c]u8, c_int) callconv(.C) c_int, - _seek: ?fn (?*c_void, fpos_t, c_int) callconv(.C) fpos_t, - _write: ?fn (?*c_void, [*c]const u8, c_int) callconv(.C) c_int, + _cookie: ?*anyopaque, + _close: ?fn (?*anyopaque) callconv(.C) c_int, + _read: ?fn (?*anyopaque, [*c]u8, c_int) callconv(.C) c_int, + _seek: ?fn (?*anyopaque, fpos_t, c_int) callconv(.C) fpos_t, + _write: ?fn (?*anyopaque, [*c]const u8, c_int) callconv(.C) c_int, _ub: struct___sbuf, _extra: ?*struct___sFILEX, _ur: c_int, @@ -601,11 +632,11 @@ 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; pub extern fn BUF_MEM_grow(buf: [*c]BUF_MEM, len: usize) usize; pub extern fn BUF_MEM_grow_clean(buf: [*c]BUF_MEM, len: usize) usize; -pub extern fn BUF_MEM_append(buf: [*c]BUF_MEM, in: ?*const c_void, len: usize) c_int; +pub extern fn BUF_MEM_append(buf: [*c]BUF_MEM, in: ?*const anyopaque, len: usize) c_int; 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 c_void, size: usize) ?*c_void; +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; @@ -625,8 +656,8 @@ pub extern fn ERR_peek_last_error_line_data(file: [*c][*c]const u8, line: [*c]c_ 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 = ?fn ([*c]const u8, usize, ?*c_void) callconv(.C) c_int; -pub extern fn ERR_print_errors_cb(callback: ERR_print_errors_callback_t, ctx: ?*c_void) void; +pub const ERR_print_errors_callback_t = ?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; @@ -675,12 +706,12 @@ 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_add_error_data(count: c_uint, ...) void; pub extern fn ERR_add_error_dataf(format: [*c]const u8, ...) void; -pub const stack_free_func = ?fn (?*c_void) callconv(.C) void; -pub const stack_copy_func = ?fn (?*c_void) callconv(.C) ?*c_void; -pub const stack_cmp_func = ?fn ([*c]?*const c_void, [*c]?*const c_void) callconv(.C) c_int; +pub const stack_free_func = ?fn (?*anyopaque) callconv(.C) void; +pub const stack_copy_func = ?fn (?*anyopaque) callconv(.C) ?*anyopaque; +pub const stack_cmp_func = ?fn ([*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int; pub const struct_stack_st = extern struct { num: usize, - data: [*c]?*c_void, + data: [*c]?*anyopaque, sorted: c_int, num_alloc: usize, comp: stack_cmp_func, @@ -690,48 +721,48 @@ pub extern fn sk_new(comp: stack_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) ?*c_void; -pub extern fn sk_set(sk: [*c]_STACK, i: usize, p: ?*c_void) ?*c_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: ?fn (stack_free_func, ?*c_void) callconv(.C) void, free_func: stack_free_func) void; -pub extern fn sk_insert(sk: [*c]_STACK, p: ?*c_void, where: usize) usize; -pub extern fn sk_delete(sk: [*c]_STACK, where: usize) ?*c_void; -pub extern fn sk_delete_ptr(sk: [*c]_STACK, p: ?*const c_void) ?*c_void; -pub extern fn sk_find(sk: [*c]const _STACK, out_index: [*c]usize, p: ?*const c_void, call_cmp_func: ?fn (stack_cmp_func, [*c]?*const c_void, [*c]?*const c_void) callconv(.C) c_int) c_int; -pub extern fn sk_shift(sk: [*c]_STACK) ?*c_void; -pub extern fn sk_push(sk: [*c]_STACK, p: ?*c_void) usize; -pub extern fn sk_pop(sk: [*c]_STACK) ?*c_void; +pub extern fn sk_pop_free_ex(sk: [*c]_STACK, call_free_func: ?fn (stack_free_func, ?*anyopaque) callconv(.C) void, free_func: stack_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: ?fn (stack_cmp_func, [*c]?*const anyopaque, [*c]?*const anyopaque) callconv(.C) c_int) 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_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: ?fn (stack_copy_func, ?*c_void) callconv(.C) ?*c_void, copy_func: stack_copy_func, call_free_func: ?fn (stack_free_func, ?*c_void) callconv(.C) void, free_func: stack_free_func) [*c]_STACK; +pub extern fn sk_deep_copy(sk: [*c]const _STACK, call_copy_func: ?fn (stack_copy_func, ?*anyopaque) callconv(.C) ?*anyopaque, copy_func: stack_copy_func, call_free_func: ?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 const OPENSSL_STRING = [*c]u8; -pub const stack_void_free_func = ?fn (?*c_void) callconv(.C) void; -pub const stack_void_copy_func = ?fn (?*c_void) callconv(.C) ?*c_void; -pub const stack_void_cmp_func = ?fn ([*c]?*const c_void, [*c]?*const c_void) callconv(.C) c_int; -pub fn sk_void_call_free_func(arg_free_func: stack_free_func, arg_ptr: ?*c_void) callconv(.C) void { +pub const stack_void_free_func = ?fn (?*anyopaque) callconv(.C) void; +pub const stack_void_copy_func = ?fn (?*anyopaque) callconv(.C) ?*anyopaque; +pub const stack_void_cmp_func = ?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 { var free_func = arg_free_func; var ptr = arg_ptr; - @ptrCast(stack_void_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), free_func)).?(ptr); + @ptrCast(stack_void_free_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) void), free_func)).?(ptr); } -pub fn sk_void_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_void_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(stack_void_copy_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) ?*c_void), copy_func)).?(ptr); + return @ptrCast(stack_void_copy_func, @alignCast(@import("std").meta.alignment(fn (?*anyopaque) callconv(.C) ?*anyopaque), copy_func)).?(ptr); } -pub fn sk_void_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; - var a_ptr: ?*const c_void = a.*; - var b_ptr: ?*const c_void = b.*; - return @ptrCast(stack_void_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const c_void, [*c]?*const c_void) callconv(.C) c_int), cmp_func)).?(&a_ptr, &b_ptr); + 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); } pub fn sk_void_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_void_new_null() callconv(.C) ?*struct_stack_st_void { return @ptrCast(?*struct_stack_st_void, sk_new_null()); @@ -744,12 +775,12 @@ 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))); } -pub fn sk_void_value(arg_sk: ?*const struct_stack_st_void, arg_i: usize) callconv(.C) ?*c_void { +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); } -pub fn sk_void_set(arg_sk: ?*struct_stack_st_void, arg_i: usize, arg_p: ?*c_void) callconv(.C) ?*c_void { +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; @@ -762,40 +793,40 @@ pub fn sk_void_free(arg_sk: ?*struct_stack_st_void) callconv(.C) void { pub fn sk_void_pop_free(arg_sk: ?*struct_stack_st_void, arg_free_func: stack_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 (?*c_void) callconv(.C) void), 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))); } -pub fn sk_void_insert(arg_sk: ?*struct_stack_st_void, arg_p: ?*c_void, arg_where: usize) callconv(.C) usize { +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); } -pub fn sk_void_delete(arg_sk: ?*struct_stack_st_void, arg_where: usize) callconv(.C) ?*c_void { +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); } -pub fn sk_void_delete_ptr(arg_sk: ?*struct_stack_st_void, arg_p: ?*const c_void) callconv(.C) ?*c_void { +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); } -pub fn sk_void_find(arg_sk: ?*const struct_stack_st_void, arg_out_index: [*c]usize, arg_p: ?*const c_void) callconv(.C) c_int { +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); } -pub fn sk_void_shift(arg_sk: ?*struct_stack_st_void) callconv(.C) ?*c_void { +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))); } -pub fn sk_void_push(arg_sk: ?*struct_stack_st_void, arg_p: ?*c_void) callconv(.C) usize { +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); } -pub fn sk_void_pop(arg_sk: ?*struct_stack_st_void) callconv(.C) ?*c_void { +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))); } @@ -814,29 +845,29 @@ pub fn sk_void_is_sorted(arg_sk: ?*const struct_stack_st_void) callconv(.C) c_in 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 { var sk = arg_sk; var comp = arg_comp; - return @ptrCast(stack_void_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const c_void, [*c]?*const c_void) 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } -pub fn sk_void_deep_copy(arg_sk: ?*const struct_stack_st_void, arg_copy_func: ?fn (?*c_void) callconv(.C) ?*c_void, arg_free_func: ?fn (?*c_void) 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: ?fn (?*anyopaque) callconv(.C) ?*anyopaque, arg_free_func: ?fn (?*anyopaque) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_void_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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 pub const struct_stack_st_OPENSSL_STRING = opaque {}; pub const stack_OPENSSL_STRING_free_func = ?fn (OPENSSL_STRING) callconv(.C) void; pub const stack_OPENSSL_STRING_copy_func = ?fn (OPENSSL_STRING) callconv(.C) OPENSSL_STRING; pub const stack_OPENSSL_STRING_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_OPENSSL_STRING_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_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))); } -pub fn sk_OPENSSL_STRING_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_OPENSSL_STRING_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(?*c_void, @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 @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)))); } -pub fn sk_OPENSSL_STRING_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -846,7 +877,7 @@ pub fn sk_OPENSSL_STRING_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c] } pub fn sk_OPENSSL_STRING_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_OPENSSL_STRING_new_null() callconv(.C) ?*struct_stack_st_OPENSSL_STRING { return @ptrCast(?*struct_stack_st_OPENSSL_STRING, sk_new_null()); @@ -868,7 +899,7 @@ pub fn sk_OPENSSL_STRING_set(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_i: us 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(?*c_void, 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)))); } pub fn sk_OPENSSL_STRING_free(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) void { var sk = arg_sk; @@ -877,13 +908,13 @@ pub fn sk_OPENSSL_STRING_free(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv 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 { 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 (?*c_void) callconv(.C) void), 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))); } pub fn sk_OPENSSL_STRING_insert(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: OPENSSL_STRING, 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } pub fn sk_OPENSSL_STRING_delete(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_where: usize) callconv(.C) OPENSSL_STRING { var sk = arg_sk; @@ -892,12 +923,12 @@ pub fn sk_OPENSSL_STRING_delete(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_wh } pub fn sk_OPENSSL_STRING_delete_ptr(arg_sk: ?*struct_stack_st_OPENSSL_STRING, p: OPENSSL_STRING) callconv(.C) OPENSSL_STRING { 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 c_void, p)))); + 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)))); } 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 { 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 c_void, p), sk_OPENSSL_STRING_call_cmp_func); + 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); } pub fn sk_OPENSSL_STRING_shift(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) OPENSSL_STRING { var sk = arg_sk; @@ -906,7 +937,7 @@ pub fn sk_OPENSSL_STRING_shift(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callcon pub fn sk_OPENSSL_STRING_push(arg_sk: ?*struct_stack_st_OPENSSL_STRING, arg_p: OPENSSL_STRING) 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_OPENSSL_STRING_pop(arg_sk: ?*struct_stack_st_OPENSSL_STRING) callconv(.C) OPENSSL_STRING { var sk = arg_sk; @@ -927,17 +958,17 @@ pub fn sk_OPENSSL_STRING_is_sorted(arg_sk: ?*const struct_stack_st_OPENSSL_STRIN 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_OPENSSL_STRING_deep_copy(arg_sk: ?*const struct_stack_st_OPENSSL_STRING, arg_copy_func: ?fn (OPENSSL_STRING) callconv(.C) OPENSSL_STRING, arg_free_func: ?fn (OPENSSL_STRING) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_OPENSSL_STRING_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } -pub const CRYPTO_EX_free = fn (?*c_void, ?*c_void, [*c]CRYPTO_EX_DATA, c_int, c_long, ?*c_void) 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 = fn ([*c]CRYPTO_EX_DATA, [*c]const CRYPTO_EX_DATA, [*c]?*c_void, c_int, c_long, ?*c_void) 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: ?fn (c_int, c_int, [*c]const u8, c_int) callconv(.C) void) void; @@ -946,7 +977,7 @@ pub extern fn CRYPTO_get_locking_callback() ?fn (c_int, c_int, [*c]const u8, c_i pub extern fn CRYPTO_get_lock_name(lock_num: c_int) [*c]const u8; pub extern fn CRYPTO_THREADID_set_callback(threadid_func: ?fn ([*c]CRYPTO_THREADID) callconv(.C) void) c_int; pub extern fn CRYPTO_THREADID_set_numeric(id: [*c]CRYPTO_THREADID, val: c_ulong) void; -pub extern fn CRYPTO_THREADID_set_pointer(id: [*c]CRYPTO_THREADID, ptr: ?*c_void) void; +pub extern fn CRYPTO_THREADID_set_pointer(id: [*c]CRYPTO_THREADID, ptr: ?*anyopaque) void; pub extern fn CRYPTO_THREADID_current(id: [*c]CRYPTO_THREADID) void; pub extern fn CRYPTO_set_id_callback(func: ?fn () callconv(.C) c_ulong) void; pub const struct_CRYPTO_dynlock_value = opaque {}; @@ -964,17 +995,17 @@ pub const struct_stack_st_BIO = opaque {}; pub const stack_BIO_free_func = ?fn ([*c]BIO) callconv(.C) void; pub const stack_BIO_copy_func = ?fn ([*c]BIO) callconv(.C) [*c]BIO; pub const stack_BIO_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_BIO_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_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))); } -pub fn sk_BIO_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_BIO_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(?*c_void, @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 @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)))); } -pub fn sk_BIO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -984,7 +1015,7 @@ pub fn sk_BIO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_v } pub fn sk_BIO_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_BIO_new_null() callconv(.C) ?*struct_stack_st_BIO { return @ptrCast(?*struct_stack_st_BIO, sk_new_null()); @@ -1006,7 +1037,7 @@ pub fn sk_BIO_set(arg_sk: ?*struct_stack_st_BIO, arg_i: usize, arg_p: [*c]BIO) c 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(?*c_void, 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)))); } pub fn sk_BIO_free(arg_sk: ?*struct_stack_st_BIO) callconv(.C) void { var sk = arg_sk; @@ -1015,13 +1046,13 @@ pub fn sk_BIO_free(arg_sk: ?*struct_stack_st_BIO) callconv(.C) void { pub fn sk_BIO_pop_free(arg_sk: ?*struct_stack_st_BIO, arg_free_func: stack_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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } pub fn sk_BIO_delete(arg_sk: ?*struct_stack_st_BIO, arg_where: usize) callconv(.C) [*c]BIO { var sk = arg_sk; @@ -1031,13 +1062,13 @@ pub fn sk_BIO_delete(arg_sk: ?*struct_stack_st_BIO, arg_where: usize) callconv(. 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 c_void, 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)))); } 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 c_void, p), sk_BIO_call_cmp_func); + 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); } pub fn sk_BIO_shift(arg_sk: ?*struct_stack_st_BIO) callconv(.C) [*c]BIO { var sk = arg_sk; @@ -1046,7 +1077,7 @@ pub fn sk_BIO_shift(arg_sk: ?*struct_stack_st_BIO) callconv(.C) [*c]BIO { 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_BIO_pop(arg_sk: ?*struct_stack_st_BIO) callconv(.C) [*c]BIO { var sk = arg_sk; @@ -1067,25 +1098,25 @@ pub fn sk_BIO_is_sorted(arg_sk: ?*const struct_stack_st_BIO) callconv(.C) c_int 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_BIO_deep_copy(arg_sk: ?*const struct_stack_st_BIO, arg_copy_func: ?fn ([*c]BIO) callconv(.C) [*c]BIO, arg_free_func: ?fn ([*c]BIO) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_BIO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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: ?*c_void, len: c_int) 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 c_void, len: c_int) c_int; -pub extern fn BIO_write_all(bio: *BIO, data: ?*const c_void, len: usize) c_int; +pub extern fn BIO_write(bio: *BIO, data: ?*const anyopaque, len: c_int) c_int; +pub extern fn BIO_write_all(bio: *BIO, data: ?*const anyopaque, 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: ?*c_void) c_long; +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; @@ -1123,7 +1154,7 @@ pub extern fn BIO_hexdump(bio: [*c]BIO, data: [*c]const u8, len: usize, indent: 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 c_void, len: c_int) *BIO; +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_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; @@ -1164,8 +1195,8 @@ pub extern fn BIO_meth_set_write(method: *BIO_METHOD, write: ?BIOMethod.write) c 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_set_data(bio: [*c]BIO, ptr: ?*c_void) void; -pub extern fn BIO_get_data(bio: [*c]BIO) ?*c_void; +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; pub extern fn BIO_get_init(bio: [*c]BIO) c_int; pub extern fn BIO_f_base64() [*c]const BIO_METHOD; @@ -1229,11 +1260,11 @@ 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; pub extern fn EVP_CIPHER_CTX_key_length(ctx: [*c]const EVP_CIPHER_CTX) c_uint; pub extern fn EVP_CIPHER_CTX_iv_length(ctx: [*c]const EVP_CIPHER_CTX) c_uint; -pub extern fn EVP_CIPHER_CTX_get_app_data(ctx: [*c]const EVP_CIPHER_CTX) ?*c_void; -pub extern fn EVP_CIPHER_CTX_set_app_data(ctx: [*c]EVP_CIPHER_CTX, data: ?*c_void) void; +pub extern fn EVP_CIPHER_CTX_get_app_data(ctx: [*c]const EVP_CIPHER_CTX) ?*anyopaque; +pub extern fn EVP_CIPHER_CTX_set_app_data(ctx: [*c]EVP_CIPHER_CTX, data: ?*anyopaque) void; pub extern fn EVP_CIPHER_CTX_flags(ctx: [*c]const EVP_CIPHER_CTX) u32; 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: ?*c_void) c_int; +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; @@ -1292,10 +1323,10 @@ 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: [*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 c_void, len: usize) 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 c_void, len: usize, md_out: [*c]u8, md_out_size: [*c]c_uint, @"type": ?*const EVP_MD, impl: ?*ENGINE) 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; @@ -1394,7 +1425,7 @@ pub extern fn EVP_PKEY_set1_EC_KEY(pkey: [*c]EVP_PKEY, key: ?*EC_KEY) c_int; pub extern fn EVP_PKEY_assign_EC_KEY(pkey: [*c]EVP_PKEY, key: ?*EC_KEY) c_int; pub extern fn EVP_PKEY_get0_EC_KEY(pkey: [*c]const EVP_PKEY) ?*EC_KEY; pub extern fn EVP_PKEY_get1_EC_KEY(pkey: [*c]const EVP_PKEY) ?*EC_KEY; -pub extern fn EVP_PKEY_assign(pkey: [*c]EVP_PKEY, @"type": c_int, key: ?*c_void) c_int; +pub extern fn EVP_PKEY_assign(pkey: [*c]EVP_PKEY, @"type": c_int, key: ?*anyopaque) c_int; 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; @@ -1406,20 +1437,20 @@ pub extern fn EVP_PKEY_new_raw_public_key(@"type": c_int, unused: ?*ENGINE, in: 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: [*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 c_void, len: usize) 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 c_void, len: usize) 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 c_void, len: usize) 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: [*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 c_void, len: usize) 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; @@ -1464,15 +1495,15 @@ pub extern fn EVP_PKEY_CTX_get_rsa_mgf1_md(ctx: ?*EVP_PKEY_CTX, out_md: [*c]?*co pub extern fn EVP_PKEY_CTX_set0_rsa_oaep_label(ctx: ?*EVP_PKEY_CTX, label: [*c]u8, label_len: usize) c_int; pub extern fn EVP_PKEY_CTX_get0_rsa_oaep_label(ctx: ?*EVP_PKEY_CTX, out_label: [*c][*c]const u8) c_int; pub extern fn EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx: ?*EVP_PKEY_CTX, nid: c_int) c_int; -pub extern fn EVP_PKEY_get0(pkey: [*c]const EVP_PKEY) ?*c_void; +pub extern fn EVP_PKEY_get0(pkey: [*c]const EVP_PKEY) ?*anyopaque; pub extern fn OpenSSL_add_all_algorithms() void; 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: ?fn ([*c]const EVP_CIPHER, [*c]const u8, [*c]const u8, ?*c_void) callconv(.C) void, arg: ?*c_void) void; -pub extern fn EVP_MD_do_all_sorted(callback: ?fn (?*const EVP_MD, [*c]const u8, [*c]const u8, ?*c_void) callconv(.C) void, arg: ?*c_void) void; -pub extern fn EVP_MD_do_all(callback: ?fn (?*const EVP_MD, [*c]const u8, [*c]const u8, ?*c_void) callconv(.C) void, arg: ?*c_void) void; +pub extern fn EVP_CIPHER_do_all_sorted(callback: ?fn ([*c]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: ?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: ?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; 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; @@ -1514,10 +1545,10 @@ pub const PKCS7_SIGN_ENVELOPE = extern struct { cert: ?*struct_stack_st_X509, crl: ?*struct_stack_st_X509_CRL, }; -pub const PKCS7_ENVELOPE = c_void; -pub const PKCS7_DIGEST = c_void; -pub const PKCS7_ENCRYPT = c_void; -pub const PKCS7_SIGNER_INFO = c_void; +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 { ptr: [*c]u8, data: [*c]ASN1_OCTET_STRING, @@ -1635,7 +1666,7 @@ pub extern fn BN_pseudo_rand(rnd: [*c]BIGNUM, bits: c_int, top: c_int, bottom: c 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_pseudo_rand_range(rnd: [*c]BIGNUM, range: [*c]const BIGNUM) c_int; -pub extern fn BN_GENCB_set(callback: [*c]BN_GENCB, f: ?fn (c_int, c_int, [*c]BN_GENCB) callconv(.C) c_int, arg: ?*c_void) void; +pub extern fn BN_GENCB_set(callback: [*c]BN_GENCB, f: ?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_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; @@ -1672,20 +1703,20 @@ 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 = fn ([*c]?*c_void, [*c][*c]const u8, c_long) callconv(.C) ?*c_void; -pub const i2d_of_void = fn (?*const c_void, [*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: ?*c_void) ?*c_void; -pub extern fn ASN1_item_d2i_fp(it: ?*const ASN1_ITEM, in: [*c]FILE, out: ?*c_void) ?*c_void; -pub extern fn ASN1_item_d2i_bio(it: ?*const ASN1_ITEM, in: [*c]BIO, out: ?*c_void) ?*c_void; -pub extern fn ASN1_item_i2d_fp(it: ?*const ASN1_ITEM, out: [*c]FILE, in: ?*c_void) c_int; -pub extern fn ASN1_item_i2d_bio(it: ?*const ASN1_ITEM, out: [*c]BIO, in: ?*c_void) c_int; -pub extern fn ASN1_item_unpack(oct: [*c]const ASN1_STRING, it: ?*const ASN1_ITEM) ?*c_void; -pub extern fn ASN1_item_pack(obj: ?*c_void, it: ?*const ASN1_ITEM, out: [*c][*c]ASN1_STRING) [*c]ASN1_STRING; +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_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_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; pub extern fn d2i_ASN1_BOOLEAN(out: [*c]ASN1_BOOLEAN, inp: [*c][*c]const u8, len: c_long) ASN1_BOOLEAN; pub extern fn i2d_ASN1_BOOLEAN(a: ASN1_BOOLEAN, outp: [*c][*c]u8) c_int; pub extern const ASN1_BOOLEAN_it: ASN1_ITEM; @@ -1701,8 +1732,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 c_void, len: c_int) c_int; -pub extern fn ASN1_STRING_set0(str: [*c]ASN1_STRING, data: ?*c_void, len: c_int) void; +pub extern fn ASN1_STRING_set(str: [*c]ASN1_STRING, data: ?*const anyopaque, 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_BMPSTRING_new() [*c]ASN1_BMPSTRING; pub extern fn ASN1_GENERALSTRING_new() [*c]ASN1_GENERALSTRING; pub extern fn ASN1_IA5STRING_new() [*c]ASN1_IA5STRING; @@ -1782,17 +1813,17 @@ pub const struct_stack_st_ASN1_INTEGER = opaque {}; pub const stack_ASN1_INTEGER_free_func = ?fn ([*c]ASN1_INTEGER) callconv(.C) void; pub const stack_ASN1_INTEGER_copy_func = ?fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER; pub const stack_ASN1_INTEGER_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_ASN1_INTEGER_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_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))); } -pub fn sk_ASN1_INTEGER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_ASN1_INTEGER_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(?*c_void, @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 @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)))); } -pub fn sk_ASN1_INTEGER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -1802,7 +1833,7 @@ pub fn sk_ASN1_INTEGER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?* } pub fn sk_ASN1_INTEGER_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_ASN1_INTEGER_new_null() callconv(.C) ?*struct_stack_st_ASN1_INTEGER { return @ptrCast(?*struct_stack_st_ASN1_INTEGER, sk_new_null()); @@ -1824,7 +1855,7 @@ pub fn sk_ASN1_INTEGER_set(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_i: usize, 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(?*c_void, 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)))); } pub fn sk_ASN1_INTEGER_free(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) void { var sk = arg_sk; @@ -1833,13 +1864,13 @@ pub fn sk_ASN1_INTEGER_free(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -1849,13 +1880,13 @@ pub fn sk_ASN1_INTEGER_delete(arg_sk: ?*struct_stack_st_ASN1_INTEGER, arg_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 c_void, 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)))); } 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 c_void, p), sk_ASN1_INTEGER_call_cmp_func); + 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); } pub fn sk_ASN1_INTEGER_shift(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; @@ -1864,7 +1895,7 @@ pub fn sk_ASN1_INTEGER_shift(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_ASN1_INTEGER_pop(arg_sk: ?*struct_stack_st_ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER { var sk = arg_sk; @@ -1885,13 +1916,13 @@ pub fn sk_ASN1_INTEGER_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_INTEGER) c 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_ASN1_INTEGER_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_INTEGER, arg_copy_func: ?fn ([*c]ASN1_INTEGER) callconv(.C) [*c]ASN1_INTEGER, arg_free_func: ?fn ([*c]ASN1_INTEGER) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_ASN1_INTEGER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub extern fn ASN1_INTEGER_new() [*c]ASN1_INTEGER; pub extern fn ASN1_INTEGER_free(str: [*c]ASN1_INTEGER) void; @@ -1955,17 +1986,17 @@ pub const struct_stack_st_ASN1_OBJECT = opaque {}; pub const stack_ASN1_OBJECT_free_func = ?fn (?*ASN1_OBJECT) callconv(.C) void; pub const stack_ASN1_OBJECT_copy_func = ?fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT; pub const stack_ASN1_OBJECT_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_ASN1_OBJECT_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_ASN1_OBJECT_free_func, @alignCast(@import("std").meta.alignment(fn (?*ASN1_OBJECT) callconv(.C) void), free_func)).?(@ptrCast(?*ASN1_OBJECT, ptr)); } -pub fn sk_ASN1_OBJECT_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_ASN1_OBJECT_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(?*c_void, @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 @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))); } -pub fn sk_ASN1_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -1975,7 +2006,7 @@ pub fn sk_ASN1_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*c } pub fn sk_ASN1_OBJECT_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_ASN1_OBJECT_new_null() callconv(.C) ?*struct_stack_st_ASN1_OBJECT { return @ptrCast(?*struct_stack_st_ASN1_OBJECT, sk_new_null()); @@ -1997,7 +2028,7 @@ pub fn sk_ASN1_OBJECT_set(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_i: usize, a 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(?*c_void, p))); + return @ptrCast(?*ASN1_OBJECT, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_ASN1_OBJECT_free(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) void { var sk = arg_sk; @@ -2006,13 +2037,13 @@ pub fn sk_ASN1_OBJECT_free(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) v 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -2022,13 +2053,13 @@ pub fn sk_ASN1_OBJECT_delete(arg_sk: ?*struct_stack_st_ASN1_OBJECT, arg_where: u 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 c_void, p))); + return @ptrCast(?*ASN1_OBJECT, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_ASN1_OBJECT_call_cmp_func); + 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); } pub fn sk_ASN1_OBJECT_shift(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; @@ -2037,7 +2068,7 @@ pub fn sk_ASN1_OBJECT_shift(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_ASN1_OBJECT_pop(arg_sk: ?*struct_stack_st_ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT { var sk = arg_sk; @@ -2058,13 +2089,13 @@ pub fn sk_ASN1_OBJECT_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_OBJECT) cal 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_ASN1_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_OBJECT, arg_copy_func: ?fn (?*ASN1_OBJECT) callconv(.C) ?*ASN1_OBJECT, arg_free_func: ?fn (?*ASN1_OBJECT) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_ASN1_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } 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; @@ -2076,17 +2107,17 @@ pub const struct_stack_st_ASN1_TYPE = opaque {}; pub const stack_ASN1_TYPE_free_func = ?fn ([*c]ASN1_TYPE) callconv(.C) void; pub const stack_ASN1_TYPE_copy_func = ?fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE; pub const stack_ASN1_TYPE_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_ASN1_TYPE_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_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))); } -pub fn sk_ASN1_TYPE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_ASN1_TYPE_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(?*c_void, @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 @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)))); } -pub fn sk_ASN1_TYPE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -2096,7 +2127,7 @@ pub fn sk_ASN1_TYPE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*con } pub fn sk_ASN1_TYPE_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_ASN1_TYPE_new_null() callconv(.C) ?*struct_stack_st_ASN1_TYPE { return @ptrCast(?*struct_stack_st_ASN1_TYPE, sk_new_null()); @@ -2118,7 +2149,7 @@ pub fn sk_ASN1_TYPE_set(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_i: usize, arg_p 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(?*c_void, 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)))); } pub fn sk_ASN1_TYPE_free(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) void { var sk = arg_sk; @@ -2127,13 +2158,13 @@ pub fn sk_ASN1_TYPE_free(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) void 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -2143,13 +2174,13 @@ pub fn sk_ASN1_TYPE_delete(arg_sk: ?*struct_stack_st_ASN1_TYPE, arg_where: usize 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 c_void, 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)))); } 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 c_void, p), sk_ASN1_TYPE_call_cmp_func); + 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); } pub fn sk_ASN1_TYPE_shift(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; @@ -2158,7 +2189,7 @@ pub fn sk_ASN1_TYPE_shift(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) [*c] 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_ASN1_TYPE_pop(arg_sk: ?*struct_stack_st_ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE { var sk = arg_sk; @@ -2179,13 +2210,13 @@ pub fn sk_ASN1_TYPE_is_sorted(arg_sk: ?*const struct_stack_st_ASN1_TYPE) callcon 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_ASN1_TYPE_deep_copy(arg_sk: ?*const struct_stack_st_ASN1_TYPE, arg_copy_func: ?fn ([*c]ASN1_TYPE) callconv(.C) [*c]ASN1_TYPE, arg_free_func: ?fn ([*c]ASN1_TYPE) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_ASN1_TYPE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub extern fn ASN1_TYPE_new() [*c]ASN1_TYPE; pub extern fn ASN1_TYPE_free(a: [*c]ASN1_TYPE) void; @@ -2193,8 +2224,8 @@ pub extern fn d2i_ASN1_TYPE(out: [*c][*c]ASN1_TYPE, inp: [*c][*c]const u8, len: pub extern fn i2d_ASN1_TYPE(in: [*c]const ASN1_TYPE, outp: [*c][*c]u8) c_int; pub extern const ASN1_ANY_it: ASN1_ITEM; pub extern fn ASN1_TYPE_get(a: [*c]const ASN1_TYPE) c_int; -pub extern fn ASN1_TYPE_set(a: [*c]ASN1_TYPE, @"type": c_int, value: ?*c_void) void; -pub extern fn ASN1_TYPE_set1(a: [*c]ASN1_TYPE, @"type": c_int, value: ?*const c_void) c_int; +pub extern fn ASN1_TYPE_set(a: [*c]ASN1_TYPE, @"type": c_int, value: ?*anyopaque) void; +pub extern fn ASN1_TYPE_set1(a: [*c]ASN1_TYPE, @"type": c_int, value: ?*const anyopaque) c_int; pub extern fn ASN1_TYPE_cmp(a: [*c]const ASN1_TYPE, b: [*c]const ASN1_TYPE) c_int; pub const ASN1_SEQUENCE_ANY = struct_stack_st_ASN1_TYPE; pub extern fn d2i_ASN1_SEQUENCE_ANY(out: [*c]?*ASN1_SEQUENCE_ANY, inp: [*c][*c]const u8, len: c_long) ?*ASN1_SEQUENCE_ANY; @@ -2252,7 +2283,7 @@ pub extern fn DH_check_pub_key(dh: [*c]const DH, pub_key: [*c]const BIGNUM, out_ 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: ?fn (c_int, c_int, ?*c_void) callconv(.C) void, cb_arg: ?*c_void) [*c]DH; +pub extern fn DH_generate_parameters(prime_len: c_int, generator: c_int, callback: ?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; @@ -2262,8 +2293,8 @@ pub extern fn ENGINE_set_RSA_method(engine: ?*ENGINE, method: [*c]const RSA_METH pub extern fn ENGINE_get_RSA_method(engine: ?*const ENGINE) [*c]RSA_METHOD; pub extern fn ENGINE_set_ECDSA_method(engine: ?*ENGINE, method: [*c]const ECDSA_METHOD, method_size: usize) c_int; pub extern fn ENGINE_get_ECDSA_method(engine: ?*const ENGINE) [*c]ECDSA_METHOD; -pub extern fn METHOD_ref(method: ?*c_void) void; -pub extern fn METHOD_unref(method: ?*c_void) void; +pub extern fn METHOD_ref(method: ?*anyopaque) void; +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; @@ -2299,9 +2330,9 @@ pub extern fn DSA_marshal_private_key(cbb: [*c]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: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn DSA_set_ex_data(dsa: [*c]DSA, idx: c_int, arg: ?*c_void) c_int; -pub extern fn DSA_get_ex_data(dsa: [*c]const DSA, idx: c_int) ?*c_void; +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_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; pub extern fn i2d_DSA_SIG(in: [*c]const DSA_SIG, outp: [*c][*c]u8) c_int; pub extern fn d2i_DSAPublicKey(out: [*c][*c]DSA, inp: [*c][*c]const u8, len: c_long) [*c]DSA; @@ -2310,7 +2341,7 @@ pub extern fn d2i_DSAPrivateKey(out: [*c][*c]DSA, inp: [*c][*c]const u8, len: c_ pub extern fn i2d_DSAPrivateKey(in: [*c]const DSA, outp: [*c][*c]u8) c_int; pub extern fn d2i_DSAparams(out: [*c][*c]DSA, inp: [*c][*c]const u8, len: c_long) [*c]DSA; pub extern fn i2d_DSAparams(in: [*c]const DSA, outp: [*c][*c]u8) c_int; -pub extern fn DSA_generate_parameters(bits: c_int, seed: [*c]u8, seed_len: c_int, counter_ret: [*c]c_int, h_ret: [*c]c_ulong, callback: ?fn (c_int, c_int, ?*c_void) callconv(.C) void, cb_arg: ?*c_void) [*c]DSA; +pub extern fn DSA_generate_parameters(bits: c_int, seed: [*c]u8, seed_len: c_int, counter_ret: [*c]c_int, h_ret: [*c]c_ulong, callback: ?fn (c_int, c_int, ?*anyopaque) callconv(.C) void, cb_arg: ?*anyopaque) [*c]DSA; pub const POINT_CONVERSION_COMPRESSED: c_int = 2; pub const POINT_CONVERSION_UNCOMPRESSED: c_int = 4; pub const POINT_CONVERSION_HYBRID: c_int = 6; @@ -2393,9 +2424,9 @@ pub extern fn EC_KEY_marshal_private_key(cbb: [*c]CBB, key: ?*const EC_KEY, enc_ 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_parse_parameters(cbs: [*c]CBS) ?*EC_GROUP; -pub extern fn EC_KEY_get_ex_new_index(argl: c_long, argp: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn EC_KEY_set_ex_data(r: ?*EC_KEY, idx: c_int, arg: ?*c_void) c_int; -pub extern fn EC_KEY_get_ex_data(r: ?*const EC_KEY, idx: c_int) ?*c_void; +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_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; pub extern fn d2i_ECPrivateKey(out_key: [*c]?*EC_KEY, inp: [*c][*c]const u8, len: c_long) ?*EC_KEY; pub extern fn i2d_ECPrivateKey(key: ?*const EC_KEY, outp: [*c][*c]u8) c_int; @@ -2403,7 +2434,7 @@ pub extern fn d2i_ECParameters(out_key: [*c]?*EC_KEY, inp: [*c][*c]const u8, len pub extern fn i2d_ECParameters(key: ?*const EC_KEY, outp: [*c][*c]u8) c_int; pub extern fn o2i_ECPublicKey(out_key: [*c]?*EC_KEY, inp: [*c][*c]const u8, len: c_long) ?*EC_KEY; pub extern fn i2o_ECPublicKey(key: ?*const EC_KEY, outp: [*c][*c]u8) c_int; -pub extern fn ECDH_compute_key(out: ?*c_void, outlen: usize, pub_key: ?*const EC_POINT, priv_key: ?*const EC_KEY, kdf: ?fn (?*const c_void, usize, ?*c_void, [*c]usize) callconv(.C) ?*c_void) c_int; +pub extern fn ECDH_compute_key(out: ?*anyopaque, outlen: usize, pub_key: ?*const EC_POINT, priv_key: ?*const EC_KEY, kdf: ?fn (?*const anyopaque, usize, ?*anyopaque, [*c]usize) callconv(.C) ?*anyopaque) c_int; pub extern fn ECDH_compute_key_fips(out: [*c]u8, out_len: usize, pub_key: ?*const EC_POINT, priv_key: ?*const EC_KEY) c_int; pub extern fn ECDSA_sign(@"type": c_int, digest: [*c]const u8, digest_len: usize, sig: [*c]u8, sig_len: [*c]c_uint, key: ?*const EC_KEY) c_int; pub extern fn ECDSA_verify(@"type": c_int, digest: [*c]const u8, digest_len: usize, sig: [*c]const u8, sig_len: usize, key: ?*const EC_KEY) c_int; @@ -2522,23 +2553,23 @@ pub const struct_obj_name_st = extern struct { data: [*c]const u8, }; pub const OBJ_NAME = struct_obj_name_st; -pub extern fn OBJ_NAME_do_all_sorted(@"type": c_int, callback: ?fn ([*c]const OBJ_NAME, ?*c_void) callconv(.C) void, arg: ?*c_void) void; -pub extern fn OBJ_NAME_do_all(@"type": c_int, callback: ?fn ([*c]const OBJ_NAME, ?*c_void) callconv(.C) void, arg: ?*c_void) void; +pub extern fn OBJ_NAME_do_all_sorted(@"type": c_int, callback: ?fn ([*c]const OBJ_NAME, ?*anyopaque) callconv(.C) void, arg: ?*anyopaque) void; +pub extern fn OBJ_NAME_do_all(@"type": c_int, callback: ?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 = ?fn (?*CRYPTO_BUFFER) callconv(.C) void; pub const stack_CRYPTO_BUFFER_copy_func = ?fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER; pub const stack_CRYPTO_BUFFER_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_CRYPTO_BUFFER_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_CRYPTO_BUFFER_free_func, @alignCast(@import("std").meta.alignment(fn (?*CRYPTO_BUFFER) callconv(.C) void), free_func)).?(@ptrCast(?*CRYPTO_BUFFER, ptr)); } -pub fn sk_CRYPTO_BUFFER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_CRYPTO_BUFFER_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(?*c_void, @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 @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))); } -pub fn sk_CRYPTO_BUFFER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -2548,7 +2579,7 @@ pub fn sk_CRYPTO_BUFFER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]? } pub fn sk_CRYPTO_BUFFER_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_CRYPTO_BUFFER_new_null() callconv(.C) ?*struct_stack_st_CRYPTO_BUFFER { return @ptrCast(?*struct_stack_st_CRYPTO_BUFFER, sk_new_null()); @@ -2570,7 +2601,7 @@ pub fn sk_CRYPTO_BUFFER_set(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_i: usiz 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(?*c_void, p))); + return @ptrCast(?*CRYPTO_BUFFER, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_CRYPTO_BUFFER_free(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) void { var sk = arg_sk; @@ -2579,13 +2610,13 @@ pub fn sk_CRYPTO_BUFFER_free(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(. 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -2595,13 +2626,13 @@ pub fn sk_CRYPTO_BUFFER_delete(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER, arg_wher 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 c_void, p))); + return @ptrCast(?*CRYPTO_BUFFER, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_CRYPTO_BUFFER_call_cmp_func); + 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); } pub fn sk_CRYPTO_BUFFER_shift(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; @@ -2610,7 +2641,7 @@ pub fn sk_CRYPTO_BUFFER_shift(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv( 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_CRYPTO_BUFFER_pop(arg_sk: ?*struct_stack_st_CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER { var sk = arg_sk; @@ -2631,13 +2662,13 @@ pub fn sk_CRYPTO_BUFFER_is_sorted(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER) 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_CRYPTO_BUFFER_deep_copy(arg_sk: ?*const struct_stack_st_CRYPTO_BUFFER, arg_copy_func: ?fn (?*CRYPTO_BUFFER) callconv(.C) ?*CRYPTO_BUFFER, arg_free_func: ?fn (?*CRYPTO_BUFFER) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_CRYPTO_BUFFER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub extern fn CRYPTO_BUFFER_POOL_new() ?*CRYPTO_BUFFER_POOL; pub extern fn CRYPTO_BUFFER_POOL_free(pool: ?*CRYPTO_BUFFER_POOL) void; @@ -2701,12 +2732,12 @@ 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_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: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn RSA_set_ex_data(rsa: ?*RSA, idx: c_int, arg: ?*c_void) c_int; -pub extern fn RSA_get_ex_data(rsa: ?*const RSA, idx: c_int) ?*c_void; +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_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_blinding_on(rsa: ?*RSA, ctx: ?*BN_CTX) c_int; -pub extern fn RSA_generate_key(bits: c_int, e: c_ulong, callback: ?*c_void, cb_arg: ?*c_void) ?*RSA; +pub extern fn RSA_generate_key(bits: c_int, e: c_ulong, 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; @@ -2717,31 +2748,31 @@ pub extern fn RSA_padding_add_PKCS1_OAEP(to: [*c]u8, to_len: usize, from: [*c]co 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: [*c]SHA_CTX) c_int; -pub extern fn SHA1_Update(sha: [*c]SHA_CTX, data: ?*const c_void, len: usize) 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 c_void, len: usize) 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 c_void, len: usize) 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 c_void, len: usize) 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 c_void, len: usize) 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 c_void, len: usize) 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 extern fn X509_ALGOR_new() [*c]X509_ALGOR; @@ -2753,17 +2784,17 @@ pub const struct_stack_st_X509_ALGOR = opaque {}; pub const stack_X509_ALGOR_free_func = ?fn ([*c]X509_ALGOR) callconv(.C) void; pub const stack_X509_ALGOR_copy_func = ?fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR; pub const stack_X509_ALGOR_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_ALGOR_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_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))); } -pub fn sk_X509_ALGOR_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_ALGOR_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(?*c_void, @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 @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)))); } -pub fn sk_X509_ALGOR_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -2773,7 +2804,7 @@ pub fn sk_X509_ALGOR_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*co } pub fn sk_X509_ALGOR_new(arg_comp: stack_X509_ALGOR_cmp_func) callconv(.C) ?*struct_stack_st_X509_ALGOR { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_ALGOR_new_null() callconv(.C) ?*struct_stack_st_X509_ALGOR { return @ptrCast(?*struct_stack_st_X509_ALGOR, sk_new_null()); @@ -2795,7 +2826,7 @@ pub fn sk_X509_ALGOR_set(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_i: usize, arg 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(?*c_void, 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)))); } pub fn sk_X509_ALGOR_free(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) void { var sk = arg_sk; @@ -2804,13 +2835,13 @@ pub fn sk_X509_ALGOR_free(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) voi 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } 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; @@ -2820,13 +2851,13 @@ pub fn sk_X509_ALGOR_delete(arg_sk: ?*struct_stack_st_X509_ALGOR, arg_where: usi 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([*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 c_void, 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)))); } 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 c_void, p), sk_X509_ALGOR_call_cmp_func); + 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); } pub fn sk_X509_ALGOR_shift(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; @@ -2835,7 +2866,7 @@ pub fn sk_X509_ALGOR_shift(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [* 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_ALGOR_pop(arg_sk: ?*struct_stack_st_X509_ALGOR) callconv(.C) [*c]X509_ALGOR { var sk = arg_sk; @@ -2856,30 +2887,30 @@ pub fn sk_X509_ALGOR_is_sorted(arg_sk: ?*const struct_stack_st_X509_ALGOR) callc 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_ALGOR_deep_copy(arg_sk: ?*const struct_stack_st_X509_ALGOR, arg_copy_func: ?fn ([*c]X509_ALGOR) callconv(.C) [*c]X509_ALGOR, arg_free_func: ?fn ([*c]X509_ALGOR) callconv(.C) void) 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_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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_ALGOR_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const X509_ALGORS = struct_stack_st_X509_ALGOR; pub const struct_stack_st_X509_NAME_ENTRY = opaque {}; pub const stack_X509_NAME_ENTRY_free_func = ?fn (?*X509_NAME_ENTRY) callconv(.C) void; pub const stack_X509_NAME_ENTRY_copy_func = ?fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY; pub const stack_X509_NAME_ENTRY_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_NAME_ENTRY_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_NAME_ENTRY_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME_ENTRY) callconv(.C) void), free_func)).?(@ptrCast(?*X509_NAME_ENTRY, ptr)); } -pub fn sk_X509_NAME_ENTRY_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_NAME_ENTRY_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(?*c_void, @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 @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))); } -pub fn sk_X509_NAME_ENTRY_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -2889,7 +2920,7 @@ pub fn sk_X509_NAME_ENTRY_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c } pub fn sk_X509_NAME_ENTRY_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } 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()); @@ -2911,7 +2942,7 @@ pub fn sk_X509_NAME_ENTRY_set(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_i: 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(?*c_void, p))); + return @ptrCast(?*X509_NAME_ENTRY, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_NAME_ENTRY_free(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) void { var sk = arg_sk; @@ -2920,13 +2951,13 @@ pub fn sk_X509_NAME_ENTRY_free(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callco 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -2936,13 +2967,13 @@ pub fn sk_X509_NAME_ENTRY_delete(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY, arg_ 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 c_void, p))); + return @ptrCast(?*X509_NAME_ENTRY, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_NAME_ENTRY_call_cmp_func); + 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); } pub fn sk_X509_NAME_ENTRY_shift(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY { var sk = arg_sk; @@ -2951,7 +2982,7 @@ pub fn sk_X509_NAME_ENTRY_shift(arg_sk: ?*struct_stack_st_X509_NAME_ENTRY) callc 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -2972,29 +3003,29 @@ pub fn sk_X509_NAME_ENTRY_is_sorted(arg_sk: ?*const struct_stack_st_X509_NAME_EN 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_NAME_ENTRY_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME_ENTRY, arg_copy_func: ?fn (?*X509_NAME_ENTRY) callconv(.C) ?*X509_NAME_ENTRY, arg_free_func: ?fn (?*X509_NAME_ENTRY) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_NAME_ENTRY_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_NAME = opaque {}; pub const stack_X509_NAME_free_func = ?fn (?*X509_NAME) callconv(.C) void; pub const stack_X509_NAME_copy_func = ?fn (?*X509_NAME) callconv(.C) ?*X509_NAME; pub const stack_X509_NAME_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_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; @ptrCast(stack_X509_NAME_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_NAME) callconv(.C) void), free_func)).?(@ptrCast(?*X509_NAME, ptr)); } -pub fn sk_X509_NAME_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_NAME_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(?*c_void, @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 @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))); } -pub fn sk_X509_NAME_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3004,7 +3035,7 @@ pub fn sk_X509_NAME_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*con } pub fn sk_X509_NAME_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_NAME_new_null() callconv(.C) ?*struct_stack_st_X509_NAME { return @ptrCast(?*struct_stack_st_X509_NAME, sk_new_null()); @@ -3026,7 +3057,7 @@ pub fn sk_X509_NAME_set(arg_sk: ?*struct_stack_st_X509_NAME, arg_i: usize, arg_p 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(?*c_void, p))); + return @ptrCast(?*X509_NAME, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_NAME_free(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) void { var sk = arg_sk; @@ -3035,13 +3066,13 @@ pub fn sk_X509_NAME_free(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) void 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -3051,13 +3082,13 @@ pub fn sk_X509_NAME_delete(arg_sk: ?*struct_stack_st_X509_NAME, arg_where: usize 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 c_void, p))); + return @ptrCast(?*X509_NAME, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_NAME_call_cmp_func); + 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); } pub fn sk_X509_NAME_shift(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; @@ -3066,7 +3097,7 @@ pub fn sk_X509_NAME_shift(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) ?*X5 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_NAME_pop(arg_sk: ?*struct_stack_st_X509_NAME) callconv(.C) ?*X509_NAME { var sk = arg_sk; @@ -3087,29 +3118,29 @@ pub fn sk_X509_NAME_is_sorted(arg_sk: ?*const struct_stack_st_X509_NAME) callcon 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_NAME_deep_copy(arg_sk: ?*const struct_stack_st_X509_NAME, arg_copy_func: ?fn (?*X509_NAME) callconv(.C) ?*X509_NAME, arg_free_func: ?fn (?*X509_NAME) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_NAME_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const X509_EXTENSIONS = struct_stack_st_X509_EXTENSION; pub const stack_X509_EXTENSION_free_func = ?fn (?*X509_EXTENSION) callconv(.C) void; pub const stack_X509_EXTENSION_copy_func = ?fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION; pub const stack_X509_EXTENSION_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_EXTENSION_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_EXTENSION_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_EXTENSION) callconv(.C) void), free_func)).?(@ptrCast(?*X509_EXTENSION, ptr)); } -pub fn sk_X509_EXTENSION_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_EXTENSION_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(?*c_void, @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 @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))); } -pub fn sk_X509_EXTENSION_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3119,7 +3150,7 @@ pub fn sk_X509_EXTENSION_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c] } pub fn sk_X509_EXTENSION_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_EXTENSION_new_null() callconv(.C) ?*struct_stack_st_X509_EXTENSION { return @ptrCast(?*struct_stack_st_X509_EXTENSION, sk_new_null()); @@ -3141,7 +3172,7 @@ pub fn sk_X509_EXTENSION_set(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_i: us 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(?*c_void, p))); + return @ptrCast(?*X509_EXTENSION, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_EXTENSION_free(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) void { var sk = arg_sk; @@ -3150,13 +3181,13 @@ pub fn sk_X509_EXTENSION_free(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -3166,13 +3197,13 @@ pub fn sk_X509_EXTENSION_delete(arg_sk: ?*struct_stack_st_X509_EXTENSION, arg_wh 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 c_void, p))); + return @ptrCast(?*X509_EXTENSION, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_EXTENSION_call_cmp_func); + 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); } pub fn sk_X509_EXTENSION_shift(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; @@ -3181,7 +3212,7 @@ pub fn sk_X509_EXTENSION_shift(arg_sk: ?*struct_stack_st_X509_EXTENSION) callcon 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_EXTENSION_pop(arg_sk: ?*struct_stack_st_X509_EXTENSION) callconv(.C) ?*X509_EXTENSION { var sk = arg_sk; @@ -3202,29 +3233,29 @@ pub fn sk_X509_EXTENSION_is_sorted(arg_sk: ?*const struct_stack_st_X509_EXTENSIO 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_EXTENSION_deep_copy(arg_sk: ?*const struct_stack_st_X509_EXTENSION, arg_copy_func: ?fn (?*X509_EXTENSION) callconv(.C) ?*X509_EXTENSION, arg_free_func: ?fn (?*X509_EXTENSION) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_EXTENSION_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_ATTRIBUTE = opaque {}; pub const stack_X509_ATTRIBUTE_free_func = ?fn (?*X509_ATTRIBUTE) callconv(.C) void; pub const stack_X509_ATTRIBUTE_copy_func = ?fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE; pub const stack_X509_ATTRIBUTE_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_ATTRIBUTE_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_ATTRIBUTE_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_ATTRIBUTE) callconv(.C) void), free_func)).?(@ptrCast(?*X509_ATTRIBUTE, ptr)); } -pub fn sk_X509_ATTRIBUTE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_ATTRIBUTE_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(?*c_void, @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 @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))); } -pub fn sk_X509_ATTRIBUTE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3234,7 +3265,7 @@ pub fn sk_X509_ATTRIBUTE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c] } pub fn sk_X509_ATTRIBUTE_new(arg_comp: stack_X509_ATTRIBUTE_cmp_func) callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_ATTRIBUTE_new_null() callconv(.C) ?*struct_stack_st_X509_ATTRIBUTE { return @ptrCast(?*struct_stack_st_X509_ATTRIBUTE, sk_new_null()); @@ -3256,7 +3287,7 @@ pub fn sk_X509_ATTRIBUTE_set(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_i: us 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(?*c_void, p))); + return @ptrCast(?*X509_ATTRIBUTE, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_ATTRIBUTE_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) void { var sk = arg_sk; @@ -3265,13 +3296,13 @@ pub fn sk_X509_ATTRIBUTE_free(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } pub fn sk_X509_ATTRIBUTE_delete(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_where: usize) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; @@ -3281,13 +3312,13 @@ pub fn sk_X509_ATTRIBUTE_delete(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE, arg_wh 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_ATTRIBUTE, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const c_void, p))); + return @ptrCast(?*X509_ATTRIBUTE, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 { 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 c_void, p), sk_X509_ATTRIBUTE_call_cmp_func); + 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); } pub fn sk_X509_ATTRIBUTE_shift(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; @@ -3296,7 +3327,7 @@ pub fn sk_X509_ATTRIBUTE_shift(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callcon 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_ATTRIBUTE_pop(arg_sk: ?*struct_stack_st_X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE { var sk = arg_sk; @@ -3317,29 +3348,29 @@ pub fn sk_X509_ATTRIBUTE_is_sorted(arg_sk: ?*const struct_stack_st_X509_ATTRIBUT 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_ATTRIBUTE_deep_copy(arg_sk: ?*const struct_stack_st_X509_ATTRIBUTE, arg_copy_func: ?fn (?*X509_ATTRIBUTE) callconv(.C) ?*X509_ATTRIBUTE, arg_free_func: ?fn (?*X509_ATTRIBUTE) callconv(.C) void) 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_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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_ATTRIBUTE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_DIST_POINT = opaque {}; pub const stack_X509_free_func = ?fn (?*X509) callconv(.C) void; pub const stack_X509_copy_func = ?fn (?*X509) callconv(.C) ?*X509; pub const stack_X509_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_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_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509) callconv(.C) void), free_func)).?(@ptrCast(?*X509, ptr)); } -pub fn sk_X509_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_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(?*c_void, @ptrCast(stack_X509_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509) callconv(.C) ?*X509), copy_func)).?(@ptrCast(?*X509, ptr))); + return @ptrCast(?*anyopaque, @ptrCast(stack_X509_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509) callconv(.C) ?*X509), copy_func)).?(@ptrCast(?*X509, ptr))); } -pub fn sk_X509_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3349,7 +3380,7 @@ pub fn sk_X509_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_ } pub fn sk_X509_new(arg_comp: stack_X509_cmp_func) callconv(.C) ?*struct_stack_st_X509 { var comp = arg_comp; - return @ptrCast(?*struct_stack_st_X509, sk_new(@ptrCast(stack_cmp_func, @alignCast(@import("std").meta.alignment(fn ([*c]?*const c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_new_null() callconv(.C) ?*struct_stack_st_X509 { return @ptrCast(?*struct_stack_st_X509, sk_new_null()); @@ -3371,7 +3402,7 @@ pub fn sk_X509_set(arg_sk: ?*struct_stack_st_X509, arg_i: usize, arg_p: ?*X509) 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(?*c_void, p))); + return @ptrCast(?*X509, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_free(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { var sk = arg_sk; @@ -3380,13 +3411,13 @@ pub fn sk_X509_free(arg_sk: ?*struct_stack_st_X509) callconv(.C) void { pub fn sk_X509_pop_free(arg_sk: ?*struct_stack_st_X509, arg_free_func: stack_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_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } pub fn sk_X509_delete(arg_sk: ?*struct_stack_st_X509, arg_where: usize) callconv(.C) ?*X509 { var sk = arg_sk; @@ -3396,13 +3427,13 @@ pub fn sk_X509_delete(arg_sk: ?*struct_stack_st_X509, arg_where: usize) callconv 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(?*X509, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const c_void, p))); + return @ptrCast(?*X509, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 { 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 c_void, p), sk_X509_call_cmp_func); + 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); } pub fn sk_X509_shift(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { var sk = arg_sk; @@ -3411,7 +3442,7 @@ pub fn sk_X509_shift(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_pop(arg_sk: ?*struct_stack_st_X509) callconv(.C) ?*X509 { var sk = arg_sk; @@ -3432,29 +3463,29 @@ pub fn sk_X509_is_sorted(arg_sk: ?*const struct_stack_st_X509) callconv(.C) c_in 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_deep_copy(arg_sk: ?*const struct_stack_st_X509, arg_copy_func: ?fn (?*X509) callconv(.C) ?*X509, arg_free_func: ?fn (?*X509) callconv(.C) void) callconv(.C) ?*struct_stack_st_X509 { 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_TRUST = opaque {}; pub const stack_X509_TRUST_free_func = ?fn ([*c]X509_TRUST) callconv(.C) void; pub const stack_X509_TRUST_copy_func = ?fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST; pub const stack_X509_TRUST_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_TRUST_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_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))); } -pub fn sk_X509_TRUST_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_TRUST_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(?*c_void, @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 @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)))); } -pub fn sk_X509_TRUST_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3464,7 +3495,7 @@ pub fn sk_X509_TRUST_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*co } pub fn sk_X509_TRUST_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_TRUST_new_null() callconv(.C) ?*struct_stack_st_X509_TRUST { return @ptrCast(?*struct_stack_st_X509_TRUST, sk_new_null()); @@ -3486,7 +3517,7 @@ pub fn sk_X509_TRUST_set(arg_sk: ?*struct_stack_st_X509_TRUST, arg_i: usize, arg 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(?*c_void, 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)))); } pub fn sk_X509_TRUST_free(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) void { var sk = arg_sk; @@ -3495,13 +3526,13 @@ pub fn sk_X509_TRUST_free(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) voi 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -3511,13 +3542,13 @@ pub fn sk_X509_TRUST_delete(arg_sk: ?*struct_stack_st_X509_TRUST, arg_where: usi 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 c_void, 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)))); } 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 c_void, p), sk_X509_TRUST_call_cmp_func); + 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); } pub fn sk_X509_TRUST_shift(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; @@ -3526,7 +3557,7 @@ pub fn sk_X509_TRUST_shift(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) [* 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_TRUST_pop(arg_sk: ?*struct_stack_st_X509_TRUST) callconv(.C) [*c]X509_TRUST { var sk = arg_sk; @@ -3547,29 +3578,29 @@ pub fn sk_X509_TRUST_is_sorted(arg_sk: ?*const struct_stack_st_X509_TRUST) callc 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_TRUST_deep_copy(arg_sk: ?*const struct_stack_st_X509_TRUST, arg_copy_func: ?fn ([*c]X509_TRUST) callconv(.C) [*c]X509_TRUST, arg_free_func: ?fn ([*c]X509_TRUST) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_TRUST_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_REVOKED = opaque {}; pub const stack_X509_REVOKED_free_func = ?fn ([*c]X509_REVOKED) callconv(.C) void; pub const stack_X509_REVOKED_copy_func = ?fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED; pub const stack_X509_REVOKED_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_REVOKED_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_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))); } -pub fn sk_X509_REVOKED_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_REVOKED_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(?*c_void, @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 @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)))); } -pub fn sk_X509_REVOKED_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3579,7 +3610,7 @@ pub fn sk_X509_REVOKED_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?* } pub fn sk_X509_REVOKED_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_REVOKED_new_null() callconv(.C) ?*struct_stack_st_X509_REVOKED { return @ptrCast(?*struct_stack_st_X509_REVOKED, sk_new_null()); @@ -3601,7 +3632,7 @@ pub fn sk_X509_REVOKED_set(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_i: usize, 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(?*c_void, 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)))); } pub fn sk_X509_REVOKED_free(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) void { var sk = arg_sk; @@ -3610,13 +3641,13 @@ pub fn sk_X509_REVOKED_free(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) 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 { 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 (?*c_void) callconv(.C) void), 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))); } pub fn sk_X509_REVOKED_insert(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: [*c]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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p), where); } pub fn sk_X509_REVOKED_delete(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_where: usize) callconv(.C) [*c]X509_REVOKED { var sk = arg_sk; @@ -3626,13 +3657,13 @@ pub fn sk_X509_REVOKED_delete(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_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 { 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 c_void, 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)))); } 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 { 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 c_void, p), sk_X509_REVOKED_call_cmp_func); + 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); } pub fn sk_X509_REVOKED_shift(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) [*c]X509_REVOKED { var sk = arg_sk; @@ -3641,7 +3672,7 @@ pub fn sk_X509_REVOKED_shift(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C pub fn sk_X509_REVOKED_push(arg_sk: ?*struct_stack_st_X509_REVOKED, arg_p: [*c]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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_REVOKED_pop(arg_sk: ?*struct_stack_st_X509_REVOKED) callconv(.C) [*c]X509_REVOKED { var sk = arg_sk; @@ -3662,29 +3693,29 @@ pub fn sk_X509_REVOKED_is_sorted(arg_sk: ?*const struct_stack_st_X509_REVOKED) c 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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: ?fn ([*c]X509_REVOKED) callconv(.C) [*c]X509_REVOKED, arg_free_func: ?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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_REVOKED_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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 = ?fn (?*X509_CRL) callconv(.C) void; pub const stack_X509_CRL_copy_func = ?fn (?*X509_CRL) callconv(.C) ?*X509_CRL; pub const stack_X509_CRL_cmp_func = ?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: ?*c_void) callconv(.C) void { +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: ?*c_void) callconv(.C) ?*c_void { +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(?*c_void, @ptrCast(stack_X509_CRL_copy_func, @alignCast(@import("std").meta.alignment(fn (?*X509_CRL) callconv(.C) ?*X509_CRL), copy_func)).?(@ptrCast(?*X509_CRL, 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 c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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; @@ -3694,7 +3725,7 @@ pub fn sk_X509_CRL_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*cons } 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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()); @@ -3716,7 +3747,7 @@ pub fn sk_X509_CRL_set(arg_sk: ?*struct_stack_st_X509_CRL, arg_i: usize, arg_p: 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(?*c_void, 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; @@ -3725,13 +3756,13 @@ pub fn sk_X509_CRL_free(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) void { 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 (?*c_void) callconv(.C) void), 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(?*c_void, p), 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; @@ -3741,13 +3772,13 @@ pub fn sk_X509_CRL_delete(arg_sk: ?*struct_stack_st_X509_CRL, arg_where: usize) 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 c_void, 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 c_void, p), sk_X509_CRL_call_cmp_func); + 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; @@ -3756,7 +3787,7 @@ pub fn sk_X509_CRL_shift(arg_sk: ?*struct_stack_st_X509_CRL) callconv(.C) ?*X509 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(?*c_void, 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; @@ -3777,29 +3808,29 @@ pub fn sk_X509_CRL_is_sorted(arg_sk: ?*const struct_stack_st_X509_CRL) callconv( 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_CRL_deep_copy(arg_sk: ?*const struct_stack_st_X509_CRL, arg_copy_func: ?fn (?*X509_CRL) callconv(.C) ?*X509_CRL, arg_free_func: ?fn (?*X509_CRL) callconv(.C) void) 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_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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_CRL_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_INFO = opaque {}; pub const stack_X509_INFO_free_func = ?fn ([*c]X509_INFO) callconv(.C) void; pub const stack_X509_INFO_copy_func = ?fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO; pub const stack_X509_INFO_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_INFO_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_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))); } -pub fn sk_X509_INFO_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_INFO_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(?*c_void, @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 @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)))); } -pub fn sk_X509_INFO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -3809,7 +3840,7 @@ pub fn sk_X509_INFO_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*con } pub fn sk_X509_INFO_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_INFO_new_null() callconv(.C) ?*struct_stack_st_X509_INFO { return @ptrCast(?*struct_stack_st_X509_INFO, sk_new_null()); @@ -3831,7 +3862,7 @@ pub fn sk_X509_INFO_set(arg_sk: ?*struct_stack_st_X509_INFO, arg_i: usize, arg_p 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(?*c_void, 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)))); } pub fn sk_X509_INFO_free(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) void { var sk = arg_sk; @@ -3840,13 +3871,13 @@ pub fn sk_X509_INFO_free(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) void 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -3856,13 +3887,13 @@ pub fn sk_X509_INFO_delete(arg_sk: ?*struct_stack_st_X509_INFO, arg_where: usize 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 c_void, 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)))); } 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 c_void, p), sk_X509_INFO_call_cmp_func); + 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); } pub fn sk_X509_INFO_shift(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; @@ -3871,7 +3902,7 @@ pub fn sk_X509_INFO_shift(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) [*c] 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_INFO_pop(arg_sk: ?*struct_stack_st_X509_INFO) callconv(.C) [*c]X509_INFO { var sk = arg_sk; @@ -3892,13 +3923,13 @@ pub fn sk_X509_INFO_is_sorted(arg_sk: ?*const struct_stack_st_X509_INFO) callcon 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_INFO_deep_copy(arg_sk: ?*const struct_stack_st_X509_INFO, arg_copy_func: ?fn ([*c]X509_INFO) callconv(.C) [*c]X509_INFO, arg_free_func: ?fn ([*c]X509_INFO) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_INFO_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub extern fn X509_get_version(x509: ?*const X509) c_long; pub extern fn X509_set_version(x509: ?*X509, version: c_long) c_int; @@ -3933,8 +3964,8 @@ pub extern fn X509_SIG_getm(sig: ?*X509_SIG, out_alg: [*c][*c]X509_ALGOR, out_di pub extern fn X509_CRL_set_default_method(meth: ?*const X509_CRL_METHOD) void; pub extern fn X509_CRL_METHOD_new(crl_init: ?fn (?*X509_CRL) callconv(.C) c_int, crl_free: ?fn (?*X509_CRL) callconv(.C) c_int, crl_lookup: ?fn (?*X509_CRL, [*c][*c]X509_REVOKED, [*c]ASN1_INTEGER, ?*X509_NAME) callconv(.C) c_int, crl_verify: ?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: ?*c_void) void; -pub extern fn X509_CRL_get_meth_data(crl: ?*X509_CRL) ?*c_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; @@ -4027,8 +4058,8 @@ 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: ?*c_void) 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 c_void, alg: [*c]const X509_ALGOR) void; +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; @@ -4072,7 +4103,7 @@ 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 const X509_ATTRIBUTE_it: ASN1_ITEM; -pub extern fn X509_ATTRIBUTE_create(nid: c_int, attrtype: c_int, value: ?*c_void) ?*X509_ATTRIBUTE; +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; @@ -4103,9 +4134,9 @@ pub extern fn d2i_X509_CERT_AUX(a: [*c]?*X509_CERT_AUX, in: [*c][*c]const u8, le 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: ?*c_void, 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: ?*c_void) c_int; -pub extern fn X509_get_ex_data(r: ?*X509, idx: c_int) ?*c_void; +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; @@ -4153,10 +4184,10 @@ 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_item_digest(it: ?*const ASN1_ITEM, @"type": ?*const EVP_MD, data: ?*c_void, 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: ?*c_void, 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: ?*c_void, 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: ?*c_void, ctx: [*c]EVP_MD_CTX) 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; @@ -4267,8 +4298,8 @@ pub extern fn X509_get_ext_by_critical(x: ?*const X509, crit: c_int, lastpos: c_ 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) ?*c_void; -pub extern fn X509_add1_ext_i2d(x: ?*X509, nid: c_int, value: ?*c_void, crit: c_int, flags: c_ulong) 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; @@ -4276,8 +4307,8 @@ pub extern fn X509_CRL_get_ext_by_critical(x: ?*const X509_CRL, crit: c_int, las 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) ?*c_void; -pub extern fn X509_CRL_add1_ext_i2d(x: ?*X509_CRL, nid: c_int, value: ?*c_void, crit: c_int, flags: c_ulong) 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; @@ -4285,8 +4316,8 @@ pub extern fn X509_REVOKED_get_ext_by_critical(x: [*c]const X509_REVOKED, crit: 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) ?*c_void; -pub extern fn X509_REVOKED_add1_ext_i2d(x: [*c]X509_REVOKED, nid: c_int, value: ?*c_void, crit: c_int, flags: c_ulong) 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; @@ -4304,12 +4335,12 @@ 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 c_void, 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 c_void, 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 c_void, len: c_int) c_int; -pub extern fn X509_ATTRIBUTE_get0_data(attr: ?*X509_ATTRIBUTE, idx: c_int, attrtype: c_int, unused: ?*c_void) ?*c_void; +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; @@ -4323,16 +4354,16 @@ pub extern fn i2d_PKCS8_PRIV_KEY_INFO(a: ?*PKCS8_PRIV_KEY_INFO, out: [*c][*c]u8) 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: ?*c_void, penc: [*c]u8, penclen: c_int) c_int; +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 X509_PUBKEY_set0_param(@"pub": ?*X509_PUBKEY, obj: ?*ASN1_OBJECT, param_type: c_int, param_value: ?*c_void, key: [*c]u8, key_len: c_int) c_int; +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; pub extern fn X509_check_trust(x: ?*X509, id: c_int, flags: c_int) c_int; pub extern fn X509_TRUST_get_count() c_int; pub extern fn X509_TRUST_get0(idx: c_int) [*c]X509_TRUST; pub extern fn X509_TRUST_get_by_id(id: c_int) c_int; -pub extern fn X509_TRUST_add(id: c_int, flags: c_int, ck: ?fn ([*c]X509_TRUST, ?*X509, c_int) callconv(.C) c_int, name: [*c]u8, arg1: c_int, arg2: ?*c_void) c_int; +pub extern fn X509_TRUST_add(id: c_int, flags: c_int, ck: ?fn ([*c]X509_TRUST, ?*X509, c_int) callconv(.C) c_int, name: [*c]u8, arg1: c_int, arg2: ?*anyopaque) c_int; pub extern fn X509_TRUST_cleanup() void; pub extern fn X509_TRUST_get_flags(xp: [*c]const X509_TRUST) c_int; pub extern fn X509_TRUST_get0_name(xp: [*c]const X509_TRUST) [*c]u8; @@ -4346,17 +4377,17 @@ pub const struct_stack_st_X509_LOOKUP = opaque {}; pub const stack_X509_LOOKUP_free_func = ?fn (?*X509_LOOKUP) callconv(.C) void; pub const stack_X509_LOOKUP_copy_func = ?fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP; pub const stack_X509_LOOKUP_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_LOOKUP_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_LOOKUP_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_LOOKUP) callconv(.C) void), free_func)).?(@ptrCast(?*X509_LOOKUP, ptr)); } -pub fn sk_X509_LOOKUP_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_LOOKUP_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(?*c_void, @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 @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))); } -pub fn sk_X509_LOOKUP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -4366,7 +4397,7 @@ pub fn sk_X509_LOOKUP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*c } pub fn sk_X509_LOOKUP_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_LOOKUP_new_null() callconv(.C) ?*struct_stack_st_X509_LOOKUP { return @ptrCast(?*struct_stack_st_X509_LOOKUP, sk_new_null()); @@ -4388,7 +4419,7 @@ pub fn sk_X509_LOOKUP_set(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_i: usize, a 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(?*c_void, p))); + return @ptrCast(?*X509_LOOKUP, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_LOOKUP_free(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) void { var sk = arg_sk; @@ -4397,13 +4428,13 @@ pub fn sk_X509_LOOKUP_free(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) v 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -4413,13 +4444,13 @@ pub fn sk_X509_LOOKUP_delete(arg_sk: ?*struct_stack_st_X509_LOOKUP, arg_where: u 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 c_void, p))); + return @ptrCast(?*X509_LOOKUP, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_LOOKUP_call_cmp_func); + 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); } pub fn sk_X509_LOOKUP_shift(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; @@ -4428,7 +4459,7 @@ pub fn sk_X509_LOOKUP_shift(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_LOOKUP_pop(arg_sk: ?*struct_stack_st_X509_LOOKUP) callconv(.C) ?*X509_LOOKUP { var sk = arg_sk; @@ -4449,29 +4480,29 @@ pub fn sk_X509_LOOKUP_is_sorted(arg_sk: ?*const struct_stack_st_X509_LOOKUP) cal 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_LOOKUP_deep_copy(arg_sk: ?*const struct_stack_st_X509_LOOKUP, arg_copy_func: ?fn (?*X509_LOOKUP) callconv(.C) ?*X509_LOOKUP, arg_free_func: ?fn (?*X509_LOOKUP) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_LOOKUP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_OBJECT = opaque {}; pub const stack_X509_OBJECT_free_func = ?fn (?*X509_OBJECT) callconv(.C) void; pub const stack_X509_OBJECT_copy_func = ?fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT; pub const stack_X509_OBJECT_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_OBJECT_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_OBJECT_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_OBJECT) callconv(.C) void), free_func)).?(@ptrCast(?*X509_OBJECT, ptr)); } -pub fn sk_X509_OBJECT_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_OBJECT_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(?*c_void, @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 @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))); } -pub fn sk_X509_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -4481,7 +4512,7 @@ pub fn sk_X509_OBJECT_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*c } pub fn sk_X509_OBJECT_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_X509_OBJECT_new_null() callconv(.C) ?*struct_stack_st_X509_OBJECT { return @ptrCast(?*struct_stack_st_X509_OBJECT, sk_new_null()); @@ -4503,7 +4534,7 @@ pub fn sk_X509_OBJECT_set(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_i: usize, a 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(?*c_void, p))); + return @ptrCast(?*X509_OBJECT, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_OBJECT_free(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) void { var sk = arg_sk; @@ -4512,13 +4543,13 @@ pub fn sk_X509_OBJECT_free(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) v 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -4528,13 +4559,13 @@ pub fn sk_X509_OBJECT_delete(arg_sk: ?*struct_stack_st_X509_OBJECT, arg_where: u 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 c_void, p))); + return @ptrCast(?*X509_OBJECT, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_OBJECT_call_cmp_func); + 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); } pub fn sk_X509_OBJECT_shift(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; @@ -4543,7 +4574,7 @@ pub fn sk_X509_OBJECT_shift(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_X509_OBJECT_pop(arg_sk: ?*struct_stack_st_X509_OBJECT) callconv(.C) ?*X509_OBJECT { var sk = arg_sk; @@ -4564,29 +4595,29 @@ pub fn sk_X509_OBJECT_is_sorted(arg_sk: ?*const struct_stack_st_X509_OBJECT) cal 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_OBJECT_deep_copy(arg_sk: ?*const struct_stack_st_X509_OBJECT, arg_copy_func: ?fn (?*X509_OBJECT) callconv(.C) ?*X509_OBJECT, arg_free_func: ?fn (?*X509_OBJECT) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_OBJECT_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const struct_stack_st_X509_VERIFY_PARAM = opaque {}; pub const stack_X509_VERIFY_PARAM_free_func = ?fn (?*X509_VERIFY_PARAM) callconv(.C) void; pub const stack_X509_VERIFY_PARAM_copy_func = ?fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM; pub const stack_X509_VERIFY_PARAM_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_X509_VERIFY_PARAM_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_VERIFY_PARAM_free_func, @alignCast(@import("std").meta.alignment(fn (?*X509_VERIFY_PARAM) callconv(.C) void), free_func)).?(@ptrCast(?*X509_VERIFY_PARAM, ptr)); } -pub fn sk_X509_VERIFY_PARAM_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_X509_VERIFY_PARAM_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(?*c_void, @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 @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))); } -pub fn sk_X509_VERIFY_PARAM_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -4596,7 +4627,7 @@ pub fn sk_X509_VERIFY_PARAM_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [ } pub fn sk_X509_VERIFY_PARAM_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } 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()); @@ -4618,7 +4649,7 @@ pub fn sk_X509_VERIFY_PARAM_set(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, arg 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(?*c_void, p))); + return @ptrCast(?*X509_VERIFY_PARAM, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @ptrCast(?*anyopaque, p))); } pub fn sk_X509_VERIFY_PARAM_free(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) void { var sk = arg_sk; @@ -4627,13 +4658,13 @@ pub fn sk_X509_VERIFY_PARAM_free(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) ca 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -4643,13 +4674,13 @@ pub fn sk_X509_VERIFY_PARAM_delete(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM, 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 c_void, p))); + return @ptrCast(?*X509_VERIFY_PARAM, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_X509_VERIFY_PARAM_call_cmp_func); + 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); } pub fn sk_X509_VERIFY_PARAM_shift(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM { var sk = arg_sk; @@ -4658,7 +4689,7 @@ pub fn sk_X509_VERIFY_PARAM_shift(arg_sk: ?*struct_stack_st_X509_VERIFY_PARAM) c 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -4679,13 +4710,13 @@ pub fn sk_X509_VERIFY_PARAM_is_sorted(arg_sk: ?*const struct_stack_st_X509_VERIF 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_X509_VERIFY_PARAM_deep_copy(arg_sk: ?*const struct_stack_st_X509_VERIFY_PARAM, arg_copy_func: ?fn (?*X509_VERIFY_PARAM) callconv(.C) ?*X509_VERIFY_PARAM, arg_free_func: ?fn (?*X509_VERIFY_PARAM) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_X509_VERIFY_PARAM_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub const X509_STORE_CTX_verify_cb = ?fn (c_int, ?*X509_STORE_CTX) callconv(.C) c_int; pub const X509_STORE_CTX_verify_fn = ?fn (?*X509_STORE_CTX) callconv(.C) c_int; @@ -4771,9 +4802,9 @@ pub extern fn X509_LOOKUP_by_alias(ctx: ?*X509_LOOKUP, @"type": c_int, str: [*c] 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_set_default_paths(ctx: ?*X509_STORE) c_int; -pub extern fn X509_STORE_CTX_get_ex_new_index(argl: c_long, argp: ?*c_void, 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: ?*c_void) c_int; -pub extern fn X509_STORE_CTX_get_ex_data(ctx: ?*X509_STORE_CTX, idx: c_int) ?*c_void; +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; @@ -4841,12 +4872,12 @@ 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) ?*c_void; -pub extern fn OPENSSL_free(ptr: ?*c_void) void; -pub extern fn OPENSSL_realloc(ptr: ?*c_void, new_size: usize) ?*c_void; -pub extern fn OPENSSL_cleanse(ptr: ?*c_void, len: usize) void; -pub extern fn CRYPTO_memcmp(a: ?*const c_void, b: ?*const c_void, len: usize) c_int; -pub extern fn OPENSSL_hash32(ptr: ?*const c_void, len: usize) u32; +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; +pub extern fn OPENSSL_cleanse(ptr: ?*anyopaque, len: usize) void; +pub extern fn CRYPTO_memcmp(a: ?*const anyopaque, b: ?*const anyopaque, len: usize) c_int; +pub extern fn OPENSSL_hash32(ptr: ?*const anyopaque, len: usize) u32; pub extern fn OPENSSL_strhash(s: [*c]const u8) u32; pub extern fn OPENSSL_strdup(s: [*c]const u8) [*c]u8; pub extern fn OPENSSL_strnlen(s: [*c]const u8, len: usize) usize; @@ -4856,13 +4887,13 @@ 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 c_void, size: usize) ?*c_void; +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) ?*c_void; -pub extern fn CRYPTO_realloc(ptr: ?*c_void, new_size: usize, file: [*c]const u8, line: c_int) ?*c_void; -pub extern fn CRYPTO_free(ptr: ?*c_void, file: [*c]const u8, line: c_int) void; -pub extern fn OPENSSL_clear_free(ptr: ?*c_void, len: usize) 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_library_init() void; pub extern fn CRYPTO_is_confidential_build() c_int; pub extern fn CRYPTO_has_asm() c_int; @@ -4888,121 +4919,121 @@ 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 = fn ([*c]u8, c_int, c_int, ?*c_void) callconv(.C) 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: ?*c_void) 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_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: ?*c_void) c_int; -pub extern fn PEM_ASN1_read_bio(d2i: ?d2i_of_void, name: [*c]const u8, bp: [*c]BIO, x: [*c]?*c_void, cb: ?pem_password_cb, u: ?*c_void) ?*c_void; -pub extern fn PEM_ASN1_write_bio(i2d: ?i2d_of_void, name: [*c]const u8, bp: [*c]BIO, x: ?*c_void, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, cb: ?pem_password_cb, u: ?*c_void) c_int; -pub extern fn PEM_X509_INFO_read_bio(bp: [*c]BIO, sk: ?*struct_stack_st_X509_INFO, cb: ?pem_password_cb, u: ?*c_void) ?*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: ?*c_void) 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]?*c_void, cb: ?pem_password_cb, u: ?*c_void) ?*c_void; -pub extern fn PEM_ASN1_write(i2d: ?i2d_of_void, name: [*c]const u8, fp: [*c]FILE, x: ?*c_void, enc: [*c]const EVP_CIPHER, kstr: [*c]u8, klen: c_int, callback: ?pem_password_cb, u: ?*c_void) c_int; -pub extern fn PEM_X509_INFO_read(fp: [*c]FILE, sk: ?*struct_stack_st_X509_INFO, cb: ?pem_password_cb, u: ?*c_void) ?*struct_stack_st_X509_INFO; -pub extern fn PEM_def_callback(buf: [*c]u8, size: c_int, rwflag: c_int, userdata: ?*c_void) 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_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: ?*c_void) ?*X509; -pub extern fn PEM_read_X509(fp: [*c]FILE, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*c_void) ?*X509; +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_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: ?*c_void) ?*X509; -pub extern fn PEM_read_X509_AUX(fp: [*c]FILE, x: [*c]?*X509, cb: ?pem_password_cb, u: ?*c_void) ?*X509; +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_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: ?*c_void) ?*X509_REQ; -pub extern fn PEM_read_X509_REQ(fp: [*c]FILE, x: [*c]?*X509_REQ, cb: ?pem_password_cb, u: ?*c_void) ?*X509_REQ; +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_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_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: ?*c_void) ?*X509_CRL; -pub extern fn PEM_read_X509_CRL(fp: [*c]FILE, x: [*c]?*X509_CRL, cb: ?pem_password_cb, u: ?*c_void) ?*X509_CRL; +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_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: ?*c_void) [*c]PKCS7; -pub extern fn PEM_read_PKCS7(fp: [*c]FILE, x: [*c][*c]PKCS7, cb: ?pem_password_cb, u: ?*c_void) [*c]PKCS7; +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_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: ?*c_void) ?*X509_SIG; -pub extern fn PEM_read_PKCS8(fp: [*c]FILE, x: [*c]?*X509_SIG, cb: ?pem_password_cb, u: ?*c_void) ?*X509_SIG; +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_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: ?*c_void) ?*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: ?*c_void) ?*PKCS8_PRIV_KEY_INFO; +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_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: ?*c_void) ?*RSA; -pub extern fn PEM_read_RSAPrivateKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*c_void) ?*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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn PEM_read_bio_RSAPublicKey(bp: [*c]BIO, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*c_void) ?*RSA; -pub extern fn PEM_read_RSAPublicKey(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*c_void) ?*RSA; +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_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: ?*c_void) ?*RSA; -pub extern fn PEM_read_RSA_PUBKEY(fp: [*c]FILE, x: [*c]?*RSA, cb: ?pem_password_cb, u: ?*c_void) ?*RSA; +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_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: ?*c_void) [*c]DSA; -pub extern fn PEM_read_DSAPrivateKey(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*c_void) [*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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn PEM_read_bio_DSA_PUBKEY(bp: [*c]BIO, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*c_void) [*c]DSA; -pub extern fn PEM_read_DSA_PUBKEY(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*c_void) [*c]DSA; +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_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: ?*c_void) [*c]DSA; -pub extern fn PEM_read_DSAparams(fp: [*c]FILE, x: [*c][*c]DSA, cb: ?pem_password_cb, u: ?*c_void) [*c]DSA; +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_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: ?*c_void) ?*EC_KEY; -pub extern fn PEM_read_ECPrivateKey(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*c_void) ?*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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn PEM_read_bio_EC_PUBKEY(bp: [*c]BIO, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*c_void) ?*EC_KEY; -pub extern fn PEM_read_EC_PUBKEY(fp: [*c]FILE, x: [*c]?*EC_KEY, cb: ?pem_password_cb, u: ?*c_void) ?*EC_KEY; +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_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: ?*c_void) [*c]DH; -pub extern fn PEM_read_DHparams(fp: [*c]FILE, x: [*c][*c]DH, cb: ?pem_password_cb, u: ?*c_void) [*c]DH; +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: ?*c_void) [*c]EVP_PKEY; -pub extern fn PEM_read_PrivateKey(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*c_void) [*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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn PEM_read_bio_PUBKEY(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*c_void) [*c]EVP_PKEY; -pub extern fn PEM_read_PUBKEY(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*c_void) [*c]EVP_PKEY; +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_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: ?*c_void) 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, ?*c_void) 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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn d2i_PKCS8PrivateKey_bio(bp: [*c]BIO, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*c_void) [*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: ?*c_void) 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: ?*c_void) 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: ?*c_void) c_int; -pub extern fn d2i_PKCS8PrivateKey_fp(fp: [*c]FILE, x: [*c][*c]EVP_PKEY, cb: ?pem_password_cb, u: ?*c_void) [*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: ?*c_void) 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_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 HMAC(evp_md: ?*const EVP_MD, key: ?*const c_void, key_len: usize, data: [*c]const u8, data_len: usize, out: [*c]u8, out_len: [*c]c_uint) [*c]u8; +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_free(ctx: [*c]HMAC_CTX) void; -pub extern fn HMAC_Init_ex(ctx: [*c]HMAC_CTX, key: ?*const c_void, key_len: usize, md: ?*const EVP_MD, impl: ?*ENGINE) c_int; +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_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 c_void, key_len: c_int, md: ?*const EVP_MD) c_int; +pub extern fn HMAC_Init(ctx: [*c]HMAC_CTX, key: ?*const anyopaque, key_len: c_int, md: ?*const EVP_MD) c_int; pub extern fn HMAC_CTX_copy(dest: [*c]HMAC_CTX, src: [*c]const HMAC_CTX) c_int; pub extern fn TLS_method() ?*const SSL_METHOD; pub extern fn DTLS_method() ?*const SSL_METHOD; @@ -5032,11 +5063,11 @@ pub extern fn SSL_set_wfd(ssl: ?*SSL, fd: c_int) c_int; pub extern fn SSL_do_handshake(ssl: ?*SSL) c_int; pub extern fn SSL_connect(ssl: ?*SSL) c_int; pub extern fn SSL_accept(ssl: ?*SSL) c_int; -pub extern fn SSL_read(ssl: ?*SSL, buf: ?*c_void, num: c_int) c_int; -pub extern fn SSL_peek(ssl: ?*SSL, buf: ?*c_void, num: c_int) c_int; +pub extern fn SSL_read(ssl: ?*SSL, buf: ?*anyopaque, num: c_int) c_int; +pub extern fn SSL_peek(ssl: ?*SSL, buf: ?*anyopaque, num: c_int) c_int; pub extern fn SSL_pending(ssl: ?*const SSL) c_int; pub extern fn SSL_has_pending(ssl: ?*const SSL) c_int; -pub extern fn SSL_write(ssl: ?*SSL, buf: ?*const c_void, num: c_int) c_int; +pub extern fn SSL_write(ssl: ?*SSL, buf: ?*const anyopaque, num: c_int) c_int; pub extern fn SSL_key_update(ssl: ?*SSL, request_type: c_int) c_int; pub extern fn SSL_shutdown(ssl: ?*SSL) c_int; pub extern fn SSL_CTX_set_quiet_shutdown(ctx: ?*SSL_CTX, mode: c_int) void; @@ -5087,8 +5118,8 @@ pub extern fn SSL_add1_chain_cert(ssl: ?*SSL, x509: ?*X509) c_int; pub extern fn SSL_CTX_clear_chain_certs(ctx: ?*SSL_CTX) c_int; pub extern fn SSL_CTX_clear_extra_chain_certs(ctx: ?*SSL_CTX) c_int; pub extern fn SSL_clear_chain_certs(ssl: ?*SSL) c_int; -pub extern fn SSL_CTX_set_cert_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; -pub extern fn SSL_set_cert_cb(ssl: ?*SSL, cb: ?fn (?*SSL, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; +pub extern fn SSL_CTX_set_cert_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; +pub extern fn SSL_set_cert_cb(ssl: ?*SSL, cb: ?fn (?*SSL, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; pub extern fn SSL_get0_certificate_types(ssl: ?*const SSL, out_types: [*c][*c]const u8) usize; pub extern fn SSL_get0_peer_verify_algorithms(ssl: ?*const SSL, out_sigalgs: [*c][*c]const u16) usize; pub extern fn SSL_get0_peer_delegation_algorithms(ssl: ?*const SSL, out_sigalgs: [*c][*c]const u16) usize; @@ -5132,8 +5163,8 @@ pub extern fn SSL_use_PrivateKey_file(ssl: ?*SSL, file: [*c]const u8, @"type": c 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_set_default_passwd_cb_userdata(ctx: ?*SSL_CTX, data: ?*c_void) void; -pub extern fn SSL_CTX_get_default_passwd_cb_userdata(ctx: ?*const SSL_CTX) ?*c_void; +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; @@ -5141,17 +5172,17 @@ pub const struct_stack_st_SSL_CIPHER = opaque {}; pub const stack_SSL_CIPHER_free_func = ?fn (?*const SSL_CIPHER) callconv(.C) void; pub const stack_SSL_CIPHER_copy_func = ?fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER; pub const stack_SSL_CIPHER_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_SSL_CIPHER_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_SSL_CIPHER_free_func, @alignCast(@import("std").meta.alignment(fn (?*const SSL_CIPHER) callconv(.C) void), free_func)).?(@ptrCast(?*const SSL_CIPHER, ptr)); } -pub fn sk_SSL_CIPHER_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_SSL_CIPHER_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 @intToPtr(?*c_void, @ptrToInt(@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 @intToPtr(?*anyopaque, @ptrToInt(@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)))); } -pub fn sk_SSL_CIPHER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -5161,7 +5192,7 @@ pub fn sk_SSL_CIPHER_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*co } pub fn sk_SSL_CIPHER_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_SSL_CIPHER_new_null() callconv(.C) ?*struct_stack_st_SSL_CIPHER { return @ptrCast(?*struct_stack_st_SSL_CIPHER, sk_new_null()); @@ -5183,7 +5214,7 @@ pub fn sk_SSL_CIPHER_set(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_i: usize, arg 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, @intToPtr(?*c_void, @ptrToInt(p)))); + return @ptrCast(?*const SSL_CIPHER, sk_set(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), i, @intToPtr(?*anyopaque, @ptrToInt(p)))); } pub fn sk_SSL_CIPHER_free(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) void { var sk = arg_sk; @@ -5192,13 +5223,13 @@ pub fn sk_SSL_CIPHER_free(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) voi 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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)), @intToPtr(?*c_void, @ptrToInt(p)), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @intToPtr(?*anyopaque, @ptrToInt(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; @@ -5208,13 +5239,13 @@ pub fn sk_SSL_CIPHER_delete(arg_sk: ?*struct_stack_st_SSL_CIPHER, arg_where: usi 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 c_void, p))); + return @ptrCast(?*const SSL_CIPHER, sk_delete_ptr(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*const anyopaque, 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 c_void, p), sk_SSL_CIPHER_call_cmp_func); + 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); } pub fn sk_SSL_CIPHER_shift(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; @@ -5223,7 +5254,7 @@ pub fn sk_SSL_CIPHER_shift(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) ?* 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)), @intToPtr(?*c_void, @ptrToInt(p))); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @intToPtr(?*anyopaque, @ptrToInt(p))); } pub fn sk_SSL_CIPHER_pop(arg_sk: ?*struct_stack_st_SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER { var sk = arg_sk; @@ -5244,13 +5275,13 @@ pub fn sk_SSL_CIPHER_is_sorted(arg_sk: ?*const struct_stack_st_SSL_CIPHER) callc 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_SSL_CIPHER_deep_copy(arg_sk: ?*const struct_stack_st_SSL_CIPHER, arg_copy_func: ?fn (?*const SSL_CIPHER) callconv(.C) ?*const SSL_CIPHER, arg_free_func: ?fn (?*const SSL_CIPHER) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_SSL_CIPHER_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } 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; @@ -5290,8 +5321,8 @@ 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: ?*c_void) ?*SSL_SESSION; -pub extern fn PEM_read_SSL_SESSION(fp: [*c]FILE, x: [*c]?*SSL_SESSION, cb: ?pem_password_cb, u: ?*c_void) ?*SSL_SESSION; +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_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 SSL_SESSION_new(ctx: ?*const SSL_CTX) ?*SSL_SESSION; @@ -5347,8 +5378,8 @@ pub extern fn SSL_CTX_sess_get_remove_cb(ctx: ?*SSL_CTX) ?fn (?*SSL_CTX, ?*SSL_S pub extern fn SSL_CTX_sess_set_get_cb(ctx: ?*SSL_CTX, get_session_cb: ?fn (?*SSL, [*c]const u8, c_int, [*c]c_int) callconv(.C) ?*SSL_SESSION) void; pub extern fn SSL_CTX_sess_get_get_cb(ctx: ?*SSL_CTX) ?fn (?*SSL, [*c]const u8, c_int, [*c]c_int) callconv(.C) ?*SSL_SESSION; pub extern fn SSL_magic_pending_session_ptr() ?*SSL_SESSION; -pub extern fn SSL_CTX_get_tlsext_ticket_keys(ctx: ?*SSL_CTX, out: ?*c_void, len: usize) c_int; -pub extern fn SSL_CTX_set_tlsext_ticket_keys(ctx: ?*SSL_CTX, in: ?*const c_void, len: usize) c_int; +pub extern fn SSL_CTX_get_tlsext_ticket_keys(ctx: ?*SSL_CTX, out: ?*anyopaque, len: usize) c_int; +pub extern fn SSL_CTX_set_tlsext_ticket_keys(ctx: ?*SSL_CTX, in: ?*const anyopaque, len: usize) c_int; pub extern fn SSL_CTX_set_tlsext_ticket_key_cb(ctx: ?*SSL_CTX, callback: ?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; @@ -5396,7 +5427,7 @@ pub extern fn SSL_CTX_load_verify_locations(ctx: ?*SSL_CTX, ca_file: [*c]const u 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; -pub extern fn SSL_CTX_set_cert_verify_callback(ctx: ?*SSL_CTX, callback: ?fn (?*X509_STORE_CTX, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; +pub extern fn SSL_CTX_set_cert_verify_callback(ctx: ?*SSL_CTX, callback: ?fn (?*X509_STORE_CTX, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; pub extern fn SSL_enable_signed_cert_timestamps(ssl: ?*SSL) void; pub extern fn SSL_CTX_enable_signed_cert_timestamps(ctx: ?*SSL_CTX) void; pub extern fn SSL_enable_ocsp_stapling(ssl: ?*SSL) void; @@ -5422,12 +5453,12 @@ pub extern fn SSL_add_file_cert_subjects_to_stack(out: ?*struct_stack_st_X509_NA 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: ?fn (?*SSL, [*c]c_int, ?*c_void) callconv(.C) c_int) c_int; -pub extern fn SSL_CTX_set_tlsext_servername_arg(ctx: ?*SSL_CTX, arg: ?*c_void) c_int; +pub extern fn SSL_CTX_set_tlsext_servername_callback(ctx: ?*SSL_CTX, callback: ?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_select_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, [*c][*c]const u8, [*c]u8, [*c]const u8, c_uint, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; +pub extern fn SSL_CTX_set_alpn_select_cb(ctx: ?*SSL_CTX, cb: ?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; @@ -5436,8 +5467,8 @@ pub extern fn SSL_has_application_settings(ssl: ?*const SSL) c_int; pub const ssl_cert_compression_func_t = ?fn (?*SSL, [*c]CBB, [*c]const u8, usize) callconv(.C) c_int; pub const ssl_cert_decompression_func_t = ?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: ?fn (?*SSL, [*c][*c]const u8, [*c]c_uint, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; -pub extern fn SSL_CTX_set_next_proto_select_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, [*c][*c]u8, [*c]u8, [*c]const u8, c_uint, ?*c_void) callconv(.C) c_int, arg: ?*c_void) void; +pub extern fn SSL_CTX_set_next_protos_advertised_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, [*c][*c]const u8, [*c]c_uint, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; +pub extern fn SSL_CTX_set_next_proto_select_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, [*c][*c]u8, [*c]u8, [*c]const u8, c_uint, ?*anyopaque) callconv(.C) c_int, arg: ?*anyopaque) void; pub extern fn SSL_get0_next_proto_negotiated(ssl: ?*const SSL, out_data: [*c][*c]const u8, out_len: [*c]c_uint) void; pub extern fn SSL_select_next_proto(out: [*c][*c]u8, out_len: [*c]u8, peer: [*c]const u8, peer_len: c_uint, supported: [*c]const u8, supported_len: c_uint) c_int; pub extern fn SSL_CTX_set_tls_channel_id_enabled(ctx: ?*SSL_CTX, enabled: c_int) void; @@ -5449,17 +5480,17 @@ pub const struct_stack_st_SRTP_PROTECTION_PROFILE = opaque {}; pub const stack_SRTP_PROTECTION_PROFILE_free_func = ?fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void; pub const stack_SRTP_PROTECTION_PROFILE_copy_func = ?fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE; pub const stack_SRTP_PROTECTION_PROFILE_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_SRTP_PROTECTION_PROFILE_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_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))); } -pub fn sk_SRTP_PROTECTION_PROFILE_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_SRTP_PROTECTION_PROFILE_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 @intToPtr(?*c_void, @ptrToInt(@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 @intToPtr(?*anyopaque, @ptrToInt(@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))))); } -pub fn sk_SRTP_PROTECTION_PROFILE_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -5469,7 +5500,7 @@ pub fn sk_SRTP_PROTECTION_PROFILE_call_cmp_func(arg_cmp_func: stack_cmp_func, ar } pub fn sk_SRTP_PROTECTION_PROFILE_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } 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()); @@ -5491,7 +5522,7 @@ pub fn sk_SRTP_PROTECTION_PROFILE_set(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_ 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, @intToPtr(?*c_void, @ptrToInt(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, @intToPtr(?*anyopaque, @ptrToInt(p))))); } pub fn sk_SRTP_PROTECTION_PROFILE_free(arg_sk: ?*struct_stack_st_SRTP_PROTECTION_PROFILE) callconv(.C) void { var sk = arg_sk; @@ -5500,13 +5531,13 @@ pub fn sk_SRTP_PROTECTION_PROFILE_free(arg_sk: ?*struct_stack_st_SRTP_PROTECTION 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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)), @intToPtr(?*c_void, @ptrToInt(p)), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @intToPtr(?*anyopaque, @ptrToInt(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; @@ -5516,13 +5547,13 @@ pub fn sk_SRTP_PROTECTION_PROFILE_delete(arg_sk: ?*struct_stack_st_SRTP_PROTECTI 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 c_void, 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)))); } 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 c_void, p), sk_SRTP_PROTECTION_PROFILE_call_cmp_func); + 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); } 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; @@ -5531,7 +5562,7 @@ pub fn sk_SRTP_PROTECTION_PROFILE_shift(arg_sk: ?*struct_stack_st_SRTP_PROTECTIO 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)), @intToPtr(?*c_void, @ptrToInt(p))); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @intToPtr(?*anyopaque, @ptrToInt(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; @@ -5552,13 +5583,13 @@ pub fn sk_SRTP_PROTECTION_PROFILE_is_sorted(arg_sk: ?*const struct_stack_st_SRTP 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_SRTP_PROTECTION_PROFILE_deep_copy(arg_sk: ?*const struct_stack_st_SRTP_PROTECTION_PROFILE, arg_copy_func: ?fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) [*c]const SRTP_PROTECTION_PROFILE, arg_free_func: ?fn ([*c]const SRTP_PROTECTION_PROFILE) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_SRTP_PROTECTION_PROFILE_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } 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; @@ -5627,15 +5658,15 @@ pub extern fn SSL_ech_accepted(ssl: ?*const SSL) c_int; pub extern fn SSL_alert_type_string_long(value: c_int) [*c]const u8; 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: ?*c_void) c_int; -pub extern fn SSL_get_ex_data(ssl: ?*const SSL, idx: c_int) ?*c_void; -pub extern fn SSL_get_ex_new_index(argl: c_long, argp: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn SSL_SESSION_set_ex_data(session: ?*SSL_SESSION, idx: c_int, data: ?*c_void) c_int; -pub extern fn SSL_SESSION_get_ex_data(session: ?*const SSL_SESSION, idx: c_int) ?*c_void; -pub extern fn SSL_SESSION_get_ex_new_index(argl: c_long, argp: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) c_int; -pub extern fn SSL_CTX_set_ex_data(ctx: ?*SSL_CTX, idx: c_int, data: ?*c_void) c_int; -pub extern fn SSL_CTX_get_ex_data(ctx: ?*const SSL_CTX, idx: c_int) ?*c_void; -pub extern fn SSL_CTX_get_ex_new_index(argl: c_long, argp: ?*c_void, unused: [*c]CRYPTO_EX_unused, dup_unused: ?CRYPTO_EX_dup, free_func: ?CRYPTO_EX_free) 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_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_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_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; @@ -5646,10 +5677,10 @@ pub extern fn SSL_serialize_capabilities(ssl: ?*const SSL, out: [*c]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_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: ?fn (c_int, c_int, c_int, ?*const c_void, usize, ?*SSL, ?*c_void) callconv(.C) void) void; -pub extern fn SSL_CTX_set_msg_callback_arg(ctx: ?*SSL_CTX, arg: ?*c_void) void; -pub extern fn SSL_set_msg_callback(ssl: ?*SSL, cb: ?fn (c_int, c_int, c_int, ?*const c_void, usize, ?*SSL, ?*c_void) callconv(.C) void) void; -pub extern fn SSL_set_msg_callback_arg(ssl: ?*SSL, arg: ?*c_void) void; +pub extern fn SSL_CTX_set_msg_callback(ctx: ?*SSL_CTX, cb: ?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; +pub extern fn SSL_set_msg_callback(ssl: ?*SSL, cb: ?fn (c_int, c_int, c_int, ?*const anyopaque, usize, ?*SSL, ?*anyopaque) callconv(.C) void) void; +pub extern fn SSL_set_msg_callback_arg(ssl: ?*SSL, arg: ?*anyopaque) void; pub extern fn SSL_CTX_set_keylog_callback(ctx: ?*SSL_CTX, cb: ?fn (?*const SSL, [*c]const u8) callconv(.C) void) void; pub extern fn SSL_CTX_get_keylog_callback(ctx: ?*const SSL_CTX) ?fn (?*const SSL, [*c]const u8) callconv(.C) void; pub extern fn SSL_CTX_set_current_time_cb(ctx: ?*SSL_CTX, cb: ?fn (?*const SSL, [*c]struct_timeval) callconv(.C) void) void; @@ -5702,7 +5733,7 @@ pub extern fn SSL_library_init() c_int; pub extern fn SSL_CIPHER_description(cipher: ?*const SSL_CIPHER, buf: [*c]u8, len: c_int) [*c]const u8; pub extern fn SSL_CIPHER_get_version(cipher: ?*const SSL_CIPHER) [*c]const u8; pub extern fn SSL_CIPHER_get_rfc_name(cipher: ?*const SSL_CIPHER) [*c]u8; -pub const COMP_METHOD = c_void; +pub const COMP_METHOD = anyopaque; pub const struct_ssl_comp_st = extern struct { id: c_int, name: [*c]const u8, @@ -5787,17 +5818,17 @@ pub extern fn SSL_set1_sigalgs_list(ssl: ?*SSL, str: [*c]const u8) c_int; pub const stack_SSL_COMP_free_func = ?fn ([*c]SSL_COMP) callconv(.C) void; pub const stack_SSL_COMP_copy_func = ?fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP; pub const stack_SSL_COMP_cmp_func = ?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: ?*c_void) callconv(.C) void { +pub fn sk_SSL_COMP_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_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))); } -pub fn sk_SSL_COMP_call_copy_func(arg_copy_func: stack_copy_func, arg_ptr: ?*c_void) callconv(.C) ?*c_void { +pub fn sk_SSL_COMP_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(?*c_void, @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 @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)))); } -pub fn sk_SSL_COMP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*const c_void, arg_b: [*c]?*const c_void) callconv(.C) c_int { +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 { var cmp_func = arg_cmp_func; var a = arg_a; var b = arg_b; @@ -5807,7 +5838,7 @@ pub fn sk_SSL_COMP_call_cmp_func(arg_cmp_func: stack_cmp_func, arg_a: [*c]?*cons } pub fn sk_SSL_COMP_new(arg_comp: stack_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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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)))); } pub fn sk_SSL_COMP_new_null() callconv(.C) ?*struct_stack_st_SSL_COMP { return @ptrCast(?*struct_stack_st_SSL_COMP, sk_new_null()); @@ -5829,7 +5860,7 @@ pub fn sk_SSL_COMP_set(arg_sk: ?*struct_stack_st_SSL_COMP, arg_i: usize, arg_p: 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(?*c_void, 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)))); } pub fn sk_SSL_COMP_free(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) void { var sk = arg_sk; @@ -5838,13 +5869,13 @@ pub fn sk_SSL_COMP_free(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) void { 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 { 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 (?*c_void) callconv(.C) void), 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))); } 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(?*c_void, p), where); + return sk_insert(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, 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; @@ -5854,13 +5885,13 @@ pub fn sk_SSL_COMP_delete(arg_sk: ?*struct_stack_st_SSL_COMP, arg_where: usize) 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 c_void, 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)))); } 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 c_void, p), sk_SSL_COMP_call_cmp_func); + 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); } pub fn sk_SSL_COMP_shift(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; @@ -5869,7 +5900,7 @@ pub fn sk_SSL_COMP_shift(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) [*c]SS 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(?*c_void, p)); + return sk_push(@ptrCast([*c]_STACK, @alignCast(@import("std").meta.alignment(_STACK), sk)), @ptrCast(?*anyopaque, p)); } pub fn sk_SSL_COMP_pop(arg_sk: ?*struct_stack_st_SSL_COMP) callconv(.C) [*c]SSL_COMP { var sk = arg_sk; @@ -5890,13 +5921,13 @@ pub fn sk_SSL_COMP_is_sorted(arg_sk: ?*const struct_stack_st_SSL_COMP) callconv( 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 { 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 c_void, [*c]?*const c_void) callconv(.C) c_int), 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))))); } pub fn sk_SSL_COMP_deep_copy(arg_sk: ?*const struct_stack_st_SSL_COMP, arg_copy_func: ?fn ([*c]SSL_COMP) callconv(.C) [*c]SSL_COMP, arg_free_func: ?fn ([*c]SSL_COMP) callconv(.C) void) 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 (?*c_void) callconv(.C) ?*c_void), copy_func)), sk_SSL_COMP_call_free_func, @ptrCast(stack_free_func, @alignCast(@import("std").meta.alignment(fn (?*c_void) callconv(.C) void), 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)))); } pub extern fn SSL_cache_hit(ssl: ?*SSL) c_int; pub extern fn SSL_get_default_timeout(ssl: ?*const SSL) c_long; @@ -5904,8 +5935,8 @@ pub extern fn SSL_get_version(ssl: ?*const SSL) [*c]const u8; pub extern fn SSL_get_cipher_list(ssl: ?*const SSL, n: c_int) [*c]const u8; pub extern fn SSL_CTX_set_client_cert_cb(ctx: ?*SSL_CTX, cb: ?fn (?*SSL, [*c]?*X509, [*c][*c]EVP_PKEY) callconv(.C) c_int) void; pub extern fn SSL_want(ssl: ?*const SSL) c_int; -pub extern fn SSL_get_finished(ssl: ?*const SSL, buf: ?*c_void, count: usize) usize; -pub extern fn SSL_get_peer_finished(ssl: ?*const SSL, buf: ?*c_void, count: usize) usize; +pub extern fn SSL_get_finished(ssl: ?*const SSL, buf: ?*anyopaque, count: usize) usize; +pub extern fn SSL_get_peer_finished(ssl: ?*const SSL, buf: ?*anyopaque, count: usize) usize; pub extern fn SSL_alert_type_string(value: c_int) [*c]const u8; pub extern fn SSL_alert_desc_string(value: c_int) [*c]const u8; pub extern fn SSL_state_string(ssl: ?*const SSL) [*c]const u8; @@ -5927,16 +5958,12 @@ pub extern fn SSL_set_tlsext_status_type(ssl: ?*SSL, @"type": c_int) c_int; pub extern fn SSL_get_tlsext_status_type(ssl: ?*const SSL) c_int; pub extern fn SSL_set_tlsext_status_ocsp_resp(ssl: ?*SSL, resp: [*c]u8, resp_len: usize) c_int; pub extern fn SSL_get_tlsext_status_ocsp_resp(ssl: ?*const SSL, out: [*c][*c]const u8) usize; -pub extern fn SSL_CTX_set_tlsext_status_cb(ctx: ?*SSL_CTX, callback: ?fn (?*SSL, ?*c_void) callconv(.C) c_int) c_int; -pub extern fn SSL_CTX_set_tlsext_status_arg(ctx: ?*SSL_CTX, arg: ?*c_void) c_int; +pub extern fn SSL_CTX_set_tlsext_status_cb(ctx: ?*SSL_CTX, callback: ?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 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 inline fn OPENSSL_PRINTF_FORMAT_FUNC(string_index: anytype, first_to_check: anytype) @TypeOf(__attribute__(__format__(__printf__, string_index, first_to_check))) { - return __attribute__(__format__(__printf__, string_index, first_to_check)); -} -pub const OPENSSL_UNUSED = __attribute__(unused); 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)); } @@ -16294,10 +16321,6 @@ 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 inline fn EVPerr(function: anytype, reason: anytype) @TypeOf(ERR_put_error(ERR_LIB_EVP, @as(c_int, 0), reason, __FILE__, __LINE__)) { - _ = function; - return ERR_put_error(ERR_LIB_EVP, @as(c_int, 0), reason, __FILE__, __LINE__); -} pub const PKCS7_DETACHED = @as(c_int, 0x40); pub const PKCS7_TEXT = @as(c_int, 0x1); pub const PKCS7_NOCERTS = @as(c_int, 0x2); @@ -18122,10 +18145,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 inline fn SSLerr(function: anytype, reason: anytype) @TypeOf(ERR_put_error(ERR_LIB_SSL, @as(c_int, 0), reason, __FILE__, __LINE__)) { - _ = function; - return ERR_put_error(ERR_LIB_SSL, @as(c_int, 0), reason, __FILE__, __LINE__); -} pub const DTLS_CTRL_GET_TIMEOUT = doesnt_exist; pub const DTLS_CTRL_HANDLE_TIMEOUT = doesnt_exist; pub const SSL_CTRL_CHAIN = doesnt_exist; @@ -18609,7 +18628,7 @@ pub const struct_bio_st = extern struct { retry_reason: c_int, num: c_int, references: CRYPTO_refcount_t, - ptr: ?*c_void, + ptr: ?*anyopaque, next_bio: ?*BIO, num_read: usize, num_write: usize, @@ -18801,14 +18820,14 @@ pub const SSL = opaque { var rbio = SSL_get_rbio(this); const start_len = rbio.slice().len; const written = try this.read(buf); - return rbio.slice()[start_len..]; + return rbio.slice()[start_len..][0..written]; } pub fn writeAll(this: *SSL, buf: []const u8) Error![]const u8 { var rbio = SSL_get_wbio(this); const start_len = rbio.slice().len; const written = try this.write(buf); - return rbio.slice()[start_len..]; + return rbio.slice()[start_len..][0..written]; } }; @@ -18842,7 +18861,7 @@ pub const BIOMethod = struct { pub const write = fn (*BIO, [*c]const u8, c_int) callconv(.C) c_int; pub const read = fn (*BIO, [*c]u8, c_int) callconv(.C) c_int; pub const gets = fn (*BIO, [*c]u8, c_int) callconv(.C) c_int; - pub const ctrl = fn (*BIO, c_int, c_long, ?*c_void) callconv(.C) c_long; + pub const ctrl = fn (*BIO, c_int, c_long, ?*anyopaque) callconv(.C) c_long; pub fn init( name: [:0]const u8, comptime create__: ?create, diff --git a/src/deps/mimalloc b/src/deps/mimalloc -Subproject 0560fc27c08d28d523b7f741a42deb26cd01c0c +Subproject f412df7a2b64421e1f1d61fde6055a6ea288e8f diff --git a/src/deps/picohttp.zig b/src/deps/picohttp.zig index ef00436f0..f4a662c28 100644 --- a/src/deps/picohttp.zig +++ b/src/deps/picohttp.zig @@ -16,7 +16,7 @@ pub const Header = struct { return @ptrToInt(self.name.ptr) == 0; } - pub fn format(self: Header, comptime layout: []const u8, opts: fmt.FormatOptions, writer: anytype) !void { + pub fn format(self: Header, comptime _: []const u8, _: fmt.FormatOptions, writer: anytype) !void { if (Output.enable_ansi_colors) { if (self.isMultiline()) { try fmt.format(writer, comptime Output.prettyFmt("<r><cyan>{s}", true), .{self.value}); @@ -44,7 +44,7 @@ pub const Request = struct { minor_version: usize, headers: []const Header, - pub fn format(self: Request, comptime layout: []const u8, opts: fmt.FormatOptions, writer: anytype) !void { + pub fn format(self: Request, comptime _: []const u8, _: fmt.FormatOptions, writer: anytype) !void { try fmt.format(writer, "{s} {s}\n", .{ self.method, self.path }); for (self.headers) |header| { _ = try writer.write("\t"); @@ -77,7 +77,7 @@ pub const Request = struct { return switch (rc) { -1 => error.BadRequest, -2 => error.ShortRead, - else => |bytes_read| Request{ + else => Request{ .method = method, .path = path, .minor_version = @intCast(usize, minor_version), @@ -94,7 +94,7 @@ pub const Response = struct { headers: []const Header, bytes_read: c_int = 0, - pub fn format(self: Response, comptime layout: []const u8, opts: fmt.FormatOptions, writer: anytype) !void { + pub fn format(self: Response, comptime _: []const u8, _: fmt.FormatOptions, writer: anytype) !void { try fmt.format(writer, "< {d} {s}\n", .{ self.status_code, self.status }); for (self.headers) |header| { _ = try writer.write("< \t"); @@ -127,7 +127,7 @@ pub const Response = struct { break :brk error.ShortRead; }, - else => |bytes_read| Response{ + else => Response{ .minor_version = @intCast(usize, minor_version), .status_code = @intCast(usize, status_code), .status = status, @@ -185,7 +185,7 @@ pub const Headers = struct { return switch (rc) { -1 => error.BadHeaders, -2 => error.ShortRead, - else => |bytes_read| Headers{ + else => Headers{ .headers = src[0..num_headers], }, }; diff --git a/src/deps/zig-clap/clap.zig b/src/deps/zig-clap/clap.zig index 5fb6cb7de..582790c24 100644 --- a/src/deps/zig-clap/clap.zig +++ b/src/deps/zig-clap/clap.zig @@ -90,11 +90,9 @@ pub fn parseParam(line: []const u8) !Param(Help) { break :blk short_name; } else null; - const long_name = if (mem.startsWith(u8, param_str, "--")) blk: { + _ = if (mem.startsWith(u8, param_str, "--")) { if (param_str[param_str.len - 1] == ',') return error.TrailingComma; - - break :blk param_str[2..]; } else if (found_comma) { return error.TrailingComma; } else if (short_name == null) { @@ -271,7 +269,7 @@ pub const ParseOptions = struct { /// `parse`, `parseEx` does not wrap the allocator so the heap allocator can be /// quite expensive. (TODO: Can we pick a better default? For `parse`, this allocator /// is fine, as it wraps it in an arena) - allocator: *mem.Allocator = heap.page_allocator, + allocator: mem.Allocator = heap.page_allocator, diagnostic: ?*Diagnostic = null, }; @@ -291,7 +289,7 @@ pub fn parse( // Let's reuse the arena from the `OSIterator` since we already have // it. res.clap = try parseEx(Id, params, &iter, .{ - .allocator = &res.arena.allocator, + .allocator = res.arena.allocator(), .diagnostic = opt.diagnostic, }); return res; diff --git a/src/deps/zig-clap/clap/args.zig b/src/deps/zig-clap/clap/args.zig index f9ad21899..c4b6c154e 100644 --- a/src/deps/zig-clap/clap/args.zig +++ b/src/deps/zig-clap/clap/args.zig @@ -1,6 +1,6 @@ const std = @import("std"); -const builtin = std.builtin; +const builtin = @import("builtin"); const debug = std.debug; const heap = std.heap; const mem = std.mem; @@ -11,7 +11,7 @@ const testing = std.testing; pub const ExampleArgIterator = struct { const Error = error{}; - pub fn next(iter: *ExampleArgIterator) Error!?[]const u8 { + pub fn next(_: *ExampleArgIterator) Error!?[]const u8 { return "2"; } }; @@ -56,7 +56,7 @@ pub const OsIterator = struct { /// return an error when we have no exe. exe_arg: ?[:0]const u8, - pub fn init(allocator: *mem.Allocator) Error!OsIterator { + pub fn init(allocator: mem.Allocator) Error!OsIterator { var res = OsIterator{ .arena = heap.ArenaAllocator.init(allocator), .args = process.args(), @@ -90,7 +90,7 @@ pub const ShellIterator = struct { arena: heap.ArenaAllocator, str: []const u8, - pub fn init(allocator: *mem.Allocator, str: []const u8) ShellIterator { + pub fn init(allocator: mem.Allocator, str: []const u8) ShellIterator { return .{ .arena = heap.ArenaAllocator.init(allocator), .str = str, diff --git a/src/deps/zig-clap/clap/comptime.zig b/src/deps/zig-clap/clap/comptime.zig index a61d12aef..009d2b95d 100644 --- a/src/deps/zig-clap/clap/comptime.zig +++ b/src/deps/zig-clap/clap/comptime.zig @@ -44,7 +44,7 @@ pub fn ComptimeClap( multi_options: [multi_options][]const []const u8, flags: [flags]bool, pos: []const []const u8, - allocator: *mem.Allocator, + allocator: mem.Allocator, pub fn parse(iter: anytype, opt: clap.ParseOptions) !@This() { const allocator = opt.allocator; diff --git a/src/env.zig b/src/env.zig index bdf3c2ae7..0c6f69213 100644 --- a/src/env.zig +++ b/src/env.zig @@ -1,10 +1,11 @@ const std = @import("std"); +const builtin = @import("builtin"); pub const BuildTarget = enum { native, wasm, wasi }; pub const build_target: BuildTarget = brk: { - if (std.Target.current.isWasm() and std.Target.current.getOsTag() == .wasi) { + if (@import("builtin").target.isWasm() and @import("builtin").target.getOsTag() == .wasi) { break :brk BuildTarget.wasi; - } else if (std.Target.current.isWasm()) { + } else if (@import("builtin").target.isWasm()) { break :brk BuildTarget.wasm; } else { break :brk BuildTarget.native; @@ -14,15 +15,15 @@ pub const build_target: BuildTarget = brk: { pub const isWasm = build_target == .wasm; pub const isNative = build_target == .native; pub const isWasi = build_target == .wasi; -pub const isMac = build_target == .native and std.Target.current.os.tag == .macos; +pub const isMac = build_target == .native and @import("builtin").target.os.tag == .macos; pub const isBrowser = !isWasi and isWasm; -pub const isWindows = std.Target.current.os.tag == .windows; -pub const isDebug = std.builtin.Mode.Debug == std.builtin.mode; -pub const isRelease = std.builtin.Mode.Debug != std.builtin.mode and !isTest; -pub const isTest = std.builtin.is_test; -pub const isLinux = std.Target.current.os.tag == .linux; -pub const isAarch64 = std.Target.current.cpu.arch.isAARCH64(); -pub const isX86 = std.Target.current.cpu.arch.isX86(); -pub const isX64 = std.Target.current.cpu.arch == .x86_64; +pub const isWindows = @import("builtin").target.os.tag == .windows; +pub const isDebug = std.builtin.Mode.Debug == @import("builtin").mode; +pub const isRelease = std.builtin.Mode.Debug != @import("builtin").mode and !isTest; +pub const isTest = @import("builtin").is_test; +pub const isLinux = @import("builtin").target.os.tag == .linux; +pub const isAarch64 = @import("builtin").target.cpu.arch.isAARCH64(); +pub const isX86 = @import("builtin").target.cpu.arch.isX86(); +pub const isX64 = @import("builtin").target.cpu.arch == .x86_64; pub const allow_assert = isDebug or isTest; pub const analytics_url = if (isDebug) "http://localhost:4000/events" else "http://i.bun.sh/events"; diff --git a/src/env_loader.zig b/src/env_loader.zig index 7b8b04b62..a36956424 100644 --- a/src/env_loader.zig +++ b/src/env_loader.zig @@ -1,6 +1,16 @@ const std = @import("std"); const logger = @import("./logger.zig"); -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const CodePoint = _global.CodePoint; +const C = _global.C; const CodepointIterator = @import("./string_immutable.zig").CodepointIterator; const Analytics = @import("./analytics/analytics_thread.zig"); const Fs = @import("./fs.zig"); @@ -44,7 +54,7 @@ pub const Lexer = struct { } pub fn eatNestedValue( - lexer: *Lexer, + _: *Lexer, comptime ContextType: type, ctx: *ContextType, comptime Writer: type, @@ -153,7 +163,6 @@ pub const Lexer = struct { }, '#' => { - const end = lexer.current; lexer.step(); lexer.eatComment(); @@ -374,7 +383,7 @@ pub const Lexer = struct { pub const Loader = struct { map: *Map, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, @".env.local": ?logger.Source = null, @".env.development": ?logger.Source = null, @@ -403,7 +412,7 @@ pub const Loader = struct { framework_defaults: Api.StringMap, behavior: Api.DotEnvBehavior, prefix: string, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) ![]u8 { var iter = this.map.iter(); var key_count: usize = 0; @@ -431,7 +440,6 @@ pub const Loader = struct { std.debug.assert(prefix.len > 0); while (iter.next()) |entry| { - const value = entry.value_ptr.*; if (strings.startsWith(entry.key_ptr.*, prefix)) { key_buf_len += entry.key_ptr.len; key_count += 1; @@ -456,13 +464,11 @@ pub const Loader = struct { key_buf = try allocator.alloc(u8, key_buf_len + key_count * "process.env.".len); const js_ast = @import("./js_ast.zig"); - const EString = js_ast.E.String; - var e_strings = try allocator.alloc(js_ast.E.String, e_strings_to_allocate * 2); errdefer allocator.free(e_strings); errdefer allocator.free(key_buf); var key_fixed_allocator = std.heap.FixedBufferAllocator.init(key_buf); - var key_allocator = &key_fixed_allocator.allocator; + var key_allocator = key_fixed_allocator.allocator(); if (behavior == .prefix) { while (iter.next()) |entry| { @@ -561,7 +567,7 @@ pub const Loader = struct { return key_buf; } - pub fn init(map: *Map, allocator: *std.mem.Allocator) Loader { + pub fn init(map: *Map, allocator: std.mem.Allocator) Loader { return Loader{ .map = map, .allocator = allocator, @@ -605,7 +611,6 @@ pub const Loader = struct { ) !void { const start = std.time.nanoTimestamp(); var dir_handle: std.fs.Dir = std.fs.cwd(); - var can_auto_close = false; if (dir.hasComptimeQuery(".env.local")) { try this.loadEnvFile(fs, dir_handle, ".env.local", false); @@ -726,7 +731,7 @@ pub const Loader = struct { pub const Parser = struct { pub fn parse( source: *const logger.Source, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, map: *Map, comptime override: bool, comptime is_process: bool, @@ -734,8 +739,6 @@ pub const Parser = struct { var lexer = Lexer.init(source); var fbs = std.io.fixedBufferStream(&temporary_nested_value_buffer); var writer = fbs.writer(); - var temp_variable_i: u16 = 0; - var total_alloc_len: usize = 0; while (lexer.next(is_process)) |variable| { if (variable.has_nested_value) { @@ -769,7 +772,7 @@ pub const Map = struct { map: HashTable, - pub fn cloneToBufMap(this: *Map, allocator: *std.mem.Allocator) !std.BufMap { + pub fn cloneToBufMap(this: *Map, allocator: std.mem.Allocator) !std.BufMap { var buf_map = std.BufMap.init(allocator); const Convert = struct { @@ -786,7 +789,7 @@ pub const Map = struct { return buf_map; } - pub inline fn init(allocator: *std.mem.Allocator) Map { + pub inline fn init(allocator: std.mem.Allocator) Map { return Map{ .map = HashTable.init(allocator) }; } diff --git a/src/exact_size_matcher.zig b/src/exact_size_matcher.zig index 3c122e9d9..19fbb5138 100644 --- a/src/exact_size_matcher.zig +++ b/src/exact_size_matcher.zig @@ -1,8 +1,6 @@ const std = @import("std"); pub fn ExactSizeMatcher(comptime max_bytes: usize) type { - const a: u32 = 1000; - switch (max_bytes) { 1, 2, 4, 8, 12, 16 => {}, else => { diff --git a/src/exports.zig b/src/exports.zig deleted file mode 100644 index fb1f021aa..000000000 --- a/src/exports.zig +++ /dev/null @@ -1,43 +0,0 @@ -const std = @import("std"); -usingnamespace @import("global.zig"); - -const Root = @import("main_wasm.zig").Root; - -pub extern fn init() void { - default_allocator = default_allocator; - default_allocator = default_allocator; -} - -/// Convert a slice into known memory representation -- enables C ABI -pub const U8Chunk = packed struct { - const Float = @Type(builtin.TypeInfo{ .Float = .{ .bits = 2 * @bitSizeOf(usize) } }); - const Abi = if (builtin.arch.isWasm()) Float else U8Chunk; - - ptr: [*]u8, - len: usize, - - pub fn toSlice(raw: Abi) []u8 { - const self = @bitCast(U8Chunk, raw); - return self.ptr[0..self.len]; - } - - pub fn fromSlice(slice: []u8) Abi { - const self = U8Chunk{ .ptr = slice.ptr, .len = slice.len }; - return @bitCast(Abi, self); - } - - pub fn empty() Abi { - return U8Chunk.fromSlice(&[0]u8{}); - } -}; - -export fn fd_create() ?*Root { - const fd = allocator.create(Root) catch return null; - fd.* = .{}; - return fd; -} - -export fn fd_destroy(fd: *Root) void { - fd.deinit(allocator); - allocator.destroy(fd); -} diff --git a/src/fallback.version b/src/fallback.version index 74aeaab27..21a2c6434 100644 --- a/src/fallback.version +++ b/src/fallback.version @@ -1 +1 @@ -2bbe5942da63d2ba
\ No newline at end of file +66916fd5e86a02af
\ No newline at end of file diff --git a/src/feature_flags.zig b/src/feature_flags.zig index e25171b46..b9bcf3bab 100644 --- a/src/feature_flags.zig +++ b/src/feature_flags.zig @@ -1,5 +1,4 @@ const env = @import("env.zig"); - pub const strong_etags_for_built_files = true; pub const keep_alive = true; @@ -14,9 +13,6 @@ pub const disable_printing_null = false; // This was a ~5% performance improvement pub const store_file_descriptors = !env.isWindows and !env.isBrowser; -// This doesn't really seem to do anything for us -pub const disable_filesystem_cache = false and std.Target.current.os.tag == .macos; - pub const css_in_js_import_behavior = CSSInJSImportBehavior.facade; pub const only_output_esm = true; diff --git a/src/fs.zig b/src/fs.zig index ea5602b32..19c085f15 100644 --- a/src/fs.zig +++ b/src/fs.zig @@ -1,11 +1,23 @@ const std = @import("std"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FileDescriptorType = _global.FileDescriptorType; +const FeatureFlags = _global.FeatureFlags; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const sync = @import("sync.zig"); const Mutex = @import("./lock.zig").Lock; const Semaphore = sync.Semaphore; const Fs = @This(); const path_handler = @import("./resolver/resolve_path.zig"); - +const PathString = _global.PathString; const allocators = @import("./allocators.zig"); const hash_map = @import("hash_map.zig"); @@ -64,7 +76,7 @@ pub const BytecodeCacheFetcher = struct { }; pub const FileSystem = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, top_level_dir: string = "/", fs: Implementation, @@ -83,7 +95,7 @@ pub const FileSystem = struct { return tmpdir_handle.?; } - pub fn tmpname(fs: *const FileSystem, extname: string, buf: []u8, hash: u64) ![*:0]u8 { + pub fn tmpname(_: *const FileSystem, extname: string, buf: []u8, hash: u64) ![*:0]u8 { // PRNG was...not so random return try std.fmt.bufPrintZ(buf, "{x}{s}", .{ @truncate(u64, @intCast(u128, hash) * @intCast(u128, std.time.nanoTimestamp())), extname }); } @@ -111,18 +123,18 @@ pub const FileSystem = struct { }; pub fn init1( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, top_level_dir: ?string, ) !*FileSystem { return init1WithForce(allocator, top_level_dir, false); } pub fn init1WithForce( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, top_level_dir: ?string, comptime force: bool, ) !*FileSystem { - var _top_level_dir = top_level_dir orelse (if (isBrowser) "/project/" else try std.process.getCwdAlloc(allocator)); + var _top_level_dir = top_level_dir orelse (if (Environment.isBrowser) "/project/" else try std.process.getCwdAlloc(allocator)); // Ensure there's a trailing separator in the top level directory // This makes path resolution more reliable @@ -226,11 +238,11 @@ pub const FileSystem = struct { } } - pub fn empty(dir: string, allocator: *std.mem.Allocator) DirEntry { + pub fn empty(dir: string, allocator: std.mem.Allocator) DirEntry { return DirEntry{ .dir = dir, .data = EntryMap.init(allocator) }; } - pub fn init(dir: string, allocator: *std.mem.Allocator) DirEntry { + pub fn init(dir: string, allocator: std.mem.Allocator) DirEntry { if (comptime FeatureFlags.verbose_fs) { Output.prettyln("\n {s}", .{dir}); } @@ -245,12 +257,6 @@ pub const FileSystem = struct { pub fn deinit(d: *DirEntry) void { d.data.allocator.free(d.dir); - - var iter = d.data.iterator(); - while (iter.next()) |file_entry| { - // EntryStore.instance.at(file_entry.value).?.deinit(d.data.allocator); - } - d.data.deinit(); } @@ -343,7 +349,7 @@ pub const FileSystem = struct { }; }; - pub fn deinit(e: *Entry, allocator: *std.mem.Allocator) void { + pub fn deinit(e: *Entry, allocator: std.mem.Allocator) void { e.base_.deinit(allocator); allocator.free(e.dir); @@ -391,15 +397,15 @@ pub const FileSystem = struct { // pub fn readDir(fs: *FileSystemEntry, path: string) ?[]string { // } - pub fn normalize(f: *@This(), str: string) string { + pub fn normalize(_: *@This(), str: string) string { return @call(.{ .modifier = .always_inline }, path_handler.normalizeString, .{ str, true, .auto }); } - pub fn normalizeBuf(f: *@This(), buf: []u8, str: string) string { + pub fn normalizeBuf(_: *@This(), buf: []u8, str: string) string { return @call(.{ .modifier = .always_inline }, path_handler.normalizeStringBuf, .{ str, buf, false, .auto, false }); } - pub fn join(f: *@This(), parts: anytype) string { + pub fn join(_: *@This(), parts: anytype) string { return @call(.{ .modifier = .always_inline }, path_handler.joinStringBuf, .{ &join_buf, parts, @@ -407,7 +413,7 @@ pub const FileSystem = struct { }); } - pub fn joinBuf(f: *@This(), parts: anytype, buf: []u8) string { + pub fn joinBuf(_: *@This(), parts: anytype, buf: []u8) string { return @call(.{ .modifier = .always_inline }, path_handler.joinStringBuf, .{ buf, parts, @@ -415,7 +421,7 @@ pub const FileSystem = struct { }); } - pub fn relative(f: *@This(), from: string, to: string) string { + pub fn relative(_: *@This(), from: string, to: string) string { return @call(.{ .modifier = .always_inline }, path_handler.relative, .{ from, to, @@ -436,7 +442,7 @@ pub const FileSystem = struct { }); } - pub fn absAlloc(f: *@This(), allocator: *std.mem.Allocator, parts: anytype) !string { + pub fn absAlloc(f: *@This(), allocator: std.mem.Allocator, parts: anytype) !string { const joined = path_handler.joinAbsString( f.top_level_dir, parts, @@ -457,7 +463,7 @@ pub const FileSystem = struct { return path_handler.joinAbsStringBuf(f.top_level_dir, buf, parts, .auto); } - pub fn joinAlloc(f: *@This(), allocator: *std.mem.Allocator, parts: anytype) !string { + pub fn joinAlloc(f: *@This(), allocator: std.mem.Allocator, parts: anytype) !string { const joined = f.join(parts); return try allocator.dupe(u8, joined); } @@ -483,7 +489,7 @@ pub const FileSystem = struct { pub const RealFS = struct { entries_mutex: Mutex = Mutex.init(), entries: *EntriesOption.Map, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, cwd: string, parent_fs: *FileSystem = undefined, file_limit: usize = 32, @@ -491,7 +497,7 @@ pub const FileSystem = struct { pub var tmpdir_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; - const PLATFORM_TMP_DIR: string = switch (std.Target.current.os.tag) { + const PLATFORM_TMP_DIR: string = switch (@import("builtin").target.os.tag) { .windows => "TMPDIR", .macos => "/private/tmp", else => "/tmp", @@ -499,7 +505,7 @@ pub const FileSystem = struct { pub var tmpdir_path: []const u8 = undefined; pub var tmpdir_path_set = false; - pub fn openTmpDir(fs: *const RealFS) !std.fs.Dir { + pub fn openTmpDir(_: *const RealFS) !std.fs.Dir { if (!tmpdir_path_set) { tmpdir_path = std.os.getenvZ("BUN_TMPDIR") orelse std.os.getenvZ("TMPDIR") orelse PLATFORM_TMP_DIR; tmpdir_path_set = true; @@ -539,9 +545,9 @@ pub const FileSystem = struct { pub fn create(this: *Tmpfile, rfs: *RealFS, name: [*:0]const u8) !void { var tmpdir_ = try rfs.openTmpDir(); - const flags = std.os.O_CREAT | std.os.O_RDWR | std.os.O_CLOEXEC; + const flags = std.os.O.CREAT | std.os.O.RDWR | std.os.O.CLOEXEC; this.dir_fd = tmpdir_.fd; - this.fd = try std.os.openatZ(tmpdir_.fd, name, flags, std.os.S_IRWXO); + this.fd = try std.os.openatZ(tmpdir_.fd, name, flags, std.os.S.IRWXO); } pub fn promote(this: *Tmpfile, from_name: [*:0]const u8, destination_fd: std.os.fd_t, name: [*:0]const u8) !void { @@ -566,7 +572,7 @@ pub const FileSystem = struct { inline fn _fetchCacheFile(fs: *RealFS, basename: string) !std.fs.File { var parts = [_]string{ "node_modules", ".cache", basename }; var path = fs.parent_fs.join(&parts); - return std.fs.cwd().openFile(path, .{ .write = true, .read = true, .lock = .Shared }) catch |err| { + return std.fs.cwd().openFile(path, .{ .write = true, .read = true, .lock = .Shared }) catch { path = fs.parent_fs.join(parts[0..2]); try std.fs.cwd().makePath(path); @@ -611,7 +617,7 @@ pub const FileSystem = struct { var _entries_option_map: *EntriesOption.Map = undefined; var _entries_option_map_loaded: bool = false; pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, cwd: string, ) RealFS { const file_limit = adjustUlimit() catch unreachable; @@ -667,7 +673,7 @@ pub const FileSystem = struct { ); } - pub fn generate(fs: *RealFS, path: string, file: std.fs.File) anyerror!ModKey { + pub fn generate(_: *RealFS, _: string, file: std.fs.File) anyerror!ModKey { const stat = try file.stat(); const seconds = @divTrunc(stat.mtime, @as(@TypeOf(stat.mtime), std.time.ns_per_s)); @@ -724,7 +730,7 @@ pub const FileSystem = struct { pub const Map = allocators.BSSMap(EntriesOption, Preallocate.Counts.dir_entry, false, 128, true); }; - pub fn openDir(fs: *RealFS, unsafe_dir_string: string) std.fs.File.OpenError!std.fs.Dir { + pub fn openDir(_: *RealFS, unsafe_dir_string: string) std.fs.File.OpenError!std.fs.Dir { return try std.fs.openDirAbsolute(unsafe_dir_string, std.fs.Dir.OpenDirOptions{ .iterate = true, .access_sub_paths = true, .no_follow = false }); } @@ -825,7 +831,7 @@ pub const FileSystem = struct { return &temp_entries_option; } - fn readFileError(fs: *RealFS, path: string, err: anyerror) void {} + fn readFileError(_: *RealFS, _: string, _: anyerror) void {} pub fn readFileWithHandle( fs: *RealFS, @@ -837,10 +843,6 @@ pub const FileSystem = struct { ) !File { FileSystem.setMaxFd(file.handle); - if (comptime FeatureFlags.disable_filesystem_cache) { - _ = std.os.fcntl(file.handle, std.os.F_NOCACHE, 1) catch 0; - } - // Skip the extra file.stat() call when possible var size = _size orelse (file.getEndPos() catch |err| { fs.readFileError(path, err); @@ -976,7 +978,7 @@ pub const PathName = struct { // the code as far as avoiding symbol name collisions. These names still go // through the renaming logic that all other symbols go through to avoid name // collisions. - pub fn nonUniqueNameString(self: *const PathName, allocator: *std.mem.Allocator) !string { + pub fn nonUniqueNameString(self: *const PathName, allocator: std.mem.Allocator) !string { if (strings.eqlComptime(self.base, "index")) { if (self.dir.len > 0) { return MutableString.ensureValidIdentifier(PathName.init(self.dir).base, allocator); @@ -1073,7 +1075,7 @@ pub const Path = struct { // This duplicates but only when strictly necessary // This will skip allocating if it's already in FilenameStore or DirnameStore - pub fn dupeAlloc(this: *const Path, allocator: *std.mem.Allocator) !Fs.Path { + pub fn dupeAlloc(this: *const Path, allocator: std.mem.Allocator) !Fs.Path { if (this.text.ptr == this.pretty.ptr and this.text.len == this.text.len) { if (FileSystem.FilenameStore.instance.exists(this.text) or FileSystem.DirnameStore.instance.exists(this.text)) { return this.*; @@ -1149,7 +1151,7 @@ pub const Path = struct { return try std.json.stringify(self.text, options, writer); } - pub fn generateKey(p: *Path, allocator: *std.mem.Allocator) !string { + pub fn generateKey(p: *Path, allocator: std.mem.Allocator) !string { return try std.fmt.allocPrint(allocator, "{s}://{s}", .{ p.namespace, p.text }); } diff --git a/src/futex.zig b/src/futex.zig index 777277dca..671d17b0d 100644 --- a/src/futex.zig +++ b/src/futex.zig @@ -109,8 +109,8 @@ const WindowsFutex = struct { } switch (windows.ntdll.RtlWaitOnAddress( - @ptrCast(?*const c_void, ptr), - @ptrCast(?*const c_void, &expect), + @ptrCast(?*const anyopaque, ptr), + @ptrCast(?*const anyopaque, &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 c_void, ptr); + const address = @ptrCast(?*const anyopaque, ptr); switch (num_waiters) { 1 => windows.ntdll.RtlWakeAddressSingle(address), else => windows.ntdll.RtlWakeAddressAll(address), @@ -191,7 +191,7 @@ const DarwinFutex = struct { assert(timeout_value != 0); timeout_ns = timeout_value; } - const addr = @ptrCast(*const c_void, ptr); + const addr = @ptrCast(*const anyopaque, 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 @@ -226,7 +226,7 @@ const DarwinFutex = struct { } while (true) { - const addr = @ptrCast(*const c_void, ptr); + const addr = @ptrCast(*const anyopaque, ptr); const status = darwin.__ulock_wake(flags, addr, 0); if (status >= 0) return; diff --git a/src/global.zig b/src/global.zig index abee056f5..ced3922c7 100644 --- a/src/global.zig +++ b/src/global.zig @@ -3,15 +3,13 @@ pub const Environment = @import("env.zig"); const use_mimalloc = !Environment.isTest; -pub const default_allocator: *std.mem.Allocator = if (!use_mimalloc) +pub const default_allocator: std.mem.Allocator = if (!use_mimalloc) std.heap.c_allocator else @import("./memory_allocator.zig").c_allocator; pub const C = @import("c.zig"); -pub usingnamespace Environment; - pub const FeatureFlags = @import("feature_flags.zig"); const root = @import("root"); @@ -34,7 +32,7 @@ pub const Output = struct { pub const Source = struct { pub const StreamType: type = brk: { - if (isWasm) { + if (Environment.isWasm) { break :brk std.io.FixedBufferStream([]u8); } else { break :brk std.fs.File; @@ -80,7 +78,7 @@ pub const Output = struct { source = Source.init(stdout_stream, stderr_stream); } - pub fn configureNamedThread(thread: std.Thread, name: stringZ) void { + pub fn configureNamedThread(thread: std.Thread, name: StringTypes.stringZ) void { if (source_set) return; configureThread(); @@ -115,16 +113,16 @@ pub const Output = struct { } }; - pub var enable_ansi_colors = isNative; + pub var enable_ansi_colors = Environment.isNative; pub var enable_buffering = true; pub var is_stdout_piped = false; pub var is_stderr_piped = false; pub inline fn isEmojiEnabled() bool { - return enable_ansi_colors and !isWindows; + return enable_ansi_colors and !Environment.isWindows; } - var _source_for_test: if (isTest) Output.Source else void = undefined; + var _source_for_test: if (Environment.isTest) Output.Source else void = undefined; var _source_for_test_set = false; pub fn initTest() void { if (_source_for_test_set) return; @@ -169,7 +167,7 @@ pub const Output = struct { } pub fn flush() void { - if (isNative and source_set) { + if (Environment.isNative and source_set) { source.buffered_stream.flush() catch {}; source.buffered_error_stream.flush() catch {}; // source.stream.flush() catch {}; @@ -229,7 +227,7 @@ pub const Output = struct { } pub fn printErrorable(comptime fmt: string, args: anytype) !void { - if (comptime isWasm) { + if (comptime Environment.isWasm) { try source.stream.seekTo(0); try source.stream.writer().print(fmt, args); root.console_log(root.Uint8Array.fromSlice(source.out_buffer[0..source.stream.pos])); @@ -246,9 +244,9 @@ pub const Output = struct { return print(fmt, args); } - pub const debug = if (isDebug) _debug else _noop; + pub const debug = if (Environment.isDebug) _debug else _noop; - fn _noop(comptime fmt: string, args: anytype) void {} + fn _noop(comptime _: string, _: anytype) void {} pub fn _debug(comptime fmt: string, args: anytype) void { std.debug.assert(source_set); @@ -262,7 +260,7 @@ pub const Output = struct { pub fn print(comptime fmt: string, args: anytype) void { std.debug.assert(source_set); - if (comptime isWasm) { + if (comptime Environment.isWasm) { source.stream.seekTo(0) catch return; source.stream.writer().print(fmt, args) catch return; @@ -454,7 +452,7 @@ pub const Output = struct { Error, }; - pub var level = if (isDebug) Level.Warn else Level.Error; + pub var level = if (Environment.isDebug) Level.Warn else Level.Error; pub fn prettyWarn(comptime fmt: string, args: anytype) void { prettyWithPrinter(fmt, args, printError, .Warn); @@ -473,7 +471,7 @@ pub const Output = struct { } pub fn printError(comptime fmt: string, args: anytype) void { - if (comptime isWasm) { + if (comptime Environment.isWasm) { source.error_stream.seekTo(0) catch return; source.error_stream.writer().print(fmt, args) catch unreachable; root.console_error(root.Uint8Array.fromSlice(source.err_buffer[0..source.error_stream.pos])); @@ -485,7 +483,7 @@ pub const Output = struct { pub const Global = struct { pub const build_id = std.fmt.parseInt(u64, std.mem.trim(u8, @embedFile("../build-id"), "\n \r\t"), 10) catch unreachable; - pub const package_json_version = if (isDebug) + pub const package_json_version = if (Environment.isDebug) std.fmt.comptimePrint("0.0.{d}_debug", .{build_id}) else std.fmt.comptimePrint("0.0.{d}", .{build_id}); @@ -511,7 +509,7 @@ pub const Global = struct { // Keeping this code for: // 1. documentation that an attempt was made // 2. if I want to configure allocator later - pub inline fn configureAllocator(config: AllocatorConfiguration) void { + pub inline fn configureAllocator(_: AllocatorConfiguration) void { // if (comptime !use_mimalloc) return; // const Mimalloc = @import("./allocators/mimalloc.zig"); // Mimalloc.mi_option_set_enabled(Mimalloc.mi_option_verbose, config.verbose); @@ -521,7 +519,7 @@ pub const Global = struct { pub fn panic(comptime fmt: string, args: anytype) noreturn { @setCold(true); - if (comptime isWasm) { + if (comptime Environment.isWasm) { Output.printErrorln(fmt, args); Output.flush(); @panic(fmt); @@ -542,7 +540,7 @@ pub const Global = struct { inline fn _invariant(comptime fmt: string, args: anytype) noreturn { @setCold(true); - if (comptime isWasm) { + if (comptime Environment.isWasm) { Output.printErrorln(fmt, args); Output.flush(); @panic(fmt); @@ -566,13 +564,22 @@ pub const Global = struct { } }; -pub const FileDescriptorType = if (isBrowser) u0 else std.os.fd_t; +pub const FileDescriptorType = if (Environment.isBrowser) u0 else std.os.fd_t; // When we are on a computer with an absurdly high number of max open file handles // such is often the case with macOS // As a useful optimization, we can store file descriptors and just keep them open...forever -pub const StoredFileDescriptorType = if (isWindows or isBrowser) u0 else std.os.fd_t; - -pub usingnamespace @import("string_types.zig"); +pub const StoredFileDescriptorType = if (Environment.isWindows or Environment.isBrowser) u0 else std.os.fd_t; + +pub const StringTypes = @import("string_types.zig"); +pub const stringZ = StringTypes.stringZ; +pub const string = StringTypes.string; +pub const CodePoint = StringTypes.CodePoint; +pub const PathString = StringTypes.PathString; +pub const HashedString = StringTypes.HashedString; pub const strings = @import("string_immutable.zig"); pub const MutableString = @import("string_mutable.zig").MutableString; + +pub inline fn constStrToU8(s: []const u8) []u8 { + return @intToPtr([*]u8, @ptrToInt(s.ptr))[0..s.len]; +} diff --git a/src/hash_map.zig b/src/hash_map.zig index 3c09e64f4..4f5c72e2f 100644 --- a/src/hash_map.zig +++ b/src/hash_map.zig @@ -112,7 +112,7 @@ pub fn HashMap( ) type { return struct { unmanaged: Unmanaged, - allocator: *Allocator, + allocator: Allocator, pub const Unmanaged = HashMapUnmanaged(K, V, hashFn, eqlFn, max_load_percentage); pub const Entry = Unmanaged.Entry; @@ -123,7 +123,7 @@ pub fn HashMap( const Self = @This(); - pub fn init(allocator: *Allocator) Self { + pub fn init(allocator: Allocator) Self { return .{ .unmanaged = .{}, .allocator = allocator, @@ -411,7 +411,7 @@ pub fn HashMapUnmanaged( index: Size = 0, pub fn next(it: *Iterator) ?*Entry { - if (std.builtin.mode != .ReleaseFast) assert(it.index <= it.hm.capacity()); + if (@import("builtin").mode != .ReleaseFast) assert(it.index <= it.hm.capacity()); if (it.hm.size == 0) return null; const cap = it.hm.capacity(); @@ -440,7 +440,7 @@ pub fn HashMapUnmanaged( pub const Managed = HashMap(K, V, hashFn, eqlFn, max_load_percentage); - pub fn promote(self: Self, allocator: *Allocator) Managed { + pub fn promote(self: Self, allocator: Allocator) Managed { return .{ .unmanaged = self, .allocator = allocator, @@ -451,12 +451,12 @@ pub fn HashMapUnmanaged( return size * 100 < max_load_percentage * cap; } - pub fn deinit(self: *Self, allocator: *Allocator) void { + pub fn deinit(self: *Self, allocator: Allocator) void { self.deallocate(allocator); self.* = undefined; } - fn deallocate(self: *Self, allocator: *Allocator) void { + fn deallocate(self: *Self, allocator: Allocator) void { if (self.metadata == null) return; const cap = self.capacity(); @@ -482,7 +482,7 @@ pub fn HashMapUnmanaged( return new_cap; } - pub fn ensureCapacity(self: *Self, allocator: *Allocator, new_size: Size) !void { + pub fn ensureCapacity(self: *Self, allocator: Allocator, new_size: Size) !void { if (new_size > self.size) try self.growIfNeeded(allocator, new_size - self.size); } @@ -495,7 +495,7 @@ pub fn HashMapUnmanaged( } } - pub fn clearAndFree(self: *Self, allocator: *Allocator) void { + pub fn clearAndFree(self: *Self, allocator: Allocator) void { self.deallocate(allocator); self.size = 0; self.available = 0; @@ -524,8 +524,8 @@ pub fn HashMapUnmanaged( } /// Insert an entry in the map. Assumes it is not already present. - pub fn putNoClobber(self: *Self, allocator: *Allocator, key: K, value: V) !void { - if (std.builtin.mode != .ReleaseFast) assert(!self.contains(key)); + pub fn putNoClobber(self: *Self, allocator: Allocator, key: K, value: V) !void { + if (@import("builtin").mode != .ReleaseFast) assert(!self.contains(key)); try self.growIfNeeded(allocator, 1); self.putAssumeCapacityNoClobber(key, value); @@ -542,7 +542,7 @@ pub fn HashMapUnmanaged( /// Insert an entry in the map. Assumes it is not already present, /// and that no allocation is needed. pub fn putAssumeCapacityNoClobber(self: *Self, key: K, value: V) void { - if (std.builtin.mode != .ReleaseFast) assert(!self.contains(key)); + if (@import("builtin").mode != .ReleaseFast) assert(!self.contains(key)); const hash = hashFn(key); putAssumeCapacityNoClobberWithHash(self, key, hash, value); @@ -561,7 +561,7 @@ pub fn HashMapUnmanaged( } if (!metadata[0].isTombstone()) { - if (std.builtin.mode != .ReleaseFast) assert(self.available > 0); + if (@import("builtin").mode != .ReleaseFast) assert(self.available > 0); self.available -= 1; } @@ -573,7 +573,7 @@ pub fn HashMapUnmanaged( } /// Inserts a new `Entry` into the hash map, returning the previous one, if any. - pub fn fetchPut(self: *Self, allocator: *Allocator, key: K, value: V) !?Entry { + pub fn fetchPut(self: *Self, allocator: Allocator, key: K, value: V) !?Entry { const gop = try self.getOrPut(allocator, key); var result: ?Entry = null; if (gop.found_existing) { @@ -632,19 +632,19 @@ pub fn HashMapUnmanaged( } /// Insert an entry if the associated key is not already present, otherwise update preexisting value. - pub fn put(self: *Self, allocator: *Allocator, key: K, value: V) !void { + pub fn put(self: *Self, allocator: Allocator, key: K, value: V) !void { const result = try self.getOrPut(allocator, key); result.entry.value = value; } /// Insert an entry if the associated key is not already present, otherwise update preexisting value. - pub fn putWithHash(self: *Self, allocator: *Allocator, key: K, hash: u64, value: V) !void { + pub fn putWithHash(self: *Self, allocator: Allocator, key: K, hash: u64, value: V) !void { const result = try self.getOrPutWithHash(allocator, key, hash); result.entry.value = value; } /// Get an optional pointer to the value associated with key, if present. - pub fn getHash(self: Self, key: K) u64 { + pub fn getHash(key: K) u64 { return hashFn(key); } @@ -699,13 +699,13 @@ pub fn HashMapUnmanaged( return null; } - pub fn getOrPut(self: *Self, allocator: *Allocator, key: K) !GetOrPutResult { + pub fn getOrPut(self: *Self, allocator: Allocator, key: K) !GetOrPutResult { try self.growIfNeeded(allocator, 1); return self.getOrPutAssumeCapacity(key); } - pub fn getOrPutWithHash(self: *Self, allocator: *Allocator, key: K, hash: u64) !GetOrPutResult { + pub fn getOrPutWithHash(self: *Self, allocator: Allocator, key: K, hash: u64) !GetOrPutResult { try self.growIfNeeded(allocator, 1); return self.getOrPutAssumeCapacityWithHash(key, hash); @@ -753,7 +753,7 @@ pub fn HashMapUnmanaged( return GetOrPutResult{ .entry = entry, .found_existing = false }; } - pub fn getOrPutValue(self: *Self, allocator: *Allocator, key: K, value: V) !*Entry { + pub fn getOrPutValue(self: *Self, allocator: Allocator, key: K, value: V) !*Entry { const res = try self.getOrPut(allocator, key); if (!res.found_existing) res.entry.value = value; return res.entry; @@ -796,7 +796,7 @@ pub fn HashMapUnmanaged( /// Asserts there is an `Entry` with matching key, deletes it from the hash map, /// and discards it. pub fn removeAssertDiscard(self: *Self, key: K) void { - if (std.builtin.mode != .ReleaseFast) assert(self.contains(key)); + if (@import("builtin").mode != .ReleaseFast) assert(self.contains(key)); const hash = hashFn(key); const mask = self.capacity() - 1; @@ -829,17 +829,17 @@ pub fn HashMapUnmanaged( // what has to stay under the max_load_percentage of capacity. fn load(self: *const Self) Size { const max_load = (self.capacity() * max_load_percentage) / 100; - if (std.builtin.mode != .ReleaseFast) assert(max_load >= self.available); + if (@import("builtin").mode != .ReleaseFast) assert(max_load >= self.available); return @truncate(Size, max_load - self.available); } - fn growIfNeeded(self: *Self, allocator: *Allocator, new_count: Size) !void { + fn growIfNeeded(self: *Self, allocator: Allocator, new_count: Size) !void { if (new_count > self.available) { try self.grow(allocator, capacityForSize(self.load() + new_count)); } } - pub fn clone(self: Self, allocator: *Allocator) !Self { + pub fn clone(self: Self, allocator: Allocator) !Self { var other = Self{}; if (self.size == 0) return other; @@ -864,10 +864,10 @@ pub fn HashMapUnmanaged( return other; } - fn grow(self: *Self, allocator: *Allocator, new_capacity: Size) !void { + fn grow(self: *Self, allocator: Allocator, new_capacity: Size) !void { const new_cap = std.math.max(new_capacity, minimal_capacity); - if (std.builtin.mode != .ReleaseFast) assert(new_cap > self.capacity()); - if (std.builtin.mode != .ReleaseFast) assert(std.math.isPowerOfTwo(new_cap)); + if (@import("builtin").mode != .ReleaseFast) assert(new_cap > self.capacity()); + if (@import("builtin").mode != .ReleaseFast) assert(std.math.isPowerOfTwo(new_cap)); var map = Self{}; defer map.deinit(allocator); @@ -894,7 +894,7 @@ pub fn HashMapUnmanaged( std.mem.swap(Self, self, &map); } - fn allocate(self: *Self, allocator: *Allocator, new_capacity: Size) !void { + fn allocate(self: *Self, allocator: Allocator, new_capacity: Size) !void { const meta_size = @sizeOf(Header) + new_capacity * @sizeOf(Metadata); const alignment = @alignOf(Entry) - 1; @@ -908,7 +908,7 @@ pub fn HashMapUnmanaged( const metadata = ptr + @sizeOf(Header); var entry_ptr = ptr + meta_size; entry_ptr = (entry_ptr + alignment) & ~@as(usize, alignment); - if (std.builtin.mode != .ReleaseFast) assert(entry_ptr + @as(usize, new_capacity) * @sizeOf(Entry) <= ptr + total_size); + if (@import("builtin").mode != .ReleaseFast) assert(entry_ptr + @as(usize, new_capacity) * @sizeOf(Entry) <= ptr + total_size); const hdr = @intToPtr(*Header, ptr); hdr.entries = @intToPtr([*]Entry, entry_ptr); @@ -1289,7 +1289,7 @@ test "std.hash_map getOrPut" { i = 0; while (i < 20) : (i += 1) { - var n = try map.getOrPutValue(i, 1); + _ = try map.getOrPutValue(i, 1); } i = 0; diff --git a/src/http.zig b/src/http.zig index 8bbc434bb..6f7258d23 100644 --- a/src/http.zig +++ b/src/http.zig @@ -1,6 +1,17 @@ // const c = @import("./c.zig"); const std = @import("std"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FeatureFlags = _global.FeatureFlags; +const stringZ = _global.stringZ; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const default_allocator = _global.default_allocator; +const C = _global.C; const Api = @import("./api/schema.zig").Api; const ApiReader = @import("./api/schema.zig").Reader; const ApiWriter = @import("./api/schema.zig").Writer; @@ -22,6 +33,7 @@ const DotEnv = @import("./env_loader.zig"); const mimalloc = @import("./allocators/mimalloc.zig"); const MacroMap = @import("./resolver/package_json.zig").MacroMap; const Analytics = @import("./analytics/analytics_thread.zig"); + pub fn constStrToU8(s: string) []u8 { return @intToPtr([*]u8, @ptrToInt(s.ptr))[0..s.len]; } @@ -49,10 +61,8 @@ const watcher = @import("./watcher.zig"); threadlocal var req_headers_buf: [100]picohttp.Header = undefined; threadlocal var res_headers_buf: [100]picohttp.Header = undefined; const sync = @import("./sync.zig"); -const JavaScript = @import("./javascript/jsc/javascript.zig"); -const JavaScriptCore = @import("./javascript/jsc/JavascriptCore.zig"); -usingnamespace @import("./javascript/jsc/bindings/bindings.zig"); -usingnamespace @import("./javascript/jsc/bindings/exports.zig"); +const JavaScript = @import("javascript_core"); +const JavaScriptCore = JavaScriptCore.C; const Router = @import("./router.zig"); pub const Watcher = watcher.NewWatcher(*Server); const ZigURL = @import("./query_string_map.zig").URL; @@ -62,16 +72,16 @@ const URLPath = @import("./http/url_path.zig"); const Method = @import("./http/method.zig").Method; const SOCKET_FLAGS: u32 = if (Environment.isLinux) - os.SOCK_CLOEXEC | os.MSG_NOSIGNAL + os.SOCK.CLOEXEC | os.MSG_NOSIGNAL else - os.SOCK_CLOEXEC; + os.SOCK.CLOEXEC; pub const RequestContext = struct { request: Request, method: Method, url: URLPath, conn: *tcp.Connection, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, arena: *std.heap.ArenaAllocator, log: logger.Log, bundler: *Bundler, @@ -130,7 +140,7 @@ pub const RequestContext = struct { pub fn renderFallback( this: *RequestContext, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, bundler_: *Bundler, step: Api.FallbackStep, log: *logger.Log, @@ -273,7 +283,6 @@ pub const RequestContext = struct { try this.writeStatus(500); } - const route_name = if (route_index > -1) this.matched_route.?.name else this.url.pathname; if (comptime fmt.len > 0) Output.prettyErrorln(fmt, args); Output.flush(); @@ -326,13 +335,13 @@ pub const RequestContext = struct { relative_unrooted_path = &(index_path); _file = file; extension = "html"; - } else |err| {} + } else |_| {} // Okay is it actually a full path? } else if (extension.len > 0) { if (public_dir.openFile(relative_unrooted_path, .{})) |file| { _file = file; - } else |err| {} + } else |_| {} } // Try some weird stuff. @@ -346,7 +355,7 @@ pub const RequestContext = struct { _file = file; extension = "html"; break; - } else |err| {} + } else |_| {} var _path: []u8 = undefined; if (relative_unrooted_path[relative_unrooted_path.len - 1] == '/') { @@ -366,7 +375,7 @@ pub const RequestContext = struct { extension = "html"; _file = file; break; - } else |err| {} + } else |_| {} } break; @@ -433,7 +442,7 @@ pub const RequestContext = struct { comptime chunked: bool, ) !void { defer { - if (Environment.isDebug or isTest) { + if (Environment.allow_assert) { std.debug.assert(!ctx.has_written_last_header); ctx.has_written_last_header = true; } @@ -478,7 +487,7 @@ pub const RequestContext = struct { _ = try ctx.writeSocket(writer.getWritten(), SOCKET_FLAGS); } - pub fn writeSocket(ctx: *RequestContext, buf: anytype, flags: anytype) !usize { + pub fn writeSocket(ctx: *RequestContext, buf: anytype, _: anytype) !usize { // ctx.conn.client.setWriteBufferSize(@intCast(u32, buf.len)) catch {}; const written = ctx.conn.client.write(buf, SOCKET_FLAGS) catch |err| { Output.printError("Write error: {s}", .{@errorName(err)}); @@ -530,7 +539,7 @@ pub const RequestContext = struct { .log = undefined, .url = try URLPath.parse(req.path), .conn = conn, - .allocator = &arena.allocator, + .allocator = arena.allocator(), .method = Method.which(req.method) orelse return error.InvalidMethod, .watcher = watcher_, .timer = timer, @@ -559,7 +568,7 @@ pub const RequestContext = struct { defer ctx.done(); try ctx.writeStatus(500); const printed = std.fmt.bufPrint(&error_buf, "Error: {s}", .{@errorName(err)}) catch |err2| brk: { - if (Environment.isDebug or isTest) { + if (Environment.isDebug or Environment.isTest) { Global.panic("error while printing error: {s}", .{@errorName(err2)}); } @@ -585,8 +594,8 @@ pub const RequestContext = struct { } pub fn appendHeader(ctx: *RequestContext, comptime key: string, value: string) void { - if (comptime isDebug or isTest) std.debug.assert(!ctx.has_written_last_header); - if (comptime isDebug or isTest) std.debug.assert(ctx.res_headers_count < res_headers_buf.len); + if (comptime Environment.allow_assert) std.debug.assert(!ctx.has_written_last_header); + if (comptime Environment.allow_assert) std.debug.assert(ctx.res_headers_count < res_headers_buf.len); res_headers_buf[ctx.res_headers_count] = Header{ .name = key, .value = value }; ctx.res_headers_count += 1; } @@ -675,7 +684,7 @@ pub const RequestContext = struct { pub const WatchBuilder = struct { watcher: *Watcher, bundler: *Bundler, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, printer: js_printer.BufferPrinter, timer: std.time.Timer, count: usize = 0, @@ -695,7 +704,7 @@ pub const RequestContext = struct { fail, }; }; - pub fn build(this: *WatchBuilder, id: u32, from_timestamp: u32, allocator: *std.mem.Allocator) !WatchBuildResult { + pub fn build(this: *WatchBuilder, id: u32, from_timestamp: u32, allocator: std.mem.Allocator) !WatchBuildResult { if (this.count == 0) { var writer = try js_printer.BufferWriter.init(this.allocator); this.printer = js_printer.BufferPrinter.init(writer); @@ -789,27 +798,7 @@ pub const RequestContext = struct { &parse_result, .absolute_url, false, - ) catch |err| { - return WatchBuildResult{ - .value = .{ - .fail = .{ - .id = id, - .from_timestamp = from_timestamp, - .loader = loader.toAPI(), - .module_path = this.bundler.fs.relativeTo(file_path_str), - .log = try log.toAPI(allocator), - }, - }, - - .id = id, - .timestamp = WebsocketHandler.toTimestamp(Server.global_start_time.read()), - .log = log, - }; - }; - } - - var written = this.bundler.print(parse_result, @TypeOf(&this.printer), &this.printer, .esm) catch |err| { - return WatchBuildResult{ + ) catch return WatchBuildResult{ .value = .{ .fail = .{ .id = id, @@ -819,10 +808,27 @@ pub const RequestContext = struct { .log = try log.toAPI(allocator), }, }, + .id = id, .timestamp = WebsocketHandler.toTimestamp(Server.global_start_time.read()), .log = log, }; + } + + var written = this.bundler.print(parse_result, @TypeOf(&this.printer), &this.printer, .esm) catch + return WatchBuildResult{ + .value = .{ + .fail = .{ + .id = id, + .from_timestamp = from_timestamp, + .loader = loader.toAPI(), + .module_path = this.bundler.fs.relativeTo(file_path_str), + .log = try log.toAPI(allocator), + }, + }, + .id = id, + .timestamp = WebsocketHandler.toTimestamp(Server.global_start_time.read()), + .log = log, }; return WatchBuildResult{ @@ -974,7 +980,7 @@ pub const RequestContext = struct { pub fn handleJSErrorFmt(this: *HandlerThread, comptime step: Api.FallbackStep, err: anyerror, comptime fmt: string, args: anytype) !void { var arena = std.heap.ArenaAllocator.init(default_allocator); - var allocator = &arena.allocator; + var allocator = arena.allocator(); defer arena.deinit(); defer this.log.msgs.clearRetainingCapacity(); @@ -1010,9 +1016,9 @@ pub const RequestContext = struct { } } - pub fn handleRuntimeJSError(this: *HandlerThread, js_value: JSValue, comptime step: Api.FallbackStep, comptime fmt: string, args: anytype) !void { + pub fn handleRuntimeJSError(this: *HandlerThread, js_value: JavaScript.JSValue, comptime step: Api.FallbackStep, comptime fmt: string, args: anytype) !void { var arena = std.heap.ArenaAllocator.init(default_allocator); - var allocator = &arena.allocator; + var allocator = arena.allocator(); defer arena.deinit(); defer this.log.msgs.clearRetainingCapacity(); @@ -1056,9 +1062,9 @@ pub const RequestContext = struct { } } - pub fn handleFetchEventError(this: *HandlerThread, err: anyerror, js_value: JSValue, ctx: *RequestContext) !void { + pub fn handleFetchEventError(this: *HandlerThread, err: anyerror, js_value: JavaScript.JSValue, ctx: *RequestContext) !void { var arena = std.heap.ArenaAllocator.init(default_allocator); - var allocator = &arena.allocator; + var allocator = arena.allocator(); defer arena.deinit(); defer this.log.msgs.clearRetainingCapacity(); @@ -1126,7 +1132,7 @@ pub const RequestContext = struct { var start_timer = std.time.Timer.start() catch unreachable; Output.Source.configureThread(); - @import("javascript/jsc/JavascriptCore.zig").JSCInitialize(); + @import("javascript/jsc/javascript_core_c_api.zig").JSCInitialize(); js_ast.Stmt.Data.Store.create(std.heap.c_allocator); js_ast.Expr.Data.Store.create(std.heap.c_allocator); @@ -1199,7 +1205,7 @@ pub const RequestContext = struct { }; switch (load_result.status(vm.global.vm())) { - JSPromise.Status.Fulfilled => {}, + JavaScript.JSPromise.Status.Fulfilled => {}, else => { var result = load_result.result(vm.global.vm()); @@ -1227,8 +1233,7 @@ pub const RequestContext = struct { js_ast.Stmt.Data.Store.reset(); js_ast.Expr.Data.Store.reset(); JavaScript.Bun.flushCSSImports(); - const resolved_count = vm.resolved_count; - const transpiled_count = vm.transpiled_count; + vm.flush(); Output.printElapsed(@intToFloat(f64, (start_timer.read())) / std.time.ns_per_ms); @@ -1257,9 +1262,9 @@ pub const RequestContext = struct { var __arena: std.heap.ArenaAllocator = undefined; pub fn runLoop(vm: *JavaScript.VirtualMachine, thread: *HandlerThread) !void { - var module_map = ZigGlobalObject.getModuleRegistryMap(vm.global); + var module_map = JavaScript.ZigGlobalObject.getModuleRegistryMap(vm.global); - if (!VM.isJITEnabled()) { + if (!JavaScript.VM.isJITEnabled()) { Output.prettyErrorln("<red><r>warn:<r> JIT is disabled,,,this is a bug in Bun and/or a permissions problem. JS will run slower.", .{}); if (vm.bundler.env.map.get("BUN_CRASH_WITHOUT_JIT") != null) { Global.crash(); @@ -1274,7 +1279,7 @@ pub const RequestContext = struct { defer { JavaScript.VirtualMachine.vm.flush(); std.debug.assert( - ZigGlobalObject.resetModuleRegistryMap(vm.global, module_map), + JavaScript.ZigGlobalObject.resetModuleRegistryMap(vm.global, module_map), ); js_ast.Stmt.Data.Store.reset(); js_ast.Expr.Data.Store.reset(); @@ -1296,7 +1301,7 @@ pub const RequestContext = struct { HandlerThread, thread, HandlerThread.handleFetchEventError, - ) catch |err| {}; + ) catch {}; JavaScript.VirtualMachine.vm.tick(); } } @@ -1626,7 +1631,7 @@ pub const RequestContext = struct { var arena = std.heap.ArenaAllocator.init(default_allocator); defer arena.deinit(); - var build_result = try handler.builder.build(request.id, cmd.timestamp, &arena.allocator); + var build_result = try handler.builder.build(request.id, cmd.timestamp, arena.allocator()); const file_path = switch (build_result.value) { .fail => |fail| fail.module_path, .success => |fail| fail.module_path, @@ -1757,7 +1762,7 @@ pub const RequestContext = struct { hash.final(&out); // Encode it - return std.base64.standard_encoder.encode(&self.accept_key, &out); + return std.base64.standard.Encoder.encode(&self.accept_key, &out); } }; @@ -1824,13 +1829,13 @@ pub const RequestContext = struct { threadlocal var buffer: MutableString = undefined; threadlocal var has_loaded_buffer: bool = false; - pub fn reserveNext(rctx: *SocketPrinterInternal, count: u32) anyerror![*]u8 { + pub fn reserveNext(_: *SocketPrinterInternal, count: u32) anyerror![*]u8 { try buffer.growIfNeeded(count); - return return @ptrCast([*]u8, &buffer.list.items.ptr[buffer.list.items.len]); + return @ptrCast([*]u8, &buffer.list.items.ptr[buffer.list.items.len]); } - pub fn advanceBy(rctx: *SocketPrinterInternal, count: u32) void { - if (comptime Environment.isDebug) std.debug.assert(buffer.list.items.len + count < buffer.list.capacity); + pub fn advanceBy(_: *SocketPrinterInternal, count: u32) void { + if (comptime Environment.isDebug) std.debug.assert(buffer.list.items.len + count <= buffer.list.capacity); buffer.list.items = buffer.list.items.ptr[0 .. buffer.list.items.len + count]; } @@ -1848,24 +1853,24 @@ pub const RequestContext = struct { ._loader = _loader, }; } - pub fn writeByte(_ctx: *SocketPrinterInternal, byte: u8) anyerror!usize { + pub fn writeByte(_: *SocketPrinterInternal, byte: u8) anyerror!usize { try buffer.appendChar(byte); return 1; } - pub fn writeAll(_ctx: *SocketPrinterInternal, bytes: anytype) anyerror!usize { + pub fn writeAll(_: *SocketPrinterInternal, bytes: anytype) anyerror!usize { try buffer.append(bytes); return bytes.len; } - pub fn slice(_ctx: *SocketPrinterInternal) string { + pub fn slice(_: *SocketPrinterInternal) string { return buffer.list.items; } - pub fn getLastByte(_ctx: *const SocketPrinterInternal) u8 { + pub fn getLastByte(_: *const SocketPrinterInternal) u8 { return if (buffer.list.items.len > 0) buffer.list.items[buffer.list.items.len - 1] else 0; } - pub fn getLastLastByte(_ctx: *const SocketPrinterInternal) u8 { + pub fn getLastLastByte(_: *const SocketPrinterInternal) u8 { return if (buffer.list.items.len > 1) buffer.list.items[buffer.list.items.len - 2] else 0; } @@ -1910,7 +1915,7 @@ pub const RequestContext = struct { } pub fn flush( - _ctx: *SocketPrinterInternal, + _: *SocketPrinterInternal, ) anyerror!void {} }; @@ -2040,7 +2045,7 @@ pub const RequestContext = struct { Output.prettyErrorln("Failed to start watcher: {s}", .{@errorName(err)}); }; } - } else |err| {} + } else |_| {} } } @@ -2128,7 +2133,7 @@ pub const RequestContext = struct { } } - fn handleBlobURL(ctx: *RequestContext, server: *Server) !void { + fn handleBlobURL(ctx: *RequestContext, _: *Server) !void { var id = ctx.url.path["blob:".len..]; // This makes it Just Work if you pass a line/column number if (strings.indexOfChar(id, ':')) |colon| { @@ -2240,7 +2245,7 @@ pub const RequestContext = struct { strings.eqlComptime(header_.value, "style"); } - fn handleSrcURL(ctx: *RequestContext, server: *Server) !void { + fn handleSrcURL(ctx: *RequestContext, _: *Server) !void { var input_path = ctx.url.path["src:".len..]; while (std.mem.indexOfScalar(u8, input_path, ':')) |i| { input_path = input_path[0..i]; @@ -2304,7 +2309,7 @@ pub const RequestContext = struct { } } - fn handleAbsURL(ctx: *RequestContext, server: *Server) !void { + fn handleAbsURL(ctx: *RequestContext, _: *Server) !void { const extname = ctx.url.extname; switch (extname.len) { 3 => { @@ -2432,7 +2437,7 @@ var serve_as_package_path = false; // channel: WatcherBuildChannel, // bundler: *Bundler, // watcher: *Watcher, -// allocator: *std.mem.Allocator, +// allocator: std.mem.Allocator, // pub fn start(queue: *@This()) void { // var stdout = std.io.getStdOut(); @@ -2467,7 +2472,7 @@ var serve_as_package_path = false; pub const Server = struct { log: logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, bundler: *Bundler, watcher: *Watcher, timer: std.time.Timer = undefined, @@ -2475,23 +2480,6 @@ pub const Server = struct { javascript_enabled: bool = false, fallback_only: bool = false, - pub fn onTCPConnection(server: *Server, conn: tcp.Connection, comptime features: ConnectionFeatures) void { - conn.client.setNoDelay(true) catch {}; - conn.client.setQuickACK(true) catch {}; - - if (comptime Environment.isMac) { - // Don't crash if the client disconnects. - std.os.setsockopt( - conn.client.socket.fd, - std.os.IPPROTO_TCP, - std.os.SO_NOSIGPIPE, - mem.asBytes(&@as(u32, @boolToInt(true))), - ) catch {}; - } - - server.handleConnection(&conn, comptime features); - } - threadlocal var filechange_buf: [32]u8 = undefined; pub fn onFileUpdate( @@ -2532,8 +2520,6 @@ pub const Server = struct { const file_paths = slice.items(.file_path); var counts = slice.items(.count); const kinds = slice.items(.kind); - const hashes = slice.items(.hash); - const parent_hashes = slice.items(.parent_hash); var header = fbs.getWritten(); defer ctx.watcher.flushEvictions(); defer Output.flush(); @@ -2621,7 +2607,7 @@ pub const Server = struct { listener.setReuseAddress(true) catch {}; listener.setReusePort(false) catch {}; - listener.setFastOpen(true) catch {}; + // listener.setFastOpen(true) catch {}; // listener.setNoDelay(true) catch {}; // listener.setQuickACK(true) catch {}; @@ -2667,7 +2653,7 @@ pub const Server = struct { default_port, default_port, port, - random_number.random.intRangeAtMost(u16, 3011, 65535), + random_number.random().intRangeAtMost(u16, 3011, 65535), }, ); Output.flush(); @@ -2733,9 +2719,8 @@ pub const Server = struct { var did_init = false; while (!did_init) { defer Output.flush(); - var conn = listener.accept(.{ .close_on_exec = true }) catch |err| { + var conn = listener.accept(.{ .close_on_exec = true }) catch continue; - }; // We want to bind to the network socket as quickly as possible so that opening the URL works // We use a secondary loop so that we avoid the extra branch in a hot code path @@ -2751,9 +2736,8 @@ pub const Server = struct { while (true) { defer Output.flush(); - var conn = listener.accept(.{ .close_on_exec = true }) catch |err| { + var conn = listener.accept(.{ .close_on_exec = true }) catch continue; - }; server.handleConnection(&conn, comptime features); } @@ -2775,7 +2759,7 @@ pub const Server = struct { pub fn handleConnection(server: *Server, conn: *tcp.Connection, comptime features: ConnectionFeatures) void { // https://stackoverflow.com/questions/686217/maximum-on-http-header-values - var read_size = conn.client.read(&req_buf, SOCKET_FLAGS) catch |err| { + var read_size = conn.client.read(&req_buf, SOCKET_FLAGS) catch { _ = conn.client.write(RequestContext.printStatusLine(400) ++ "\r\n\r\n", SOCKET_FLAGS) catch {}; return; }; @@ -2839,7 +2823,7 @@ pub const Server = struct { defer { if (!req_ctx.controlled) { if (!req_ctx.has_called_done) { - if (comptime isDebug) { + if (comptime Environment.isDebug) { if (@errorReturnTrace()) |trace| { std.debug.dumpStackTrace(trace.*); Output.printError("\n", .{}); @@ -3015,7 +2999,7 @@ pub const Server = struct { defer this.bundler.resetStore(); // 1. Try react refresh - _ = this.bundler.resolver.resolve(this.bundler.fs.top_level_dir, this.bundler.options.jsx.refresh_runtime, .internal) catch |err| { + _ = this.bundler.resolver.resolve(this.bundler.fs.top_level_dir, this.bundler.options.jsx.refresh_runtime, .internal) catch { // 2. Try react refresh from import source perspective this.bundler.options.jsx.supports_fast_refresh = false; return; @@ -3043,7 +3027,7 @@ pub const Server = struct { } pub var global_start_time: std.time.Timer = undefined; - pub fn start(allocator: *std.mem.Allocator, options: Api.TransformOptions, comptime DebugType: type, debug: DebugType) !void { + pub fn start(allocator: std.mem.Allocator, options: Api.TransformOptions, comptime DebugType: type, debug: DebugType) !void { var log = logger.Log.init(allocator); var server = try allocator.create(Server); server.* = Server{ diff --git a/src/http/method.zig b/src/http/method.zig index f306e522e..8c3e30c7f 100644 --- a/src/http/method.zig +++ b/src/http/method.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; pub const Method = enum { GET, diff --git a/src/http/mime_type.zig b/src/http/mime_type.zig index 93dbb0192..57e5d371f 100644 --- a/src/http/mime_type.zig +++ b/src/http/mime_type.zig @@ -1,5 +1,14 @@ const std = @import("std"); -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Loader = @import("../options.zig").Loader; const Two = strings.ExactSizeMatcher(2); diff --git a/src/http/url_path.zig b/src/http/url_path.zig index e36ea9d93..f2c558517 100644 --- a/src/http/url_path.zig +++ b/src/http/url_path.zig @@ -1,4 +1,14 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const toMutable = _global.constStrToU8; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const PercentEncoding = @import("../query_string_map.zig").PercentEncoding; const std = @import("std"); @@ -11,7 +21,6 @@ pathname: string = "", first_segment: string = "", query_string: string = "", needs_redirect: bool = false, -const toMutable = allocators.constStrToU8; // TODO: use a real URL parser // this treats a URL like /_next/ identically to / @@ -34,7 +43,6 @@ threadlocal var big_temp_path_buf: [16384]u8 = undefined; pub fn parse(possibly_encoded_pathname_: string) !URLPath { var decoded_pathname = possibly_encoded_pathname_; var needs_redirect = false; - var invalid_uri = false; if (strings.indexOfChar(decoded_pathname, '%') != null) { var possibly_encoded_pathname = switch (decoded_pathname.len) { diff --git a/src/http/websocket.zig b/src/http/websocket.zig index 2cfa3f620..caa511670 100644 --- a/src/http/websocket.zig +++ b/src/http/websocket.zig @@ -1,7 +1,7 @@ // This code is based on https://github.com/frmdstryr/zhp/blob/a4b5700c289c3619647206144e10fb414113a888/src/websocket.zig // Thank you @frmdstryr. const std = @import("std"); -const native_endian = std.Target.current.cpu.arch.endian(); +const native_endian = @import("builtin").target.cpu.arch.endian(); const tcp = std.x.net.tcp; const ip = std.x.net.ip; @@ -11,7 +11,16 @@ const IPv6 = std.x.os.IPv6; const Socket = std.x.os.Socket; const os = std.os; usingnamespace @import("../http.zig"); -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; pub const Opcode = enum(u4) { Continue = 0x0, @@ -202,35 +211,6 @@ pub const Websocket = struct { } - pub fn writeIterator(self: *Websocket, header: WebsocketHeader, count: usize, comptime BodyIterator: type, body_iter: BodyIterator) anyerror!usize { - var stream = self.conn.client.writer(self.flags); - - if (!dataframe.isValid()) return error.InvalidMessage; - - try stream.writeIntBig(u16, @bitCast(u16, header)); - - // Write extended length if needed - const n = count; - switch (n) { - 0...126 => {}, // Included in header - 127...0xFFFF => try stream.writeIntBig(u16, @truncate(u16, n)), - else => try stream.writeIntBig(u64, n), - } - - // TODO: Handle compression - if (dataframe.header.compressed) return error.InvalidMessage; - - std.debug.assert(header.mask == false); - - while (body_iter.next()) |chunk| { - try stream.writeAll(chunk); - } - - // try self.io.flush(); - - return count; - } - // Write a raw data frame pub fn writeDataFrame(self: *Websocket, dataframe: WebsocketDataFrame) anyerror!usize { var stream = self.conn.client.writer(self.flags); @@ -341,7 +321,7 @@ pub const Websocket = struct { if (header.mask) { const mask = buf[0..4]; // Decode data in place - for (data) |c, i| { + for (data) |_, i| { data[i] ^= mask[i % 4]; } } diff --git a/src/http_client_async.zig b/src/http_client_async.zig index bcf8d9600..84c965afc 100644 --- a/src/http_client_async.zig +++ b/src/http_client_async.zig @@ -1,7 +1,16 @@ const picohttp = @import("picohttp"); -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FeatureFlags = _global.FeatureFlags; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); -const Headers = @import("./javascript/jsc/webcore/response.zig").Headers; const URL = @import("./query_string_map.zig").URL; const Method = @import("./http/method.zig").Method; const Api = @import("./api/schema.zig").Api; @@ -14,12 +23,22 @@ const ThreadPool = @import("thread_pool"); const boring = @import("boringssl"); const NetworkThread = @import("network_thread"); +const SOCK = os.SOCK; + +pub const Headers = struct { + pub const Kv = struct { + name: Api.StringPointer, + value: Api.StringPointer, + }; + pub const Entries = std.MultiArrayList(Kv); +}; + const SOCKET_FLAGS: u32 = if (Environment.isLinux) - os.SOCK_CLOEXEC | os.MSG_NOSIGNAL + SOCK.CLOEXEC | os.MSG_NOSIGNAL else - os.SOCK_CLOEXEC; + SOCK.CLOEXEC; -const OPEN_SOCKET_FLAGS = os.SOCK_CLOEXEC; +const OPEN_SOCKET_FLAGS = SOCK.CLOEXEC; const extremely_verbose = false; @@ -35,7 +54,7 @@ fn writeRequest( _ = writer.write(request.path); _ = writer.write(" HTTP/1.1\r\n"); - for (request.headers) |header, i| { + for (request.headers) |header| { _ = writer.write(header.name); _ = writer.write(": "); _ = writer.write(header.value); @@ -53,8 +72,8 @@ method: Method, header_entries: Headers.Entries, header_buf: string, url: URL, -allocator: *std.mem.Allocator, -verbose: bool = isTest, +allocator: std.mem.Allocator, +verbose: bool = Environment.isTest, tcp_client: tcp.Client = undefined, body_size: u32 = 0, read_count: u32 = 0, @@ -75,7 +94,7 @@ request_headers_buf: [128]picohttp.Header = undefined, response_headers_buf: [128]picohttp.Header = undefined, pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, method: Method, url: URL, header_entries: Headers.Entries, @@ -176,7 +195,7 @@ pub const HeaderBuilder = struct { this.content.count(value); } - pub fn allocate(this: *HeaderBuilder, allocator: *std.mem.Allocator) !void { + pub fn allocate(this: *HeaderBuilder, allocator: std.mem.Allocator) !void { try this.content.allocate(allocator); try this.entries.ensureTotalCapacity(allocator, this.header_count); } @@ -227,7 +246,7 @@ pub const AsyncHTTP = struct { response_headers: Headers.Entries = Headers.Entries{}, response_buffer: *MutableString, request_body: *MutableString, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, request_header_buf: string = "", method: Method = Method.GET, max_retry_count: u32 = 0, @@ -266,7 +285,7 @@ pub const AsyncHTTP = struct { const AtomicState = std.atomic.Atomic(State); pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, method: Method, url: URL, headers: Headers.Entries, @@ -290,7 +309,7 @@ pub const AsyncHTTP = struct { return this; } - pub fn schedule(this: *AsyncHTTP, allocator: *std.mem.Allocator, batch: *ThreadPool.Batch) void { + pub fn schedule(this: *AsyncHTTP, allocator: std.mem.Allocator, batch: *ThreadPool.Batch) void { std.debug.assert(NetworkThread.global_loaded.load(.Monotonic) == 1); var sender = HTTPSender.get(this, allocator); this.state.store(.scheduled, .Monotonic); @@ -337,7 +356,7 @@ pub const AsyncHTTP = struct { next: ?*HTTPSender = null, - pub fn get(http: *AsyncHTTP, allocator: *std.mem.Allocator) *HTTPSender { + pub fn get(http: *AsyncHTTP, allocator: std.mem.Allocator) *HTTPSender { @fence(.Acquire); var head_ = http_sender_head.load(.Monotonic); @@ -416,11 +435,11 @@ const BufferPool = struct { pub const len = std.math.maxInt(u16) - 64; buf: [len]u8 = undefined, next: ?*BufferPool = null, - allocator: *std.mem.Allocator = undefined, + allocator: std.mem.Allocator = undefined, var head: ?*BufferPool = null; - pub fn get(allocator: *std.mem.Allocator) !*BufferPool { + pub fn get(allocator: std.mem.Allocator) !*BufferPool { if (head) |item| { var this = item; var head_ = item.next; @@ -448,11 +467,11 @@ const URLBufferPool = struct { pub const len = 4096; buf: [len]u8 = undefined, next: ?*URLBufferPool = null, - allocator: *std.mem.Allocator = undefined, + allocator: std.mem.Allocator = undefined, var head: ?*URLBufferPool = null; - pub fn get(allocator: *std.mem.Allocator) !*URLBufferPool { + pub fn get(allocator: std.mem.Allocator) !*URLBufferPool { if (head) |item| { var this = item; var head_ = item.next; @@ -482,12 +501,12 @@ pub const AsyncMessage = struct { completion: AsyncIO.Completion = undefined, buf: []u8 = undefined, pooled: ?*BufferPool = null, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, next: ?*AsyncMessage = null, - context: *c_void = undefined, + context: *anyopaque = undefined, released: bool = false, var _first_ssl: ?*AsyncMessage = null; - pub fn getSSL(allocator: *std.mem.Allocator) *AsyncMessage { + pub fn getSSL(allocator: std.mem.Allocator) *AsyncMessage { if (_first_ssl) |first| { var prev = first; std.debug.assert(prev.released); @@ -512,7 +531,7 @@ pub const AsyncMessage = struct { } var _first: ?*AsyncMessage = null; - pub fn get(allocator: *std.mem.Allocator) *AsyncMessage { + pub fn get(allocator: std.mem.Allocator) *AsyncMessage { if (_first) |first| { var prev = first; std.debug.assert(prev.released); @@ -587,7 +606,7 @@ const AsyncSocket = struct { socket: std.os.socket_t = 0, head: *AsyncMessage = undefined, tail: *AsyncMessage = undefined, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, err: ?anyerror = null, queued: usize = 0, sent: usize = 0, @@ -604,7 +623,7 @@ const AsyncSocket = struct { const ConnectError = AsyncIO.ConnectError || std.os.SocketError || std.os.SetSockOptError; - pub fn init(io: *AsyncIO, socket: std.os.socket_t, allocator: *std.mem.Allocator) !AsyncSocket { + pub fn init(io: *AsyncIO, socket: std.os.socket_t, allocator: std.mem.Allocator) !AsyncSocket { var head = AsyncMessage.get(allocator); return AsyncSocket{ .io = io, .socket = socket, .head = head, .tail = head, .allocator = allocator }; @@ -619,7 +638,7 @@ const AsyncSocket = struct { } fn connectToAddress(this: *AsyncSocket, address: std.net.Address) ConnectError!void { - const sockfd = AsyncIO.openSocket(address.any.family, OPEN_SOCKET_FLAGS | std.os.SOCK_STREAM, std.os.IPPROTO_TCP) catch |err| { + const sockfd = AsyncIO.openSocket(address.any.family, OPEN_SOCKET_FLAGS | std.os.SOCK.STREAM, std.os.IPPROTO.TCP) catch |err| { if (extremely_verbose) { Output.prettyErrorln("openSocket error: {s}", .{@errorName(err)}); } @@ -701,7 +720,7 @@ const AsyncSocket = struct { } } - fn on_send(msg: *AsyncMessage, completion: *Completion, result: SendError!usize) void { + fn on_send(msg: *AsyncMessage, _: *Completion, result: SendError!usize) void { var this = @ptrCast(*AsyncSocket, @alignCast(@alignOf(*AsyncSocket), msg.context)); const written = result catch |err| { this.err = err; @@ -758,7 +777,6 @@ const AsyncSocket = struct { pub const SendError = AsyncIO.SendError; pub fn deinit(this: *AsyncSocket) void { - var node = this.head; this.head.release(); } @@ -805,7 +823,7 @@ const AsyncSocket = struct { pub const RecvError = AsyncIO.RecvError; const Reader = struct { - pub fn on_read(ctx: *AsyncSocket, completion: *AsyncIO.Completion, result: RecvError!usize) void { + pub fn on_read(ctx: *AsyncSocket, _: *AsyncIO.Completion, result: RecvError!usize) void { const len = result catch |err| { ctx.err = err; resume ctx.read_frame; @@ -982,7 +1000,6 @@ const AsyncSocket = struct { pub fn read(this: *SSL, buf_: []u8, offset: u64) !u64 { var buf = buf_[offset..]; - var bio_ = this.read_bio; var len: usize = 0; while (buf.len > 0) { len = this.ssl.read(buf) catch |err| { @@ -1040,9 +1057,7 @@ const AsyncSocket = struct { return len; } - pub inline fn init(allocator: *std.mem.Allocator, io: *AsyncIO) !SSL { - var head = AsyncMessage.get(allocator); - + pub inline fn init(allocator: std.mem.Allocator, io: *AsyncIO) !SSL { return SSL{ .socket = try AsyncSocket.init(io, 0, allocator), }; @@ -1073,7 +1088,7 @@ const AsyncSocket = struct { pub const AsyncBIO = struct { bio: *boring.BIO = undefined, socket_fd: std.os.socket_t = 0, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, read_wait: Wait = Wait.pending, send_wait: Wait = Wait.pending, @@ -1109,7 +1124,7 @@ pub const AsyncBIO = struct { completed, }; - fn instance(allocator: *std.mem.Allocator) *AsyncBIO { + fn instance(allocator: std.mem.Allocator) *AsyncBIO { if (head) |head_| { var next = head_.next; var ret = head_; @@ -1150,7 +1165,7 @@ pub const AsyncBIO = struct { head = this; } - pub fn init(allocator: *std.mem.Allocator) !*AsyncBIO { + pub fn init(allocator: std.mem.Allocator) !*AsyncBIO { var bio = instance(allocator); bio.bio = boring.BIO_new( @@ -1344,7 +1359,7 @@ pub const AsyncBIO = struct { } unreachable; } - pub fn ctrl(this_bio: *boring.BIO, cmd: c_int, larg: c_long, pargs: ?*c_void) callconv(.C) c_long { + pub fn ctrl(_: *boring.BIO, cmd: c_int, _: c_long, _: ?*anyopaque) callconv(.C) c_long { return switch (cmd) { boring.BIO_CTRL_PENDING, boring.BIO_CTRL_WPENDING => 0, else => 1, @@ -1462,7 +1477,7 @@ pub fn connect( try connector.connect(this.url.hostname, port); var client = std.x.net.tcp.Client{ .socket = std.x.os.Socket.from(this.socket.socket.socket) }; client.setReadBufferSize(BufferPool.len) catch {}; - client.setQuickACK(true) catch {}; + // client.setQuickACK(true) catch {}; this.tcp_client = client; if (this.timeout > 0) { @@ -1529,14 +1544,12 @@ pub fn sendHTTP(this: *HTTPClient, body: []const u8, body_out_str: *MutableStrin if (this.progress_node == null) { return this.processResponse( false, - false, @TypeOf(socket), socket, body_out_str, ); } else { return this.processResponse( - false, true, @TypeOf(socket), socket, @@ -1548,13 +1561,13 @@ pub fn sendHTTP(this: *HTTPClient, body: []const u8, body_out_str: *MutableStrin const ZlibPool = struct { lock: Lock = Lock.init(), items: std.ArrayList(*MutableString), - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, pub var instance: ZlibPool = undefined; pub var loaded: bool = false; pub var decompression_thread_pool: ThreadPool = undefined; pub var decompression_thread_pool_loaded: bool = false; - pub fn init(allocator: *std.mem.Allocator) ZlibPool { + pub fn init(allocator: std.mem.Allocator) ZlibPool { return ZlibPool{ .allocator = allocator, .items = std.ArrayList(*MutableString).init(allocator), @@ -1573,7 +1586,7 @@ const ZlibPool = struct { }, } - return item; + unreachable; } pub fn put(this: *ZlibPool, mutable: *MutableString) !void { @@ -1618,7 +1631,7 @@ const ZlibPool = struct { pub var head: ?*DecompressionTask = null; - pub fn get(allocator: *std.mem.Allocator) !*DecompressionTask { + pub fn get(allocator: std.mem.Allocator) !*DecompressionTask { if (head) |head_| { var this = head_; head = this.next; @@ -1668,13 +1681,13 @@ const ZlibPool = struct { AsyncIO.triggerEvent(this.event_fd, &this.completion) catch {}; } - pub fn finished(this: *DecompressionTask, completion: *Completion, _: void) void { + pub fn finished(this: *DecompressionTask, _: *Completion, _: void) void { resume this.frame; } }; }; -pub fn processResponse(this: *HTTPClient, comptime is_https: bool, comptime report_progress: bool, comptime Client: type, client: Client, body_out_str: *MutableString) !picohttp.Response { +pub fn processResponse(this: *HTTPClient, comptime report_progress: bool, comptime Client: type, client: Client, body_out_str: *MutableString) !picohttp.Response { defer if (this.verbose) Output.flush(); var response: picohttp.Response = undefined; var request_message = AsyncMessage.get(this.allocator); @@ -2017,14 +2030,12 @@ pub fn sendHTTPS(this: *HTTPClient, body_str: []const u8, body_out_str: *Mutable if (this.progress_node == null) { return this.processResponse( false, - false, @TypeOf(socket), socket, body_out_str, ); } else { return this.processResponse( - false, true, @TypeOf(socket), socket, diff --git a/src/identity_context.zig b/src/identity_context.zig index eefdca6b5..b28cac1cc 100644 --- a/src/identity_context.zig +++ b/src/identity_context.zig @@ -1,10 +1,10 @@ pub fn IdentityContext(comptime Key: type) type { return struct { - pub fn hash(this: @This(), key: Key) u64 { + pub fn hash(_: @This(), key: Key) u64 { return key; } - pub fn eql(this: @This(), a: Key, b: Key) bool { + pub fn eql(_: @This(), a: Key, b: Key) bool { return a == b; } }; @@ -13,11 +13,11 @@ pub fn IdentityContext(comptime Key: type) type { /// When storing hashes as keys in a hash table, we don't want to hash the hashes or else we increase the chance of collisions. This is also marginally faster since it means hashing less stuff. /// `ArrayIdentityContext` and `IdentityContext` are distinct because ArrayHashMap expects u32 hashes but HashMap expects u64 hashes. const ArrayIdentityContext = struct { - pub fn hash(this: @This(), key: u32) u32 { + pub fn hash(_: @This(), key: u32) u32 { return key; } - pub fn eql(this: @This(), a: u32, b: u32) bool { + pub fn eql(_: @This(), a: u32, b: u32) bool { return a == b; } }; diff --git a/src/import_record.zig b/src/import_record.zig index 870159df4..66bfc128d 100644 --- a/src/import_record.zig +++ b/src/import_record.zig @@ -1,7 +1,7 @@ const fs = @import("fs.zig"); const logger = @import("logger.zig"); const std = @import("std"); -usingnamespace @import("ast/base.zig"); +const Ref = @import("ast/base.zig").Ref; pub const ImportKind = enum(u8) { diff --git a/src/install/bin.zig b/src/install/bin.zig index fb343a16d..d40c43a04 100644 --- a/src/install/bin.zig +++ b/src/install/bin.zig @@ -157,7 +157,6 @@ pub const Bin = extern struct { remain = remain[name.len..]; remain[0] = std.fs.path.sep; remain = remain[1..]; - const base_len = @ptrToInt(remain.ptr) - @ptrToInt(&path_buf); if (comptime Environment.isWindows) { @compileError("Bin.Linker.link() needs to be updated to generate .cmd files on Windows"); diff --git a/src/install/bit_set.zig b/src/install/bit_set.zig index d788a2ec9..64903c9e9 100644 --- a/src/install/bit_set.zig +++ b/src/install/bit_set.zig @@ -476,7 +476,7 @@ pub const DynamicBitSetUnmanaged = struct { /// Creates a bit set with no elements present. /// If bit_length is not zero, deinit must eventually be called. - pub fn initEmpty(bit_length: usize, allocator: *Allocator) !Self { + pub fn initEmpty(bit_length: usize, allocator: Allocator) !Self { var self = Self{}; try self.resize(bit_length, false, allocator); return self; @@ -484,7 +484,7 @@ pub const DynamicBitSetUnmanaged = struct { /// Creates a bit set with all elements present. /// If bit_length is not zero, deinit must eventually be called. - pub fn initFull(bit_length: usize, allocator: *Allocator) !Self { + pub fn initFull(bit_length: usize, allocator: Allocator) !Self { var self = Self{}; try self.resize(bit_length, true, allocator); return self; @@ -493,7 +493,7 @@ pub const DynamicBitSetUnmanaged = struct { /// Resizes to a new bit_length. If the new length is larger /// than the old length, fills any added bits with `fill`. /// If new_len is not zero, deinit must eventually be called. - pub fn resize(self: *@This(), new_len: usize, fill: bool, allocator: *Allocator) !void { + pub fn resize(self: *@This(), new_len: usize, fill: bool, allocator: Allocator) !void { const old_len = self.bit_length; const old_masks = numMasks(old_len); @@ -556,12 +556,12 @@ pub const DynamicBitSetUnmanaged = struct { /// deinitializes the array and releases its memory. /// The passed allocator must be the same one used for /// init* or resize in the past. - pub fn deinit(self: *Self, allocator: *Allocator) void { + pub fn deinit(self: *Self, allocator: Allocator) void { self.resize(0, false, allocator) catch unreachable; } /// Creates a duplicate of this bit set, using the new allocator. - pub fn clone(self: *const Self, new_allocator: *Allocator) !Self { + pub fn clone(self: *const Self, new_allocator: Allocator) !Self { const num_masks = numMasks(self.bit_length); var copy = Self{}; try copy.resize(self.bit_length, false, new_allocator); @@ -773,13 +773,13 @@ pub const DynamicBitSet = struct { pub const ShiftInt = std.math.Log2Int(MaskInt); /// The allocator used by this bit set - allocator: *Allocator, + allocator: Allocator, /// The number of valid items in this bit set unmanaged: DynamicBitSetUnmanaged = .{}, /// Creates a bit set with no elements present. - pub fn initEmpty(bit_length: usize, allocator: *Allocator) !Self { + pub fn initEmpty(bit_length: usize, allocator: Allocator) !Self { return Self{ .unmanaged = try DynamicBitSetUnmanaged.initEmpty(bit_length, allocator), .allocator = allocator, @@ -787,7 +787,7 @@ pub const DynamicBitSet = struct { } /// Creates a bit set with all elements present. - pub fn initFull(bit_length: usize, allocator: *Allocator) !Self { + pub fn initFull(bit_length: usize, allocator: Allocator) !Self { return Self{ .unmanaged = try DynamicBitSetUnmanaged.initFull(bit_length, allocator), .allocator = allocator, @@ -808,7 +808,7 @@ pub const DynamicBitSet = struct { } /// Creates a duplicate of this bit set, using the new allocator. - pub fn clone(self: *const Self, new_allocator: *Allocator) !Self { + pub fn clone(self: *const Self, new_allocator: Allocator) !Self { return Self{ .unmanaged = try self.unmanaged.clone(new_allocator), .allocator = new_allocator, diff --git a/src/install/dependency.zig b/src/install/dependency.zig index 4b027aaff..9c2180334 100644 --- a/src/install/dependency.zig +++ b/src/install/dependency.zig @@ -94,7 +94,7 @@ pub const External = extern struct { version: Dependency.Version.External, pub const Context = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, buffer: []const u8, }; @@ -473,7 +473,7 @@ pub fn eqlResolved(a: Dependency, b: Dependency) bool { return @as(Dependency.Version.Tag, a.version) == @as(Dependency.Version.Tag, b.version) and a.resolution == b.resolution; } -pub fn parse(allocator: *std.mem.Allocator, dependency_: string, sliced: *const SlicedString, log: ?*logger.Log) ?Version { +pub fn parse(allocator: std.mem.Allocator, dependency_: string, sliced: *const SlicedString, log: ?*logger.Log) ?Version { var dependency = std.mem.trimLeft(u8, dependency_, " \t\n\r"); if (dependency.len == 0) return null; @@ -500,7 +500,7 @@ pub fn parse(allocator: *std.mem.Allocator, dependency_: string, sliced: *const } pub fn parseWithTag( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, dependency: string, tag: Dependency.Version.Tag, sliced: *const SlicedString, diff --git a/src/install/extract_tarball.zig b/src/install/extract_tarball.zig index 6057448e5..27c8a811b 100644 --- a/src/install/extract_tarball.zig +++ b/src/install/extract_tarball.zig @@ -188,7 +188,7 @@ fn extract(this: *const ExtractTarball, tgz_bytes: []const u8) !string { Output.flush(); Global.crash(); }; - const extracted_file_count = if (PackageManager.verbose_install) + _ = if (PackageManager.verbose_install) try Archive.extractToDisk( zlib_pool.data.list.items, temp_destination, diff --git a/src/install/install.zig b/src/install/install.zig index 3f88f2e62..cb0f91df0 100644 --- a/src/install/install.zig +++ b/src/install/install.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const JSLexer = @import("../js_lexer.zig"); @@ -128,47 +137,10 @@ pub const ExternalStringMap = extern struct { name: ExternalStringList = ExternalStringList{}, value: ExternalStringList = ExternalStringList{}, - pub const Iterator = NewIterator(ExternalStringList); - pub const Small = extern struct { name: SmallExternalStringList = SmallExternalStringList{}, value: SmallExternalStringList = SmallExternalStringList{}, - - pub const Iterator = NewIterator(SmallExternalStringList); - - pub inline fn iterator(this: Small, buf: []const String) Small.Iterator { - return Small.Iterator.init(buf, this.name, this.value); - } }; - - pub inline fn iterator(this: ExternalStringMap, buf: []const String) Iterator { - return Iterator.init(buf, this.name, this.value); - } - - fn NewIterator(comptime Type: type) type { - return struct { - const ThisIterator = @This(); - - i: usize = 0, - names: []const Type.Child, - values: []const Type.Child, - - pub fn init(all: []const Type.Child, names: Type, values: Type) ThisIterator { - this.names = names.get(all); - this.values = values.get(all); - return this; - } - - pub fn next(this: *ThisIterator) ?[2]Type.Child { - if (this.i < this.names.len) { - const ret = [2]Type.Child{ this.names[this.i], this.values[this.i] }; - this.i += 1; - } - - return null; - } - }; - } }; pub const PackageNameHash = u64; @@ -176,7 +148,6 @@ pub const PackageNameHash = u64; pub const Aligner = struct { pub fn write(comptime Type: type, comptime Writer: type, writer: Writer, pos: usize) !usize { const to_write = std.mem.alignForward(pos, @alignOf(Type)) - pos; - var i: usize = 0; var remainder: string = alignment_bytes_to_repeat_buffer[0..@minimum(to_write, alignment_bytes_to_repeat_buffer.len)]; try writer.writeAll(remainder); @@ -193,7 +164,7 @@ const NetworkTask = struct { http: AsyncHTTP = undefined, task_id: u64, url_buf: []const u8 = &[_]u8{}, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, request_buffer: MutableString = undefined, response_buffer: MutableString = undefined, callback: union(Task.Tag) { @@ -214,7 +185,7 @@ const NetworkTask = struct { pub fn forManifest( this: *NetworkTask, name: string, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, registry_url: URL, loaded_manifest: ?Npm.PackageManifest, ) !void { @@ -304,7 +275,7 @@ const NetworkTask = struct { pub fn forTarball( this: *NetworkTask, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, tarball: ExtractTarball, ) !void { this.url_buf = try ExtractTarball.buildURL( @@ -390,7 +361,7 @@ pub const Lockfile = struct { package_index: PackageIndex.Map, unique_packages: Bitset, string_pool: StringPool, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, scratch: Scratch = Scratch{}, const Stream = std.io.FixedBufferStream([]u8); @@ -413,7 +384,7 @@ pub const Lockfile = struct { }; }; - pub fn loadFromDisk(this: *Lockfile, allocator: *std.mem.Allocator, log: *logger.Log, filename: stringZ) LoadFromDiskResult { + pub fn loadFromDisk(this: *Lockfile, allocator: std.mem.Allocator, log: *logger.Log, filename: stringZ) LoadFromDiskResult { std.debug.assert(FileSystem.instance_loaded); var file = std.fs.cwd().openFileZ(filename, .{ .read = true }) catch |err| { return switch (err) { @@ -552,7 +523,7 @@ pub const Lockfile = struct { }; const Builder = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, name_hashes: []const PackageNameHash, list: ArrayList = ArrayList{}, resolutions: []const PackageID, @@ -573,7 +544,6 @@ pub const Lockfile = struct { var i: Id = 0; var total_packages_count: u32 = 0; - var slice = this.list.slice(); var trees = this.list.items(.tree); var packages = this.list.items(.packages); @@ -653,12 +623,12 @@ pub const Lockfile = struct { name_hashes: []const PackageNameHash, lists: []Lockfile.PackageIDList, trees: []Tree, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) Id { const this_packages = this.packages.get(lists[this.id].items); const name_hash = name_hashes[package_id]; - for (this_packages) |pid, slot| { + for (this_packages) |pid| { if (name_hashes[pid] == name_hash) { if (pid != package_id) { return dependency_loop; @@ -691,17 +661,15 @@ pub const Lockfile = struct { } }; - pub fn clean(old: *Lockfile, deduped: *u32, updates: []PackageManager.UpdateRequest, options: *const PackageManager.Options) !*Lockfile { + pub fn clean(old: *Lockfile, _: *u32, updates: []PackageManager.UpdateRequest, _: *const PackageManager.Options) !*Lockfile { // We will only shrink the number of packages here. // never grow - const max_package_id = old.packages.len; if (updates.len > 0) { var root_deps: []Dependency = old.packages.items(.dependencies)[0].mut(old.buffers.dependencies.items); const old_resolutions: []const PackageID = old.packages.items(.resolutions)[0].get(old.buffers.resolutions.items); const resolutions_of_yore: []const Resolution = old.packages.items(.resolution); - const old_names = old.packages.items(.name); var string_builder = old.stringBuilder(); for (updates) |update| { if (update.version.tag == .uninitialized) { @@ -721,7 +689,6 @@ pub const Lockfile = struct { try string_builder.allocate(); defer string_builder.clamp(); - var full_buf = string_builder.ptr.?[0 .. string_builder.cap + old.buffers.string_bytes.items.len]; var temp_buf: [513]u8 = undefined; for (updates) |update, update_i| { @@ -797,11 +764,6 @@ pub const Lockfile = struct { try new.packages.ensureTotalCapacity(old.allocator, old.packages.len); try new.buffers.preallocate(old.buffers, old.allocator); - const InstallOrder = struct { - parent: PackageID, - children: PackageIDSlice, - }; - old.scratch.dependency_list_queue.head = 0; // Step 1. Recreate the lockfile with only the packages that are still alive @@ -1005,7 +967,7 @@ pub const Lockfile = struct { pub const Printer = struct { lockfile: *Lockfile, options: PackageManager.Options, - successfully_installed: ?std.DynamicBitSetUnmanaged = null, + successfully_installed: ?Bitset = null, pub const Format = enum { yarn }; @@ -1013,7 +975,7 @@ pub const Lockfile = struct { var lockfile_path_buf2: [std.fs.MAX_PATH_BYTES]u8 = undefined; pub fn print( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, lockfile_path_: string, format: Format, @@ -1081,7 +1043,7 @@ pub const Lockfile = struct { } pub fn printWithLockfile( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, lockfile: *Lockfile, format: Format, comptime Writer: type, @@ -1130,28 +1092,18 @@ pub const Lockfile = struct { writer: Writer, comptime enable_ansi_colors: bool, ) !void { - var lockfile = this.lockfile; - - const IDDepthPair = struct { - depth: u16 = 0, - id: PackageID, - }; - var visited = try Bitset.initEmpty(this.lockfile.packages.len, this.lockfile.allocator); var slice = this.lockfile.packages.slice(); const names: []const String = slice.items(.name); const resolved: []const Resolution = slice.items(.resolution); - const metas: []const Lockfile.Package.Meta = slice.items(.meta); if (names.len == 0) return; const dependency_lists = slice.items(.dependencies); const resolutions_list = slice.items(.resolutions); const resolutions_buffer = this.lockfile.buffers.resolutions.items; const dependencies_buffer = this.lockfile.buffers.dependencies.items; - const package_count = @truncate(PackageID, names.len); const string_buf = this.lockfile.buffers.string_bytes.items; - const root = this.lockfile.rootPackage() orelse return; visited.set(0); const end = @truncate(PackageID, names.len); @@ -1163,8 +1115,6 @@ pub const Lockfile = struct { const package_name = names[package_id].slice(string_buf); - const dependency_list = dependency_lists[package_id]; - const fmt = comptime brk: { if (enable_ansi_colors) { break :brk Output.prettyFmt("<r> <green>+<r> <b>{s}<r><d>@{}<r>\n", enable_ansi_colors); @@ -1185,8 +1135,6 @@ pub const Lockfile = struct { for (names) |name, package_id| { const package_name = name.slice(string_buf); - const dependency_list = dependency_lists[package_id]; - try writer.print( comptime Output.prettyFmt(" <r><b>{s}<r><d>@<b>{}<r>\n", enable_ansi_colors), .{ @@ -1251,7 +1199,6 @@ pub const Lockfile = struct { const metas: []const Lockfile.Package.Meta = slice.items(.meta); if (names.len == 0) return; const dependency_lists = slice.items(.dependencies); - const resolutions_list = slice.items(.resolutions); const resolutions_buffer = this.lockfile.buffers.resolutions.items; const dependencies_buffer = this.lockfile.buffers.dependencies.items; const RequestedVersion = std.HashMap(PackageID, []Dependency.Version, IdentityContext(PackageID), 80); @@ -1364,7 +1311,7 @@ pub const Lockfile = struct { if (dependencies.len > 0) { var behavior = Behavior.uninitialized; var dependency_behavior_change_count: u8 = 0; - for (dependencies) |dep, j| { + for (dependencies) |dep| { if (dep.behavior != behavior) { if (dep.behavior.isOptional()) { try writer.writeAll(" optionalDependencies:\n"); @@ -1441,7 +1388,7 @@ pub const Lockfile = struct { std.mem.writeIntNative(u64, secret[0..8], @intCast(u64, std.time.milliTimestamp())); var rng = std.rand.Gimli.init(secret); var base64_bytes: [64]u8 = undefined; - rng.random.bytes(&base64_bytes); + rng.random().bytes(&base64_bytes); const tmpname__ = std.fmt.bufPrint(tmpname_buf[8..], "{s}", .{std.fmt.fmtSliceHexLower(&base64_bytes)}) catch unreachable; tmpname_buf[tmpname__.len + 8] = 0; @@ -1488,14 +1435,7 @@ pub const Lockfile = struct { return slicable.slice(this.buffers.string_bytes.items); } - pub inline fn cloneString(this: *Lockfile, slicable: anytype, from: *Lockfile) string { - // const slice = from.str(slicable); - // if (this.string_pool) { - - // } - } - - pub fn initEmpty(this: *Lockfile, allocator: *std.mem.Allocator) !void { + pub fn initEmpty(this: *Lockfile, allocator: std.mem.Allocator) !void { this.* = Lockfile{ .format = .v0, .packages = Lockfile.Package.List{}, @@ -1662,7 +1602,7 @@ pub const Lockfile = struct { duplicate_checker_map: DuplicateCheckerMap = undefined, dependency_list_queue: DependencyQueue = undefined, - pub fn init(allocator: *std.mem.Allocator) Scratch { + pub fn init(allocator: std.mem.Allocator) Scratch { return Scratch{ .dependency_list_queue = DependencyQueue.init(allocator), .duplicate_checker_map = DuplicateCheckerMap.init(allocator), @@ -1815,7 +1755,6 @@ pub const Lockfile = struct { pub const DependencySlice = ExternalSlice(Dependency); pub const PackageIDSlice = ExternalSlice(PackageID); - pub const NodeModulesFolderSlice = ExternalSlice(NodeModulesFolder); pub const PackageIDList = std.ArrayListUnmanaged(PackageID); pub const DependencyList = std.ArrayListUnmanaged(Dependency); @@ -1871,7 +1810,7 @@ pub const Lockfile = struct { const old_dependencies: []const Dependency = this.dependencies.get(old.buffers.dependencies.items); const old_resolutions: []const PackageID = this.resolutions.get(old.buffers.resolutions.items); - for (old_dependencies) |dependency, i| { + for (old_dependencies) |dependency| { dependency.count(old_string_buf, *Lockfile.StringBuilder, builder); } @@ -1954,7 +1893,7 @@ pub const Lockfile = struct { } pub fn fromNPM( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, lockfile: *Lockfile, log: *logger.Log, manifest: *const Npm.PackageManifest, @@ -1963,7 +1902,6 @@ pub const Lockfile = struct { string_buf: []const u8, comptime features: Features, ) !Lockfile.Package { - var npm_count: u32 = 0; var package = Lockfile.Package{}; const package_version = package_version_ptr.*; @@ -2057,8 +1995,6 @@ pub const Lockfile = struct { var start_dependencies = dependencies; - const off = @truncate(u32, dependencies_list.items.len); - inline for (dependency_groups) |group| { const map: ExternalStringMap = @field(package_version, group.field); const keys = map.name.get(manifest.external_strings); @@ -2075,7 +2011,7 @@ pub const Lockfile = struct { // Duplicate peer & dev dependencies are promoted to whichever appeared first // In practice, npm validates this so it shouldn't happen if (comptime group.behavior.isPeer() or group.behavior.isDev()) { - for (start_dependencies[0 .. total_dependencies_count - dependencies.len]) |dependency, j| { + for (start_dependencies[0 .. total_dependencies_count - dependencies.len]) |dependency| { if (dependency.name_hash == key.hash) { i += 1; continue :list; @@ -2171,7 +2107,7 @@ pub const Lockfile = struct { }; pub fn generate( - allocator: *std.mem.Allocator, + _: std.mem.Allocator, from_lockfile: *Lockfile, to_lockfile: *Lockfile, from: *Lockfile.Package, @@ -2180,8 +2116,6 @@ pub const Lockfile = struct { ) !Summary { var summary = Summary{}; const to_deps = to.dependencies.get(to_lockfile.buffers.dependencies.items); - const to_res = to.resolutions.get(to_lockfile.buffers.resolutions.items); - const from_res = from.resolutions.get(from_lockfile.buffers.resolutions.items); const from_deps = from.dependencies.get(from_lockfile.buffers.dependencies.items); for (from_deps) |from_dep, i| { @@ -2213,7 +2147,7 @@ pub const Lockfile = struct { outer: for (to_deps) |to_dep, i| { if (from_deps.len > i and from_deps[i].name_hash == to_dep.name_hash) continue; - for (from_deps) |from_dep, j| { + for (from_deps) |from_dep| { if (from_dep.name_hash == to_dep.name_hash) continue :outer; } @@ -2257,7 +2191,7 @@ pub const Lockfile = struct { pub fn parseMain( lockfile: *Lockfile, package: *Lockfile.Package, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, source: logger.Source, comptime features: Features, @@ -2268,7 +2202,7 @@ pub const Lockfile = struct { pub fn parse( lockfile: *Lockfile, package: *Lockfile.Package, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, source: logger.Source, comptime ResolverContext: type, @@ -2598,7 +2532,7 @@ pub const Lockfile = struct { pub fn load( stream: *Stream, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) !Lockfile.Package.List { var reader = stream.reader(); @@ -2649,7 +2583,7 @@ pub const Lockfile = struct { // node_modules_package_ids: PackageIDList = PackageIDList{}, string_bytes: StringBuffer = StringBuffer{}, - pub fn preallocate(this: *Buffers, that: Buffers, allocator: *std.mem.Allocator) !void { + pub fn preallocate(this: *Buffers, that: Buffers, allocator: std.mem.Allocator) !void { try this.trees.ensureTotalCapacity(allocator, that.trees.items.len); try this.resolutions.ensureTotalCapacity(allocator, that.resolutions.items.len); try this.dependencies.ensureTotalCapacity(allocator, that.dependencies.items.len); @@ -2736,8 +2670,8 @@ pub const Lockfile = struct { } } - pub fn save(this: Buffers, allocator: *std.mem.Allocator, comptime StreamType: type, stream: StreamType, comptime Writer: type, writer: Writer) !void { - inline for (sizes.names) |name, i| { + pub fn save(this: Buffers, _: std.mem.Allocator, comptime StreamType: type, stream: StreamType, comptime Writer: type, writer: Writer) !void { + inline for (sizes.names) |name| { var pos: usize = 0; if (comptime Environment.isDebug) { pos = try stream.getPos(); @@ -2805,7 +2739,7 @@ pub const Lockfile = struct { } } - pub fn load(stream: *Stream, allocator: *std.mem.Allocator, log: *logger.Log) !Buffers { + pub fn load(stream: *Stream, allocator: std.mem.Allocator, log: *logger.Log) !Buffers { var this = Buffers{}; var external_dependency_list: []Dependency.External = &[_]Dependency.External{}; inline for (sizes.names) |name, i| { @@ -2886,7 +2820,7 @@ pub const Lockfile = struct { pub fn load( lockfile: *Lockfile, stream: *Stream, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, ) !void { var reader = stream.reader(); @@ -2903,7 +2837,7 @@ pub const Lockfile = struct { } lockfile.format = .v0; lockfile.allocator = allocator; - const byte_len = try reader.readIntLittle(u64); + _ = try reader.readIntLittle(u64); lockfile.packages = try Lockfile.Package.Serializer.load( stream, @@ -2941,7 +2875,7 @@ const Task = struct { /// An ID that lets us register a callback without keeping the same pointer around pub const Id = struct { - pub fn forNPMPackage(tag: Task.Tag, package_name: string, package_version: Semver.Version) u64 { + pub fn forNPMPackage(_: Task.Tag, package_name: string, package_version: Semver.Version) u64 { var hasher = std.hash.Wyhash.init(0); hasher.update(package_name); hasher.update("@"); @@ -2955,7 +2889,7 @@ const Task = struct { } pub fn forManifest( - tag: Task.Tag, + _: Task.Tag, name: string, ) u64 { return @as(u64, @truncate(u63, std.hash.Wyhash.hash(0, name))); @@ -2978,7 +2912,7 @@ const Task = struct { &this.log, this.request.package_manifest.name.slice(), this.request.package_manifest.network.callback.package_manifest.loaded_manifest, - ) catch |err| { + ) catch { this.status = Status.fail; PackageManager.instance.resolve_tasks.writeItem(this.*) catch unreachable; return; @@ -3007,7 +2941,7 @@ const Task = struct { .extract => { const result = this.request.extract.tarball.run( this.request.extract.network.response_buffer.toOwnedSliceLeaky(), - ) catch |err| { + ) catch { this.status = Status.fail; this.data = .{ .extract = "" }; PackageManager.instance.resolve_tasks.writeItem(this.*) catch unreachable; @@ -3064,7 +2998,7 @@ const PackageInstall = struct { destination_dir_subpath: stringZ = "", destination_dir_subpath_buf: []u8, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, progress: *Progress, @@ -3083,7 +3017,7 @@ const PackageInstall = struct { skip_verify: bool = false, progress: *Progress = undefined, cache_dir: std.fs.Dir = undefined, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, }; pub const Task = struct { @@ -3106,7 +3040,6 @@ const PackageInstall = struct { var destination_dir_subpath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; var cache_dir_subpath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; const name = ctx.names[this.package_id].slice(ctx.string_buf); - const meta = ctx.metas[this.package_id]; const resolution = ctx.resolutions[this.package_id]; std.mem.copy(u8, &destination_dir_subpath_buf, name); destination_dir_subpath_buf[name.len] = 0; @@ -3147,7 +3080,7 @@ const PackageInstall = struct { fail: u32 = 0, success: u32 = 0, skipped: u32 = 0, - successfully_installed: ?std.DynamicBitSetUnmanaged = null, + successfully_installed: ?Bitset = null, }; pub const Method = enum { @@ -3652,7 +3585,7 @@ pub const PackageManager = struct { cache_directory: std.fs.Dir = undefined, root_dir: *Fs.FileSystem.DirEntry, env_loader: *DotEnv.Loader, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, resolve_tasks: TaskChannel, timestamp: u32 = 0, @@ -4020,13 +3953,6 @@ pub const PackageManager = struct { } } - pub fn resolvePackageFromManifest( - this: *PackageManager, - semver: Semver.Version, - version: *const Npm.PackageVersion, - manifest: *const Npm.PackageManifest, - ) !void {} - fn enqueueParseNPMPackage( this: *PackageManager, task_id: u64, @@ -4085,9 +4011,9 @@ pub const PackageManager = struct { var tmpfile = FileSystem.RealFS.Tmpfile{}; var secret: [32]u8 = undefined; std.mem.writeIntNative(u64, secret[0..8], @intCast(u64, std.time.milliTimestamp())); - var rng = std.rand.Gimli.init(secret); + var rng = std.rand.Gimli.init(secret).random(); var base64_bytes: [64]u8 = undefined; - rng.random.bytes(&base64_bytes); + rng.bytes(&base64_bytes); const tmpname__ = std.fmt.bufPrint(tmpname_buf[8..], "{s}", .{std.fmt.fmtSliceHexLower(&base64_bytes)}) catch unreachable; tmpname_buf[tmpname__.len + 8] = 0; @@ -4371,13 +4297,10 @@ pub const PackageManager = struct { this.network_resolve_batch = .{}; } - pub fn hoist(this: *PackageManager) !void {} - pub fn link(this: *PackageManager) !void {} - pub fn fetchCacheDirectoryPath( - allocator: *std.mem.Allocator, + _: std.mem.Allocator, env_loader: *DotEnv.Loader, - root_dir: *Fs.FileSystem.DirEntry, + _: *Fs.FileSystem.DirEntry, ) ?string { if (env_loader.map.get("BUN_INSTALL_CACHE_DIR")) |dir| { return dir; @@ -4580,7 +4503,7 @@ pub const PackageManager = struct { continue; } const manifest = task.data.package_manifest; - var entry = try manager.manifests.getOrPutValue(manager.allocator, @truncate(PackageNameHash, manifest.pkg.name.hash), manifest); + _ = try manager.manifests.getOrPutValue(manager.allocator, @truncate(PackageNameHash, manifest.pkg.name.hash), manifest); var dependency_list_entry = manager.task_queue.getEntry(task.id).?; var dependency_list = dependency_list_entry.value_ptr.*; @@ -4637,7 +4560,6 @@ pub const PackageManager = struct { manager.flushDependencyQueue(); - const prev_total = manager.total_tasks; { const count = batch.len + manager.network_resolve_batch.len + manager.network_tarball_batch.len; manager.pending_tasks += @truncate(u32, count); @@ -4721,7 +4643,7 @@ pub const PackageManager = struct { verbose_no_progress, pub inline fn isVerbose(this: LogLevel) bool { - return return switch (this) { + return switch (this) { .verbose_no_progress, .verbose => true, else => false, }; @@ -4741,7 +4663,7 @@ pub const PackageManager = struct { pub fn load( this: *Options, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, env_loader: *DotEnv.Loader, cli_: ?CommandLineArguments, @@ -4848,7 +4770,7 @@ pub const PackageManager = struct { if (env_loader.map.get("BUN_CONFIG_MAX_HTTP_REQUESTS")) |max_http_requests| { load: { - AsyncHTTP.max_simultaneous_requests = std.fmt.parseInt(u16, max_http_requests, 10) catch |err| { + AsyncHTTP.max_simultaneous_requests = std.fmt.parseInt(u16, max_http_requests, 10) catch { log.addErrorFmt( null, logger.Loc.Empty, @@ -5004,7 +4926,7 @@ pub const PackageManager = struct { const PackageJSONEditor = struct { pub fn edit( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, updates: []UpdateRequest, current_package_json: *JSAst.Expr, dependency_list: string, @@ -5141,7 +5063,7 @@ pub const PackageManager = struct { dependencies_object.data.e_object.packageJSONSort(); } - for (updates) |*update, j| { + for (updates) |*update| { var str = update.e_string.?; if (update.version.tag == .uninitialized) { @@ -5178,7 +5100,7 @@ pub const PackageManager = struct { package_json_file = file; } else { // can't use orelse due to a stage1 bug - package_json_file = std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch |err2| brk: { + package_json_file = std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch brk: { var this_cwd = original_cwd; outer: while (std.fs.path.dirname(this_cwd)) |parent| { cwd_buf[parent.len] = 0; @@ -5190,7 +5112,7 @@ pub const PackageManager = struct { return err; }; - break :brk std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch |err| { + break :brk std.fs.cwd().openFileZ("package.json", .{ .read = true, .write = true }) catch { this_cwd = parent; continue :outer; }; @@ -5253,7 +5175,7 @@ pub const PackageManager = struct { if (env_loader.map.get("GOMAXPROCS")) |max_procs| { if (std.fmt.parseInt(u32, max_procs, 10)) |cpu_count_| { cpu_count = @minimum(cpu_count, cpu_count_); - } else |err| {} + } else |_| {} } var manager = &instance; @@ -5405,7 +5327,7 @@ pub const PackageManager = struct { }; pub fn parse( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime params: []const ParamType, ) !CommandLineArguments { var diag = clap.Diagnostic{}; @@ -5532,7 +5454,7 @@ pub const PackageManager = struct { pub const Array = std.BoundedArray(UpdateRequest, 64); pub fn parse( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, positionals: []const string, update_requests: *Array, @@ -5968,7 +5890,7 @@ pub const PackageManager = struct { std.mem.copy(u8, &node_modules_buf, entry.name); node_modules_buf[entry.name.len] = 0; var buf: [:0]u8 = node_modules_buf[0..entry.name.len :0]; - var file = node_modules_bin.openFileZ(buf, .{ .read = true }) catch |err| { + var file = node_modules_bin.openFileZ(buf, .{ .read = true }) catch { node_modules_bin.deleteFileZ(buf) catch {}; continue :iterator; }; @@ -6033,7 +5955,7 @@ pub const PackageManager = struct { has_created_bin: bool = false, destination_dir_subpath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined, install_count: usize = 0, - successfully_installed: std.DynamicBitSetUnmanaged, + successfully_installed: Bitset, // For linking native binaries, we only want to link after we've installed the companion dependencies // We don't want to introduce dependent callbacks like that for every single package @@ -6287,7 +6209,6 @@ pub const PackageManager = struct { progress.* = .{}; } } - const cache_dir = this.cache_directory; lockfile.unique_packages.unset(0); @@ -6329,8 +6250,7 @@ pub const PackageManager = struct { const resolutions_buffer: []const PackageID = lockfile.buffers.resolutions.items; const resolution_lists: []const Lockfile.PackageIDSlice = parts.items(.resolutions); var resolutions = parts.items(.resolution); - const end = @truncate(PackageID, names.len); - const pending_task_offset = this.total_tasks; + var iterator = Lockfile.Tree.Iterator.init( lockfile.buffers.trees.items, lockfile.buffers.hoisted_packages.items, @@ -6355,7 +6275,7 @@ pub const PackageManager = struct { .summary = &summary, .force_install = force_install, .install_count = lockfile.buffers.hoisted_packages.items.len, - .successfully_installed = try std.DynamicBitSetUnmanaged.initEmpty(lockfile.packages.len, this.allocator), + .successfully_installed = try Bitset.initEmpty(lockfile.packages.len, this.allocator), }; const cwd = std.fs.cwd(); @@ -6426,7 +6346,7 @@ pub const PackageManager = struct { const package_resolutions: []const PackageID = resolution_lists[package_id].get(resolutions_buffer); const original_bin: Bin = installer.bins[package_id]; - for (package_dependencies) |dependency, i| { + for (package_dependencies) |_, i| { const resolved_id = package_resolutions[i]; if (resolved_id >= names.len) continue; const meta: Lockfile.Package.Meta = metas[resolved_id]; @@ -6617,7 +6537,7 @@ pub const PackageManager = struct { // ensure we use one pointer to reference it instead of creating new ones and potentially aliasing var builder = &builder_; - for (new_dependencies) |new_dep, i| { + for (new_dependencies) |new_dep| { new_dep.count(lockfile.buffers.string_bytes.items, *Lockfile.StringBuilder, builder); } @@ -6626,7 +6546,6 @@ pub const PackageManager = struct { var packages = manager.lockfile.packages.slice(); var dep_lists = packages.items(.dependencies); var resolution_lists = packages.items(.resolutions); - const old_dependencies_list = dep_lists[0]; const old_resolutions_list = resolution_lists[0]; dep_lists[0] = .{ .off = off, .len = len }; resolution_lists[0] = .{ .off = off, .len = len }; diff --git a/src/install/integrity.zig b/src/install/integrity.zig index debe861a4..1a52b5b1a 100644 --- a/src/install/integrity.zig +++ b/src/install/integrity.zig @@ -66,8 +66,6 @@ pub const Integrity = extern struct { i += 1; } - var remainder = &integrity.value[out_i..]; - return integrity; } @@ -146,7 +144,7 @@ pub const Integrity = extern struct { return this.value[0..this.tag.digestLen()]; } - pub fn format(this: *const Integrity, comptime layout: []const u8, opts: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(this: *const Integrity, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { switch (this.tag) { .sha1 => try writer.writeAll("sha1-"), .sha256 => try writer.writeAll("sha256-"), diff --git a/src/install/npm.zig b/src/install/npm.zig index a6cded5dc..fb1ff523a 100644 --- a/src/install/npm.zig +++ b/src/install/npm.zig @@ -24,6 +24,7 @@ const IdentityContext = @import("../identity_context.zig").IdentityContext; const ArrayIdentityContext = @import("../identity_context.zig").ArrayIdentityContext; const SlicedString = Semver.SlicedString; const FileSystem = @import("../fs.zig").FileSystem; +const Dependency = @import("./dependency.zig"); const VersionSlice = @import("./install.zig").VersionSlice; const ObjectPool = @import("../pool.zig").ObjectPool; @@ -69,7 +70,7 @@ pub const Registry = struct { const Pico = @import("picohttp"); pub fn getPackageMetadata( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, response: Pico.Response, body: []const u8, log: *logger.Log, @@ -481,7 +482,7 @@ pub const PackageManifest = struct { try std.os.renameatZ(tmpdir.fd, tmp_path, cache_dir.fd, out_path); } - pub fn load(allocator: *std.mem.Allocator, cache_dir: std.fs.Dir, package_name: string) !?PackageManifest { + pub fn load(allocator: std.mem.Allocator, cache_dir: std.fs.Dir, package_name: string) !?PackageManifest { const file_id = std.hash.Wyhash.hash(0, package_name); var file_path_buf: [512 + 64]u8 = undefined; var file_path = try std.fmt.bufPrintZ(&file_path_buf, "{x}.npm", .{file_id}); @@ -538,11 +539,6 @@ pub const PackageManifest = struct { } pub fn reportSize(this: *const PackageManifest) void { - const versions = std.mem.sliceAsBytes(this.versions); - const external_strings = std.mem.sliceAsBytes(this.external_strings); - const package_versions = std.mem.sliceAsBytes(this.package_versions); - const string_buf = std.mem.sliceAsBytes(this.string_buf); - Output.prettyErrorln( \\ Versions count: {d} \\ External Strings count: {d} @@ -668,7 +664,7 @@ pub const PackageManifest = struct { /// This parses [Abbreviated metadata](https://github.com/npm/registry/blob/master/docs/responses/package-metadata.md#abbreviated-metadata-format) pub fn parse( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, json_buffer: []const u8, expected_name: []const u8, @@ -678,9 +674,7 @@ pub const PackageManifest = struct { ) !?PackageManifest { const source = logger.Source.initPathString(expected_name, json_buffer); initializeStore(); - const json = json_parser.ParseJSON(&source, log, allocator) catch |err| { - return null; - }; + const json = json_parser.ParseJSON(&source, log, allocator) catch return null; if (json.asProperty("error")) |error_q| { if (error_q.expr.asString(allocator)) |err| { @@ -776,7 +770,7 @@ pub const PackageManifest = struct { string_builder.count(obj.properties[0].value.?.asString(allocator) orelse break :bin); } }, - .e_string => |str| { + .e_string => { if (bin.expr.asString(allocator)) |str_| { string_builder.count(str_); break :bin; @@ -894,7 +888,6 @@ pub const PackageManifest = struct { result.pkg.name = string_builder.append(ExternalString, field); } - var string_slice = SlicedString.init(string_buf, string_buf); get_versions: { if (json.asProperty("versions")) |versions_q| { if (versions_q.expr.data != .e_object) break :get_versions; @@ -909,7 +902,7 @@ pub const PackageManifest = struct { var dependency_names = all_dependency_names_and_values; var version_string__: String = String{}; - for (versions) |prop, version_i| { + for (versions) |prop| { const version_name = prop.key.?.asString(allocator) orelse continue; var sliced_string = SlicedString.init(version_name, version_name); @@ -1259,14 +1252,13 @@ pub const PackageManifest = struct { var extern_strings_slice = extern_strings[0..dist_tags_count]; var dist_tag_i: usize = 0; - for (tags) |tag, i| { + for (tags) |tag| { if (tag.key.?.asString(allocator)) |key| { extern_strings_slice[dist_tag_i] = string_builder.append(ExternalString, key); const version_name = tag.value.?.asString(allocator) orelse continue; const dist_tag_value_literal = string_builder.append(ExternalString, version_name); - const dist_tag_value_literal_slice = dist_tag_value_literal.slice(string_buf); const sliced_string = dist_tag_value_literal.value.sliced(string_buf); diff --git a/src/install/repository.zig b/src/install/repository.zig index f93402ea4..7ea9ce470 100644 --- a/src/install/repository.zig +++ b/src/install/repository.zig @@ -49,7 +49,7 @@ pub const Repository = extern struct { label: []const u8 = "", buf: []const u8, repository: Repository, - pub fn format(formatter: Formatter, comptime layout: []const u8, opts: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(formatter: Formatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { std.debug.assert(formatter.label.len > 0); try writer.writeAll(formatter.label); diff --git a/src/install/resolvers/folder_resolver.zig b/src/install/resolvers/folder_resolver.zig index 1d40058f8..b7261c9f1 100644 --- a/src/install/resolvers/folder_resolver.zig +++ b/src/install/resolvers/folder_resolver.zig @@ -32,7 +32,7 @@ pub const FolderResolution = union(Tag) { pub const Resolver = struct { folder_path: string, - pub fn resolve(this: Resolver, comptime Builder: type, builder: Builder, json: JSAst.Expr) !Resolution { + pub fn resolve(this: Resolver, comptime Builder: type, builder: Builder, _: JSAst.Expr) !Resolution { return Resolution{ .tag = .folder, .value = .{ @@ -41,7 +41,7 @@ pub const FolderResolution = union(Tag) { }; } - pub fn count(this: Resolver, comptime Builder: type, builder: Builder, json: JSAst.Expr) void { + pub fn count(this: Resolver, comptime Builder: type, builder: Builder, _: JSAst.Expr) void { builder.count(this.folder_path); } }; @@ -51,7 +51,6 @@ pub const FolderResolution = union(Tag) { // We consider it valid if there is a package.json in the folder const normalized = std.mem.trimRight(u8, normalize(non_normalized_path), std.fs.path.sep_str); var joined: [std.fs.MAX_PATH_BYTES]u8 = undefined; - var rel_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; var abs: string = ""; var rel: string = ""; if (strings.startsWithChar(normalized, '.')) { @@ -86,7 +85,6 @@ pub const FolderResolution = union(Tag) { var body = Npm.Registry.BodyPool.get(manager.allocator); defer Npm.Registry.BodyPool.release(body); - const initial_errors_count = manager.log.errors; const len = package_json.getEndPos() catch |err| { entry.value_ptr.* = .{ .err = err }; return entry.value_ptr.*; diff --git a/src/install/semver.zig b/src/install/semver.zig index ce0208a0e..794867f13 100644 --- a/src/install/semver.zig +++ b/src/install/semver.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); /// String type that stores either an offset/length into an external buffer or a string inline directly @@ -26,7 +35,7 @@ pub const String = extern struct { str: *const String, buf: string, - pub fn format(formatter: Formatter, comptime layout: []const u8, opts: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(formatter: Formatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { const str = formatter.str; try writer.writeAll(str.slice(formatter.buf)); } @@ -216,7 +225,7 @@ pub const String = extern struct { else &[_]u8{}; } - pub fn allocate(this: *Builder, allocator: *std.mem.Allocator) !void { + pub fn allocate(this: *Builder, allocator: std.mem.Allocator) !void { var ptr_ = try allocator.alloc(u8, this.cap); this.ptr = ptr_.ptr; } @@ -491,7 +500,7 @@ pub const Version = extern struct { version: Version, input: string, - pub fn format(formatter: Formatter, comptime layout: []const u8, opts: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(formatter: Formatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { const self = formatter.version; try std.fmt.format(writer, "{d}.{d}.{d}", .{ self.major, self.minor, self.patch }); @@ -509,25 +518,16 @@ pub const Version = extern struct { } }; - inline fn atPart(i: u8) u32 { - return switch (i) { - 0 => self.major, - 1 => self.minor, - 2 => self.patch, - else => unreachable, - }; - } - pub fn eql(lhs: Version, rhs: Version) bool { return lhs.major == rhs.major and lhs.minor == rhs.minor and lhs.patch == rhs.patch and rhs.tag.eql(lhs.tag); } pub const HashContext = struct { - pub fn hash(this: @This(), lhs: Version) u32 { + pub fn hash(_: @This(), lhs: Version) u32 { return @truncate(u32, lhs.hash()); } - pub fn eql(this: @This(), lhs: Version, rhs: Version) bool { + pub fn eql(_: @This(), lhs: Version, rhs: Version) bool { return lhs.eql(rhs); } }; @@ -628,7 +628,7 @@ pub const Version = extern struct { var multi_tag_warn = false; // TODO: support multiple tags - pub fn parse(allocator: *std.mem.Allocator, sliced_string: SlicedString) TagResult { + pub fn parse(_: std.mem.Allocator, sliced_string: SlicedString) TagResult { var input = sliced_string.slice; var build_count: u32 = 0; var pre_count: u32 = 0; @@ -658,9 +658,6 @@ pub const Version = extern struct { var state = State.none; var start: usize = 0; - var tag_i: usize = 0; - var had_content = false; - var i: usize = 0; while (i < input.len) : (i += 1) { @@ -743,7 +740,7 @@ pub const Version = extern struct { stopped_at: u32 = 0, }; - pub fn parse(sliced_string: SlicedString, allocator: *std.mem.Allocator) ParseResult { + pub fn parse(sliced_string: SlicedString, allocator: std.mem.Allocator) ParseResult { var input = sliced_string.slice; var result = ParseResult{}; @@ -918,7 +915,7 @@ pub const Version = extern struct { std.debug.assert(input[0] != '.'); - for (input) |char, i| { + for (input) |char| { switch (char) { 'X', 'x', '*' => return 0, '0'...'9' => { @@ -1132,7 +1129,7 @@ pub const Query = struct { return lhs_next.eql(rhs_next); } - pub fn andRange(self: *List, allocator: *std.mem.Allocator, range: Range) !void { + pub fn andRange(self: *List, allocator: std.mem.Allocator, range: Range) !void { if (!self.head.range.hasLeft() and !self.head.range.hasRight()) { self.head.range = range; return; @@ -1153,7 +1150,7 @@ pub const Query = struct { pub const Group = struct { head: List = List{}, tail: ?*List = null, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, input: string = "", flags: FlagsBitSet = FlagsBitSet.initEmpty(), @@ -1432,7 +1429,7 @@ pub const Query = struct { }; pub fn parse( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, input: string, sliced: SlicedString, ) !Group { @@ -1448,9 +1445,6 @@ pub const Query = struct { var count: u8 = 0; var skip_round = false; var is_or = false; - var enable_hyphen = false; - - var last_non_whitespace: usize = 0; while (i < input.len) { skip_round = false; diff --git a/src/io/io_darwin.zig b/src/io/io_darwin.zig index 6d77878d2..d978a88f3 100644 --- a/src/io/io_darwin.zig +++ b/src/io/io_darwin.zig @@ -17,6 +17,7 @@ const os = struct { }; const mem = std.mem; const assert = std.debug.assert; +const c = std.c; const FIFO = @import("./fifo.zig").FIFO; const Time = @import("./time.zig").Time; @@ -57,8 +58,8 @@ pub fn run_for_ns(self: *IO, nanoseconds: u63) !void { const on_timeout = struct { fn callback( timed_out_ptr: *bool, - _completion: *Completion, - _result: TimeoutError!void, + _: *Completion, + _: TimeoutError!void, ) void { timed_out_ptr.* = true; } @@ -139,7 +140,7 @@ fn flush(self: *IO, wait_for_completions: bool) !void { } } -fn flush_io(self: *IO, events: []os.Kevent, io_pending_top: *?*Completion) usize { +fn flush_io(_: *IO, events: []os.Kevent, io_pending_top: *?*Completion) usize { for (events) |*kevent, flushed| { const completion = io_pending_top.* orelse return flushed; io_pending_top.* = completion.next; @@ -147,38 +148,38 @@ fn flush_io(self: *IO, events: []os.Kevent, io_pending_top: *?*Completion) usize const event_info = switch (completion.operation) { .accept => |op| [3]c_int{ op.socket, - os.EVFILT_READ, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_READ, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .connect => |op| [3]c_int{ op.socket, - os.EVFILT_WRITE, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_WRITE, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .read => |op| [3]c_int{ op.fd, - os.EVFILT_READ, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_READ, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .write => |op| [3]c_int{ op.fd, - os.EVFILT_WRITE, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_WRITE, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .recv => |op| [3]c_int{ op.socket, - os.EVFILT_READ, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_READ, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .send => |op| [3]c_int{ op.socket, - os.EVFILT_WRITE, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_WRITE, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, .event => |op| [3]c_int{ op.fd, - os.EVFILT_USER, - os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + c.EVFILT_USER, + c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, }, else => @panic("invalid completion operation queued for io"), }; @@ -227,7 +228,7 @@ fn flush_timeouts(self: *IO) ?u64 { /// This struct holds the data needed for a single IO operation pub const Completion = struct { next: ?*Completion, - context: ?*c_void, + context: ?*anyopaque, callback: fn (*IO, *Completion) void, operation: Operation, }; @@ -342,8 +343,8 @@ pub fn triggerEvent(event_fd: os.fd_t, completion: *Completion) !void { var kevents = [1]os.Kevent{ .{ .ident = @intCast(usize, event_fd), - .filter = os.EVFILT_USER, - .flags = os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + .filter = c.EVFILT_USER, + .flags = c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, .fflags = 0, .data = 0, .udata = @ptrToInt(completion), @@ -353,8 +354,8 @@ pub fn triggerEvent(event_fd: os.fd_t, completion: *Completion) !void { var change_events = [1]os.Kevent{ .{ .ident = @intCast(usize, event_fd), - .filter = os.EVFILT_USER, - .flags = os.EV_ADD | os.EV_ENABLE | os.EV_ONESHOT, + .filter = c.EVFILT_USER, + .flags = c.EV_ADD | c.EV_ENABLE | c.EV_ONESHOT, .fflags = 0, .data = 0, .udata = @ptrToInt(completion), @@ -389,7 +390,7 @@ pub fn event( .fd = fd, }, struct { - fn doOperation(op: anytype) void {} + fn doOperation(_: anytype) void {} }, ); } @@ -420,7 +421,7 @@ pub fn accept( op.socket, null, null, - os.SOCK_NONBLOCK | os.SOCK_CLOEXEC, + os.SOCK.NONBLOCK | os.SOCK.CLOEXEC, ); errdefer os.close(fd); @@ -754,11 +755,11 @@ pub fn write( } pub fn openSocket(family: u32, sock_type: u32, protocol: u32) !os.socket_t { - const fd = try os.socket(family, sock_type | os.SOCK_NONBLOCK, protocol); + const fd = try os.socket(family, sock_type | os.SOCK.NONBLOCK, protocol); errdefer os.close(fd); // darwin doesn't support os.MSG_NOSIGNAL, but instead a socket option to avoid SIGPIPE. - try os.setsockopt(fd, os.SOL_SOCKET, os.SO_NOSIGPIPE, &mem.toBytes(@as(c_int, 1))); + try os.setsockopt(fd, os.SOL.SOCKET, os.SO.NOSIGPIPE, &mem.toBytes(@as(c_int, 1))); return fd; } @@ -769,7 +770,7 @@ fn buffer_limit(buffer_len: usize) usize { // stuffing the errno codes into the last `4096` values. // Darwin limits writes to `0x7fffffff` bytes, more than that returns `EINVAL`. // The corresponding POSIX limit is `std.math.maxInt(isize)`. - const limit = switch (std.Target.current.os.tag) { + const limit = switch (@import("builtin").target.os.tag) { .linux => 0x7ffff000, .macos, .ios, .watchos, .tvos => std.math.maxInt(i32), else => std.math.maxInt(isize), diff --git a/src/io/io_linux.zig b/src/io/io_linux.zig index 05a39a4d7..5fd6aa709 100644 --- a/src/io/io_linux.zig +++ b/src/io/io_linux.zig @@ -234,10 +234,10 @@ pub const Completion = struct { result: i32 = undefined, next: ?*Completion = null, operation: Operation, - // This is one of the usecases for c_void outside of C code and as such c_void will + // This is one of the usecases for anyopaque outside of C code and as such anyopaque will // be replaced with anyopaque eventually: https://github.com/ziglang/zig/issues/323 - context: ?*c_void, - callback: fn (context: ?*c_void, completion: *Completion, result: *const c_void) void, + context: ?*anyopaque, + callback: fn (context: ?*anyopaque, completion: *Completion, result: *const anyopaque) void, fn prep(completion: *Completion, sqe: *io_uring_sqe) void { switch (completion.operation) { @@ -247,7 +247,7 @@ pub const Completion = struct { op.socket, &op.address, &op.address_size, - os.SOCK_CLOEXEC, + os.SOCK.CLOEXEC, ); }, .close => |op| { @@ -550,7 +550,7 @@ pub fn accept( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -592,7 +592,7 @@ pub fn close( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -642,7 +642,7 @@ pub fn connect( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -685,7 +685,7 @@ pub fn fsync( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -731,7 +731,7 @@ pub fn read( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -776,7 +776,7 @@ pub fn recv( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -827,7 +827,7 @@ pub fn send( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -863,7 +863,7 @@ pub fn timeout( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -912,7 +912,7 @@ pub fn write( .io = self, .context = context, .callback = struct { - fn wrapper(ctx: ?*c_void, comp: *Completion, res: *const c_void) void { + fn wrapper(ctx: ?*anyopaque, comp: *Completion, res: *const anyopaque) void { callback( @intToPtr(Context, @ptrToInt(ctx)), comp, @@ -945,7 +945,7 @@ fn buffer_limit(buffer_len: usize) usize { // stuffing the errno codes into the last `4096` values. // Darwin limits writes to `0x7fffffff` bytes, more than that returns `EINVAL`. // The corresponding POSIX limit is `std.math.maxInt(isize)`. - const limit = switch (std.Target.current.os.tag) { + const limit = switch (@import("builtin").target.os.tag) { .linux => 0x7ffff000, .macos, .ios, .watchos, .tvos => std.math.maxInt(i32), else => std.math.maxInt(isize), diff --git a/src/io/time.zig b/src/io/time.zig index 2bfe24da0..8ebf5de6e 100644 --- a/src/io/time.zig +++ b/src/io/time.zig @@ -1,6 +1,6 @@ const std = @import("std"); const assert = std.debug.assert; -const is_darwin = std.Target.current.isDarwin(); +const is_darwin = @import("builtin").target.isDarwin(); pub const Time = struct { const Self = @This(); @@ -51,7 +51,7 @@ pub const Time = struct { /// A timestamp to measure real (i.e. wall clock) time, meaningful across systems, and reboots. /// This clock is affected by discontinuous jumps in the system time. - pub fn realtime(self: *Self) i64 { + pub fn realtime(_: *Self) i64 { // macos has supported clock_gettime() since 10.12: // https://opensource.apple.com/source/Libc/Libc-1158.1.2/gen/clock_gettime.3.auto.html @@ -60,5 +60,5 @@ pub const Time = struct { return @as(i64, ts.tv_sec) * std.time.ns_per_s + ts.tv_nsec; } - pub fn tick(self: *Self) void {} + pub fn tick(_: *Self) void {} }; diff --git a/src/javascript/jsc/api/router.zig b/src/javascript/jsc/api/router.zig index 59d26a82a..66aca8349 100644 --- a/src/javascript/jsc/api/router.zig +++ b/src/javascript/jsc/api/router.zig @@ -1,4 +1,3 @@ -usingnamespace @import("../base.zig"); const std = @import("std"); const Api = @import("../../../api/schema.zig").Api; const FilesystemRouter = @import("../../../router.zig"); @@ -6,13 +5,29 @@ const http = @import("../../../http.zig"); const JavaScript = @import("../javascript.zig"); const QueryStringMap = @import("../../../query_string_map.zig").QueryStringMap; const CombinedScanner = @import("../../../query_string_map.zig").CombinedScanner; -usingnamespace @import("../bindings/bindings.zig"); -usingnamespace @import("../webcore/response.zig"); +const _global = @import("../../../global.zig"); +const string = _global.string; +const JSC = @import("javascript_core"); +const js = JSC.C; +const WebCore = @import("../webcore/response.zig"); const Router = @This(); const Bundler = @import("../../../bundler.zig"); const VirtualMachine = JavaScript.VirtualMachine; const ScriptSrcStream = std.io.FixedBufferStream([]u8); +const ZigString = JSC.ZigString; const Fs = @import("../../../fs.zig"); +const Base = @import("../base.zig"); +const getAllocator = Base.getAllocator; +const JSObject = JSC.JSObject; +const JSError = Base.JSError; +const JSValue = JSC.JSValue; +const JSGlobalObject = JSC.JSGlobalObject; +const strings = @import("strings"); +const NewClass = Base.NewClass; +const To = Base.To; +const Request = WebCore.Request; +const d = Base.d; +const FetchEvent = WebCore.FetchEvent; route: *const FilesystemRouter.Match, query_string_map: ?QueryStringMap = null, @@ -24,13 +39,13 @@ script_src_buf_writer: ScriptSrcStream = undefined, pub fn importRoute( this: *Router, - ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSObjectRef { - const prom = JSModuleLoader.loadAndEvaluateModule(VirtualMachine.vm.global, &ZigString.init(this.route.file_path)); + const prom = JSC.JSModuleLoader.loadAndEvaluateModule(VirtualMachine.vm.global, &ZigString.init(this.route.file_path)); VirtualMachine.vm.tick(); @@ -38,10 +53,10 @@ pub fn importRoute( } pub fn match( - obj: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { @@ -74,15 +89,15 @@ fn matchRequest( } fn matchPathNameString( - ctx: js.JSContextRef, - pathname: string, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: string, + _: js.ExceptionRef, ) js.JSObjectRef {} fn matchPathName( - ctx: js.JSContextRef, - pathname: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { return null; } @@ -95,7 +110,7 @@ fn matchFetchEvent( return createRouteObject(ctx, fetch_event.request_context, exception); } -fn createRouteObject(ctx: js.JSContextRef, req: *const http.RequestContext, exception: js.ExceptionRef) js.JSValueRef { +fn createRouteObject(ctx: js.JSContextRef, req: *const http.RequestContext, _: js.ExceptionRef) js.JSValueRef { const route = &(req.matched_route orelse { return js.JSValueMakeNull(ctx); }); @@ -259,10 +274,10 @@ pub const Instance = NewClass( pub fn getFilePath( this: *Router, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.route.file_path).toValue(VirtualMachine.vm.global).asRef(); } @@ -277,20 +292,20 @@ pub fn finalize( pub fn getPathname( this: *Router, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.route.pathname).toValue(VirtualMachine.vm.global).asRef(); } pub fn getRoute( this: *Router, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.route.name).toValue(VirtualMachine.vm.global).asRef(); } @@ -317,17 +332,17 @@ const KindEnum = struct { pub fn getKind( this: *Router, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return KindEnum.init(this.route.name).toValue(VirtualMachine.vm.global).asRef(); } threadlocal var query_string_values_buf: [256]string = undefined; threadlocal var query_string_value_refs_buf: [256]ZigString = undefined; -pub fn createQueryObject(ctx: js.JSContextRef, map: *QueryStringMap, exception: js.ExceptionRef) callconv(.C) js.JSValueRef { +pub fn createQueryObject(_: js.JSContextRef, map: *QueryStringMap, _: js.ExceptionRef) callconv(.C) js.JSValueRef { const QueryObjectCreator = struct { query: *QueryStringMap, pub fn create(this: *@This(), obj: *JSObject, global: *JSGlobalObject) void { @@ -342,11 +357,11 @@ pub fn createQueryObject(ctx: js.JSContextRef, map: *QueryStringMap, exception: for (entry.values) |value, i| { values[i] = ZigString.init(value); } - obj.putRecord(VirtualMachine.vm.global, &str, values.ptr, values.len); + obj.putRecord(global, &str, values.ptr, values.len); } else { query_string_value_refs_buf[0] = ZigString.init(entry.values[0]); - obj.putRecord(VirtualMachine.vm.global, &str, &query_string_value_refs_buf, 1); + obj.putRecord(global, &str, &query_string_value_refs_buf, 1); } } } @@ -386,9 +401,9 @@ pub fn getScriptSrcString( pub fn getScriptSrc( this: *Router, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { const src = this.script_src orelse brk: { getScriptSrcString(ScriptSrcStream.Writer, this.script_src_buf_writer.writer(), this.route.file_path, this.route.client_framework_enabled); @@ -403,8 +418,8 @@ pub fn getScriptSrc( pub fn getParams( this: *Router, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, + _: js.JSObjectRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSValueRef { if (this.param_map == null) { @@ -416,7 +431,7 @@ pub fn getParams( this.route.params, ))) |map| { this.param_map = map; - } else |err| {} + } else |_| {} } } @@ -431,8 +446,8 @@ pub fn getParams( pub fn getQuery( this: *Router, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, + _: js.JSObjectRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSValueRef { if (this.query_string_map == null) { @@ -445,11 +460,11 @@ pub fn getQuery( this.route.params, ))) |map| { this.query_string_map = map; - } else |err| {} + } else |_| {} } else if (this.route.query_string.len > 0) { if (QueryStringMap.init(getAllocator(ctx), this.route.query_string)) |map| { this.query_string_map = map; - } else |err| {} + } else |_| {} } } diff --git a/src/javascript/jsc/base.zig b/src/javascript/jsc/base.zig index 64a0f15a3..f51eb86d9 100644 --- a/src/javascript/jsc/base.zig +++ b/src/javascript/jsc/base.zig @@ -1,10 +1,26 @@ -pub const js = @import("./JavascriptCore.zig"); +pub const js = @import("../../jsc.zig").C; const std = @import("std"); -pub usingnamespace @import("../../global.zig"); -usingnamespace @import("./javascript.zig"); -usingnamespace @import("./webcore/response.zig"); +const _global = @import("../../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const JavaScript = @import("./javascript.zig"); +const ResolveError = JavaScript.ResolveError; +const BuildError = JavaScript.BuildError; +const WebCore = @import("./webcore/response.zig"); +const Fetch = WebCore.Fetch; +const Response = WebCore.Response; +const Request = WebCore.Request; const Router = @import("./api/router.zig"); - +const FetchEvent = WebCore.FetchEvent; +const Headers = WebCore.Headers; +const Body = WebCore.Body; const TaggedPointerTypes = @import("../../tagged_pointer.zig"); const TaggedPointerUnion = TaggedPointerTypes.TaggedPointerUnion; @@ -18,7 +34,7 @@ fn ObjectPtrType(comptime Type: type) type { pub const To = struct { pub const JS = struct { - pub inline fn str(ref: anytype, val: anytype) js.JSStringRef { + pub inline fn str(_: anytype, val: anytype) js.JSStringRef { return js.JSStringCreateWithUTF8CString(val[0.. :0]); } @@ -132,9 +148,7 @@ pub const To = struct { arguments: [*c]const js.JSValueRef, exception: js.ExceptionRef, ) callconv(.C) js.JSValueRef { - var object_ptr: *c_void = undefined; - - if (comptime ZigContextType == c_void) { + if (comptime ZigContextType == anyopaque) { return ctxfn( js.JSObjectGetPrivate(function) or js.jsObjectGetPrivate(thisObject), ctx, @@ -291,7 +305,7 @@ pub const Properties = struct { @field(UTF8, name).len, ); - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert( js.JSStringIsEqualToString(@field(Refs, name), @field(UTF8, name).ptr, @field(UTF8, name).len), ); @@ -607,7 +621,6 @@ pub const d = struct { } const qualifier = if (!klass.default_export) "export " else ""; - var stmt: string = qualifier; if (klass.interface) { buf = buf ++ printIndented("export interface {s} {{\n", .{klass.name}, indent); @@ -618,7 +631,7 @@ pub const d = struct { indent += indent_level; var did_print_constructor = false; - for (klass.functions) |func, i| { + for (klass.functions) |func| { if (!strings.eqlComptime(func.name, "constructor")) continue; did_print_constructor = true; buf = buf ++ printInstanceFunction( @@ -781,7 +794,7 @@ pub fn NewClass( pub fn rfn( ctx: js.JSContextRef, function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, argumentCount: usize, arguments: [*c]const js.JSValueRef, exception: js.ExceptionRef, @@ -790,17 +803,17 @@ pub fn NewClass( } }; - pub fn throwInvalidConstructorError(ctx: js.JSContextRef, obj: js.JSObjectRef, c: usize, a: [*c]const js.JSValueRef, exception: js.ExceptionRef) callconv(.C) js.JSObjectRef { + pub fn throwInvalidConstructorError(ctx: js.JSContextRef, _: js.JSObjectRef, _: usize, _: [*c]const js.JSValueRef, exception: js.ExceptionRef) callconv(.C) js.JSObjectRef { JSError(getAllocator(ctx), "" ++ name ++ " is not a constructor", .{}, ctx, exception); return null; } pub fn throwInvalidFunctionError( ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - argumentCount: usize, - arguments: [*c]const js.JSValueRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: usize, + _: [*c]const js.JSValueRef, exception: js.ExceptionRef, ) callconv(.C) js.JSValueRef { JSError(getAllocator(ctx), "" ++ name ++ " is not a function", .{}, ctx, exception); @@ -823,28 +836,13 @@ pub fn NewClass( return &ref; } - pub fn RawGetter(comptime ReceiverType: type) type { - const ClassGetter = struct { - pub fn getter( - ctx: js.JSContextRef, - obj: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, - ) callconv(.C) js.JSValueRef { - return js.JSObjectMake(ctx, get().*, null); - } - }; - - return ClassGetter; - } - - pub fn customHasInstance(ctx: js.JSContextRef, obj: js.JSObjectRef, value: js.JSValueRef, exception: js.ExceptionRef) callconv(.C) bool { + pub fn customHasInstance(ctx: js.JSContextRef, _: js.JSObjectRef, value: js.JSValueRef, _: js.ExceptionRef) callconv(.C) bool { return js.JSValueIsObjectOfClass(ctx, value, get().*); } pub fn make(ctx: js.JSContextRef, ptr: *ZigType) js.JSObjectRef { var real_ptr = JSPrivateDataPtr.init(ptr).ptr(); - if (comptime isDebug) { + if (comptime Environment.allow_assert) { std.debug.assert(JSPrivateDataPtr.isValidPtr(real_ptr)); std.debug.assert(JSPrivateDataPtr.from(real_ptr).get(ZigType).? == ptr); } @@ -855,7 +853,7 @@ pub fn NewClass( real_ptr, ); - if (comptime isDebug) { + if (comptime Environment.allow_assert) { std.debug.assert(JSPrivateDataPtr.from(js.JSObjectGetPrivate(result)).ptr() == real_ptr); } @@ -873,10 +871,10 @@ pub fn NewClass( pub const ts = typescriptDeclaration(); pub fn rfn( - receiver: *ReceiverType, + _: *ReceiverType, ctx: js.JSContextRef, - obj: js.JSObjectRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSObjectMake(ctx, get().*, null); } @@ -894,26 +892,24 @@ pub fn NewClass( var pointer = GetJSPrivateData(ZigType, obj) orelse return js.JSValueMakeUndefined(ctx); if (singleton) { - inline for (function_names) |propname, i| { + inline for (function_names) |_, i| { if (js.JSStringIsEqual(prop, function_name_refs[i])) { return instance_functions[i]; } } - if (comptime std.meta.trait.hasFn("onMissingProperty")(ZigType)) { - return ptr.onMissingProperty(ctx, obj, prop, exception); - } + unreachable; } else { inline for (property_names) |propname, i| { if (js.JSStringIsEqual(prop, property_name_refs[i])) { return @field( properties, propname, - )(ptr, ctx, obj, exception); + )(pointer, ctx, obj, exception); } } if (comptime std.meta.trait.hasFn("onMissingProperty")(ZigType)) { - return ptr.onMissingProperty(ctx, obj, prop, exception); + return pointer.onMissingProperty(ctx, obj, prop, exception); } } @@ -930,7 +926,6 @@ pub fn NewClass( ) callconv(.C) js.JSValueRef { var this: ObjectPtrType(ZigType) = if (comptime ZigType == void) void{} else GetJSPrivateData(ZigType, obj) orelse return js.JSValueMakeUndefined(ctx); - var exc: js.JSValueRef = null; const Field = @TypeOf(@field( properties, property_names[id], @@ -965,13 +960,6 @@ pub fn NewClass( js.ExceptionRef, ) js.JSValueRef; - const WithoutPropFn = fn ( - ObjectPtrType(ZigType), - js.JSContextRef, - js.JSObjectRef, - js.ExceptionRef, - ) js.JSValueRef; - if (Func.Fn.args.len == @typeInfo(WithPropFn).Fn.args.len) { return func( this, @@ -1002,8 +990,6 @@ pub fn NewClass( ) callconv(.C) bool { var this = GetJSPrivateData(ZigType, obj) orelse return js.JSValueMakeUndefined(ctx); - var exc: js.ExceptionRef = null; - switch (comptime @typeInfo(@TypeOf(@field( properties, property_names[id], @@ -1040,7 +1026,7 @@ pub fn NewClass( if (static_functions.len > 0) { var count: usize = 0; - inline for (function_name_literals) |function_name, i| { + inline for (function_name_literals) |_, i| { const func = @field(staticFunctions, function_names[i]); const Func = @TypeOf(func); @@ -1062,7 +1048,7 @@ pub fn NewClass( class.functions = std.mem.span(&funcs); var func_i: usize = 0; - inline for (function_name_literals) |function_name, i| { + inline for (function_name_literals) |_, i| { const func = @field(staticFunctions, function_names[i]); const Func = @TypeOf(func); @@ -1104,7 +1090,7 @@ pub fn NewClass( var count: usize = 0; var class_count: usize = 0; - inline for (property_names) |property_name, i| { + inline for (property_names) |_, i| { const field = @field(properties, property_names[i]); const Field = @TypeOf(field); @@ -1209,7 +1195,7 @@ pub fn NewClass( if (static_functions.len > 0) { var count: usize = 0; - inline for (function_name_literals) |function_name, i| { + inline for (function_name_literals) |_, i| { const func = @field(staticFunctions, function_names[i]); const Func = @TypeOf(func); @@ -1231,7 +1217,7 @@ pub fn NewClass( class.functions = std.mem.span(&funcs); var func_i: usize = 0; - inline for (function_name_literals) |function_name, i| { + inline for (function_name_literals) |_, i| { const func = @field(staticFunctions, function_names[i]); const Func = @TypeOf(func); @@ -1275,7 +1261,7 @@ pub fn NewClass( if (property_names.len > 0) { var count: usize = 0; - inline for (property_names) |property_name, i| { + inline for (property_names) |_, i| { const field = @field(properties, property_names[i]); if (hasTypeScript(@TypeOf(field))) { @@ -1339,7 +1325,7 @@ pub fn NewClass( if (static_functions.len > 0) { std.mem.set(js.JSStaticFunction, &static_functions, std.mem.zeroes(js.JSStaticFunction)); var count: usize = 0; - inline for (function_name_literals) |function_name, i| { + inline for (function_name_literals) |_, i| { switch (comptime @typeInfo(@TypeOf(@field(staticFunctions, function_names[i])))) { .Struct => { if (comptime strings.eqlComptime(function_names[i], "constructor")) { @@ -1466,7 +1452,7 @@ pub fn NewClass( threadlocal var error_args: [1]js.JSValueRef = undefined; pub fn JSError( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime fmt: string, args: anytype, ctx: js.JSContextRef, @@ -1489,7 +1475,7 @@ pub fn JSError( } } -pub fn getAllocator(ctx: js.JSContextRef) *std.mem.Allocator { +pub fn getAllocator(_: js.JSContextRef) std.mem.Allocator { return default_allocator; } @@ -1512,9 +1498,9 @@ pub const ArrayBuffer = struct { pub const MarkedArrayBuffer = struct { buffer: ArrayBuffer, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn fromBytes(bytes: []u8, allocator: *std.mem.Allocator, typed_array_type: js.JSTypedArrayType) MarkedArrayBuffer { + pub fn fromBytes(bytes: []u8, allocator: std.mem.Allocator, typed_array_type: js.JSTypedArrayType) MarkedArrayBuffer { return MarkedArrayBuffer{ .buffer = ArrayBuffer{ .offset = 0, .len = @intCast(u32, bytes.len), .byte_len = @intCast(u32, bytes.len), .typed_array_type = typed_array_type, .ptr = bytes.ptr }, .allocator = allocator, @@ -1527,7 +1513,7 @@ pub const MarkedArrayBuffer = struct { content.allocator.destroy(this); } - pub fn init(allocator: *std.mem.Allocator, size: u32, typed_array_type: js.JSTypedArrayType) !*MarkedArrayBuffer { + pub fn init(allocator: std.mem.Allocator, size: u32, typed_array_type: js.JSTypedArrayType) !*MarkedArrayBuffer { const bytes = try allocator.alloc(u8, size); var container = try allocator.create(MarkedArrayBuffer); container.* = MarkedArrayBuffer.fromBytes(bytes, allocator, typed_array_type); @@ -1539,10 +1525,10 @@ pub const MarkedArrayBuffer = struct { } }; -export fn MarkedArrayBuffer_deallocator(bytes_: *c_void, ctx_: *c_void) void { +export fn MarkedArrayBuffer_deallocator(bytes_: *anyopaque, ctx_: *anyopaque) void { var ctx = @ptrCast(*MarkedArrayBuffer, @alignCast(@alignOf(*MarkedArrayBuffer), ctx_)); - if (comptime isDebug) std.debug.assert(ctx.buffer.ptr == @ptrCast([*]u8, bytes_)); + if (comptime Environment.allow_assert) std.debug.assert(ctx.buffer.ptr == @ptrCast([*]u8, bytes_)); ctx.destroy(); } diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.cpp b/src/javascript/jsc/bindings/ZigGlobalObject.cpp index d21497d20..e113e4df2 100644 --- a/src/javascript/jsc/bindings/ZigGlobalObject.cpp +++ b/src/javascript/jsc/bindings/ZigGlobalObject.cpp @@ -121,6 +121,99 @@ extern "C" JSC__JSGlobalObject *Zig__GlobalObject__create(JSClassRef *globalObje return globalObject; } +extern "C" void *Zig__GlobalObject__getModuleRegistryMap(JSC__JSGlobalObject *arg0) { + if (JSC::JSObject *loader = + JSC::jsDynamicCast<JSC::JSObject *>(arg0->vm(), arg0->moduleLoader())) { + JSC::JSMap *map = JSC::jsDynamicCast<JSC::JSMap *>( + arg0->vm(), + loader->getDirect(arg0->vm(), JSC::Identifier::fromString(arg0->vm(), "registry"))); + + JSC::JSMap *cloned = map->clone(arg0, arg0->vm(), arg0->mapStructure()); + JSC::gcProtect(cloned); + + return cloned; + } + + return nullptr; +} + +extern "C" bool Zig__GlobalObject__resetModuleRegistryMap(JSC__JSGlobalObject *globalObject, + void *map_ptr) { + if (map_ptr == nullptr) return false; + JSC::JSMap *map = reinterpret_cast<JSC::JSMap *>(map_ptr); + JSC::VM &vm = globalObject->vm(); + if (JSC::JSObject *obj = + JSC::jsDynamicCast<JSC::JSObject *>(globalObject->vm(), globalObject->moduleLoader())) { + auto identifier = JSC::Identifier::fromString(globalObject->vm(), "registry"); + + if (JSC::JSMap *oldMap = JSC::jsDynamicCast<JSC::JSMap *>( + globalObject->vm(), obj->getDirect(globalObject->vm(), identifier))) { + oldMap->clear(globalObject); + // vm.finalizeSynchronousJSExecution(); + + obj->putDirect(globalObject->vm(), identifier, + map->clone(globalObject, globalObject->vm(), globalObject->mapStructure())); + + // vm.deleteAllLinkedCode(JSC::DeleteAllCodeEffort::DeleteAllCodeIfNotCollecting); + // JSC::Heap::PreventCollectionScope(vm.heap); + + // vm.heap.completeAllJITPlans(); + + // vm.forEachScriptExecutableSpace([&](auto &spaceAndSet) { + // JSC::HeapIterationScope heapIterationScope(vm.heap); + // auto &set = spaceAndSet.set; + // set.forEachLiveCell([&](JSC::HeapCell *cell, JSC::HeapCell::Kind) { + // if (JSC::ModuleProgramExecutable *executable = + // JSC::jsDynamicCast<JSC::ModuleProgramExecutable *>(cell)) { + // executable->clearCode(set); + // } + // }); + // }); + } + // globalObject->vm().heap.deleteAllUnlinkedCodeBlocks( + // JSC::DeleteAllCodeEffort::PreventCollectionAndDeleteAllCode); + // vm.whenIdle([globalObject, oldMap, map]() { + // auto recordIdentifier = JSC::Identifier::fromString(globalObject->vm(), "module"); + + // JSC::JSModuleRecord *record; + // JSC::JSValue key; + // JSC::JSValue value; + // JSC::JSObject *mod; + // JSC::JSObject *nextObject; + // JSC::forEachInIterable( + // globalObject, oldMap, + // [&](JSC::VM &vm, JSC::JSGlobalObject *globalObject, JSC::JSValue nextValue) { + // nextObject = JSC::jsDynamicCast<JSC::JSObject *>(vm, nextValue); + // key = nextObject->getIndex(globalObject, static_cast<unsigned>(0)); + + // if (!map->has(globalObject, key)) { + // value = nextObject->getIndex(globalObject, static_cast<unsigned>(1)); + // mod = JSC::jsDynamicCast<JSC::JSObject *>(vm, value); + // if (mod) { + // record = JSC::jsDynamicCast<JSC::JSModuleRecord *>( + // vm, mod->getDirect(vm, recordIdentifier)); + // if (record) { + // auto code = &record->sourceCode(); + // if (code) { + + // Zig::SourceProvider *provider = + // reinterpret_cast<Zig::SourceProvider *>(code->provider()); + // // code->~SourceCode(); + // if (provider) { provider->freeSourceCode(); } + // } + // } + // } + // } + // }); + + // oldMap->clear(globalObject); + // } + // } + // map + } + return true; +} + namespace Zig { const JSC::ClassInfo GlobalObject::s_info = {"GlobalObject", &Base::s_info, nullptr, nullptr, @@ -274,98 +367,6 @@ JSC::JSInternalPromise *GlobalObject::moduleLoaderImportModule(JSGlobalObject *g return result; } -extern "C" void *Zig__GlobalObject__getModuleRegistryMap(JSC__JSGlobalObject *arg0) { - if (JSC::JSObject *loader = - JSC::jsDynamicCast<JSC::JSObject *>(arg0->vm(), arg0->moduleLoader())) { - JSC::JSMap *map = JSC::jsDynamicCast<JSC::JSMap *>( - arg0->vm(), - loader->getDirect(arg0->vm(), JSC::Identifier::fromString(arg0->vm(), "registry"))); - - JSC::JSMap *cloned = map->clone(arg0, arg0->vm(), arg0->mapStructure()); - JSC::gcProtect(cloned); - - return cloned; - } - - return nullptr; -} - -extern "C" bool Zig__GlobalObject__resetModuleRegistryMap(JSC__JSGlobalObject *globalObject, - void *map_ptr) { - if (map_ptr == nullptr) return false; - JSC::JSMap *map = reinterpret_cast<JSC::JSMap *>(map_ptr); - JSC::VM &vm = globalObject->vm(); - if (JSC::JSObject *obj = - JSC::jsDynamicCast<JSC::JSObject *>(globalObject->vm(), globalObject->moduleLoader())) { - auto identifier = JSC::Identifier::fromString(globalObject->vm(), "registry"); - - if (JSC::JSMap *oldMap = JSC::jsDynamicCast<JSC::JSMap *>( - globalObject->vm(), obj->getDirect(globalObject->vm(), identifier))) { - oldMap->clear(globalObject); - // vm.finalizeSynchronousJSExecution(); - - obj->putDirect(globalObject->vm(), identifier, - map->clone(globalObject, globalObject->vm(), globalObject->mapStructure())); - - // vm.deleteAllLinkedCode(JSC::DeleteAllCodeEffort::DeleteAllCodeIfNotCollecting); - // JSC::Heap::PreventCollectionScope(vm.heap); - - // vm.heap.completeAllJITPlans(); - - // vm.forEachScriptExecutableSpace([&](auto &spaceAndSet) { - // JSC::HeapIterationScope heapIterationScope(vm.heap); - // auto &set = spaceAndSet.set; - // set.forEachLiveCell([&](JSC::HeapCell *cell, JSC::HeapCell::Kind) { - // if (JSC::ModuleProgramExecutable *executable = - // JSC::jsDynamicCast<JSC::ModuleProgramExecutable *>(cell)) { - // executable->clearCode(set); - // } - // }); - // }); - } - // globalObject->vm().heap.deleteAllUnlinkedCodeBlocks( - // JSC::DeleteAllCodeEffort::PreventCollectionAndDeleteAllCode); - // vm.whenIdle([globalObject, oldMap, map]() { - // auto recordIdentifier = JSC::Identifier::fromString(globalObject->vm(), "module"); - - // JSC::JSModuleRecord *record; - // JSC::JSValue key; - // JSC::JSValue value; - // JSC::JSObject *mod; - // JSC::JSObject *nextObject; - // JSC::forEachInIterable( - // globalObject, oldMap, - // [&](JSC::VM &vm, JSC::JSGlobalObject *globalObject, JSC::JSValue nextValue) { - // nextObject = JSC::jsDynamicCast<JSC::JSObject *>(vm, nextValue); - // key = nextObject->getIndex(globalObject, static_cast<unsigned>(0)); - - // if (!map->has(globalObject, key)) { - // value = nextObject->getIndex(globalObject, static_cast<unsigned>(1)); - // mod = JSC::jsDynamicCast<JSC::JSObject *>(vm, value); - // if (mod) { - // record = JSC::jsDynamicCast<JSC::JSModuleRecord *>( - // vm, mod->getDirect(vm, recordIdentifier)); - // if (record) { - // auto code = &record->sourceCode(); - // if (code) { - - // Zig::SourceProvider *provider = - // reinterpret_cast<Zig::SourceProvider *>(code->provider()); - // // code->~SourceCode(); - // if (provider) { provider->freeSourceCode(); } - // } - // } - // } - // } - // }); - - // oldMap->clear(globalObject); - // } - // } - // map - } - return true; -} JSC::JSInternalPromise *GlobalObject::moduleLoaderFetch(JSGlobalObject *globalObject, JSModuleLoader *loader, JSValue key, JSValue value1, JSValue value2) { diff --git a/src/javascript/jsc/bindings/bindings-generator.zig b/src/javascript/jsc/bindings/bindings-generator.zig index 7e23ab636..cdf87a0d1 100644 --- a/src/javascript/jsc/bindings/bindings-generator.zig +++ b/src/javascript/jsc/bindings/bindings-generator.zig @@ -1,7 +1,8 @@ const Bindings = @import("bindings.zig"); +const Exports = @import("exports.zig"); const HeaderGen = @import("./header-gen.zig").HeaderGen; const std = @import("std"); -const builtin = std.builtin; +const builtin = @import("builtin"); const io = std.io; const fs = std.fs; const process = std.process; @@ -27,6 +28,7 @@ pub fn main() anyerror!void { const HeaderGenerator = HeaderGen( Bindings, + Exports, "src/javascript/jsc/bindings/bindings.zig", ); HeaderGenerator.exec(HeaderGenerator{}, file, cpp); diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig index d59065bad..b0d760853 100644 --- a/src/javascript/jsc/bindings/bindings.zig +++ b/src/javascript/jsc/bindings/bindings.zig @@ -1,9 +1,19 @@ -usingnamespace @import("./shared.zig"); -usingnamespace @import("./headers.zig"); pub const Shimmer = @import("./shimmer.zig").Shimmer; +const std = @import("std"); +const _global = @import("../../../global.zig"); +const string = _global.string; +const Output = _global.Output; const hasRef = std.meta.trait.hasField("ref"); -const C_API = @import("../JavascriptCore.zig"); +const C_API = @import("../../../jsc.zig").C; const StringPointer = @import("../../../api/schema.zig").Api.StringPointer; +const Exports = @import("./exports.zig"); + +const ErrorableZigString = Exports.ErrorableZigString; +const ErrorableResolvedSource = Exports.ErrorableResolvedSource; +const ZigException = Exports.ZigException; +const ZigStackTrace = Exports.ZigStackTrace; +const is_bindgen: bool = std.meta.globalOption("bindgen", bool) orelse false; + pub const JSObject = extern struct { pub const shim = Shimmer("JSC", "JSObject", @This()); bytes: shim.Bytes, @@ -18,8 +28,8 @@ pub const JSObject = extern struct { }); } - const InitializeCallback = fn (ctx: ?*c_void, obj: [*c]JSObject, global: [*c]JSGlobalObject) callconv(.C) void; - pub fn create(global_object: *JSGlobalObject, length: usize, ctx: *c_void, initializer: InitializeCallback) JSValue { + const InitializeCallback = fn (ctx: ?*anyopaque, obj: [*c]JSObject, global: [*c]JSGlobalObject) callconv(.C) void; + pub fn create(global_object: *JSGlobalObject, length: usize, ctx: *anyopaque, initializer: InitializeCallback) JSValue { return cppFn("create", .{ global_object, length, @@ -30,7 +40,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: ?*c_void, obj: [*c]JSObject, global: [*c]JSGlobalObject) callconv(.C) void { + pub fn call(this: ?*anyopaque, obj: [*c]JSObject, global: [*c]JSGlobalObject) callconv(.C) void { @call(.{ .modifier = .always_inline }, func, .{ @ptrCast(*Ctx, @alignCast(@alignOf(*Ctx), this.?)), obj.?, global.? }); } }; @@ -625,7 +635,7 @@ pub const JSFunction = extern struct { pub const name = "JSC::JSFunction"; pub const namespace = "JSC"; - pub const NativeFunctionCallback = fn (ctx: ?*c_void, global: [*c]JSGlobalObject, call_frame: [*c]CallFrame) callconv(.C) JSValue; + pub const NativeFunctionCallback = fn (ctx: ?*anyopaque, global: [*c]JSGlobalObject, call_frame: [*c]CallFrame) callconv(.C) JSValue; // pub fn createFromSourceCode( // global: *JSGlobalObject, @@ -652,7 +662,7 @@ pub const JSFunction = extern struct { global: *JSGlobalObject, argument_count: u16, name_: ?*const String, - ctx: ?*c_void, + ctx: ?*anyopaque, func: NativeFunctionCallback, ) *JSFunction { return cppFn("createFromNative", .{ global, argument_count, name_, ctx, func }); @@ -921,7 +931,7 @@ pub const JSGlobalObject = extern struct { return cppFn("asyncGeneratorFunctionPrototype", .{this}); } - pub fn createAggregateError(globalObject: *JSGlobalObject, errors: [*]*c_void, errors_len: u16, message: *const ZigString) JSValue { + pub fn createAggregateError(globalObject: *JSGlobalObject, errors: [*]*anyopaque, errors_len: u16, message: *const ZigString) JSValue { return cppFn("createAggregateError", .{ globalObject, errors, errors_len, message }); } @@ -1503,8 +1513,8 @@ pub const JSValue = enum(i64) { return @ptrCast(C_API.JSObjectRef, this.asVoid()); } - pub inline fn asVoid(this: JSValue) *c_void { - return @intToPtr(*c_void, @intCast(usize, @enumToInt(this))); + pub inline fn asVoid(this: JSValue) *anyopaque { + return @intToPtr(*anyopaque, @intCast(usize, @enumToInt(this))); } pub const Extern = [_][]const u8{ "getLengthOfArray", "toZigString", "createStringArray", "createEmptyObject", "putRecord", "asPromise", "isClass", "getNameProperty", "getClassName", "getErrorsProperty", "toInt32", "toBoolean", "isInt32", "isIterable", "forEach", "isAggregateError", "toZigException", "isException", "toWTFString", "hasProperty", "getPropertyNames", "getDirect", "putDirect", "get", "getIfExists", "asString", "asObject", "asNumber", "isError", "jsNull", "jsUndefined", "jsTDZValue", "jsBoolean", "jsDoubleNumber", "jsNumberFromDouble", "jsNumberFromChar", "jsNumberFromU16", "jsNumberFromInt32", "jsNumberFromInt64", "jsNumberFromUint64", "isUndefined", "isNull", "isUndefinedOrNull", "isBoolean", "isAnyInt", "isUInt32AsAnyInt", "isInt32AsAnyInt", "isNumber", "isString", "isBigInt", "isHeapBigInt", "isBigInt32", "isSymbol", "isPrimitive", "isGetterSetter", "isCustomGetterSetter", "isObject", "isCell", "asCell", "toString", "toStringOrNull", "toPropertyKey", "toPropertyKeyValue", "toObject", "toString", "getPrototype", "getPropertyByPropertyName", "eqlValue", "eqlCell", "isCallable" }; @@ -1513,8 +1523,6 @@ pub const JSValue = enum(i64) { extern "c" fn Microtask__run(*Microtask, *JSGlobalObject) void; pub const Microtask = opaque { - pub const name = "Zig::JSMicrotaskCallback"; - pub fn run(this: *Microtask, global_object: *JSGlobalObject) void { if (comptime is_bindgen) { return; @@ -1721,7 +1729,7 @@ pub const ThrowScope = extern struct { pub fn declare( vm: *VM, - function_name: [*]u8, + _: [*]u8, file: [*]u8, line: usize, ) ThrowScope { @@ -1764,7 +1772,7 @@ pub const CatchScope = extern struct { file: [*]u8, line: usize, ) CatchScope { - return cppFn("declare", .{ vm, file, line }); + return cppFn("declare", .{ vm, function_name, file, line }); } pub fn exception(this: *CatchScope) ?*Exception { @@ -1802,6 +1810,7 @@ pub const CallFrame = extern struct { pub inline fn argument(call_frame: *const CallFrame, i: u16) JSValue { return cppFn("argument", .{ call_frame, + i, }); } pub inline fn thisValue(call_frame: *const CallFrame) ?JSValue { @@ -1960,7 +1969,7 @@ pub const Identifier = extern struct { }; }; -const DeinitFunction = fn (ctx: *c_void, buffer: [*]u8, len: usize) callconv(.C) void; +const DeinitFunction = fn (ctx: *anyopaque, buffer: [*]u8, len: usize) callconv(.C) void; pub const StringImpl = extern struct { pub const shim = Shimmer("WTF", "StringImpl", @This()); @@ -2136,8 +2145,6 @@ pub const StringView = extern struct { }; }; -pub usingnamespace @import("exports.zig"); - pub const Callback = struct { // zig: Value, }; diff --git a/src/javascript/jsc/bindings/exports.zig b/src/javascript/jsc/bindings/exports.zig index 00f58e745..7491f9e0a 100644 --- a/src/javascript/jsc/bindings/exports.zig +++ b/src/javascript/jsc/bindings/exports.zig @@ -1,13 +1,35 @@ -usingnamespace @import("./bindings.zig"); +const JSC = @import("./bindings.zig"); usingnamespace @import("./shared.zig"); const Fs = @import("../../../fs.zig"); -const CAPI = @import("../JavascriptCore.zig"); +const CAPI = @import("../../../jsc.zig").C; const JS = @import("../javascript.zig"); const JSBase = @import("../base.zig"); const ZigURL = @import("../../../query_string_map.zig").URL; const Api = @import("../../../api/schema.zig").Api; +const _global = @import("../../../global.zig"); +const std = @import("std"); +const Shimmer = @import("./shimmer.zig").Shimmer; +const strings = @import("strings"); +const default_allocator = _global.default_allocator; +const NewGlobalObject = JSC.NewGlobalObject; +const JSGlobalObject = JSC.JSGlobalObject; +const is_bindgen: bool = std.meta.globalOption("bindgen", bool) orelse false; +const ZigString = JSC.ZigString; +const string = _global.string; +const JSValue = JSC.JSValue; +const Output = _global.Output; +const Environment = _global.Environment; +const ScriptArguments = JSC.ScriptArguments; +const JSPromise = JSC.JSPromise; +const JSPromiseRejectionOperation = JSC.JSPromiseRejectionOperation; +const Exception = JSC.Exception; +const JSModuleLoader = JSC.JSModuleLoader; +const JSModuleRecord = JSC.JSModuleRecord; +const Microtask = JSC.Microtask; +const JSPrivateDataPtr = @import("../base.zig").JSPrivateDataPtr; + const Handler = struct { - pub export fn global_signal_handler_fn(sig: i32, info: *const std.os.siginfo_t, ctx_ptr: ?*const c_void) callconv(.C) void { + pub export fn global_signal_handler_fn(_: i32, _: *const std.os.siginfo_t, _: ?*const anyopaque) callconv(.C) void { var stdout = std.io.getStdOut(); var stderr = std.io.getStdErr(); var source = Output.Source.init(stdout, stderr); @@ -28,7 +50,7 @@ const Handler = struct { pub const ZigGlobalObject = extern struct { pub const shim = Shimmer("Zig", "GlobalObject", @This()); bytes: shim.Bytes, - pub const Type = *c_void; + pub const Type = *anyopaque; pub const name = "Zig::GlobalObject"; pub const include = "\"ZigGlobalObject.h\""; pub const namespace = shim.namespace; @@ -37,27 +59,27 @@ pub const ZigGlobalObject = extern struct { pub var sigaction: std.os.Sigaction = undefined; pub var sigaction_installed = false; - pub fn create(class_ref: [*]CAPI.JSClassRef, count: i32, console: *c_void) *JSGlobalObject { + pub fn create(class_ref: [*]CAPI.JSClassRef, count: i32, console: *anyopaque) *JSGlobalObject { if (!sigaction_installed) { sigaction_installed = true; sigaction = std.mem.zeroes(std.os.Sigaction); sigaction.handler = .{ .sigaction = Handler.global_signal_handler_fn }; - std.os.sigaction(std.os.SIGABRT, &sigaction, null); - if (comptime !isDebug) { - std.os.sigaction(std.os.SIGTRAP, &sigaction, null); + std.os.sigaction(std.os.SIG.ABRT, &sigaction, null); + if (comptime !Environment.isDebug) { + std.os.sigaction(std.os.SIG.TRAP, &sigaction, null); } } return shim.cppFn("create", .{ class_ref, count, console }); } - pub fn getModuleRegistryMap(global: *JSGlobalObject) *c_void { + pub fn getModuleRegistryMap(global: *JSGlobalObject) *anyopaque { return shim.cppFn("getModuleRegistryMap", .{global}); } - pub fn resetModuleRegistryMap(global: *JSGlobalObject, map: *c_void) bool { + pub fn resetModuleRegistryMap(global: *JSGlobalObject, map: *anyopaque) bool { return shim.cppFn("resetModuleRegistryMap", .{ global, map }); } @@ -165,9 +187,9 @@ pub const ZigErrorType = extern struct { pub const namespace = shim.namespace; code: ErrorCode, - ptr: ?*c_void, + ptr: ?*anyopaque, - pub fn isPrivateData(ptr: ?*c_void) callconv(.C) bool { + pub fn isPrivateData(ptr: ?*anyopaque) callconv(.C) bool { return JSBase.JSPrivateDataPtr.isValidPtr(ptr); } @@ -202,7 +224,7 @@ pub fn Errorable(comptime Type: type) type { } threadlocal var err_buf: [4096]u8 = undefined; - pub fn err(code: anyerror, ptr: *c_void) @This() { + pub fn err(code: anyerror, ptr: *anyopaque) @This() { return @This(){ .result = .{ .err = .{ @@ -226,14 +248,14 @@ pub const ResolvedSource = extern struct { source_url: ZigString, hash: u32, - allocator: ?*c_void, + allocator: ?*anyopaque, // 0 means disabled bytecodecache_fd: u64, }; -export fn ZigString__free(ptr: [*]const u8, len: usize, allocator_: ?*c_void) void { - var allocator: *std.mem.Allocator = @ptrCast(*std.mem.Allocator, @alignCast(@alignOf(*std.mem.Allocator), allocator_ orelse return)); +export fn ZigString__free(ptr: [*]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 str = ptr[0..len]; allocator.free(str); @@ -323,7 +345,7 @@ pub const ZigStackTrace = extern struct { frames_ptr: [*c]ZigStackFrame, frames_len: u8, - pub fn toAPI(this: *const ZigStackTrace, allocator: *std.mem.Allocator) !Api.StackTrace { + pub fn toAPI(this: *const ZigStackTrace, allocator: std.mem.Allocator) !Api.StackTrace { var stack_trace: Api.StackTrace = std.mem.zeroes(Api.StackTrace); { var source_lines_iter = this.sourceLineIterator(); @@ -414,7 +436,7 @@ pub const ZigStackFrame = extern struct { position: ZigStackFramePosition, code_type: ZigStackFrameCode, - pub fn toAPI(this: *const ZigStackFrame, allocator: *std.mem.Allocator) !Api.StackFrame { + pub fn toAPI(this: *const ZigStackFrame, allocator: std.mem.Allocator) !Api.StackFrame { var frame: Api.StackFrame = std.mem.zeroes(Api.StackFrame); if (this.function_name.len > 0) { frame.function_name = try allocator.dupe(u8, this.function_name.slice()); @@ -443,7 +465,7 @@ pub const ZigStackFrame = extern struct { enable_color: bool, origin: *const ZigURL, root_path: string = "", - pub fn format(this: SourceURLFormatter, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(this: SourceURLFormatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { try writer.writeAll(this.origin.displayProtocol()); try writer.writeAll("://"); try writer.writeAll(this.origin.displayHostname()); @@ -472,7 +494,7 @@ pub const ZigStackFrame = extern struct { code_type: ZigStackFrameCode, enable_color: bool, - pub fn format(this: NameFormatter, comptime fmt: []const u8, options: std.fmt.FormatOptions, writer: anytype) !void { + pub fn format(this: NameFormatter, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { const name = this.function_name.slice(); switch (this.code_type) { @@ -555,7 +577,7 @@ pub const ZigException = extern struct { message: ZigString, stack: ZigStackTrace, - exception: ?*c_void, + exception: ?*anyopaque, pub const shim = Shimmer("Zig", "Exception", @This()); pub const name = "ZigException"; @@ -662,7 +684,7 @@ pub const ErrorableJSValue = Errorable(JSValue); pub const ZigConsoleClient = struct { pub const shim = Shimmer("Zig", "ConsoleClient", @This()); - pub const Type = *c_void; + pub const Type = *anyopaque; pub const name = "Zig::ConsoleClient"; pub const include = "\"ZigConsoleClient.h\""; pub const namespace = shim.namespace; @@ -675,7 +697,7 @@ pub const ZigConsoleClient = struct { pub const List = std.MultiArrayList(Entry); }; counts: Entry.List, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, }; const BufferedWriter = std.io.BufferedWriter(4096, Output.WriterType); error_writer: BufferedWriter, @@ -691,9 +713,12 @@ pub const ZigConsoleClient = struct { /// TODO: support %s %d %f %o %O /// https://console.spec.whatwg.org/#formatter pub fn messageWithTypeAndLevel( - console_: ZigConsoleClient.Type, - message_type: u32, - message_level: u32, + //console_: ZigConsoleClient.Type, + _: ZigConsoleClient.Type, + //message_type: u32, + _: u32, + //message_level: u32, + _: u32, global: *JSGlobalObject, vals: [*]JSValue, len: usize, @@ -733,8 +758,6 @@ pub const ZigConsoleClient = struct { var values = vals[0..len]; defer buffered_writer.flush() catch {}; - var last_count: usize = 0; - var tail: u8 = 0; if (Output.enable_ansi_colors) { while (i < len) : (i += 1) { @@ -770,7 +793,7 @@ pub const ZigConsoleClient = struct { if (value.isCell()) { if (CAPI.JSObjectGetPrivate(value.asRef())) |private_data_ptr| { - const priv_data = JS.JSPrivateDataPtr.from(private_data_ptr); + const priv_data = JSPrivateDataPtr.from(private_data_ptr); switch (priv_data.tag()) { .BuildError => { const build_error = priv_data.as(JS.BuildError); @@ -831,14 +854,39 @@ pub const ZigConsoleClient = struct { } }; - pub fn count(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void {} - pub fn countReset(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void {} + pub fn count( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + ) callconv(.C) void {} + pub fn countReset( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + ) callconv(.C) void {} const PendingTimers = std.AutoHashMap(u64, ?std.time.Timer); threadlocal var pending_time_logs: PendingTimers = undefined; threadlocal var pending_time_logs_loaded = false; - pub fn time(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void { + pub fn time( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + chars: [*]const u8, + len: usize, + ) callconv(.C) void { const id = std.hash.Wyhash.hash(0, chars[0..len]); if (!pending_time_logs_loaded) { pending_time_logs = PendingTimers.init(default_allocator); @@ -851,7 +899,14 @@ pub const ZigConsoleClient = struct { result.value_ptr.* = std.time.Timer.start() catch unreachable; } } - pub fn timeEnd(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void { + pub fn timeEnd( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + chars: [*]const u8, + len: usize, + ) callconv(.C) void { if (!pending_time_logs_loaded) { return; } @@ -870,14 +925,80 @@ pub const ZigConsoleClient = struct { Output.flush(); } - pub fn timeLog(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize, args: *ScriptArguments) callconv(.C) void {} - pub fn profile(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void {} - pub fn profileEnd(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void {} - pub fn takeHeapSnapshot(console: ZigConsoleClient.Type, global: *JSGlobalObject, chars: [*]const u8, len: usize) callconv(.C) void {} - pub fn timeStamp(console: ZigConsoleClient.Type, global: *JSGlobalObject, args: *ScriptArguments) callconv(.C) void {} - pub fn record(console: ZigConsoleClient.Type, global: *JSGlobalObject, args: *ScriptArguments) callconv(.C) void {} - pub fn recordEnd(console: ZigConsoleClient.Type, global: *JSGlobalObject, args: *ScriptArguments) callconv(.C) void {} - pub fn screenshot(console: ZigConsoleClient.Type, global: *JSGlobalObject, args: *ScriptArguments) callconv(.C) void {} + pub fn timeLog( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + // args + _: *ScriptArguments, + ) callconv(.C) void {} + pub fn profile( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + ) callconv(.C) void {} + pub fn profileEnd( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + ) callconv(.C) void {} + pub fn takeHeapSnapshot( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // chars + _: [*]const u8, + // len + _: usize, + ) callconv(.C) void {} + pub fn timeStamp( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // args + _: *ScriptArguments, + ) callconv(.C) void {} + pub fn record( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // args + _: *ScriptArguments, + ) callconv(.C) void {} + pub fn recordEnd( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // args + _: *ScriptArguments, + ) callconv(.C) void {} + pub fn screenshot( + // console + _: ZigConsoleClient.Type, + // global + _: *JSGlobalObject, + // args + _: *ScriptArguments, + ) callconv(.C) void {} pub const Export = shim.exportFunctions(.{ .@"messageWithTypeAndLevel" = messageWithTypeAndLevel, @@ -958,7 +1079,7 @@ pub const ZigConsoleClient = struct { // pub const CommonJSModule = struct { // pub const shim = Shimmer("Zig", "CommonJSModule", @This()); -// pub const Type = *c_void; +// pub const Type = *anyopaque; // pub const name = "Zig::CommonJSModule"; // pub const include = "\"CommonJSModule.h\""; // pub const namespace = shim.namespace; diff --git a/src/javascript/jsc/bindings/header-gen.zig b/src/javascript/jsc/bindings/header-gen.zig index 7c175d6c4..7c73dd3aa 100644 --- a/src/javascript/jsc/bindings/header-gen.zig +++ b/src/javascript/jsc/bindings/header-gen.zig @@ -40,7 +40,7 @@ pub fn cTypeLabel(comptime Type: type) ?[]const u8 { i64 => "int64_t", f64 => "double", f32 => "float", - *c_void => "void*", + *anyopaque => "void*", [*]bool => "bool*", [*]usize => "size_t*", [*]isize => "int*", @@ -301,18 +301,19 @@ pub const C_Generator = struct { comptime meta: UnionMeta, comptime static_types: anytype, ) void { - self.write("typedef union "); + @compileError("Not implemented"); + // self.write("typedef union "); - self.write(name ++ " {\n"); + // self.write(name ++ " {\n"); - inline for (meta.fields) |field, i| { - self.write(" "); + // inline for (meta.fields) |field, i| { + // self.write(" "); - self.writeType(comptime FieldType); + // self.writeType(comptime FieldType); - self.write(" " ++ field.name ++ ";\n"); - } - self.write("} " ++ name ++ ";\n\n"); + // self.write(" " ++ field.name ++ ";\n"); + // } + // self.write("} " ++ name ++ ";\n\n"); } fn writeType( @@ -411,7 +412,7 @@ pub const C_Generator = struct { } }; -const builtin = std.builtin; +const builtin = @import("builtin"); const TypeInfo = builtin.TypeInfo; const Declaration = TypeInfo.Declaration; @@ -463,8 +464,8 @@ pub fn getCStruct(comptime T: type) ?NamedStruct { return null; } -pub fn HeaderGen(comptime import: type, comptime fname: []const u8) type { - const all_decls = std.meta.declarations(import); +pub fn HeaderGen(comptime first_import: type, comptime second_import: type, comptime fname: []const u8) type { + const all_decls = comptime std.meta.declarations(first_import) ++ std.meta.declarations(second_import); return struct { source_file: []const u8 = fname, @@ -552,7 +553,7 @@ pub fn HeaderGen(comptime import: type, comptime fname: []const u8) type { comptime func, comptime func, comptime &.{}, - comptime ENABLE_REWRITE_RETURN and @typeInfo(fn_meta.return_type) == .Struct, + false, // comptime ENABLE_REWRITE_RETURN and @typeInfo(fn_meta.return_type) == .Struct, ); }, else => {}, diff --git a/src/javascript/jsc/bindings/headers-cpp.h b/src/javascript/jsc/bindings/headers-cpp.h index 026bc6fd7..8ea8496b8 100644 --- a/src/javascript/jsc/bindings/headers-cpp.h +++ b/src/javascript/jsc/bindings/headers-cpp.h @@ -1,4 +1,4 @@ -//-- AUTOGENERATED FILE -- 1640302889 +//-- AUTOGENERATED FILE -- 1640830883 // clang-format off #pragma once diff --git a/src/javascript/jsc/bindings/headers-replacements.zig b/src/javascript/jsc/bindings/headers-replacements.zig index a7e8350cf..d2f9e0564 100644 --- a/src/javascript/jsc/bindings/headers-replacements.zig +++ b/src/javascript/jsc/bindings/headers-replacements.zig @@ -1,5 +1,5 @@ -const bindings = @import("./bindings.zig"); -pub usingnamespace @import("../JavascriptCore.zig"); +// GENERATED FILE - do not modify! +const bindings = @import("../../../jsc.zig"); pub const struct_JSC__StringPrototype = bindings.StringPrototype; pub const struct_JSC__SetIteratorPrototype = bindings.SetIteratorPrototype; @@ -51,3 +51,4 @@ pub const ZigException = bindings.ZigException; pub const ResolvedSource = bindings.ResolvedSource; pub const ZigStackTrace = bindings.ZigStackTrace; pub const ReturnableException = bindings.ReturnableException; +const JSClassRef = bindings.C.JSClassRef; diff --git a/src/javascript/jsc/bindings/headers.h b/src/javascript/jsc/bindings/headers.h index 4820ef035..108738586 100644 --- a/src/javascript/jsc/bindings/headers.h +++ b/src/javascript/jsc/bindings/headers.h @@ -1,5 +1,5 @@ // clang-format: off -//-- AUTOGENERATED FILE -- 1640302889 +//-- AUTOGENERATED FILE -- 1640830883 #pragma once #include <stddef.h> @@ -108,7 +108,6 @@ typedef void* JSClassRef; typedef ZigException ZigException; typedef struct JSC__SetIteratorPrototype JSC__SetIteratorPrototype; // JSC::SetIteratorPrototype typedef bJSC__SourceCode JSC__SourceCode; // JSC::SourceCode - typedef struct Zig__JSMicrotaskCallback Zig__JSMicrotaskCallback; // Zig::JSMicrotaskCallback typedef bJSC__JSCell JSC__JSCell; // JSC::JSCell typedef struct JSC__BigIntPrototype JSC__BigIntPrototype; // JSC::BigIntPrototype typedef struct JSC__GeneratorFunctionPrototype JSC__GeneratorFunctionPrototype; // JSC::GeneratorFunctionPrototype @@ -176,9 +175,6 @@ typedef void* JSClassRef; class StringView; class ExternalStringImpl; } - namespace Zig { - class JSMicrotaskCallback; - } namespace Inspector { class ScriptArguments; } @@ -230,7 +226,6 @@ typedef void* JSClassRef; using WTF__String = WTF::String; using WTF__StringView = WTF::StringView; using WTF__ExternalStringImpl = WTF::ExternalStringImpl; - using Zig__JSMicrotaskCallback = Zig::JSMicrotaskCallback; using Inspector__ScriptArguments = Inspector::ScriptArguments; #endif @@ -593,7 +588,7 @@ ZIG_DECL void Zig__GlobalObject__fetch(ErrorableResolvedSource* arg0, JSC__JSGlo ZIG_DECL ErrorableZigString Zig__GlobalObject__import(JSC__JSGlobalObject* arg0, ZigString* arg1, ZigString* arg2); ZIG_DECL void Zig__GlobalObject__onCrash(); ZIG_DECL JSC__JSValue Zig__GlobalObject__promiseRejectionTracker(JSC__JSGlobalObject* arg0, JSC__JSPromise* arg1, uint32_t JSPromiseRejectionOperation2); -ZIG_DECL void Zig__GlobalObject__queueMicrotaskToEventLoop(JSC__JSGlobalObject* arg0, Zig__JSMicrotaskCallback* arg1); +ZIG_DECL void Zig__GlobalObject__queueMicrotaskToEventLoop(JSC__JSGlobalObject* arg0, Microtask* arg1); ZIG_DECL JSC__JSValue Zig__GlobalObject__reportUncaughtException(JSC__JSGlobalObject* arg0, JSC__Exception* arg1); ZIG_DECL void Zig__GlobalObject__resolve(ErrorableZigString* arg0, JSC__JSGlobalObject* arg1, ZigString* arg2, ZigString* arg3); diff --git a/src/javascript/jsc/bindings/headers.zig b/src/javascript/jsc/bindings/headers.zig index 89b7044af..1f2a83fba 100644 --- a/src/javascript/jsc/bindings/headers.zig +++ b/src/javascript/jsc/bindings/headers.zig @@ -1,7 +1,70 @@ -usingnamespace @import("./headers-replacements.zig"); -pub usingnamespace @import("std").zig.c_builtins; +// GENERATED FILE - do not modify! +const bindings = @import("../../../jsc.zig"); + +pub const struct_JSC__StringPrototype = bindings.StringPrototype; +pub const struct_JSC__SetIteratorPrototype = bindings.SetIteratorPrototype; +pub const struct_JSC__RegExpPrototype = bindings.RegExpPrototype; +pub const struct_JSC__ObjectPrototype = bindings.ObjectPrototype; +pub const struct_JSC__MapIteratorPrototype = bindings.MapIteratorPrototype; +pub const struct_JSC__JSPromisePrototype = bindings.JSPromisePrototype; +pub const struct_JSC__IteratorPrototype = bindings.IteratorPrototype; +pub const struct_JSC__GeneratorPrototype = bindings.GeneratorPrototype; +pub const struct_JSC__GeneratorFunctionPrototype = bindings.GeneratorFunctionPrototype; +pub const struct_JSC__FunctionPrototype = bindings.FunctionPrototype; +pub const struct_JSC__BigIntPrototype = bindings.BigIntPrototype; +pub const struct_JSC__AsyncIteratorPrototype = bindings.AsyncIteratorPrototype; +pub const struct_JSC__AsyncGeneratorPrototype = bindings.AsyncGeneratorPrototype; +pub const struct_JSC__AsyncGeneratorFunctionPrototype = bindings.AsyncGeneratorFunctionPrototype; +pub const struct_JSC__AsyncFunctionPrototype = bindings.AsyncFunctionPrototype; +pub const struct_JSC__ArrayPrototype = bindings.ArrayPrototype; +pub const struct_JSC__ArrayIteratorPrototype = bindings.ArrayIteratorPrototype; +pub const bWTF__URL = bindings.URL; +pub const bWTF__StringView = bindings.StringView; +pub const bWTF__StringImpl = bindings.StringImpl; +pub const bWTF__String = bindings.String; +pub const bWTF__ExternalStringImpl = bindings.ExternalStringImpl; +pub const bJSC__VM = bindings.VM; +pub const bJSC__ThrowScope = bindings.ThrowScope; +pub const bJSC__SourceOrigin = bindings.SourceOrigin; +pub const bJSC__SourceCode = bindings.SourceCode; +pub const bJSC__PropertyName = bindings.PropertyName; +pub const bJSC__JSString = bindings.JSString; +pub const bJSC__JSPromise = bindings.JSPromise; +pub const bJSC__JSObject = bindings.JSObject; +pub const bJSC__JSModuleRecord = bindings.JSModuleRecord; +pub const bJSC__JSModuleLoader = bindings.JSModuleLoader; +pub const bJSC__JSLock = bindings.JSLock; +pub const bJSC__JSInternalPromise = bindings.JSInternalPromise; +pub const bJSC__JSGlobalObject = bindings.JSGlobalObject; +pub const bJSC__JSFunction = bindings.JSFunction; +pub const bJSC__JSCell = bindings.JSCell; +pub const bJSC__Identifier = bindings.Identifier; +pub const bJSC__Exception = bindings.Exception; +pub const bJSC__CatchScope = bindings.CatchScope; +pub const bJSC__CallFrame = bindings.CallFrame; +pub const bInspector__ScriptArguments = bindings.ScriptArguments; +pub const JSC__JSValue = bindings.JSValue; + +// Inlined types +pub const ZigString = bindings.ZigString; +pub const ZigException = bindings.ZigException; +pub const ResolvedSource = bindings.ResolvedSource; +pub const ZigStackTrace = bindings.ZigStackTrace; +pub const ReturnableException = bindings.ReturnableException; +const JSClassRef = bindings.C.JSClassRef; +// GENERATED CODE - DO NOT MODIFY BY HAND + pub const ptrdiff_t = c_long; -pub const wchar_t = c_uint; +pub const wchar_t = c_int; +pub const __uint16_t = c_ushort; +pub const __int32_t = c_int; +pub const __uint32_t = c_uint; +pub const __int64_t = c_longlong; +pub const __uint64_t = c_ulonglong; +pub const __mbstate_t = extern union { + __mbstate8: [128]u8, + _mbstateL: c_longlong, +}; pub const JSC__RegExpPrototype = struct_JSC__RegExpPrototype; @@ -39,8 +102,6 @@ pub const JSC__JSPromise = bJSC__JSPromise; pub const JSC__SetIteratorPrototype = struct_JSC__SetIteratorPrototype; pub const JSC__SourceCode = bJSC__SourceCode; - -pub const Zig__JSMicrotaskCallback = struct_Zig__JSMicrotaskCallback; pub const JSC__JSCell = bJSC__JSCell; pub const JSC__BigIntPrototype = struct_JSC__BigIntPrototype; @@ -63,7 +124,7 @@ pub const JSC__ObjectPrototype = struct_JSC__ObjectPrototype; pub const JSC__CallFrame = bJSC__CallFrame; pub const JSC__MapIteratorPrototype = struct_JSC__MapIteratorPrototype; -pub extern fn JSC__JSObject__create(arg0: [*c]JSC__JSGlobalObject, arg1: usize, arg2: ?*c_void, ArgFn3: ?fn (?*c_void, [*c]JSC__JSObject, [*c]JSC__JSGlobalObject) callconv(.C) void) JSC__JSValue; +pub extern fn JSC__JSObject__create(arg0: [*c]JSC__JSGlobalObject, arg1: usize, arg2: ?*anyopaque, ArgFn3: ?fn (?*anyopaque, [*c]JSC__JSObject, [*c]JSC__JSGlobalObject) callconv(.C) void) JSC__JSValue; pub extern fn JSC__JSObject__getArrayLength(arg0: [*c]JSC__JSObject) usize; pub extern fn JSC__JSObject__getDirect(arg0: [*c]JSC__JSObject, arg1: [*c]JSC__JSGlobalObject, arg2: [*c]const ZigString) JSC__JSValue; pub extern fn JSC__JSObject__getIndex(JSValue0: JSC__JSValue, arg1: [*c]JSC__JSGlobalObject, arg2: u32) JSC__JSValue; @@ -129,7 +190,7 @@ pub extern fn JSC__JSFunction__constructWithArguments(JSValue0: JSC__JSValue, ar pub extern fn JSC__JSFunction__constructWithArgumentsAndNewTarget(JSValue0: JSC__JSValue, JSValue1: JSC__JSValue, arg2: [*c]JSC__JSGlobalObject, arg3: [*c]JSC__JSValue, arg4: usize, arg5: *?*JSC__Exception, arg6: [*c]const u8) JSC__JSValue; pub extern fn JSC__JSFunction__constructWithNewTarget(JSValue0: JSC__JSValue, arg1: [*c]JSC__JSGlobalObject, JSValue2: JSC__JSValue, arg3: *?*JSC__Exception, arg4: [*c]const u8) JSC__JSValue; pub extern fn JSC__JSFunction__constructWithoutAnyArgumentsOrNewTarget(JSValue0: JSC__JSValue, arg1: [*c]JSC__JSGlobalObject, arg2: *?*JSC__Exception, arg3: [*c]const u8) JSC__JSValue; -pub extern fn JSC__JSFunction__createFromNative(arg0: [*c]JSC__JSGlobalObject, arg1: u16, arg2: [*c]const WTF__String, arg3: ?*c_void, ArgFn4: ?fn (?*c_void, [*c]JSC__JSGlobalObject, [*c]JSC__CallFrame) callconv(.C) JSC__JSValue) [*c]JSC__JSFunction; +pub extern fn JSC__JSFunction__createFromNative(arg0: [*c]JSC__JSGlobalObject, arg1: u16, arg2: [*c]const WTF__String, arg3: ?*anyopaque, ArgFn4: ?fn (?*anyopaque, [*c]JSC__JSGlobalObject, [*c]JSC__CallFrame) callconv(.C) JSC__JSValue) [*c]JSC__JSFunction; pub extern fn JSC__JSFunction__displayName(arg0: [*c]JSC__JSFunction, arg1: [*c]JSC__VM) bWTF__String; pub extern fn JSC__JSFunction__getName(arg0: [*c]JSC__JSFunction, arg1: [*c]JSC__VM) bWTF__String; pub extern fn JSC__JSGlobalObject__arrayIteratorPrototype(arg0: [*c]JSC__JSGlobalObject) ?*JSC__ArrayIteratorPrototype; @@ -140,7 +201,7 @@ pub extern fn JSC__JSGlobalObject__asyncGeneratorPrototype(arg0: [*c]JSC__JSGlob pub extern fn JSC__JSGlobalObject__asyncIteratorPrototype(arg0: [*c]JSC__JSGlobalObject) ?*JSC__AsyncIteratorPrototype; pub extern fn JSC__JSGlobalObject__bigIntPrototype(arg0: [*c]JSC__JSGlobalObject) ?*JSC__BigIntPrototype; pub extern fn JSC__JSGlobalObject__booleanPrototype(arg0: [*c]JSC__JSGlobalObject) [*c]JSC__JSObject; -pub extern fn JSC__JSGlobalObject__createAggregateError(arg0: [*c]JSC__JSGlobalObject, arg1: [*c]*c_void, arg2: u16, arg3: [*c]const ZigString) JSC__JSValue; +pub extern fn JSC__JSGlobalObject__createAggregateError(arg0: [*c]JSC__JSGlobalObject, arg1: [*c]*anyopaque, arg2: u16, arg3: [*c]const ZigString) JSC__JSValue; pub extern fn JSC__JSGlobalObject__datePrototype(arg0: [*c]JSC__JSGlobalObject) [*c]JSC__JSObject; pub extern fn JSC__JSGlobalObject__errorPrototype(arg0: [*c]JSC__JSGlobalObject) [*c]JSC__JSObject; pub extern fn JSC__JSGlobalObject__functionPrototype(arg0: [*c]JSC__JSGlobalObject) ?*JSC__FunctionPrototype; @@ -319,7 +380,7 @@ pub extern fn WTF__StringImpl__isStatic(arg0: [*c]const WTF__StringImpl) bool; pub extern fn WTF__StringImpl__length(arg0: [*c]const WTF__StringImpl) usize; pub extern fn WTF__ExternalStringImpl__characters16(arg0: [*c]const WTF__ExternalStringImpl) [*c]const u16; pub extern fn WTF__ExternalStringImpl__characters8(arg0: [*c]const WTF__ExternalStringImpl) [*c]const u8; -pub extern fn WTF__ExternalStringImpl__create(arg0: [*c]const u8, arg1: usize, ArgFn2: ?fn (?*c_void, [*c]u8, usize) callconv(.C) void) bWTF__ExternalStringImpl; +pub extern fn WTF__ExternalStringImpl__create(arg0: [*c]const u8, arg1: usize, ArgFn2: ?fn (?*anyopaque, [*c]u8, usize) callconv(.C) void) bWTF__ExternalStringImpl; pub extern fn WTF__ExternalStringImpl__is16Bit(arg0: [*c]const WTF__ExternalStringImpl) bool; pub extern fn WTF__ExternalStringImpl__is8Bit(arg0: [*c]const WTF__ExternalStringImpl) bool; pub extern fn WTF__ExternalStringImpl__isEmpty(arg0: [*c]const WTF__ExternalStringImpl) bool; @@ -331,7 +392,7 @@ pub extern fn WTF__StringView__is16Bit(arg0: [*c]const WTF__StringView) bool; pub extern fn WTF__StringView__is8Bit(arg0: [*c]const WTF__StringView) bool; pub extern fn WTF__StringView__isEmpty(arg0: [*c]const WTF__StringView) bool; pub extern fn WTF__StringView__length(arg0: [*c]const WTF__StringView) usize; -pub extern fn Zig__GlobalObject__create(arg0: [*c]JSClassRef, arg1: i32, arg2: ?*c_void) [*c]JSC__JSGlobalObject; -pub extern fn Zig__GlobalObject__getModuleRegistryMap(arg0: [*c]JSC__JSGlobalObject) ?*c_void; -pub extern fn Zig__GlobalObject__resetModuleRegistryMap(arg0: [*c]JSC__JSGlobalObject, arg1: ?*c_void) bool; +pub extern fn Zig__GlobalObject__create(arg0: [*c]JSClassRef, arg1: i32, arg2: ?*anyopaque) [*c]JSC__JSGlobalObject; +pub extern fn Zig__GlobalObject__getModuleRegistryMap(arg0: [*c]JSC__JSGlobalObject) ?*anyopaque; +pub extern fn Zig__GlobalObject__resetModuleRegistryMap(arg0: [*c]JSC__JSGlobalObject, arg1: ?*anyopaque) bool; pub extern fn ZigException__fromException(arg0: [*c]JSC__Exception) ZigException; diff --git a/src/javascript/jsc/bindings/shared.zig b/src/javascript/jsc/bindings/shared.zig index cb0a8a73f..e69de29bb 100644 --- a/src/javascript/jsc/bindings/shared.zig +++ b/src/javascript/jsc/bindings/shared.zig @@ -1,9 +0,0 @@ -pub const std = @import("std"); -pub const is_bindgen: bool = std.meta.globalOption("bindgen", bool) orelse false; -pub const StaticExport = @import("./static_export.zig"); -pub const c_char = StaticExport.c_char; -pub usingnamespace @import("../../../global.zig"); - -pub fn zigCast(comptime Destination: type, value: anytype) *Destination { - return @ptrCast(*Destination, @alignCast(@alignOf(*Destination), value)); -} diff --git a/src/javascript/jsc/bindings/shimmer.zig b/src/javascript/jsc/bindings/shimmer.zig index 93f36a0a6..b4d5fe16b 100644 --- a/src/javascript/jsc/bindings/shimmer.zig +++ b/src/javascript/jsc/bindings/shimmer.zig @@ -9,8 +9,6 @@ fn isNullableType(comptime Type: type) bool { } pub fn Shimmer(comptime _namespace: []const u8, comptime _name: []const u8, comptime Parent: type) type { - const extern_count: usize = if (@hasDecl(Parent, "Extern")) Parent.Extern.len else 0; - return struct { pub const namespace = _namespace; pub const name = _name; @@ -18,13 +16,13 @@ pub fn Shimmer(comptime _namespace: []const u8, comptime _name: []const u8, comp // fn toCppType(comptime FromType: type) type { // var NewReturnType = FromType; - // if (NewReturnType == c_void) { + // if (NewReturnType == anyopaque) { // return FromType; // } // var ReturnTypeInfo: std.builtin.TypeInfo = @typeInfo(FromType); - // if (ReturnTypeInfo == .Pointer and NewReturnType != *c_void) { + // if (ReturnTypeInfo == .Pointer and NewReturnType != *anyopaque) { // NewReturnType = ReturnTypeInfo.Pointer.child; // ReturnTypeInfo = @typeInfo(NewReturnType); // } @@ -71,19 +69,6 @@ pub fn Shimmer(comptime _namespace: []const u8, comptime _name: []const u8, comp pub const is_return = true; }; - pub inline fn getConvertibleType(comptime ZigType: type) type { - if (@typeInfo(ZigType) == .Struct) { - const Struct: std.builtin.TypeInfo.Struct = ChildType.Struct; - for (Struct.fields) |field| { - if (std.mem.eql(u8, field.name, "ref")) { - return field.field_type; - } - } - } - - return ZigType; - } - fn pointerChild(comptime Type: type) type { if (@typeInfo(Type) == .Pointer) { return @typeInfo(Type).Pointer.child_type; diff --git a/src/javascript/jsc/config.zig b/src/javascript/jsc/config.zig index 1356bc8eb..c206b2358 100644 --- a/src/javascript/jsc/config.zig +++ b/src/javascript/jsc/config.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../../global.zig"); +const _global = @import("../../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const Fs = @import("../../fs.zig"); @@ -22,7 +31,7 @@ pub const DefaultBunDefines = struct { }; }; -pub fn configureTransformOptionsForBunVM(allocator: *std.mem.Allocator, _args: Api.TransformOptions) !Api.TransformOptions { +pub fn configureTransformOptionsForBunVM(allocator: std.mem.Allocator, _args: Api.TransformOptions) !Api.TransformOptions { var args = _args; // args.serve = false; @@ -32,7 +41,7 @@ pub fn configureTransformOptionsForBunVM(allocator: *std.mem.Allocator, _args: A return try configureTransformOptionsForBun(allocator, args); } -pub fn configureTransformOptionsForBun(allocator: *std.mem.Allocator, _args: Api.TransformOptions) !Api.TransformOptions { +pub fn configureTransformOptionsForBun(_: std.mem.Allocator, _args: Api.TransformOptions) !Api.TransformOptions { var args = _args; args.platform = Api.Platform.bun; return args; diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index d826db486..520ac2d7a 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -1,4 +1,22 @@ const std = @import("std"); +const is_bindgen: bool = std.meta.globalOption("bindgen", bool) orelse false; +const StaticExport = @import("./bindings/static_export.zig"); +const c_char = StaticExport.c_char; +const _global = @import("../../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const C = _global.C; + +pub fn zigCast(comptime Destination: type, value: anytype) *Destination { + return @ptrCast(*Destination, @alignCast(@alignOf(*Destination), value)); +} const Fs = @import("../../fs.zig"); const Resolver = @import("../../resolver/resolver.zig"); @@ -18,11 +36,7 @@ const http = @import("../../http.zig"); const NodeFallbackModules = @import("../../node_fallbacks.zig"); const ImportKind = ast.ImportKind; const Analytics = @import("../../analytics/analytics_thread.zig"); -usingnamespace @import("./base.zig"); -usingnamespace @import("./webcore/response.zig"); -usingnamespace @import("./config.zig"); -usingnamespace @import("./bindings/exports.zig"); -usingnamespace @import("./bindings/bindings.zig"); +const ZigString = @import("javascript_core").ZigString; const Runtime = @import("../../runtime.zig"); const Router = @import("./api/router.zig"); const ImportRecord = ast.ImportRecord; @@ -30,6 +44,37 @@ const DotEnv = @import("../../env_loader.zig"); const ParseResult = @import("../../bundler.zig").ParseResult; const PackageJSON = @import("../../resolver/package_json.zig").PackageJSON; const MacroRemap = @import("../../resolver/package_json.zig").MacroMap; +const WebCore = @import("javascript_core").WebCore; +const Request = WebCore.Request; +const Response = WebCore.Response; +const Headers = WebCore.Headers; +const Fetch = WebCore.Fetch; +const FetchEvent = WebCore.FetchEvent; +const js = @import("javascript_core").C; +const JSError = @import("./base.zig").JSError; +const d = @import("./base.zig").d; +const MarkedArrayBuffer = @import("./base.zig").MarkedArrayBuffer; +const getAllocator = @import("./base.zig").getAllocator; +const JSValue = @import("javascript_core").JSValue; +const NewClass = @import("./base.zig").NewClass; +const Microtask = @import("javascript_core").Microtask; +const JSGlobalObject = @import("javascript_core").JSGlobalObject; +const ExceptionValueRef = @import("javascript_core").ExceptionValueRef; +const JSPrivateDataPtr = @import("javascript_core").JSPrivateDataPtr; +const ZigConsoleClient = @import("javascript_core").ZigConsoleClient; +const ZigException = @import("javascript_core").ZigException; +const ZigStackTrace = @import("javascript_core").ZigStackTrace; +const ErrorableResolvedSource = @import("javascript_core").ErrorableResolvedSource; +const ResolvedSource = @import("javascript_core").ResolvedSource; +const JSPromise = @import("javascript_core").JSPromise; +const JSInternalPromise = @import("javascript_core").JSInternalPromise; +const JSModuleLoader = @import("javascript_core").JSModuleLoader; +const JSPromiseRejectionOperation = @import("javascript_core").JSPromiseRejectionOperation; +const Exception = @import("javascript_core").Exception; +const ErrorableZigString = @import("javascript_core").ErrorableZigString; +const ZigGlobalObject = @import("javascript_core").ZigGlobalObject; +const VM = @import("javascript_core").VM; +const Config = @import("./config.zig"); pub const GlobalClasses = [_]type{ Request.Class, @@ -60,7 +105,7 @@ pub const Bun = struct { pub fn onImportCSS( resolve_result: *const Resolver.Result, import_record: *ImportRecord, - source_dir: string, + _: string, ) void { if (!css_imports_buf_loaded) { css_imports_buf = std.ArrayList(u8).initCapacity( @@ -99,10 +144,13 @@ pub const Bun = struct { } pub fn registerMacro( - this: void, + // this + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + // function + _: js.JSObjectRef, + // thisObject + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { @@ -134,60 +182,60 @@ pub const Bun = struct { } pub fn getCWD( - this: void, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: void, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(VirtualMachine.vm.bundler.fs.top_level_dir).toValue(VirtualMachine.vm.global).asRef(); } pub fn getOrigin( - this: void, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: void, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(VirtualMachine.vm.bundler.options.origin.origin).toValue(VirtualMachine.vm.global).asRef(); } pub fn enableANSIColors( - this: void, + _: void, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeBoolean(ctx, Output.enable_ansi_colors); } pub fn getMain( - this: void, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: void, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(VirtualMachine.vm.main).toValue(VirtualMachine.vm.global).asRef(); } pub fn getAssetPrefix( - this: void, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: void, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(VirtualMachine.vm.bundler.options.routes.asset_prefix_path).toValue(VirtualMachine.vm.global).asRef(); } pub fn getArgv( - this: void, + _: void, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (comptime Environment.isWindows) { @compileError("argv not supported on windows"); @@ -205,11 +253,11 @@ pub const Bun = struct { } pub fn getRoutesDir( - this: void, + _: void, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (!VirtualMachine.vm.bundler.options.routes.routes_enabled or VirtualMachine.vm.bundler.options.routes.dir.len == 0) { return js.JSValueMakeUndefined(ctx); @@ -287,12 +335,12 @@ pub const Bun = struct { } pub fn getImportedStyles( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { defer flushCSSImports(); const styles = getCSSImports(); @@ -386,12 +434,12 @@ pub const Bun = struct { } pub fn getRouteFiles( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { if (VirtualMachine.vm.bundler.router == null) return js.JSValueMakeNull(ctx); @@ -407,12 +455,12 @@ pub const Bun = struct { } pub fn getRouteNames( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { if (VirtualMachine.vm.bundler.router == null) return js.JSValueMakeNull(ctx); @@ -428,10 +476,10 @@ pub const Bun = struct { } pub fn readFileAsBytes( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { @@ -445,10 +493,10 @@ pub const Bun = struct { } pub fn readFileAsString( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { @@ -478,12 +526,12 @@ pub const Bun = struct { } pub fn sleepSync( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { if (js.JSValueIsNumber(ctx, arguments[0])) { const ms = JSValue.fromRef(arguments[0]).asNumber(); @@ -496,12 +544,12 @@ pub const Bun = struct { var public_path_temp_str: [std.fs.MAX_PATH_BYTES]u8 = undefined; pub fn getPublicPathJS( - this: void, - ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: void, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { var zig_str: ZigString = ZigString.Empty; JSValue.toZigString(JSValue.fromRef(arguments[0]), &zig_str, VirtualMachine.vm.global); @@ -647,11 +695,11 @@ pub const Bun = struct { ); pub fn getter( - this: void, + _: void, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSObjectMake(ctx, EnvironmentVariables.Class.get().*, null); } @@ -663,9 +711,9 @@ pub const Bun = struct { pub fn getProperty( ctx: js.JSContextRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, propertyName: js.JSStringRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) callconv(.C) js.JSValueRef { const len = js.JSStringGetLength(propertyName); var ptr = js.JSStringGetCharacters8Ptr(propertyName); @@ -685,8 +733,8 @@ pub const Bun = struct { } pub fn hasProperty( - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, + _: js.JSContextRef, + _: js.JSObjectRef, propertyName: js.JSStringRef, ) callconv(.C) bool { const len = js.JSStringGetLength(propertyName); @@ -696,8 +744,8 @@ pub const Bun = struct { } pub fn getPropertyNames( - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, + _: js.JSContextRef, + _: js.JSObjectRef, props: js.JSPropertyNameAccumulatorRef, ) callconv(.C) void { var iter = VirtualMachine.vm.bundler.env.map.iter(); @@ -726,12 +774,12 @@ pub const Performance = struct { ); pub fn now( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeNumber( ctx, @@ -760,7 +808,7 @@ pub const Task = TaggedPointerUnion(.{ // Its unavailable on Linux pub const VirtualMachine = struct { global: *JSGlobalObject, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, node_modules: ?*NodeModuleBundle = null, bundler: Bundler, watcher: ?*http.Watcher = null, @@ -858,7 +906,7 @@ pub const VirtualMachine = struct { } pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, _args: Api.TransformOptions, existing_bundle: ?*NodeModuleBundle, _log: ?*logger.Log, @@ -878,7 +926,7 @@ pub const VirtualMachine = struct { const bundler = try Bundler.init( allocator, log, - try configureTransformOptionsForBunVM(allocator, _args), + try Config.configureTransformOptionsForBunVM(allocator, _args), existing_bundle, env_loader, ); @@ -957,7 +1005,7 @@ pub const VirtualMachine = struct { inline fn _fetch( global: *JSGlobalObject, _specifier: string, - source: string, + _: string, log: *logger.Log, ) !ResolvedSource { std.debug.assert(VirtualMachine.vm_loaded); @@ -1083,7 +1131,7 @@ pub const VirtualMachine = struct { vm.bundler.resetStore(); const hash = http.Watcher.getHash(path.text); - var allocator = if (vm.has_loaded) &vm.arena.allocator else vm.allocator; + var allocator = if (vm.has_loaded) vm.arena.allocator() else vm.allocator; var fd: ?StoredFileDescriptorType = null; var package_json: ?*PackageJSON = null; @@ -1178,7 +1226,7 @@ pub const VirtualMachine = struct { } return ResolvedSource{ - .allocator = if (vm.has_loaded) vm.allocator else null, + .allocator = if (vm.has_loaded) &vm.allocator else null, .source_code = ZigString.init(vm.allocator.dupe(u8, source_code_printer.ctx.written) catch unreachable), .specifier = ZigString.init(specifier), .source_url = ZigString.init(path.text), @@ -1188,7 +1236,7 @@ pub const VirtualMachine = struct { }, else => { return ResolvedSource{ - .allocator = vm.allocator, + .allocator = &vm.allocator, .source_code = ZigString.init(try strings.quotedAlloc(VirtualMachine.vm.allocator, path.pretty)), .specifier = ZigString.init(path.text), .source_url = ZigString.init(path.text), @@ -1271,7 +1319,7 @@ pub const VirtualMachine = struct { const package = &node_modules_bundle.bundle.packages[pkg_id]; - if (isDebug) { + if (Environment.isDebug) { std.debug.assert(strings.eql(node_modules_bundle.str(package.name), package_json.name)); } @@ -1324,7 +1372,7 @@ pub const VirtualMachine = struct { }; { - res.* = ErrorableZigString.err(err, @ptrCast(*c_void, ResolveError.create(vm.allocator, msg, source.slice()))); + res.* = ErrorableZigString.err(err, @ptrCast(*anyopaque, ResolveError.create(vm.allocator, msg, source.slice()))); } return; @@ -1356,13 +1404,13 @@ pub const VirtualMachine = struct { } // This double prints - pub fn promiseRejectionTracker(global: *JSGlobalObject, promise: *JSPromise, rejection: JSPromiseRejectionOperation) callconv(.C) JSValue { + pub fn promiseRejectionTracker(_: *JSGlobalObject, _: *JSPromise, _: JSPromiseRejectionOperation) callconv(.C) JSValue { // VirtualMachine.vm.defaultErrorHandler(promise.result(global.vm()), null); return JSValue.jsUndefined(); } const main_file_name: string = "bun:main"; - threadlocal var errors_stack: [256]*c_void = undefined; + threadlocal var errors_stack: [256]*anyopaque = undefined; pub fn fetch(ret: *ErrorableResolvedSource, global: *JSGlobalObject, specifier: ZigString, source: ZigString) callconv(.C) void { var log = logger.Log.init(vm.bundler.allocator); const spec = specifier.slice(); @@ -1418,7 +1466,7 @@ pub const VirtualMachine = struct { .data = logger.rangeData(null, logger.Range.None, std.fmt.allocPrint(vm.allocator, "{s} while building {s}", .{ @errorName(err), specifier.slice() }) catch unreachable), }; { - ret.* = ErrorableResolvedSource.err(err, @ptrCast(*c_void, BuildError.create(vm.bundler.allocator, msg))); + ret.* = ErrorableResolvedSource.err(err, @ptrCast(*anyopaque, BuildError.create(vm.bundler.allocator, msg))); } return; }, @@ -1463,7 +1511,7 @@ pub const VirtualMachine = struct { } // TODO: - pub fn deinit(this: *VirtualMachine) void {} + pub fn deinit(_: *VirtualMachine) void {} pub const ExceptionList = std.ArrayList(Api.JsException); @@ -1594,7 +1642,7 @@ pub const VirtualMachine = struct { pub fn iteratorWithOutColor(_vm: [*c]VM, globalObject: [*c]JSGlobalObject, nextValue: JSValue) callconv(.C) void { iterator(_vm, globalObject, nextValue, false); } - inline fn iterator(_vm: [*c]VM, globalObject: [*c]JSGlobalObject, nextValue: JSValue, comptime color: bool) void { + inline fn iterator(_: [*c]VM, _: [*c]JSGlobalObject, nextValue: JSValue, comptime color: bool) void { VirtualMachine.vm.printErrorlikeObject(nextValue, null, current_exception_list, color); } }; @@ -1618,7 +1666,7 @@ pub const VirtualMachine = struct { was_internal = this.printErrorFromMaybePrivateData(value.asRef(), exception_list, allow_ansi_color); } - pub fn printErrorFromMaybePrivateData(this: *VirtualMachine, value: ?*c_void, exception_list: ?*ExceptionList, comptime allow_ansi_color: bool) bool { + pub fn printErrorFromMaybePrivateData(this: *VirtualMachine, value: ?*anyopaque, exception_list: ?*ExceptionList, comptime allow_ansi_color: bool) bool { const private_data_ptr = JSPrivateDataPtr.from(value); switch (private_data_ptr.tag()) { @@ -1658,7 +1706,7 @@ pub const VirtualMachine = struct { }, else => { this.printErrorInstance(@intToEnum(JSValue, @intCast(i64, (@ptrToInt(value)))), exception_list, allow_ansi_color) catch |err| { - if (comptime isDebug) { + if (comptime Environment.isDebug) { // yo dawg Output.printErrorln("Error while printing Error-like object: {s}", .{@errorName(err)}); Output.flush(); @@ -1944,7 +1992,7 @@ pub const EventListenerMixin = struct { var listeners = vm.event_listeners.get(EventType.fetch) orelse (return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {}); if (listeners.items.len == 0) return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {}; const FetchEventRejectionHandler = struct { - pub fn onRejection(_ctx: *c_void, err: anyerror, fetch_event: *FetchEvent, value: JSValue) void { + pub fn onRejection(_ctx: *anyopaque, err: anyerror, fetch_event: *FetchEvent, value: JSValue) void { onError( @intToPtr(*CtxType, @ptrToInt(_ctx)), err, @@ -1960,14 +2008,12 @@ pub const EventListenerMixin = struct { fetch_event.* = FetchEvent{ .request_context = request_context, .request = Request{ .request_context = request_context }, - .onPromiseRejectionCtx = @as(*c_void, ctx), + .onPromiseRejectionCtx = @as(*anyopaque, ctx), .onPromiseRejectionHandler = FetchEventRejectionHandler.onRejection, }; var fetch_args: [1]js.JSObjectRef = undefined; for (listeners.items) |listener_ref| { - var listener = @intToEnum(JSValue, @intCast(i64, @ptrToInt(listener_ref))); - fetch_args[0] = FetchEvent.Class.make(vm.global.ref(), fetch_event); var result = js.JSObjectCallAsFunctionReturnValue(vm.global.ref(), listener_ref, null, 1, &fetch_args); @@ -2002,11 +2048,11 @@ pub const EventListenerMixin = struct { const Handler = struct { pub fn addListener( ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, argumentCount: usize, _arguments: [*c]const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) callconv(.C) js.JSValueRef { const arguments = _arguments[0..argumentCount]; if (arguments.len == 0 or arguments.len == 1 or !js.JSValueIsString(ctx, arguments[0]) or !js.JSValueIsObject(ctx, arguments[arguments.len - 1]) or !js.JSObjectIsFunction(ctx, arguments[arguments.len - 1])) { @@ -2054,11 +2100,11 @@ pub const EventListenerMixin = struct { pub const ResolveError = struct { msg: logger.Msg, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, referrer: ?Fs.Path = null, logged: bool = false, - pub fn fmt(allocator: *std.mem.Allocator, specifier: string, referrer: string, err: anyerror) !string { + pub fn fmt(allocator: std.mem.Allocator, specifier: string, referrer: string, err: anyerror) !string { switch (err) { error.ModuleNotFound => { if (Resolver.isPackagePath(specifier)) { @@ -2119,7 +2165,7 @@ pub const ResolveError = struct { ); pub fn create( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, msg: logger.Msg, referrer: string, ) js.JSObjectRef { @@ -2137,8 +2183,8 @@ pub const ResolveError = struct { pub fn getPosition( this: *ResolveError, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, + _: js.JSObjectRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSValueRef { return BuildError.generatePositionObject(this.msg, ctx, exception); @@ -2146,30 +2192,30 @@ pub const ResolveError = struct { pub fn getMessage( this: *ResolveError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.msg.data.text).toValue(VirtualMachine.vm.global).asRef(); } pub fn getSpecifier( this: *ResolveError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.msg.metadata.resolve.specifier.slice(this.msg.data.text)).toValue(VirtualMachine.vm.global).asRef(); } pub fn getImportKind( this: *ResolveError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(@tagName(this.msg.metadata.resolve.import_kind)).toValue(VirtualMachine.vm.global).asRef(); } @@ -2177,9 +2223,9 @@ pub const ResolveError = struct { pub fn getReferrer( this: *ResolveError, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.referrer) |referrer| { return ZigString.init(referrer.text).toValue(VirtualMachine.vm.global).asRef(); @@ -2190,11 +2236,11 @@ pub const ResolveError = struct { const BuildErrorName = "ResolveError"; pub fn getName( - this: *ResolveError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *ResolveError, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(BuildErrorName).toValue(VirtualMachine.vm.global).asRef(); } @@ -2203,7 +2249,7 @@ pub const ResolveError = struct { pub const BuildError = struct { msg: logger.Msg, // resolve_result: Resolver.Result, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, logged: bool = false, pub const Class = NewClass( @@ -2231,7 +2277,7 @@ pub const BuildError = struct { ); pub fn create( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, msg: logger.Msg, // resolve_result: *const Resolver.Result, ) js.JSObjectRef { @@ -2250,8 +2296,8 @@ pub const BuildError = struct { pub fn getPosition( this: *BuildError, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, + _: js.JSObjectRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSValueRef { return generatePositionObject(this.msg, ctx, exception); @@ -2383,21 +2429,21 @@ pub const BuildError = struct { pub fn getMessage( this: *BuildError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(this.msg.data.text).toValue(VirtualMachine.vm.global).asRef(); } const BuildErrorName = "BuildError"; pub fn getName( - this: *BuildError, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *BuildError, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(BuildErrorName).toValue(VirtualMachine.vm.global).asRef(); } diff --git a/src/javascript/jsc/JavascriptCore.zig b/src/javascript/jsc/javascript_core_c_api.zig index 807ea0053..ecd37c44a 100644 --- a/src/javascript/jsc/JavascriptCore.zig +++ b/src/javascript/jsc/javascript_core_c_api.zig @@ -1,6 +1,6 @@ const cpp = @import("./bindings/bindings.zig"); const generic = opaque {}; -pub const Private = c_void; +pub const Private = anyopaque; pub const struct_OpaqueJSContextGroup = generic; pub const JSContextGroupRef = ?*const struct_OpaqueJSContextGroup; pub const struct_OpaqueJSContext = generic; @@ -18,7 +18,7 @@ pub const struct_OpaqueJSPropertyNameArray = generic; pub const JSPropertyNameArrayRef = ?*struct_OpaqueJSPropertyNameArray; pub const struct_OpaqueJSPropertyNameAccumulator = generic; pub const JSPropertyNameAccumulatorRef = ?*struct_OpaqueJSPropertyNameAccumulator; -pub const JSTypedArrayBytesDeallocator = ?fn (*c_void, *c_void) callconv(.C) void; +pub const JSTypedArrayBytesDeallocator = ?fn (*anyopaque, *anyopaque) callconv(.C) void; pub const OpaqueJSValue = generic; pub const JSValueRef = ?*OpaqueJSValue; pub const JSObjectRef = ?*OpaqueJSValue; @@ -167,7 +167,7 @@ pub extern const kJSClassDefinitionEmpty: JSClassDefinition; pub extern "c" fn JSClassCreate(definition: [*c]const JSClassDefinition) JSClassRef; pub extern "c" fn JSClassRetain(jsClass: JSClassRef) JSClassRef; pub extern "c" fn JSClassRelease(jsClass: JSClassRef) void; -pub extern "c" fn JSObjectMake(ctx: JSContextRef, jsClass: JSClassRef, data: ?*c_void) JSObjectRef; +pub extern "c" fn JSObjectMake(ctx: JSContextRef, jsClass: JSClassRef, data: ?*anyopaque) JSObjectRef; pub extern "c" fn JSObjectMakeFunctionWithCallback(ctx: JSContextRef, name: JSStringRef, callAsFunction: JSObjectCallAsFunctionCallback) JSObjectRef; pub extern "c" fn JSObjectMakeConstructor(ctx: JSContextRef, jsClass: JSClassRef, callAsConstructor: JSObjectCallAsConstructorCallback) JSObjectRef; pub extern "c" fn JSObjectMakeArray(ctx: JSContextRef, argumentCount: usize, arguments: [*c]const JSValueRef, exception: ExceptionRef) JSObjectRef; @@ -188,8 +188,8 @@ pub extern "c" fn JSObjectSetPropertyForKey(ctx: JSContextRef, object: JSObjectR pub extern "c" fn JSObjectDeletePropertyForKey(ctx: JSContextRef, object: JSObjectRef, propertyKey: JSValueRef, exception: ExceptionRef) bool; pub extern "c" fn JSObjectGetPropertyAtIndex(ctx: JSContextRef, object: JSObjectRef, propertyIndex: c_uint, exception: ExceptionRef) JSValueRef; pub extern "c" fn JSObjectSetPropertyAtIndex(ctx: JSContextRef, object: JSObjectRef, propertyIndex: c_uint, value: JSValueRef, exception: ExceptionRef) void; -pub extern "c" fn JSObjectGetPrivate(object: JSObjectRef) ?*c_void; -pub extern "c" fn JSObjectSetPrivate(object: JSObjectRef, data: ?*c_void) bool; +pub extern "c" fn JSObjectGetPrivate(object: JSObjectRef) ?*anyopaque; +pub extern "c" fn JSObjectSetPrivate(object: JSObjectRef, data: ?*anyopaque) bool; pub extern "c" fn JSObjectIsFunction(ctx: JSContextRef, object: JSObjectRef) bool; pub extern "c" fn JSObjectCallAsFunction(ctx: JSContextRef, object: JSObjectRef, thisObject: JSObjectRef, argumentCount: usize, arguments: [*c]const JSValueRef, exception: ExceptionRef) JSValueRef; pub extern "c" fn JSObjectIsConstructor(ctx: JSContextRef, object: JSObjectRef) bool; @@ -224,18 +224,17 @@ pub extern fn JSStringGetUTF8CString(string: JSStringRef, buffer: [*c]u8, buffer pub extern fn JSStringIsEqual(a: JSStringRef, b: JSStringRef) bool; pub extern fn JSStringIsEqualToUTF8CString(a: JSStringRef, b: [*c]const u8) bool; pub extern fn JSObjectMakeTypedArray(ctx: JSContextRef, arrayType: JSTypedArrayType, length: usize, exception: ExceptionRef) JSObjectRef; -pub extern fn JSObjectMakeTypedArrayWithBytesNoCopy(ctx: JSContextRef, arrayType: JSTypedArrayType, bytes: ?*c_void, byteLength: usize, bytesDeallocator: JSTypedArrayBytesDeallocator, deallocatorContext: ?*c_void, exception: ExceptionRef) JSObjectRef; +pub extern fn JSObjectMakeTypedArrayWithBytesNoCopy(ctx: JSContextRef, arrayType: JSTypedArrayType, bytes: ?*anyopaque, byteLength: usize, bytesDeallocator: JSTypedArrayBytesDeallocator, deallocatorContext: ?*anyopaque, exception: ExceptionRef) JSObjectRef; pub extern fn JSObjectMakeTypedArrayWithArrayBuffer(ctx: JSContextRef, arrayType: JSTypedArrayType, buffer: JSObjectRef, exception: ExceptionRef) JSObjectRef; pub extern fn JSObjectMakeTypedArrayWithArrayBufferAndOffset(ctx: JSContextRef, arrayType: JSTypedArrayType, buffer: JSObjectRef, byteOffset: usize, length: usize, exception: ExceptionRef) JSObjectRef; -pub extern fn JSObjectGetTypedArrayBytesPtr(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) ?*c_void; +pub extern fn JSObjectGetTypedArrayBytesPtr(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) ?*anyopaque; pub extern fn JSObjectGetTypedArrayLength(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) usize; pub extern fn JSObjectGetTypedArrayByteLength(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) usize; pub extern fn JSObjectGetTypedArrayByteOffset(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) usize; pub extern fn JSObjectGetTypedArrayBuffer(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) JSObjectRef; -pub extern fn JSObjectMakeArrayBufferWithBytesNoCopy(ctx: JSContextRef, bytes: ?*c_void, byteLength: usize, bytesDeallocator: JSTypedArrayBytesDeallocator, deallocatorContext: ?*c_void, exception: ExceptionRef) JSObjectRef; -pub extern fn JSObjectGetArrayBufferBytesPtr(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) ?*c_void; +pub extern fn JSObjectMakeArrayBufferWithBytesNoCopy(ctx: JSContextRef, bytes: ?*anyopaque, byteLength: usize, bytesDeallocator: JSTypedArrayBytesDeallocator, deallocatorContext: ?*anyopaque, exception: ExceptionRef) JSObjectRef; +pub extern fn JSObjectGetArrayBufferBytesPtr(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) ?*anyopaque; pub extern fn JSObjectGetArrayBufferByteLength(ctx: JSContextRef, object: JSObjectRef, exception: ExceptionRef) usize; -pub extern fn JSStringCreateWithCFString(string: CFStringRef) JSStringRef; pub const OpaqueJSContextGroup = struct_OpaqueJSContextGroup; pub const OpaqueJSContext = struct_OpaqueJSContext; pub const OpaqueJSString = struct_OpaqueJSString; @@ -384,10 +383,10 @@ pub const CellType = enum(u8) { }; } }; -pub const ExternalStringFinalizer = fn (finalize_ptr: ?*c_void, ref: JSStringRef, buffer: *c_void, byteLength: usize) callconv(.C) void; +pub const ExternalStringFinalizer = fn (finalize_ptr: ?*anyopaque, ref: JSStringRef, buffer: *anyopaque, byteLength: usize) callconv(.C) void; pub extern fn JSStringCreate(string: UTF8Ptr, length: usize) JSStringRef; pub extern fn JSStringCreateStatic(string: UTF8Ptr, length: usize) JSStringRef; -pub extern fn JSStringCreateExternal(string: UTF8Ptr, length: usize, finalize_ptr: ?*c_void, finalizer: ExternalStringFinalizer) JSStringRef; +pub extern fn JSStringCreateExternal(string: UTF8Ptr, length: usize, finalize_ptr: ?*anyopaque, finalizer: ExternalStringFinalizer) JSStringRef; pub extern fn JSStringIsEqualToString(a: JSStringRef, string: UTF8Ptr, length: usize) bool; pub extern fn JSStringEncoding(string: JSStringRef) Encoding; pub extern fn JSStringGetCharacters8Ptr(string: JSStringRef) UTF8Ptr; @@ -396,10 +395,10 @@ pub extern fn JSCellType(cell: JSCellValue) CellType; pub extern fn JSStringIsStatic(ref: JSStringRef) bool; pub extern fn JSStringIsExternal(ref: JSStringRef) bool; -pub const JStringIteratorAppendCallback = fn (ctx: *JSStringIterator_, ptr: *c_void, length: u32) callconv(.C) c_void; -pub const JStringIteratorWriteCallback = fn (ctx: *JSStringIterator_, ptr: *c_void, length: u32, offset: u32) callconv(.C) c_void; +pub const JStringIteratorAppendCallback = fn (ctx: *JSStringIterator_, ptr: *anyopaque, length: u32) callconv(.C) anyopaque; +pub const JStringIteratorWriteCallback = fn (ctx: *JSStringIterator_, ptr: *anyopaque, length: u32, offset: u32) callconv(.C) anyopaque; const JSStringIterator_ = extern struct { - ctx: *c_void, + ctx: *anyopaque, stop: u8, append8: JStringIteratorAppendCallback, @@ -409,7 +408,7 @@ const JSStringIterator_ = extern struct { }; pub const JSString = struct { - pub const Callback = fn (finalize_ptr_: ?*c_void, ref: JSStringRef, buffer: *c_void, byteLength: usize) callconv(.C) void; + pub const Callback = fn (finalize_ptr_: ?*anyopaque, ref: JSStringRef, buffer: *anyopaque, byteLength: usize) callconv(.C) void; _ref: JSStringRef = null, backing: Backing = .{ .gc = 0 }, @@ -427,8 +426,8 @@ pub const JSString = struct { const ExternalString = struct { callback: Callback, - external_callback: *c_void, - external_ptr: ?*c_void = null, + external_callback: *anyopaque, + external_ptr: ?*anyopaque = null, slice: []const u8, }; @@ -436,7 +435,7 @@ pub const JSString = struct { const CallbackFunctionType = @TypeOf(callback); const ExternalWrapper = struct { - pub fn finalizer_callback(finalize_ptr_: ?*c_void, buffer: *c_void, byteLength: usize) callconv(.C) void { + pub fn finalizer_callback(finalize_ptr_: ?*anyopaque, buffer: *anyopaque, byteLength: usize) callconv(.C) void { var finalize_ptr = finalize_ptr_ orelse return; var jsstring = @ptrCast( @@ -510,12 +509,6 @@ pub const JSString = struct { return this._ref; } - pub fn fromStringRef(string_ref: JSStringRef) JSString {} - - pub fn init(str: []const u8) JSString {} - - pub fn static(str: []const u8) JSString {} - pub fn finalize(this: *JSString) void { this.loaded = false; } @@ -536,13 +529,6 @@ pub const JSString = struct { // } - pub fn eqlJS(this: *const JSString, ctx: JSContextRef, comptime Type: type, that: Type) bool { - switch (comptime Type) { - JSValueRef => {}, - JSStringRef => {}, - JSString => {}, - } - } }; // not official api functions diff --git a/src/javascript/jsc/typescript.zig b/src/javascript/jsc/typescript.zig index 23c0f037e..d2068254d 100644 --- a/src/javascript/jsc/typescript.zig +++ b/src/javascript/jsc/typescript.zig @@ -1,9 +1,9 @@ -usingnamespace @import("./base.zig"); +const d = @import("./base.zig").d; const std = @import("std"); const Api = @import("../../api/schema.zig").Api; const Router = @import("./api/router.zig"); const JavaScript = @import("./javascript.zig"); -const builtin = std.builtin; +const builtin = @import("builtin"); const io = std.io; const fs = std.fs; const process = std.process; @@ -14,7 +14,6 @@ const mem = std.mem; const testing = std.testing; const Allocator = std.mem.Allocator; const resolve_path = @import("../../resolver/resolve_path.zig"); -usingnamespace @import("./webcore/response.zig"); const modules = [_]d.ts.decl{ Router.Class.typescriptDeclaration(), diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig index 565843423..84e5040bd 100644 --- a/src/javascript/jsc/webcore/response.zig +++ b/src/javascript/jsc/webcore/response.zig @@ -1,19 +1,45 @@ -usingnamespace @import("../base.zig"); const std = @import("std"); const Api = @import("../../../api/schema.zig").Api; const RequestContext = @import("../../../http.zig").RequestContext; const MimeType = @import("../../../http.zig").MimeType; -usingnamespace @import("../javascript.zig"); -usingnamespace @import("../bindings/bindings.zig"); const ZigURL = @import("../../../query_string_map.zig").URL; const HTTPClient = @import("http"); const NetworkThread = @import("network_thread"); +const JSC = @import("../../../jsc.zig"); +const js = JSC.C; + const Method = @import("../../../http/method.zig").Method; const ObjectPool = @import("../../../pool.zig").ObjectPool; +const Output = @import("../../../global.zig").Output; +const MutableString = @import("../../../global.zig").MutableString; +const strings = @import("../../../global.zig").strings; +const string = @import("../../../global.zig").string; +const default_allocator = @import("../../../global.zig").default_allocator; +const FeatureFlags = @import("../../../global.zig").FeatureFlags; +const ArrayBuffer = @import("../base.zig").ArrayBuffer; +const Properties = @import("../base.zig").Properties; +const NewClass = @import("../base.zig").NewClass; +const d = @import("../base.zig").d; +const castObj = @import("../base.zig").castObj; +const getAllocator = @import("../base.zig").getAllocator; +const JSPrivateDataPtr = @import("../base.zig").JSPrivateDataPtr; +const GetJSPrivateData = @import("../base.zig").GetJSPrivateData; + +const ZigString = JSC.ZigString; +const JSInternalPromise = JSC.JSInternalPromise; +const JSPromise = JSC.JSPromise; +const JSValue = JSC.JSValue; +const JSError = JSC.JSError; +const JSGlobalObject = JSC.JSGlobalObject; + +const VirtualMachine = @import("../javascript.zig").VirtualMachine; +const Task = @import("../javascript.zig").Task; + const picohttp = @import("picohttp"); + pub const Response = struct { pub const Class = NewClass( Response, @@ -50,7 +76,7 @@ pub const Response = struct { }, ); - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, body: Body, status_text: string = "", @@ -59,9 +85,9 @@ pub const Response = struct { pub fn getOK( this: *Response, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { // https://developer.mozilla.org/en-US/docs/Web/API/Response/ok return js.JSValueMakeBoolean(ctx, this.body.init.status_code == 304 or (this.body.init.status_code >= 200 and this.body.init.status_code <= 299)); @@ -69,11 +95,11 @@ pub const Response = struct { pub fn getText( this: *Response, - ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { // https://developer.mozilla.org/en-US/docs/Web/API/Response/text defer this.body.value = .Empty; @@ -113,9 +139,9 @@ pub const Response = struct { pub fn getJson( this: *Response, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { var zig_string = ZigString.init(""); @@ -184,9 +210,9 @@ pub const Response = struct { pub fn getArrayBuffer( this: *Response, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { defer this.body.value = .Empty; @@ -249,9 +275,9 @@ pub const Response = struct { pub fn getStatus( this: *Response, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { // https://developer.mozilla.org/en-US/docs/Web/API/Response/status return js.JSValueMakeNumber(ctx, @intToFloat(f64, this.body.init.status_code)); @@ -297,7 +323,7 @@ pub const Response = struct { pub fn constructor( ctx: js.JSContextRef, - function: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { @@ -437,7 +463,7 @@ pub const Fetch = struct { tasklet: *FetchTasklet, }; - pub fn init(allocator: *std.mem.Allocator) anyerror!FetchTasklet { + pub fn init(_: std.mem.Allocator) anyerror!FetchTasklet { return FetchTasklet{}; } @@ -467,7 +493,7 @@ pub const Fetch = struct { this.release(); } - pub fn reset(this: *FetchTasklet) void {} + pub fn reset(_: *FetchTasklet) void {} pub fn release(this: *FetchTasklet) void { js.JSValueUnprotect(this.global_this.ref(), this.resolve); @@ -490,12 +516,12 @@ pub const Fetch = struct { pub const FetchResolver = struct { pub fn call( - ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments_len: usize, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: usize, arguments: [*c]const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) callconv(.C) js.JSObjectRef { return JSPrivateDataPtr.from(js.JSObjectGetPrivate(arguments[0])) .get(FetchTaskletContext).?.tasklet.onResolve().asObjectRef(); @@ -505,12 +531,12 @@ pub const Fetch = struct { pub const FetchRejecter = struct { pub fn call( - ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments_len: usize, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: usize, arguments: [*c]const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) callconv(.C) js.JSObjectRef { return JSPrivateDataPtr.from(js.JSObjectGetPrivate(arguments[0])) .get(FetchTaskletContext).?.tasklet.onReject().asObjectRef(); @@ -557,7 +583,7 @@ pub const Fetch = struct { } pub fn get( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, method: Method, url: ZigURL, headers: Headers.Entries, @@ -586,7 +612,7 @@ pub const Fetch = struct { } pub fn queue( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, global: *JSGlobalObject, method: Method, url: ZigURL, @@ -617,10 +643,10 @@ pub const Fetch = struct { }; pub fn call( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { @@ -753,14 +779,10 @@ pub const Fetch = struct { // https://developer.mozilla.org/en-US/docs/Web/API/Headers pub const Headers = struct { - pub const Kv = struct { - name: Api.StringPointer, - value: Api.StringPointer, - }; - pub const Entries = std.MultiArrayList(Kv); - entries: Entries, + pub usingnamespace HTTPClient.Headers; + entries: Headers.Entries, buf: std.ArrayListUnmanaged(u8), - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, used: u32 = 0, guard: Guard = Guard.none, @@ -778,10 +800,10 @@ pub const Headers = struct { pub fn get( this: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { if (arguments.len == 0 or !js.JSValueIsString(ctx, arguments[0]) or js.JSStringIsEqual(arguments[0], Properties.Refs.empty_string)) { return js.JSValueMakeNull(ctx); @@ -805,10 +827,10 @@ pub const Headers = struct { pub fn set( this: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.guard == .request or arguments.len < 2 or !js.JSValueIsString(ctx, arguments[0]) or js.JSStringIsEqual(arguments[0], Properties.Refs.empty_string) or !js.JSValueIsString(ctx, arguments[1])) { return js.JSValueMakeUndefined(ctx); @@ -822,10 +844,10 @@ pub const Headers = struct { pub fn append( this: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.guard == .request or arguments.len < 2 or !js.JSValueIsString(ctx, arguments[0]) or js.JSStringIsEqual(arguments[0], Properties.Refs.empty_string) or !js.JSValueIsString(ctx, arguments[1])) { return js.JSValueMakeUndefined(ctx); @@ -837,10 +859,10 @@ pub const Headers = struct { pub fn delete( this: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.guard == .request or arguments.len < 1 or !js.JSValueIsString(ctx, arguments[0]) or js.JSStringIsEqual(arguments[0], Properties.Refs.empty_string)) { return js.JSValueMakeUndefined(ctx); @@ -856,34 +878,34 @@ pub const Headers = struct { return js.JSValueMakeUndefined(ctx); } pub fn entries( - this: *Headers, + _: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { Output.prettyErrorln("<r><b>Headers.entries()<r> is not implemented yet - sorry!!", .{}); return js.JSValueMakeNull(ctx); } pub fn keys( - this: *Headers, + _: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { - Output.prettyErrorln("H<r><b>eaders.keys()<r> is not implemented yet- sorry!!", .{}); + Output.prettyErrorln("H<r><b>Headers.keys()<r> is not implemented yet- sorry!!", .{}); return js.JSValueMakeNull(ctx); } pub fn values( - this: *Headers, + _: *Headers, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { Output.prettyErrorln("<r><b>Headers.values()<r> is not implemented yet - sorry!!", .{}); return js.JSValueMakeNull(ctx); @@ -963,9 +985,9 @@ pub const Headers = struct { // https://developer.mozilla.org/en-US/docs/Web/API/Headers/Headers pub fn constructor( ctx: js.JSContextRef, - function: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) js.JSObjectRef { var headers = getAllocator(ctx).create(Headers) catch unreachable; if (arguments.len > 0 and js.JSValueIsObjectOfClass(ctx, arguments[0], Headers.Class.get().*)) { @@ -1052,7 +1074,7 @@ pub const Headers = struct { none, }; - pub fn fromPicoHeaders(allocator: *std.mem.Allocator, picohttp_headers: []const picohttp.Header) !Headers { + pub fn fromPicoHeaders(allocator: std.mem.Allocator, picohttp_headers: []const picohttp.Header) !Headers { var total_len: usize = 0; for (picohttp_headers) |header| { total_len += header.name.len; @@ -1062,7 +1084,7 @@ pub const Headers = struct { total_len += picohttp_headers.len * 2; var headers = Headers{ .allocator = allocator, - .entries = Entries{}, + .entries = Headers.Entries{}, .buf = std.ArrayListUnmanaged(u8){}, }; try headers.entries.ensureTotalCapacity(allocator, picohttp_headers.len); @@ -1071,7 +1093,7 @@ pub const Headers = struct { headers.guard = Guard.request; for (picohttp_headers) |header| { - headers.entries.appendAssumeCapacity(Kv{ + headers.entries.appendAssumeCapacity(.{ .name = headers.appendString( string, header.name, @@ -1093,7 +1115,7 @@ pub const Headers = struct { } // TODO: is it worth making this lazy? instead of copying all the request headers, should we just do it on get/put/iterator? - pub fn fromRequestCtx(allocator: *std.mem.Allocator, request: *RequestContext) !Headers { + pub fn fromRequestCtx(allocator: std.mem.Allocator, request: *RequestContext) !Headers { return fromPicoHeaders(allocator, request.request.headers); } @@ -1167,7 +1189,7 @@ pub const Headers = struct { headers.buf.expandToCapacity(); headers.entries.append( headers.allocator, - Kv{ + .{ .name = headers.appendString( string, key, @@ -1248,7 +1270,7 @@ pub const Headers = struct { } pub fn appendInit(this: *Headers, ctx: js.JSContextRef, key: js.JSStringRef, comptime value_type: js.JSType, value: js.JSValueRef) !void { - this.entries.append(this.allocator, Kv{ + this.entries.append(this.allocator, .{ .name = this.appendString(js.JSStringRef, key, true, true, false), .value = switch (comptime value_type) { js.JSType.kJSTypeNumber => this.appendNumber(js.JSValueToNumber(ctx, value, null)), @@ -1277,9 +1299,9 @@ pub const Body = struct { value: Value, ptr: ?[*]u8 = null, len: usize = 0, - ptr_allocator: ?*std.mem.Allocator = null, + ptr_allocator: ?std.mem.Allocator = null, - pub fn deinit(this: *Body, allocator: *std.mem.Allocator) void { + pub fn deinit(this: *Body, allocator: std.mem.Allocator) void { if (this.init.headers) |headers| { headers.deinit(); } @@ -1297,7 +1319,7 @@ pub const Body = struct { headers: ?Headers, status_code: u16, - pub fn init(allocator: *std.mem.Allocator, ctx: js.JSContextRef, init_ref: js.JSValueRef) !?Init { + pub fn init(_: std.mem.Allocator, ctx: js.JSContextRef, init_ref: js.JSValueRef) !?Init { var result = Init{ .headers = null, .status_code = 0 }; var array = js.JSObjectCopyPropertyNames(ctx, init_ref); defer js.JSPropertyNameArrayRelease(array); @@ -1363,7 +1385,7 @@ pub const Body = struct { } }; - pub fn @"404"(ctx: js.JSContextRef) Body { + pub fn @"404"(_: js.JSContextRef) Body { return Body{ .init = Init{ .headers = null, .status_code = 404, @@ -1409,7 +1431,7 @@ pub const Body = struct { if (maybeInit) |init_| { body.init = init_; } - } else |err| {} + } else |_| {} } var wtf_string = JSValue.fromRef(body_ref).toWTFString(VirtualMachine.vm.global); @@ -1465,7 +1487,7 @@ pub const Body = struct { if (maybeInit) |init_| { body.init = init_; } - } else |err| {} + } else |_| {} } body.value = Value{ .ArrayBuffer = buffer }; body.ptr = buffer.ptr[buffer.offset..buffer.byte_len].ptr; @@ -1547,38 +1569,38 @@ pub const Request = struct { ); pub fn getCache( - this: *Request, + _: *Request, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeString(ctx, ZigString.init(Properties.UTF8.default).toValueGC(VirtualMachine.vm.global).asRef()); } pub fn getCredentials( - this: *Request, + _: *Request, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeString(ctx, ZigString.init(Properties.UTF8.include).toValueGC(VirtualMachine.vm.global).asRef()); } pub fn getDestination( - this: *Request, + _: *Request, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeString(ctx, ZigString.init("").toValueGC(VirtualMachine.vm.global).asRef()); } pub fn getHeaders( this: *Request, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.headers == null) { this.headers = Headers.fromRequestCtx(getAllocator(ctx), this.request_context) catch unreachable; @@ -1587,20 +1609,20 @@ pub const Request = struct { return Headers.Class.make(ctx, &this.headers.?); } pub fn getIntegrity( - this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *Request, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.Empty.toValueGC(VirtualMachine.vm.global).asRef(); } pub fn getMethod( this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { const string_contents: string = switch (this.request_context.method) { .GET => Properties.UTF8.GET, @@ -1616,29 +1638,29 @@ pub const Request = struct { } pub fn getMode( - this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *Request, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(Properties.UTF8.navigate).toValueGC(VirtualMachine.vm.global).asRef(); } pub fn getRedirect( - this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *Request, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init(Properties.UTF8.follow).toValueGC(VirtualMachine.vm.global).asRef(); } pub fn getReferrer( this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.request_context.header("Referrer")) |referrer| { return ZigString.init(referrer.value).toValueGC(VirtualMachine.vm.global).asRef(); @@ -1647,20 +1669,20 @@ pub const Request = struct { } } pub fn getReferrerPolicy( - this: *Request, - ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: *Request, + _: js.JSContextRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return ZigString.init("").toValueGC(VirtualMachine.vm.global).asRef(); } pub fn getUrl( this: *Request, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { if (this.url_string_ref == null) { this.url_string_ref = js.JSStringCreateWithUTF8CString(this.request_context.getFullURL()); @@ -1678,8 +1700,8 @@ pub const FetchEvent = struct { request: Request, pending_promise: ?*JSInternalPromise = null, - onPromiseRejectionCtx: *c_void = undefined, - onPromiseRejectionHandler: ?fn (ctx: *c_void, err: anyerror, fetch_event: *FetchEvent, value: JSValue) void = null, + onPromiseRejectionCtx: *anyopaque = undefined, + onPromiseRejectionHandler: ?fn (ctx: *anyopaque, err: anyerror, fetch_event: *FetchEvent, value: JSValue) void = null, rejected: bool = false, pub const Class = NewClass( @@ -1723,11 +1745,11 @@ pub const FetchEvent = struct { ); pub fn getClient( - this: *FetchEvent, + _: *FetchEvent, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { Output.prettyErrorln("FetchEvent.client is not implemented yet - sorry!!", .{}); Output.flush(); @@ -1736,9 +1758,9 @@ pub const FetchEvent = struct { pub fn getRequest( this: *FetchEvent, ctx: js.JSContextRef, - thisObject: js.JSObjectRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSValueRef { return Request.Class.make(ctx, &this.request); } @@ -1747,8 +1769,8 @@ pub const FetchEvent = struct { pub fn respondWith( this: *FetchEvent, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSValueRef { @@ -1906,13 +1928,15 @@ pub const FetchEvent = struct { return js.JSValueMakeUndefined(ctx); } + // our implementation of the event listener already does this + // so this is a no-op for us pub fn waitUntil( - this: *FetchEvent, + _: *FetchEvent, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSValueRef { return js.JSValueMakeUndefined(ctx); } diff --git a/src/js_ast.zig b/src/js_ast.zig index 5986e0dcc..8f61537db 100644 --- a/src/js_ast.zig +++ b/src/js_ast.zig @@ -2,8 +2,18 @@ const std = @import("std"); const logger = @import("logger.zig"); const JSXRuntime = @import("options.zig").JSX.Runtime; const Runtime = @import("runtime.zig").Runtime; -usingnamespace @import("global.zig"); -usingnamespace @import("ast/base.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const Ref = @import("ast/base.zig").Ref; +const RefHashCtx = @import("ast/base.zig").RefHashCtx; const ImportRecord = @import("import_record.zig").ImportRecord; const allocators = @import("allocators.zig"); @@ -11,6 +21,7 @@ const allocators = @import("allocators.zig"); const _hash_map = @import("hash_map.zig"); const StringHashMap = _hash_map.StringHashMap; const AutoHashMap = _hash_map.AutoHashMap; +const StringHashMapUnmanaged = _hash_map.StringHashMapUnmanaged; pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { var max_size = 0; var max_align = 1; @@ -20,55 +31,86 @@ pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { } const UnionValueType = [max_size]u8; + const SizeType = std.math.IntFittingRange(0, (count + 1)); const MaxAlign = max_align; - const total_items_len = max_size * count; + return struct { const Allocator = std.mem.Allocator; const Self = @This(); const Block = struct { + used: SizeType = 0, items: [count]UnionValueType align(MaxAlign) = undefined, - used: usize = 0, - allocator: *std.mem.Allocator, pub inline fn isFull(block: *const Block) bool { - return block.used >= block.items.len; + return block.used >= @as(SizeType, count); } - pub fn append(block: *Block, value: anytype) *UnionValueType { - std.debug.assert(block.used < count); + pub fn append(block: *Block, comptime ValueType: type, value: ValueType) *UnionValueType { + if (comptime Environment.allow_assert) std.debug.assert(block.used < count); const index = block.used; - std.mem.copy(u8, &block.items[index], value); - + block.items[index][0..value.len].* = value.*; block.used += 1; return &block.items[index]; } }; - block: Block, - overflow_ptrs: [4096 * 3]*Block = undefined, - overflow: []*Block = &([_]*Block{}), - overflow_used: usize = 0, - allocator: *Allocator, + const Overflow = struct { + const max = 4096 * 3; + const UsedSize = std.math.IntFittingRange(0, max + 1); + used: UsedSize = 0, + allocated: UsedSize = 0, + allocator: Allocator, + ptrs: [max]*Block = undefined, + + pub fn tail(this: *Overflow) *Block { + if (this.ptrs[this.used].isFull()) { + this.used += 1; + if (this.allocated > this.used) { + this.ptrs[this.used].used = 0; + } + } + + if (this.allocated <= this.used) { + var new_ptrs = this.allocator.alloc(Block, 2) catch unreachable; + new_ptrs[0] = Block{}; + new_ptrs[1] = Block{}; + this.ptrs[this.allocated] = &new_ptrs[0]; + this.ptrs[this.allocated + 1] = &new_ptrs[1]; + this.allocated += 2; + } + + return this.ptrs[this.used]; + } + + pub inline fn slice(this: *Overflow) []*Block { + return this.ptrs[0..this.used]; + } + }; + + block: Block = Block{ .used = 0 }, + overflow: Overflow = Overflow{}, - pub threadlocal var instance: Self = undefined; pub threadlocal var _self: *Self = undefined; pub fn reset() void { - _self.block.used = 0; - for (_self.overflow[0.._self.overflow_used]) |b| { + for (_self.overflow.slice()) |b| { b.used = 0; } - _self.overflow_used = 0; + _self.overflow.used = 0; } - pub fn init(allocator: *std.mem.Allocator) *Self { - instance = Self{ - .allocator = allocator, - .block = Block{ .allocator = allocator }, + pub fn init(allocator: std.mem.Allocator) *Self { + var instance = allocator.create(Self) catch unreachable; + instance.* = Self{ + .overflow = Overflow{ .allocator = allocator }, + .block = Block{}, }; + instance.overflow.ptrs[0] = &instance.block; + instance.overflow.allocated = 1; + + _self = instance; - _self = &instance; return _self; } @@ -76,39 +118,37 @@ pub fn NewBaseStore(comptime Union: anytype, comptime count: usize) type { return _self._append(ValueType, value); } - fn _append(self: *Self, comptime ValueType: type, value: ValueType) *ValueType { - if (!self.block.isFull()) { - var ptr = self.block.append(std.mem.asBytes(&value)); - var aligned_slice = @alignCast(@alignOf(ValueType), ptr); + inline fn _append(self: *Self, comptime ValueType: type, value: ValueType) *ValueType { + const bytes = std.mem.asBytes(&value); + const BytesAsSlice = @TypeOf(bytes); - return @ptrCast( - *ValueType, - aligned_slice, - ); - } - - if (self.overflow_used >= self.overflow.len or self.overflow[self.overflow_used].isFull()) { - var slice = self.allocator.alloc(Block, 2) catch unreachable; - for (slice) |*block| { - block.allocator = self.allocator; - block.used = 0; - block.items = undefined; - self.overflow_ptrs[self.overflow.len] = block; - self.overflow = self.overflow_ptrs[0 .. self.overflow.len + 1]; - } - } + // if (self.overflow_used >= self.overflow.len or self.overflow[self.overflow_used].isFull()) { + // var slice = self.allocator.alloc(Block, 2) catch unreachable; + // slice[0] = Block{ + // .used = 0, + // .items = undefined, + // }; + // slice[1] = Block{ + // .used = 0, + // .items = undefined, + // }; - var block = self.overflow[self.overflow_used]; - var ptr = block.append(std.mem.asBytes(&value)); - if (block.isFull()) { - self.overflow_used += 1; - } + // self.overflow_ptrs[self.overflow.len] = &slice[0]; + // self.overflow_ptrs[self.overflow.len + 1] = &slice[1]; + // self.overflow = self.overflow_ptrs[0 .. self.overflow.len + 2]; + // if (self.overflow[self.overflow_used].isFull()) { + // self.overflow_used += 1; + // } + // } - var aligned_slice = @alignCast(@alignOf(ValueType), ptr); + var block = self.overflow.tail(); return @ptrCast( *ValueType, - aligned_slice, + @alignCast( + @alignOf(ValueType), + @alignCast(@alignOf(ValueType), block.append(BytesAsSlice, bytes)), + ), ); } }; @@ -229,7 +269,7 @@ pub const Binding = struct { const ExprType = expr_type; return struct { context: *ExprType, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, pub const Context = @This(); pub fn wrapIdentifier(ctx: *const Context, loc: logger.Loc, ref: Ref) Expr { @@ -330,7 +370,7 @@ pub const Binding = struct { } } - pub fn alloc(allocator: *std.mem.Allocator, t: anytype, loc: logger.Loc) Binding { + pub fn alloc(allocator: std.mem.Allocator, t: anytype, loc: logger.Loc) Binding { icount += 1; switch (@TypeOf(t)) { B.Identifier => { @@ -737,7 +777,7 @@ pub const Symbol = struct { return &self.symbols_for_source[ref.source_index][ref.inner_index]; } - pub fn init(sourceCount: usize, allocator: *std.mem.Allocator) !Map { + pub fn init(sourceCount: usize, allocator: std.mem.Allocator) !Map { var symbols_for_source: [][]Symbol = try allocator.alloc([]Symbol, sourceCount); return Map{ .symbols_for_source = symbols_for_source }; } @@ -1050,7 +1090,7 @@ pub const E = struct { }; pub const Missing = struct { - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + pub fn jsonStringify(_: *const @This(), opts: anytype, o: anytype) !void { return try std.json.stringify(null, opts, o); } }; @@ -1156,7 +1196,7 @@ pub const E = struct { // A version of this where `utf8` and `value` are stored in a packed union, with len as a single u32 was attempted. // It did not improve benchmarks. Neither did converting this from a heap-allocated type to a stack-allocated type. value: []const u16 = &.{}, - utf8: string = &([_]u8{}), + utf8: _global.string = &([_]u8{}), prefer_template: bool = false, pub var empty = String{}; @@ -1165,7 +1205,7 @@ pub const E = struct { pub var @"null" = String{ .utf8 = "null" }; pub var @"undefined" = String{ .utf8 = "undefined" }; - pub fn clone(str: *const String, allocator: *std.mem.Allocator) !String { + pub fn clone(str: *const String, allocator: std.mem.Allocator) !String { if (str.isUTF8()) { return String{ .utf8 = try allocator.dupe(u8, str.utf8), @@ -1205,7 +1245,7 @@ pub const E = struct { return strings.utf16EqlString(other.value, s.utf8); } }, - string => { + _global.string => { return strings.eql(s.utf8, other); }, []u16, []const u16 => { @@ -1224,7 +1264,7 @@ pub const E = struct { return std.mem.eql(u16, other.value, s.value); } }, - string => { + _global.string => { return strings.utf16EqlString(s.value, other); }, []u16, []const u16 => { @@ -1237,7 +1277,7 @@ pub const E = struct { } } - pub fn string(s: *const String, allocator: *std.mem.Allocator) !string { + pub fn string(s: *const String, allocator: std.mem.Allocator) !_global.string { if (s.isUTF8()) { return s.utf8; } else { @@ -1399,333 +1439,93 @@ pub const Stmt = struct { const None = S.Empty{}; - pub inline fn getBlock(self: *const @This()) *S.Block { - return self.data.s_block; - } - pub inline fn getBreak(self: *const @This()) *S.Break { - return self.data.s_break; - } - pub inline fn getClass(self: *const @This()) *S.Class { - return self.data.s_class; - } - pub inline fn getComment(self: *const @This()) *S.Comment { - return self.data.s_comment; - } - pub inline fn getContinue(self: *const @This()) *S.Continue { - return self.data.s_continue; - } - pub inline fn getDebugger(self: *const @This()) S.Debugger { - return S.Debugger{}; - } - pub inline fn getDirective(self: *const @This()) *S.Directive { - return self.data.s_directive; - } - pub inline fn getDoWhile(self: *const @This()) *S.DoWhile { - return self.data.s_do_while; - } - pub inline fn getEmpty(self: *const @This()) S.Empty { - return S.Empty{}; - } - pub inline fn getEnum(self: *const @This()) *S.Enum { - return self.data.s_enum; - } - pub inline fn getExportClause(self: *const @This()) *S.ExportClause { - return self.data.s_export_clause; - } - pub inline fn getExportDefault(self: *const @This()) *S.ExportDefault { - return self.data.s_export_default; - } - pub inline fn getExportEquals(self: *const @This()) *S.ExportEquals { - return self.data.s_export_equals; - } - pub inline fn getExportFrom(self: *const @This()) *S.ExportFrom { - return self.data.s_export_from; - } - pub inline fn getExportStar(self: *const @This()) *S.ExportStar { - return self.data.s_export_star; - } - pub inline fn getExpr(self: *const @This()) *S.SExpr { - return self.data.s_expr; - } - pub inline fn getForIn(self: *const @This()) *S.ForIn { - return self.data.s_for_in; - } - pub inline fn getForOf(self: *const @This()) *S.ForOf { - return self.data.s_for_of; - } - pub inline fn getFor(self: *const @This()) *S.For { - return self.data.s_for; - } - pub inline fn getFunction(self: *const @This()) *S.Function { - return self.data.s_function; - } - pub inline fn getIf(self: *const @This()) *S.If { - return self.data.s_if; - } - pub inline fn getImport(self: *const @This()) *S.Import { - return self.data.s_import; - } - pub inline fn getLabel(self: *const @This()) *S.Label { - return self.data.s_label; - } - pub inline fn getLazyExport(self: *const @This()) *S.LazyExport { - return self.data.s_lazy_export; - } - pub inline fn getLocal(self: *const @This()) *S.Local { - return self.data.s_local; - } - pub inline fn getNamespace(self: *const @This()) *S.Namespace { - return self.data.s_namespace; - } - pub inline fn getReturn(self: *const @This()) *S.Return { - return self.data.s_return; - } - pub inline fn getSwitch(self: *const @This()) *S.Switch { - return self.data.s_switch; - } - pub inline fn getThrow(self: *const @This()) *S.Throw { - return self.data.s_throw; - } - pub inline fn getTry(self: *const @This()) *S.Try { - return self.data.s_try; - } - pub inline fn getTypeScript(self: *const @This()) S.TypeScript { - return S.TypeScript{}; - } - pub inline fn getWhile(self: *const @This()) *S.While { - return self.data.s_while; - } - pub inline fn getWith(self: *const @This()) *S.With { - return self.data.s_with; - } pub var icount: usize = 0; pub fn init(comptime StatementType: type, origData: *StatementType, loc: logger.Loc) Stmt { icount += 1; - - if (StatementType == S.Empty) { - return Stmt{ .loc = loc, .data = Data{ .s_empty = S.Empty{} } }; - } - - switch (StatementType) { - S.Block => { - return Stmt.comptime_init("s_block", S.Block, origData, loc); - }, - S.Break => { - return Stmt.comptime_init("s_break", S.Break, origData, loc); - }, - S.Class => { - return Stmt.comptime_init("s_class", S.Class, origData, loc); - }, - S.Comment => { - return Stmt.comptime_init("s_comment", S.Comment, origData, loc); - }, - S.Continue => { - return Stmt.comptime_init("s_continue", S.Continue, origData, loc); - }, - S.Debugger => { - return Stmt.comptime_init("s_debugger", S.Debugger, origData, loc); - }, - S.Directive => { - return Stmt.comptime_init("s_directive", S.Directive, origData, loc); - }, - S.DoWhile => { - return Stmt.comptime_init("s_do_while", S.DoWhile, origData, loc); - }, - S.Empty => { - return Stmt.comptime_init("s_empty", S.Empty, origData, loc); - }, - S.Enum => { - return Stmt.comptime_init("s_enum", S.Enum, origData, loc); - }, - S.ExportClause => { - return Stmt.comptime_init("s_export_clause", S.ExportClause, origData, loc); - }, - S.ExportDefault => { - return Stmt.comptime_init("s_export_default", S.ExportDefault, origData, loc); - }, - S.ExportEquals => { - return Stmt.comptime_init("s_export_equals", S.ExportEquals, origData, loc); - }, - S.ExportFrom => { - return Stmt.comptime_init("s_export_from", S.ExportFrom, origData, loc); - }, - S.ExportStar => { - return Stmt.comptime_init("s_export_star", S.ExportStar, origData, loc); - }, - S.SExpr => { - return Stmt.comptime_init("s_expr", S.SExpr, origData, loc); - }, - S.ForIn => { - return Stmt.comptime_init("s_for_in", S.ForIn, origData, loc); - }, - S.ForOf => { - return Stmt.comptime_init("s_for_of", S.ForOf, origData, loc); - }, - S.For => { - return Stmt.comptime_init("s_for", S.For, origData, loc); - }, - S.Function => { - return Stmt.comptime_init("s_function", S.Function, origData, loc); - }, - S.If => { - return Stmt.comptime_init("s_if", S.If, origData, loc); - }, - S.Import => { - return Stmt.comptime_init("s_import", S.Import, origData, loc); - }, - S.Label => { - return Stmt.comptime_init("s_label", S.Label, origData, loc); - }, - S.LazyExport => { - return Stmt.comptime_init("s_lazy_export", S.LazyExport, origData, loc); - }, - S.Local => { - return Stmt.comptime_init("s_local", S.Local, origData, loc); - }, - S.Namespace => { - return Stmt.comptime_init("s_namespace", S.Namespace, origData, loc); - }, - S.Return => { - return Stmt.comptime_init("s_return", S.Return, origData, loc); - }, - S.Switch => { - return Stmt.comptime_init("s_switch", S.Switch, origData, loc); - }, - S.Throw => { - return Stmt.comptime_init("s_throw", S.Throw, origData, loc); - }, - S.Try => { - return Stmt.comptime_init("s_try", S.Try, origData, loc); - }, - S.TypeScript => { - return Stmt.comptime_init("s_type_script", S.TypeScript, origData, loc); - }, - S.While => { - return Stmt.comptime_init("s_while", S.While, origData, loc); - }, - S.With => { - return Stmt.comptime_init("s_with", S.With, origData, loc); - }, - else => { - @compileError("Invalid type in Stmt.init"); - }, - } + return switch (comptime StatementType) { + S.Empty => Stmt{ .loc = loc, .data = Data{ .s_empty = S.Empty{} } }, + S.Block => Stmt.comptime_init("s_block", S.Block, origData, loc), + S.Break => Stmt.comptime_init("s_break", S.Break, origData, loc), + S.Class => Stmt.comptime_init("s_class", S.Class, origData, loc), + S.Comment => Stmt.comptime_init("s_comment", S.Comment, origData, loc), + S.Continue => Stmt.comptime_init("s_continue", S.Continue, origData, loc), + S.Debugger => Stmt.comptime_init("s_debugger", S.Debugger, origData, loc), + S.Directive => Stmt.comptime_init("s_directive", S.Directive, origData, loc), + S.DoWhile => Stmt.comptime_init("s_do_while", S.DoWhile, origData, loc), + S.Empty => Stmt.comptime_init("s_empty", S.Empty, origData, loc), + S.Enum => Stmt.comptime_init("s_enum", S.Enum, origData, loc), + S.ExportClause => Stmt.comptime_init("s_export_clause", S.ExportClause, origData, loc), + S.ExportDefault => Stmt.comptime_init("s_export_default", S.ExportDefault, origData, loc), + S.ExportEquals => Stmt.comptime_init("s_export_equals", S.ExportEquals, origData, loc), + S.ExportFrom => Stmt.comptime_init("s_export_from", S.ExportFrom, origData, loc), + S.ExportStar => Stmt.comptime_init("s_export_star", S.ExportStar, origData, loc), + S.SExpr => Stmt.comptime_init("s_expr", S.SExpr, origData, loc), + S.ForIn => Stmt.comptime_init("s_for_in", S.ForIn, origData, loc), + S.ForOf => Stmt.comptime_init("s_for_of", S.ForOf, origData, loc), + S.For => Stmt.comptime_init("s_for", S.For, origData, loc), + S.Function => Stmt.comptime_init("s_function", S.Function, origData, loc), + S.If => Stmt.comptime_init("s_if", S.If, origData, loc), + S.Import => Stmt.comptime_init("s_import", S.Import, origData, loc), + S.Label => Stmt.comptime_init("s_label", S.Label, origData, loc), + S.LazyExport => Stmt.comptime_init("s_lazy_export", S.LazyExport, origData, loc), + S.Local => Stmt.comptime_init("s_local", S.Local, origData, loc), + S.Namespace => Stmt.comptime_init("s_namespace", S.Namespace, origData, loc), + S.Return => Stmt.comptime_init("s_return", S.Return, origData, loc), + S.Switch => Stmt.comptime_init("s_switch", S.Switch, origData, loc), + S.Throw => Stmt.comptime_init("s_throw", S.Throw, origData, loc), + S.Try => Stmt.comptime_init("s_try", S.Try, origData, loc), + S.TypeScript => Stmt.comptime_init("s_type_script", S.TypeScript, origData, loc), + S.While => Stmt.comptime_init("s_while", S.While, origData, loc), + S.With => Stmt.comptime_init("s_with", S.With, origData, loc), + else => @compileError("Invalid type in Stmt.init"), + }; } - inline fn comptime_alloc(allocator: *std.mem.Allocator, comptime tag_name: string, comptime typename: type, origData: anytype, loc: logger.Loc) Stmt { + inline fn comptime_alloc(comptime tag_name: string, comptime typename: type, origData: anytype, loc: logger.Loc) Stmt { return Stmt{ .loc = loc, .data = @unionInit(Data, tag_name, Data.Store.append(typename, origData)) }; } - inline fn comptime_init(comptime tag_name: string, comptime TypeName: type, origData: anytype, loc: logger.Loc) Stmt { + inline fn comptime_init(comptime tag_name: string, comptime TypeName: type, origData: TypeName, loc: logger.Loc) Stmt { return Stmt{ .loc = loc, .data = @unionInit(Data, tag_name, origData) }; } - pub fn alloc(allocator: *std.mem.Allocator, comptime StatementData: type, origData: StatementData, loc: logger.Loc) Stmt { + pub fn alloc(comptime StatementData: type, origData: StatementData, loc: logger.Loc) Stmt { icount += 1; - switch (StatementData) { - S.Block => { - return Stmt.comptime_alloc(allocator, "s_block", S.Block, origData, loc); - }, - S.Break => { - return Stmt.comptime_alloc(allocator, "s_break", S.Break, origData, loc); - }, - S.Class => { - return Stmt.comptime_alloc(allocator, "s_class", S.Class, origData, loc); - }, - S.Comment => { - return Stmt.comptime_alloc(allocator, "s_comment", S.Comment, origData, loc); - }, - S.Continue => { - return Stmt.comptime_alloc(allocator, "s_continue", S.Continue, origData, loc); - }, - S.Debugger => { - return Stmt{ .loc = loc, .data = .{ .s_debugger = origData } }; - }, - S.Directive => { - return Stmt.comptime_alloc(allocator, "s_directive", S.Directive, origData, loc); - }, - S.DoWhile => { - return Stmt.comptime_alloc(allocator, "s_do_while", S.DoWhile, origData, loc); - }, - S.Empty => { - return Stmt{ .loc = loc, .data = Data{ .s_empty = S.Empty{} } }; - }, - S.Enum => { - return Stmt.comptime_alloc(allocator, "s_enum", S.Enum, origData, loc); - }, - S.ExportClause => { - return Stmt.comptime_alloc(allocator, "s_export_clause", S.ExportClause, origData, loc); - }, - S.ExportDefault => { - return Stmt.comptime_alloc(allocator, "s_export_default", S.ExportDefault, origData, loc); - }, - S.ExportEquals => { - return Stmt.comptime_alloc(allocator, "s_export_equals", S.ExportEquals, origData, loc); - }, - S.ExportFrom => { - return Stmt.comptime_alloc(allocator, "s_export_from", S.ExportFrom, origData, loc); - }, - S.ExportStar => { - return Stmt.comptime_alloc(allocator, "s_export_star", S.ExportStar, origData, loc); - }, - S.SExpr => { - return Stmt.comptime_alloc(allocator, "s_expr", S.SExpr, origData, loc); - }, - S.ForIn => { - return Stmt.comptime_alloc(allocator, "s_for_in", S.ForIn, origData, loc); - }, - S.ForOf => { - return Stmt.comptime_alloc(allocator, "s_for_of", S.ForOf, origData, loc); - }, - S.For => { - return Stmt.comptime_alloc(allocator, "s_for", S.For, origData, loc); - }, - S.Function => { - return Stmt.comptime_alloc(allocator, "s_function", S.Function, origData, loc); - }, - S.If => { - return Stmt.comptime_alloc(allocator, "s_if", S.If, origData, loc); - }, - S.Import => { - return Stmt.comptime_alloc(allocator, "s_import", S.Import, origData, loc); - }, - S.Label => { - return Stmt.comptime_alloc(allocator, "s_label", S.Label, origData, loc); - }, - S.LazyExport => { - return Stmt.comptime_alloc(allocator, "s_lazy_export", S.LazyExport, origData, loc); - }, - S.Local => { - return Stmt.comptime_alloc(allocator, "s_local", S.Local, origData, loc); - }, - S.Namespace => { - return Stmt.comptime_alloc(allocator, "s_namespace", S.Namespace, origData, loc); - }, - S.Return => { - return Stmt.comptime_alloc(allocator, "s_return", S.Return, origData, loc); - }, - S.Switch => { - return Stmt.comptime_alloc(allocator, "s_switch", S.Switch, origData, loc); - }, - S.Throw => { - return Stmt.comptime_alloc(allocator, "s_throw", S.Throw, origData, loc); - }, - S.Try => { - return Stmt.comptime_alloc(allocator, "s_try", S.Try, origData, loc); - }, - S.TypeScript => { - return Stmt{ .loc = loc, .data = Data{ .s_type_script = S.TypeScript{} } }; - }, - S.While => { - return Stmt.comptime_alloc(allocator, "s_while", S.While, origData, loc); - }, - S.With => { - return Stmt.comptime_alloc(allocator, "s_with", S.With, origData, loc); - }, - - else => { - @compileError("Invalid type in Stmt.init"); - }, - } + return switch (StatementData) { + S.Block => Stmt.comptime_alloc("s_block", S.Block, origData, loc), + S.Break => Stmt.comptime_alloc("s_break", S.Break, origData, loc), + S.Class => Stmt.comptime_alloc("s_class", S.Class, origData, loc), + S.Comment => Stmt.comptime_alloc("s_comment", S.Comment, origData, loc), + S.Continue => Stmt.comptime_alloc("s_continue", S.Continue, origData, loc), + S.Debugger => Stmt{ .loc = loc, .data = .{ .s_debugger = origData } }, + S.Directive => Stmt.comptime_alloc("s_directive", S.Directive, origData, loc), + S.DoWhile => Stmt.comptime_alloc("s_do_while", S.DoWhile, origData, loc), + S.Empty => Stmt{ .loc = loc, .data = Data{ .s_empty = S.Empty{} } }, + S.Enum => Stmt.comptime_alloc("s_enum", S.Enum, origData, loc), + S.ExportClause => Stmt.comptime_alloc("s_export_clause", S.ExportClause, origData, loc), + S.ExportDefault => Stmt.comptime_alloc("s_export_default", S.ExportDefault, origData, loc), + S.ExportEquals => Stmt.comptime_alloc("s_export_equals", S.ExportEquals, origData, loc), + S.ExportFrom => Stmt.comptime_alloc("s_export_from", S.ExportFrom, origData, loc), + S.ExportStar => Stmt.comptime_alloc("s_export_star", S.ExportStar, origData, loc), + S.SExpr => Stmt.comptime_alloc("s_expr", S.SExpr, origData, loc), + S.ForIn => Stmt.comptime_alloc("s_for_in", S.ForIn, origData, loc), + S.ForOf => Stmt.comptime_alloc("s_for_of", S.ForOf, origData, loc), + S.For => Stmt.comptime_alloc("s_for", S.For, origData, loc), + S.Function => Stmt.comptime_alloc("s_function", S.Function, origData, loc), + S.If => Stmt.comptime_alloc("s_if", S.If, origData, loc), + S.Import => Stmt.comptime_alloc("s_import", S.Import, origData, loc), + S.Label => Stmt.comptime_alloc("s_label", S.Label, origData, loc), + S.LazyExport => Stmt.comptime_alloc("s_lazy_export", S.LazyExport, origData, loc), + S.Local => Stmt.comptime_alloc("s_local", S.Local, origData, loc), + S.Namespace => Stmt.comptime_alloc("s_namespace", S.Namespace, origData, loc), + S.Return => Stmt.comptime_alloc("s_return", S.Return, origData, loc), + S.Switch => Stmt.comptime_alloc("s_switch", S.Switch, origData, loc), + S.Throw => Stmt.comptime_alloc("s_throw", S.Throw, origData, loc), + S.Try => Stmt.comptime_alloc("s_try", S.Try, origData, loc), + S.TypeScript => Stmt{ .loc = loc, .data = Data{ .s_type_script = S.TypeScript{} } }, + S.While => Stmt.comptime_alloc("s_while", S.While, origData, loc), + S.With => Stmt.comptime_alloc("s_with", S.With, origData, loc), + else => @compileError("Invalid type in Stmt.init"), + }; } pub const Tag = enum(u6) { @@ -1849,7 +1649,7 @@ pub const Stmt = struct { threadlocal var has_inited = false; pub threadlocal var disable_reset = false; - pub fn create(allocator: *std.mem.Allocator) void { + pub fn create(allocator: std.mem.Allocator) void { if (has_inited) { return; } @@ -1867,122 +1667,6 @@ pub const Stmt = struct { return All.append(ValueType, value); } }; - - pub inline fn set(data: *Data, value: anytype) void { - const ValueType = @TypeOf(value); - if (@typeInfo(ValueType) == .Pointer) { - data.setValue(@TypeOf(value.*), value.*); - } else { - data.setValue(@TypeOf(value), value); - } - } - - pub inline fn setValue(data: *Data, comptime ValueType: type, value: ValueType) void { - switch (comptime ValueType) { - S.Block => { - data.s_block = Block.append(value); - }, - S.Break => { - data.s_break = Break.append(value); - }, - S.Class => { - data.s_class = Class.append(value); - }, - S.Comment => { - data.s_comment = Comment.append(value); - }, - S.Continue => { - data.s_continue = Continue.append(value); - }, - S.Debugger => { - data.s_debugger = Debugger.append(value); - }, - S.Directive => { - data.s_directive = Directive.append(value); - }, - S.DoWhile => { - data.s_do_while = DoWhile.append(value); - }, - S.Empty => { - data.s_empty = Empty.append(value); - }, - S.Enum => { - data.s_enum = Enum.append(value); - }, - S.ExportClause => { - data.s_export_clause = ExportClause.append(value); - }, - S.ExportDefault => { - data.s_export_default = ExportDefault.append(value); - }, - S.ExportEquals => { - data.s_export_equals = ExportEquals.append(value); - }, - S.ExportFrom => { - data.s_export_from = ExportFrom.append(value); - }, - S.ExportStar => { - data.s_export_star = ExportStar.append(value); - }, - S.SExpr => { - data.s_s_expr = SExpr.append(value); - }, - S.ForIn => { - data.s_for_in = ForIn.append(value); - }, - S.ForOf => { - data.s_for_of = ForOf.append(value); - }, - S.For => { - data.s_for = For.append(value); - }, - S.Function => { - data.s_function = Function.append(value); - }, - S.If => { - data.s_if = If.append(value); - }, - S.Import => { - data.s_import = Import.append(value); - }, - S.Label => { - data.s_label = Label.append(value); - }, - S.LazyExport => { - data.s_lazy_export = LazyExport.append(value); - }, - S.Local => { - data.s_local = Local.append(value); - }, - S.Namespace => { - data.s_namespace = Namespace.append(value); - }, - S.Return => { - data.s_return = Return.append(value); - }, - S.Switch => { - data.s_switch = Switch.append(value); - }, - S.Throw => { - data.s_throw = Throw.append(value); - }, - S.Try => { - data.s_try = Try.append(value); - }, - S.TypeScript => { - data.s_type_script = value; - }, - S.While => { - data.s_while = While.append(value); - }, - S.With => { - data.s_with = With.append(value); - }, - else => { - @compileError("Invalid type passed to Stmt.Data.set " ++ @typeName(ValueType)); - }, - } - } }; pub fn caresAboutScope(self: *Stmt) bool { @@ -1992,7 +1676,7 @@ pub const Stmt = struct { }, .s_local => |local| { - return local.kind != Kind.k_var; + return local.kind != S.Kind.k_var; }, else => { return true; @@ -2022,114 +1706,13 @@ pub const Expr = struct { } pub const Query = struct { expr: Expr, loc: logger.Loc, i: u32 = 0 }; - pub fn getArray(exp: *const Expr) *E.Array { - return exp.data.e_array; - } - pub fn getUnary(exp: *const Expr) *E.Unary { - return exp.data.e_unary; - } - pub fn getBinary(exp: *const Expr) *E.Binary { - return exp.data.e_binary; - } - pub fn getThis(exp: *const Expr) *E.This { - return E.This{}; - } - pub fn getClass(exp: *const Expr) *E.Class { - return exp.data.e_class; - } - pub fn getBoolean(exp: *const Expr) *E.Boolean { - return exp.data.e_boolean; - } - pub fn getSuper(exp: *const Expr) *E.Super { - return exp.data.e_super; - } - pub fn getNull(exp: *const Expr) *E.Null { - return exp.data.e_null; - } - pub fn getUndefined(exp: *const Expr) *E.Undefined { - return exp.data.e_undefined; - } - pub fn getNew(exp: *const Expr) *E.New { - return exp.data.e_new; - } - pub fn getNewTarget(exp: *const Expr) *E.NewTarget { - return &E.NewTarget{}; - } - pub fn getFunction(exp: *const Expr) *E.Function { - return exp.data.e_function; - } - - pub fn getCall(exp: *const Expr) *E.Call { - return exp.data.e_call; - } - pub fn getDot(exp: *const Expr) *E.Dot { - return exp.data.e_dot; - } - pub fn getIndex(exp: *const Expr) *E.Index { - return exp.data.e_index; - } - pub fn getArrow(exp: *const Expr) *E.Arrow { - return exp.data.e_arrow; - } - pub fn getPrivateIdentifier(exp: *const Expr) *E.PrivateIdentifier { - return exp.data.e_private_identifier; - } - pub fn getJsxElement(exp: *const Expr) *E.JSXElement { - return exp.data.e_jsx_element; - } - pub fn getMissing(exp: *const Expr) *E.Missing { - return exp.data.e_missing; - } - pub fn getNumber(exp: *const Expr) E.Number { - return exp.data.e_number; - } - pub fn getBigInt(exp: *const Expr) E.BigInt { - return exp.data.e_big_int; - } - pub fn getObject(exp: *const Expr) *E.Object { - return exp.data.e_object; - } - pub fn getSpread(exp: *const Expr) *E.Spread { - return exp.data.e_spread; - } - pub fn getString(exp: *const Expr) E.String { - return exp.data.e_string; - } - pub fn getTemplatePart(exp: *const Expr) *E.TemplatePart { - return exp.data.e_template_part; - } - pub fn getTemplate(exp: *const Expr) *E.Template { - return exp.data.e_template; - } - pub fn getRegExp(exp: *const Expr) *E.RegExp { - return exp.data.e_reg_exp; - } - pub fn getAwait(exp: *const Expr) *E.Await { - return exp.data.e_await; - } - pub fn getYield(exp: *const Expr) *E.Yield { - return exp.data.e_yield; - } - pub fn getIf(exp: *const Expr) *E.If { - return exp.data.e_if; - } - pub fn getRequire(exp: *const Expr) *E.Require { - return exp.data.e_require; - } - pub fn getRequireOrRequireResolve(exp: *const Expr) *E.RequireOrRequireResolve { - return exp.data.e_require_or_require_resolve; - } - pub fn getImport(exp: *const Expr) *E.Import { - return exp.data.e_import; - } - pub fn hasAnyPropertyNamed(expr: *const Expr, comptime names: []const string) bool { if (std.meta.activeTag(expr.data) != .e_object) return false; const obj = expr.data.e_object; if (@ptrToInt(obj.properties.ptr) == 0) return false; for (obj.properties) |prop| { - const value = prop.value orelse continue; + if (prop.value == null) continue; const key = prop.key orelse continue; if (std.meta.activeTag(key.data) != .e_string) continue; const key_str = key.data.e_string; @@ -2183,7 +1766,7 @@ pub const Expr = struct { return ArrayIterator{ .array = array, .index = 0 }; } - pub inline fn asString(expr: *const Expr, allocator: *std.mem.Allocator) ?string { + pub inline fn asString(expr: *const Expr, allocator: std.mem.Allocator) ?string { if (std.meta.activeTag(expr.data) != .e_string) return null; const key_str = expr.data.e_string; @@ -2222,7 +1805,7 @@ pub const Expr = struct { comptime op: Op.Code, a: Expr, b: Expr, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) Expr { // "(a, b) op c" => "a, b op c" switch (a.data) { @@ -2255,7 +1838,7 @@ pub const Expr = struct { return Expr.init(E.Binary, E.Binary{ .op = op, .left = a, .right = b }, a.loc); } - pub fn joinWithComma(a: Expr, b: Expr, allocator: *std.mem.Allocator) Expr { + pub fn joinWithComma(a: Expr, b: Expr, _: std.mem.Allocator) Expr { if (a.isMissing()) { return b; } @@ -2267,7 +1850,7 @@ pub const Expr = struct { return Expr.init(E.Binary, E.Binary{ .op = .bin_comma, .left = a, .right = b }, a.loc); } - pub fn joinAllWithComma(all: []Expr, allocator: *std.mem.Allocator) Expr { + pub fn joinAllWithComma(all: []Expr, allocator: std.mem.Allocator) Expr { std.debug.assert(all.len > 0); switch (all.len) { 1 => { @@ -2288,7 +1871,7 @@ pub const Expr = struct { } } - pub fn joinAllWithCommaCallback(all: []Expr, comptime Context: type, ctx: Context, callback: (fn (ctx: anytype, expr: anytype) ?Expr), allocator: *std.mem.Allocator) ?Expr { + pub fn joinAllWithCommaCallback(all: []Expr, comptime Context: type, ctx: Context, callback: (fn (ctx: anytype, expr: anytype) ?Expr), allocator: std.mem.Allocator) ?Expr { std.debug.assert(all.len > 0); switch (all.len) { 1 => { @@ -2578,7 +2161,7 @@ pub const Expr = struct { }; }, E.String => { - if (comptime isDebug) { + if (comptime Environment.isDebug) { // Sanity check: assert string is not a null ptr if (st.isUTF8() and st.utf8.len > 0) { std.debug.assert(@ptrToInt(st.utf8.ptr) > 0); @@ -3110,14 +2693,14 @@ pub const Expr = struct { return false; } - pub fn assign(a: Expr, b: Expr, allocator: *std.mem.Allocator) Expr { + pub fn assign(a: Expr, b: Expr, _: std.mem.Allocator) Expr { return init(E.Binary, E.Binary{ .op = .bin_assign, .left = a, .right = b, }, a.loc); } - pub inline fn at(expr: Expr, comptime Type: type, t: Type, allocator: *std.mem.Allocator) Expr { + pub inline fn at(expr: Expr, comptime Type: type, t: Type, _: std.mem.Allocator) Expr { return init(Type, t, expr.loc); } @@ -3125,7 +2708,7 @@ pub const Expr = struct { // will potentially be simplified to avoid generating unnecessary extra "!" // operators. For example, calling this with "!!x" will return "!x" instead // of returning "!!!x". - pub fn not(expr: *Expr, allocator: *std.mem.Allocator) Expr { + pub fn not(expr: *Expr, allocator: std.mem.Allocator) Expr { return maybeSimplifyNot(expr, allocator) orelse expr.*; } @@ -3141,7 +2724,7 @@ pub const Expr = struct { // whole operator (i.e. the "!x") if it can be simplified, or false if not. // It's separate from "Not()" above to avoid allocation on failure in case // that is undesired. - pub fn maybeSimplifyNot(expr: *Expr, allocator: *std.mem.Allocator) ?Expr { + pub fn maybeSimplifyNot(expr: *Expr, allocator: std.mem.Allocator) ?Expr { switch (expr.data) { .e_null, .e_undefined => { return expr.at(E.Boolean, E.Boolean{ .value = true }, allocator); @@ -3203,9 +2786,8 @@ pub const Expr = struct { return null; } - pub fn assignStmt(a: Expr, b: Expr, allocator: *std.mem.Allocator) Stmt { + pub fn assignStmt(a: Expr, b: Expr, allocator: std.mem.Allocator) Stmt { return Stmt.alloc( - allocator, S.SExpr, S.SExpr{ .value = Expr.assign(a, b, allocator), @@ -3216,9 +2798,9 @@ pub const Expr = struct { pub fn isOptionalChain(self: *const @This()) bool { return switch (self.data) { - .e_dot => self.getDot().optional_chain != null, - .e_index => self.getIndex().optional_chain != null, - .e_call => self.getCall().optional_chain != null, + .e_dot => self.data.e_dot.optional_chain != null, + .e_index => self.data.e_index.optional_chain != null, + .e_call => self.data.e_call.optional_chain != null, else => false, }; } @@ -3308,7 +2890,7 @@ pub const Expr = struct { threadlocal var has_inited = false; pub threadlocal var disable_reset = false; - pub fn create(allocator: *std.mem.Allocator) void { + pub fn create(allocator: std.mem.Allocator) void { if (has_inited) { return; } @@ -3324,29 +2906,13 @@ pub const Expr = struct { pub fn append(comptime ValueType: type, value: anytype) *ValueType { if (ValueType == E.Identifier) { - return Identifier.append(ValueType, value); + return E.Identifier.append(ValueType, value); } else { return All.append(ValueType, value); } } }; - pub fn isBooleanValue(self: *Expr) bool { - // TODO: - return false; - // return switch (self) { - // Expr.e_boolean => |dot| true, - // Expr.e_if => |dot| dot.optional_chain != OptionalChain.none, - // Expr.e_call => |dot| dot.optional_chain != OptionalChain.none, - // else => false, - // }; - } - - pub fn isNumericValue(self: *Expr) bool { - // TODO: - - return false; - } pub inline fn isStringValue(self: Data) bool { return @as(Expr.Tag, self) == .e_string; } @@ -3408,8 +2974,10 @@ pub const S = struct { is_single_line: bool, }; - pub const ExportDefault = struct { default_name: LocRef, // value may be a SFunction or SClass - value: StmtOrExpr }; + pub const ExportDefault = struct { + default_name: LocRef, // value may be a SFunction or SClass + value: StmtOrExpr, + }; pub const Enum = struct { name: LocRef, @@ -3438,12 +3006,19 @@ pub const S = struct { }; pub const For = struct { - // May be a SConst, SLet, SVar, or SExpr - init: ?StmtNodeIndex = null, test_: ?ExprNodeIndex = null, update: ?ExprNodeIndex = null, body: StmtNodeIndex }; + // May be a SConst, SLet, SVar, or SExpr + init: ?StmtNodeIndex = null, + test_: ?ExprNodeIndex = null, + update: ?ExprNodeIndex = null, + body: StmtNodeIndex, + }; pub const ForIn = struct { - // May be a SConst, SLet, SVar, or SExpr - init: StmtNodeIndex, value: ExprNodeIndex, body: StmtNodeIndex }; + // May be a SConst, SLet, SVar, or SExpr + init: StmtNodeIndex, + value: ExprNodeIndex, + body: StmtNodeIndex, + }; pub const ForOf = struct { is_await: bool = false, @@ -3840,7 +3415,6 @@ pub const Ast = struct { // is conveniently fully parallelized. named_imports: NamedImports = undefined, named_exports: NamedExports = undefined, - top_level_symbol_to_parts: AutoHashMap(Ref, std.ArrayList(u32)) = undefined, export_star_import_records: []u32 = &([_]u32{}), pub const NamedImports = std.ArrayHashMap(Ref, NamedImport, RefHashCtx, true); @@ -3855,7 +3429,7 @@ pub const Ast = struct { pub const empty = Ast{ .parts = &[_]Part{}, .runtime_imports = undefined }; - pub fn toJSON(self: *const Ast, allocator: *std.mem.Allocator, stream: anytype) !void { + pub fn toJSON(self: *const Ast, _: std.mem.Allocator, stream: anytype) !void { const opts = std.json.StringifyOptions{ .whitespace = std.json.StringifyOptions.Whitespace{ .separator = true, } }; @@ -3900,10 +3474,6 @@ pub const ExportsKind = enum { } }; -pub fn isDynamicExport(exp: ExportsKind) bool { - return kind == .cjs || kind == .esm_with_dyn; -} - pub const DeclaredSymbol = struct { ref: Ref, is_top_level: bool = false, @@ -3964,7 +3534,7 @@ pub const Part = struct { jsx_import, }; - pub const SymbolUseMap = AutoHashMap(Ref, Symbol.Use); + pub const SymbolUseMap = _hash_map.AutoHashMapUnmanaged(Ref, Symbol.Use); pub fn jsonStringify(self: *const Part, options: std.json.StringifyOptions, writer: anytype) !void { return std.json.stringify(self.stmts, options, writer); } @@ -4021,9 +3591,9 @@ pub const Scope = struct { id: usize = 0, kind: Kind = Kind.block, parent: ?*Scope, - children: std.ArrayList(*Scope), - members: StringHashMap(Member), - generated: std.ArrayList(Ref), + children: std.ArrayListUnmanaged(*Scope) = .{}, + members: StringHashMapUnmanaged(Member) = .{}, + generated: std.ArrayListUnmanaged(Ref) = .{}, // This is used to store the ref of the label symbol for ScopeLabel scopes. label_ref: ?Ref = null, @@ -4064,6 +3634,95 @@ pub const Scope = struct { } }; + pub const SymbolMergeResult = enum { + forbidden, + replace_with_new, + overwrite_with_new, + keep_existing, + become_private_get_set_pair, + become_private_static_get_set_pair, + }; + pub fn canMergeSymbols( + scope: *Scope, + existing: Symbol.Kind, + new: Symbol.Kind, + comptime is_typescript_enabled: bool, + ) SymbolMergeResult { + if (existing == .unbound) { + return .replace_with_new; + } + + if (comptime is_typescript_enabled) { + // In TypeScript, imports are allowed to silently collide with symbols within + // the module. Presumably this is because the imports may be type-only: + // + // import {Foo} from 'bar' + // class Foo {} + // + if (existing == .import) { + return .replace_with_new; + } + + // "enum Foo {} enum Foo {}" + // "namespace Foo { ... } enum Foo {}" + if (new == .ts_enum and (existing == .ts_enum or existing == .ts_namespace)) { + return .replace_with_new; + } + + // "namespace Foo { ... } namespace Foo { ... }" + // "function Foo() {} namespace Foo { ... }" + // "enum Foo {} namespace Foo { ... }" + if (new == .ts_namespace) { + switch (existing) { + .ts_namespace, .hoisted_function, .generator_or_async_function, .ts_enum, .class => { + return .keep_existing; + }, + else => {}, + } + } + } + + // "var foo; var foo;" + // "var foo; function foo() {}" + // "function foo() {} var foo;" + // "function *foo() {} function *foo() {}" but not "{ function *foo() {} function *foo() {} }" + if (Symbol.isKindHoistedOrFunction(new) and Symbol.isKindHoistedOrFunction(existing) and (scope.kind == .entry or scope.kind == .function_body or + (Symbol.isKindHoisted(new) and Symbol.isKindHoisted(existing)))) + { + return .keep_existing; + } + + // "get #foo() {} set #foo() {}" + // "set #foo() {} get #foo() {}" + if ((existing == .private_get and new == .private_set) or + (existing == .private_set and new == .private_get)) + { + return .become_private_get_set_pair; + } + if ((existing == .private_static_get and new == .private_static_set) or + (existing == .private_static_set and new == .private_static_get)) + { + return .become_private_static_get_set_pair; + } + + // "try {} catch (e) { var e }" + if (existing == .catch_identifier and new == .hoisted) { + return .replace_with_new; + } + + // "function() { var arguments }" + if (existing == .arguments and new == .hoisted) { + return .keep_existing; + } + + // "function() { let arguments }" + if (existing == .arguments and new != .hoisted) { + return .overwrite_with_new; + } + + return .forbidden; + } + pub const Kind = enum(u8) { block, with, @@ -4109,7 +3768,7 @@ pub const Macro = struct { const isPackagePath = @import("./resolver/resolver.zig").isPackagePath; const ResolveResult = @import("./resolver/resolver.zig").Result; const DotEnv = @import("./env_loader.zig"); - const js = @import("./javascript/jsc/JavascriptCore.zig"); + const js = @import("./javascript/jsc/javascript_core_c_api.zig"); const Zig = @import("./javascript/jsc/bindings/exports.zig"); const Bundler = @import("./bundler.zig").Bundler; const MacroEntryPoint = @import("./bundler.zig").MacroEntryPoint; @@ -4316,7 +3975,7 @@ pub const Macro = struct { }, ); - pub fn makeFromExpr(allocator: *std.mem.Allocator, expr: Expr) js.JSObjectRef { + pub fn makeFromExpr(allocator: std.mem.Allocator, expr: Expr) js.JSObjectRef { var ptr = allocator.create(JSNode) catch unreachable; ptr.* = JSNode.initExpr(expr); // If we look at JSObjectMake, we can see that all it does with the ctx value is lookup what the global object is @@ -4354,8 +4013,8 @@ pub const Macro = struct { pub fn getCallArgs( this: *JSNode, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, + _: js.JSValueRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSObjectRef { const args = this.data.callArgs(); @@ -4382,9 +4041,9 @@ pub const Macro = struct { pub fn getProperties( this: *JSNode, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { if (this.data != .e_object) { return js.JSObjectMake(ctx, null, null); @@ -4398,8 +4057,8 @@ pub const Macro = struct { pub fn getPropertyNodes( this: *JSNode, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, + _: js.JSValueRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSObjectRef { const args = if (this.data == .e_object) this.data.e_object.properties else &[_]G.Property{}; @@ -4424,9 +4083,9 @@ pub const Macro = struct { pub fn getModuleNamespace( this: *JSNode, ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { if (this.data != .s_import) return js.JSValueMakeUndefined(ctx); @@ -4435,11 +4094,11 @@ pub const Macro = struct { return ModuleNamespace.Class.make(ctx, module_namespace); } - fn toNumberValue(this: *JSNode, number: E.Number) js.JSValueRef { + fn toNumberValue(_: *JSNode, number: E.Number) js.JSValueRef { return JSC.JSValue.jsNumberFromDouble(number.value).asRef(); } - fn toStringValue(this: *JSNode, ctx: js.JSContextRef, str: E.String) js.JSObjectRef { + fn toStringValue(_: *JSNode, ctx: js.JSContextRef, str: E.String) js.JSObjectRef { if (str.isBlank()) { return JSC.ZigString.init("").toValue(JavaScript.VirtualMachine.vm.global).asRef(); } @@ -4453,7 +4112,7 @@ pub const Macro = struct { threadlocal var regex_value_array: [2]js.JSValueRef = undefined; - fn toRegexValue(this: *JSNode, ctx: js.JSContextRef, regex: *E.RegExp, exception: js.ExceptionRef) js.JSObjectRef { + fn toRegexValue(_: *JSNode, ctx: js.JSContextRef, regex: *E.RegExp, exception: js.ExceptionRef) js.JSObjectRef { if (regex.value.len == 0) { return js.JSObjectMakeRegExp(ctx, 0, null, exception); } @@ -4464,7 +4123,7 @@ pub const Macro = struct { return js.JSObjectMakeRegExp(ctx, 2, ®ex_value_array, exception); } - fn toArrayValue(this: *JSNode, ctx: js.JSContextRef, array: E.Array, exception: js.ExceptionRef) js.JSObjectRef { + fn toArrayValue(_: *JSNode, ctx: js.JSContextRef, array: E.Array, exception: js.ExceptionRef) js.JSObjectRef { if (array.items.len == 0) { return js.JSObjectMakeArray(ctx, 0, null, exception); } @@ -4478,7 +4137,7 @@ pub const Macro = struct { return js.JSObjectMakeArray(ctx, array.items.len, &temporary_call_args_array, exception); } - fn toArrayPrimitive(this: *JSNode, ctx: js.JSContextRef, array: E.Array, exception: js.ExceptionRef) js.JSObjectRef { + fn toArrayPrimitive(_: *JSNode, ctx: js.JSContextRef, array: E.Array, exception: js.ExceptionRef) js.JSObjectRef { if (array.items.len == 0) { return js.JSObjectMakeArray(ctx, 0, null, exception); } @@ -4523,13 +4182,13 @@ pub const Macro = struct { return js.JSObjectMakeArray(ctx, properties_list.len, properties_list.ptr, exception); } - fn toObjectPrimitive(this: *JSNode, ctx: js.JSContextRef, obj: E.Object, exception: js.ExceptionRef) js.JSObjectRef { + fn toObjectPrimitive(this: *JSNode, ctx: js.JSContextRef, _: E.Object, _: js.ExceptionRef) js.JSObjectRef { var lazy = getAllocator(ctx).create(LazyPropertiesObject) catch unreachable; lazy.* = LazyPropertiesObject{ .node = this.* }; return LazyPropertiesObject.Class.make(ctx, lazy); } - fn toPropertyPrimitive(this: *JSNode, ctx: js.JSContextRef, prop: G.Property, exception: js.ExceptionRef) js.JSObjectRef { + fn toPropertyPrimitive(_: *JSNode, ctx: js.JSContextRef, prop: G.Property, exception: js.ExceptionRef) js.JSObjectRef { var entries: [3]js.JSValueRef = undefined; entries[0] = js.JSValueMakeUndefined(ctx); @@ -4572,10 +4231,10 @@ pub const Macro = struct { pub fn toString( this: *JSNode, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, - exception: js.ExceptionRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, + _: js.ExceptionRef, ) js.JSObjectRef { switch (this.data) { .e_string => |str| { @@ -4619,7 +4278,7 @@ pub const Macro = struct { return @call(.{ .modifier = .always_inline }, toPrimitiveAllowRecursion, .{ this, ctx, exception, true }); } - fn toPrimitiveAllowRecursion(this: *JSNode, ctx: js.JSContextRef, exception: js.ExceptionRef, comptime allow_recursion: bool) js.JSValueRef { + fn toPrimitiveAllowRecursion(this: *JSNode, ctx: js.JSContextRef, exception: js.ExceptionRef, comptime _: bool) js.JSValueRef { switch (this.data) { .e_string => |str| { return JSBindings.toStringValue(this, ctx, str.*); @@ -4686,7 +4345,7 @@ pub const Macro = struct { this: *JSNode, ctx: js.JSContextRef, thisObject: js.JSValueRef, - prop: js.JSStringRef, + _: js.JSStringRef, exception: js.ExceptionRef, ) js.JSObjectRef { return toValue(this, ctx, exception) orelse return thisObject; @@ -4695,9 +4354,9 @@ pub const Macro = struct { pub fn get( this: *JSNode, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, - arguments: []const js.JSValueRef, + _: js.JSObjectRef, + _: js.JSObjectRef, + _: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { return toPrimitiveWithRecursion(this, ctx, exception) orelse return js.JSValueMakeUndefined(ctx); @@ -4705,28 +4364,28 @@ pub const Macro = struct { pub fn getTag( this: *JSNode, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { return JSC.JSValue.jsNumberFromU16(@intCast(u16, @enumToInt(std.meta.activeTag(this.data)))).asRef(); } pub fn getTagName( this: *JSNode, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { return JSC.ZigString.init(@tagName(this.data)).toValue(JavaScript.VirtualMachine.vm.global).asRef(); } pub fn getPosition( this: *JSNode, - ctx: js.JSContextRef, - thisObject: js.JSValueRef, - prop: js.JSStringRef, - exception: js.ExceptionRef, + _: js.JSContextRef, + _: js.JSValueRef, + _: js.JSStringRef, + _: js.ExceptionRef, ) js.JSObjectRef { return JSC.JSValue.jsNumberFromInt32(this.loc.start).asRef(); } @@ -4843,7 +4502,7 @@ pub const Macro = struct { return JSNode{ .loc = this.loc, .data = .{ .inline_identifier = value } }; }, else => { - if (comptime isDebug) { + if (comptime Environment.isDebug) { Output.prettyWarnln("initExpr fail: {s}", .{@tagName(this.data)}); } return JSNode{ .loc = this.loc, .data = .{ .e_missing = .{} } }; @@ -5314,7 +4973,7 @@ pub const Macro = struct { log: *logger.Log, args: ExprList, bun_identifier: *E.Identifier, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, parent_tag: Tag = Tag.e_missing, pub fn initWriter(p: *P, bun_identifier: *E.Identifier) JSXWriter { @@ -5352,8 +5011,6 @@ pub const Macro = struct { return null; } - pub fn writeExprType(self: *JSXWriter, expr: Expr) bool {} - pub fn writeNodeType(self: *JSXWriter, tag: JSNode.Tag, props: []G.Property, children: []Expr, loc: logger.Loc) bool { switch (tag) { @@ -5480,7 +5137,7 @@ pub const Macro = struct { .e_string => |str| { self.args.appendAssumeCapacity(Expr.init(E.BigInt, E.BigInt{ .value = std.mem.trimRight(u8, str.utf8, "n") }, value.loc)); }, - .e_big_int => |bigint| { + .e_big_int => { self.args.appendAssumeCapacity(value); }, .e_missing => { @@ -5512,7 +5169,7 @@ pub const Macro = struct { var old_parent = self.parent_tag; self.parent_tag = Tag.e_array; defer self.parent_tag = old_parent; - for (children) |child, i| { + for (children) |child| { switch (child.data) { .e_jsx_element => |el| { if (!self.writeElement(el.*)) return false; @@ -5552,7 +5209,7 @@ pub const Macro = struct { self.parent_tag = Tag.e_object; defer self.parent_tag = old_parent; - for (children) |child, i| { + for (children) |child| { switch (child.data) { .e_jsx_element => |el| { if (!self.writeElementWithValidTagList(el.*, comptime Tag.Validator.valid_object_tags)) return false; @@ -5595,7 +5252,6 @@ pub const Macro = struct { self.parent_tag = Tag.g_property; defer self.parent_tag = old_parent; - var is_spread = false; if (value_property) |prop| { switch (prop.data) { .e_jsx_element => |el| { @@ -5636,7 +5292,7 @@ pub const Macro = struct { .e_jsx_element => |el| { if (!self.writeElement(el.*)) return false; }, - .e_string => |str| { + .e_string => { self.args.append(prop) catch unreachable; }, .e_template, .e_if, .e_spread, .e_identifier, .e_import_identifier, .e_index, .e_call, .e_private_identifier, .e_dot, .e_unary, .e_binary => { @@ -5933,7 +5589,7 @@ pub const Macro = struct { }, }); - for (children) |child, i| { + for (children) |child| { switch (child.data) { .e_jsx_element => |el| { if (!self.writeElement(el.*)) return false; @@ -6017,7 +5673,7 @@ pub const Macro = struct { pub fn writeFunctionCall(self: *JSXWriter, element: E.JSXElement) Expr { if (element.tag) |tag_expr| { switch (tag_expr.data) { - .e_string => |str| { + .e_string => { self.p.recordUsage(self.bun_jsx_ref); _ = self.writeElement(element); var call_args = self.p.allocator.alloc(Expr, 1) catch unreachable; @@ -6066,14 +5722,6 @@ pub const Macro = struct { return Expr{ .data = .{ .e_missing = .{} }, .loc = logger.Loc.Empty }; } - pub fn writeRootElement(self: JSXWriter, element: E.JSXElement) Expr { - var tag = element.tag orelse E.Array{ .items = &.{} }; - switch (tag.data) { - .e_string, .e_array => {}, - else => {}, - } - } - fn writeElementWithValidTagList(self: *JSXWriter, element: E.JSXElement, comptime valid_tags: Tag.Validator.List) bool { const tag_expr = element.tag orelse return false; if (tag_expr.data != .e_string) return false; @@ -6131,7 +5779,7 @@ pub const Macro = struct { exception: JSCBase.ExceptionValueRef = null, ctx: js.JSContextRef, errored: bool = false, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, loc: logger.Loc, args_value: JSC.JSValue, args_i: u32 = 0, @@ -6370,7 +6018,6 @@ pub const Macro = struct { const ptr = js.JSStringGetCharacters8Ptr(prop); const len = js.JSStringGetLength(prop); const name = ptr[0..len]; - const i = iter.i - 1; const property_value = JSC.JSValue.fromRef(js.JSObjectGetProperty(writer.ctx, object_ref, prop, writer.exception)); @@ -6456,9 +6103,7 @@ pub const Macro = struct { TagOrJSNode.node => |node_| { const node: JSNode = node_; switch (node.data) { - JSNode.Tag.s_import => |import| { - return false; - }, + JSNode.Tag.s_import => return false, else => { items.items[i] = node.toExpr(); }, @@ -6479,9 +6124,7 @@ pub const Macro = struct { TagOrJSNode.node => |node_| { const node: JSNode = node_; switch (node.data) { - JSNode.Tag.s_import => |import| { - return false; - }, + JSNode.Tag.s_import => return false, else => { items.items[i] = node.toExpr(); }, @@ -6761,10 +6404,10 @@ pub const Macro = struct { ); pub fn isNodeType( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { @@ -6798,10 +6441,10 @@ pub const Macro = struct { } pub fn createFromJavaScript( - this: void, + _: void, ctx: js.JSContextRef, - function: js.JSObjectRef, - thisObject: js.JSObjectRef, + _: js.JSObjectRef, + _: js.JSObjectRef, arguments: []const js.JSValueRef, exception: js.ExceptionRef, ) js.JSObjectRef { @@ -6891,7 +6534,7 @@ pub const Macro = struct { } pub fn hasProperty( - ctx: js.JSContextRef, + _: js.JSContextRef, thisObject: js.JSObjectRef, propertyName: js.JSStringRef, ) callconv(.C) bool { @@ -6914,7 +6557,7 @@ pub const Macro = struct { } pub fn getPropertyNames( - ctx: js.JSContextRef, + _: js.JSContextRef, thisObject: js.JSObjectRef, props: js.JSPropertyNameAccumulatorRef, ) callconv(.C) void { @@ -6958,7 +6601,7 @@ pub const Macro = struct { ctx: js.JSContextRef, thisObject: js.JSObjectRef, propertyName: js.JSStringRef, - exception: js.ExceptionRef, + _: js.ExceptionRef, ) callconv(.C) js.JSValueRef { var this: *ModuleNamespace = JSCBase.GetJSPrivateData(ModuleNamespace, thisObject) orelse return null; @@ -6966,7 +6609,6 @@ pub const Macro = struct { const properties = this.import_data.import.items; var ptr = js.JSStringGetCharacters8Ptr(propertyName); var property_slice = ptr[0..len]; - var value_node: JSNode = undefined; for (properties) |property| { if (strings.eql(property.original_name, property_slice)) { @@ -6978,7 +6620,7 @@ pub const Macro = struct { } pub fn hasProperty( - ctx: js.JSContextRef, + _: js.JSContextRef, thisObject: js.JSObjectRef, propertyName: js.JSStringRef, ) callconv(.C) bool { @@ -6997,7 +6639,7 @@ pub const Macro = struct { } pub fn getPropertyNames( - ctx: js.JSContextRef, + _: js.JSContextRef, thisObject: js.JSObjectRef, props: js.JSPropertyNameAccumulatorRef, ) callconv(.C) void { @@ -7019,7 +6661,7 @@ pub const Macro = struct { disabled: bool = false, pub fn init( - allocator: *std.mem.Allocator, + _: std.mem.Allocator, resolver: *Resolver, resolved: ResolveResult, log: *logger.Log, @@ -7075,17 +6717,17 @@ pub const Macro = struct { threadlocal var exception_holder: Zig.ZigException.Holder = undefined; pub fn run( macro: Macro, - log: *logger.Log, - allocator: *std.mem.Allocator, + _: *logger.Log, + _: std.mem.Allocator, function_name: string, caller: Expr, args: []Expr, - source: *const logger.Source, + _: *const logger.Source, id: i32, comptime Visitor: type, visitor: Visitor, ) Expr { - if (comptime isDebug) Output.prettyln("<r><d>[macro]<r> call <d><b>{s}<r>", .{function_name}); + if (comptime Environment.isDebug) Output.prettyln("<r><d>[macro]<r> call <d><b>{s}<r>", .{function_name}); exception_holder = Zig.ZigException.Holder.init(); expr_nodes_buf[0] = JSNode.initExpr(caller); diff --git a/src/js_lexer.zig b/src/js_lexer.zig index 92acc0dd1..5191d7095 100644 --- a/src/js_lexer.zig +++ b/src/js_lexer.zig @@ -4,8 +4,19 @@ const tables = @import("js_lexer_tables.zig"); const build_options = @import("build_options"); const js_ast = @import("js_ast.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const CodePoint = _global.CodePoint; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const FeatureFlags = @import("feature_flags.zig"); +const JavascriptString = []const u16; const unicode = std.unicode; @@ -66,7 +77,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { // err: ?LexerType.Error, log: *logger.Log, - source: *const logger.Source, + source: logger.Source, current: usize = 0, start: usize = 0, end: usize = 0, @@ -90,7 +101,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { rescan_close_brace_as_template_token: bool = false, prev_error_loc: logger.Loc = logger.Loc.Empty, regex_flags_start: ?u16 = null, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, /// In JavaScript, strings are stored as UTF-16, but nearly every string is ascii. /// This means, usually, we can skip UTF8 -> UTF16 conversions. string_literal_buffer: std.ArrayList(u16), @@ -162,7 +173,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return Error.SyntaxError; } - pub fn addError(self: *LexerType, _loc: usize, comptime format: []const u8, args: anytype, panic: bool) void { + pub fn addError(self: *LexerType, _loc: usize, comptime format: []const u8, args: anytype, _: bool) void { @setCold(true); if (self.is_log_disabled) return; @@ -171,11 +182,11 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return; } - self.log.addErrorFmt(self.source, __loc, self.allocator, format, args) catch unreachable; + self.log.addErrorFmt(&self.source, __loc, self.allocator, format, args) catch unreachable; self.prev_error_loc = __loc; } - pub fn addRangeError(self: *LexerType, r: logger.Range, comptime format: []const u8, args: anytype, panic: bool) !void { + pub fn addRangeError(self: *LexerType, r: logger.Range, comptime format: []const u8, args: anytype, _: bool) !void { @setCold(true); if (self.is_log_disabled) return; @@ -184,7 +195,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { } const errorMessage = std.fmt.allocPrint(self.allocator, format, args) catch unreachable; - var msg = self.log.addRangeError(self.source, r, errorMessage); + try self.log.addRangeError(&self.source, r, errorMessage); self.prev_error_loc = r.loc; // if (panic) { @@ -213,7 +224,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return @enumToInt(lexer.token) >= @enumToInt(T.t_identifier); } - pub fn deinit(this: *LexerType) void {} + pub fn deinit(_: *LexerType) void {} fn decodeEscapeSequences(lexer: *LexerType, start: usize, text: string, comptime BufType: type, buf_: *BufType) !void { var buf = buf_.*; @@ -222,7 +233,6 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { const iterator = strings.CodepointIterator{ .bytes = text[start..], .i = 0 }; var iter = strings.CodepointIterator.Cursor{}; - const start_length = buf.items.len; while (iterator.next(&iter)) { const width = iter.width; switch (iter.c) { @@ -309,7 +319,6 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { }; const c3: CodePoint = iter.c; - const width3 = iter.width; switch (c3) { '0'...'7' => { @@ -318,7 +327,6 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { _ = iterator.next(&iter) or return lexer.syntaxError(); const c4 = iter.c; - const width4 = iter.width; switch (c4) { '0'...'7' => { const temp = value * 8 + c4 - '0'; @@ -923,7 +931,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { pub fn expectContextualKeyword(self: *LexerType, comptime keyword: string) !void { if (!self.isContextualKeyword(keyword)) { - if (std.builtin.mode == std.builtin.Mode.Debug) { + if (@import("builtin").mode == std.builtin.Mode.Debug) { self.addError(self.start, "Expected \"{s}\" but found \"{s}\" (token: {s})", .{ keyword, self.raw(), @@ -1289,7 +1297,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { if (lexer.code_point == '>' and lexer.has_newline_before) { lexer.step(); - lexer.log.addRangeWarning(lexer.source, lexer.range(), "Treating \"-->\" as the start of a legacy HTML single-line comment") catch unreachable; + lexer.log.addRangeWarning(&lexer.source, lexer.range(), "Treating \"-->\" as the start of a legacy HTML single-line comment") catch unreachable; singleLineHTMLCloseComment: while (true) { switch (lexer.code_point) { @@ -1692,7 +1700,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { // TODO: implement this // it's too complicated to handle all the edgecases right now given the state of Zig's standard library - pub fn removeMultilineCommentIndent(lexer: *LexerType, _prefix: string, text: string) string { + pub fn removeMultilineCommentIndent(_: *LexerType, _: string, text: string) string { return text; } @@ -1703,7 +1711,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { }; } - pub fn initTSConfig(log: *logger.Log, source: *const logger.Source, allocator: *std.mem.Allocator) !LexerType { + pub fn initTSConfig(log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator) !LexerType { var empty_string_literal: JavascriptString = &emptyJavaScriptString; var lex = LexerType{ .log = log, @@ -1721,7 +1729,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return lex; } - pub fn initJSON(log: *logger.Log, source: *const logger.Source, allocator: *std.mem.Allocator) !LexerType { + pub fn initJSON(log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator) !LexerType { var empty_string_literal: JavascriptString = &emptyJavaScriptString; var lex = LexerType{ .log = log, @@ -1738,7 +1746,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return lex; } - pub fn init(log: *logger.Log, source: *const logger.Source, allocator: *std.mem.Allocator) !LexerType { + pub fn init(log: *logger.Log, source: logger.Source, allocator: std.mem.Allocator) !LexerType { try tables.initJSXEntityMap(); var empty_string_literal: JavascriptString = &emptyJavaScriptString; var lex = LexerType{ @@ -1897,7 +1905,6 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { }, '*' => { lexer.step(); - const start_range = lexer.range(); multi_line_comment: { while (true) { switch (lexer.code_point) { @@ -2175,7 +2182,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { return decoded.items; } - inline fn maybeDecodeJSXEntity(lexer: *LexerType, text: string, out: *std.ArrayList(u16), cursor: *strings.CodepointIterator.Cursor) void { + inline fn maybeDecodeJSXEntity(lexer: *LexerType, text: string, cursor: *strings.CodepointIterator.Cursor) void { if (strings.indexOfChar(text[cursor.width + cursor.i ..], ';')) |length| { const end = cursor.width + cursor.i; const entity = text[end .. end + length]; @@ -2214,7 +2221,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { var cursor = strings.CodepointIterator.Cursor{}; while (iterator.next(&cursor)) { - if (cursor.c == '&') lexer.maybeDecodeJSXEntity(text, out, &cursor); + if (cursor.c == '&') lexer.maybeDecodeJSXEntity(text, &cursor); if (cursor.c <= 0xFFFF) { try out.append(@intCast(u16, cursor.c)); @@ -2480,7 +2487,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { } else if (isInvalidLegacyOctalLiteral) { if (std.fmt.parseFloat(f64, text)) |num| { lexer.number = num; - } else |err| { + } else |_| { try lexer.addSyntaxError(lexer.start, "Invalid number {s}", .{text}); } } @@ -2591,7 +2598,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { } } text = bytes; - } else |err| { + } else |_| { try lexer.addSyntaxError(lexer.start, "Out of Memory Wah Wah Wah", .{}); return; } @@ -2616,7 +2623,7 @@ pub fn NewLexer(comptime json_options: JSONOptions) type { // Parse a double-precision floating-point number; if (std.fmt.parseFloat(f64, text)) |num| { lexer.number = num; - } else |err| { + } else |_| { try lexer.addSyntaxError(lexer.start, "Invalid number", .{}); } } diff --git a/src/js_lexer/identifier.zig b/src/js_lexer/identifier.zig index 12fbdd20c..7ca14063e 100644 --- a/src/js_lexer/identifier.zig +++ b/src/js_lexer/identifier.zig @@ -1,6 +1,6 @@ // This file benchmarks different approaches for determinig whether or not a unicode codepoint is possibly a JS identifier // these values are copy-pasted from "typescript/lib/typescriptServices.js" - +const std = @import("std"); pub const SerializedBitset = extern struct {}; pub const Bitset = struct { @@ -194,7 +194,7 @@ pub const Bitset = struct { // }; // } -// pub fn init(allocator: *std.mem.Allocator) !void { +// pub fn init(allocator: std.mem.Allocator) !void { // starts = std.AutoHashMap(i32, void).init(allocator); // parts = std.AutoHashMap(i32, void).init(allocator); diff --git a/src/js_lexer/identifier_cache.zig b/src/js_lexer/identifier_cache.zig index b27b9cd74..59cd9580c 100644 --- a/src/js_lexer/identifier_cache.zig +++ b/src/js_lexer/identifier_cache.zig @@ -10,8 +10,6 @@ pub const CachedBitset = extern struct { }; pub fn setMasks(masks: [*:0]const u8, comptime MaskType: type, masky: MaskType) void { - const StructInfo: std.builtin.TypeInfo.Struct = @typeInfo(MaskType).Struct; - const FieldInfo: std.builtin.TypeInfo.StructField = std.meta.fieldInfo(MaskType, "masks"); masky.masks = @bitCast(masks, FieldInfo.field_type); } diff --git a/src/js_lexer_tables.zig b/src/js_lexer_tables.zig index 0dd221b0d..875cf5784 100644 --- a/src/js_lexer_tables.zig +++ b/src/js_lexer_tables.zig @@ -1,10 +1,12 @@ -usingnamespace @import("string_types.zig"); const std = @import("std"); const expectString = std.testing.expectEqualStrings; const expect = std.testing.expect; const logger = @import("logger.zig"); const unicode = std.unicode; const default_allocator = @import("./global.zig").default_allocator; +const string = @import("string_types.zig").string; +const CodePoint = @import("string_types.zig").CodePoint; + pub const T = enum(u8) { t_end_of_file, t_syntax_error, @@ -375,8 +377,6 @@ pub const tokenToString = brk: { var tokenEnums = TokenEnumType.initUndefined(); - var eof = "end of file"; - tokenEnums.set(T.t_end_of_file, &TEndOfFile); tokenEnums.set(T.t_syntax_error, &TSyntaxError); tokenEnums.set(T.t_hashbang, &THashbang); @@ -577,7 +577,7 @@ pub fn initJSXEntityMap() !void { has_loaded_jsx_map = true; jsxEntity = JSXEntityMap.init(default_allocator); // return jsxEntity; - jsxEntity.ensureCapacity(255) catch unreachable; + jsxEntity.ensureTotalCapacity(255) catch unreachable; jsxEntity.putAssumeCapacity("quot", @as(CodePoint, 0x0022)); jsxEntity.putAssumeCapacity("amp", @as(CodePoint, 0x0026)); diff --git a/src/js_parser/imports.zig b/src/js_parser/imports.zig index f01dfced0..e69de29bb 100644 --- a/src/js_parser/imports.zig +++ b/src/js_parser/imports.zig @@ -1,47 +0,0 @@ -pub const std = @import("std"); -pub const logger = @import("../logger.zig"); -pub const js_lexer = @import("../js_lexer.zig"); -pub const importRecord = @import("../import_record.zig"); -pub const js_ast = @import("../js_ast.zig"); -pub const options = @import("../options.zig"); -pub const js_printer = @import("../js_printer.zig"); -pub const renamer = @import("../renamer.zig"); -const _runtime = @import("../runtime.zig"); -pub const RuntimeImports = _runtime.Runtime.Imports; -pub const RuntimeFeatures = _runtime.Runtime.Features; -pub const RuntimeNames = _runtime.Runtime.Names; -pub const fs = @import("../fs.zig"); -const _hash_map = @import("../hash_map.zig"); -pub usingnamespace @import("../global.zig"); -pub usingnamespace @import("../ast/base.zig"); -pub usingnamespace js_ast.G; -pub usingnamespace @import("../defines.zig"); -pub const isPackagePath = @import("../resolver/resolver.zig").isPackagePath; -pub const ImportKind = importRecord.ImportKind; -pub const BindingNodeIndex = js_ast.BindingNodeIndex; - -pub const StmtNodeIndex = js_ast.StmtNodeIndex; -pub const ExprNodeIndex = js_ast.ExprNodeIndex; -pub const ExprNodeList = js_ast.ExprNodeList; -pub const StmtNodeList = js_ast.StmtNodeList; -pub const BindingNodeList = js_ast.BindingNodeList; - -pub const assert = std.debug.assert; - -pub const LocRef = js_ast.LocRef; -pub const S = js_ast.S; -pub const B = js_ast.B; -pub const G = js_ast.G; -pub const T = js_lexer.T; -pub const E = js_ast.E; -pub const Stmt = js_ast.Stmt; -pub const Expr = js_ast.Expr; -pub const Binding = js_ast.Binding; -pub const Symbol = js_ast.Symbol; -pub const Level = js_ast.Op.Level; -pub const Op = js_ast.Op; -pub const Scope = js_ast.Scope; -pub const locModuleScope = logger.Loc{ .start = -100 }; - -pub const StringHashMap = _hash_map.StringHashMap; -pub const AutoHashMap = _hash_map.AutoHashMap; diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 18b3396d7..55b3f9449 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -1,4 +1,65 @@ -usingnamespace @import("imports.zig"); +pub const std = @import("std"); +pub const logger = @import("../logger.zig"); +pub const js_lexer = @import("../js_lexer.zig"); +pub const importRecord = @import("../import_record.zig"); +pub const js_ast = @import("../js_ast.zig"); +pub const options = @import("../options.zig"); +pub const js_printer = @import("../js_printer.zig"); +pub const renamer = @import("../renamer.zig"); +const _runtime = @import("../runtime.zig"); +pub const RuntimeImports = _runtime.Runtime.Imports; +pub const RuntimeFeatures = _runtime.Runtime.Features; +pub const RuntimeNames = _runtime.Runtime.Names; +pub const fs = @import("../fs.zig"); +const _hash_map = @import("../hash_map.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const G = js_ast.G; +const Define = @import("../defines.zig").Define; +const DefineData = @import("../defines.zig").DefineData; +const FeatureFlags = @import("../feature_flags.zig"); +pub const isPackagePath = @import("../resolver/resolver.zig").isPackagePath; +pub const ImportKind = importRecord.ImportKind; +pub const BindingNodeIndex = js_ast.BindingNodeIndex; +const Decl = G.Decl; +const Property = G.Property; +const Arg = G.Arg; + +pub const StmtNodeIndex = js_ast.StmtNodeIndex; +pub const ExprNodeIndex = js_ast.ExprNodeIndex; +pub const ExprNodeList = js_ast.ExprNodeList; +pub const StmtNodeList = js_ast.StmtNodeList; +pub const BindingNodeList = js_ast.BindingNodeList; + +pub const assert = std.debug.assert; + +pub const LocRef = js_ast.LocRef; +pub const S = js_ast.S; +pub const B = js_ast.B; +pub const T = js_lexer.T; +pub const E = js_ast.E; +pub const Stmt = js_ast.Stmt; +pub const Expr = js_ast.Expr; +pub const Binding = js_ast.Binding; +pub const Symbol = js_ast.Symbol; +pub const Level = js_ast.Op.Level; +pub const Op = js_ast.Op; +pub const Scope = js_ast.Scope; +pub const locModuleScope = logger.Loc{ .start = -100 }; +const Ref = @import("../ast/base.zig").Ref; + +pub const StringHashMap = _hash_map.StringHashMap; +pub const AutoHashMap = _hash_map.AutoHashMap; +const StringHashMapUnamanged = _hash_map.StringHashMapUnamanged; +const ObjectPool = @import("../pool.zig").ObjectPool; const NodeFallbackModules = @import("../node_fallbacks.zig"); // Dear reader, @@ -15,7 +76,6 @@ const NodeFallbackModules = @import("../node_fallbacks.zig"); // While the names for Expr, Binding, and Stmt are directly copied from esbuild, those were likely inspired by Go's parser. // which is another example of a very fast parser. -const TemplatePartTuple = std.meta.Tuple(&[_]type{ []E.TemplatePart, logger.Loc }); const ScopeOrderList = std.ArrayListUnmanaged(?ScopeOrder); const JSXFactoryName = "JSX"; @@ -253,11 +313,12 @@ pub const ImportScanner = struct { kept_import_equals: bool = false, removed_import_equals: bool = false, - pub fn scan(comptime P: type, p: P, stmts: []Stmt, comptime convert_exports: bool) !ImportScanner { + pub fn scan(comptime P: type, p: P, stmts: []Stmt) !ImportScanner { var scanner = ImportScanner{}; var stmts_end: usize = 0; + const allocator = p.allocator; - for (stmts) |_stmt, _stmt_i| { + for (stmts) |_stmt| { // zls needs the hint, it seems. var stmt: Stmt = _stmt; switch (stmt.data) { @@ -353,7 +414,7 @@ pub const ImportScanner = struct { } // Remove the star import if it's unused - if (st.star_name_loc) |star_name| { + if (st.star_name_loc) |_| { found_imports = true; const symbol = p.symbols.items[st.namespace_ref.inner_index]; @@ -449,7 +510,7 @@ pub const ImportScanner = struct { record.contains_default_alias = record.contains_default_alias or st.default_name != null; const existing_items: ImportItemForNamespaceMap = p.import_items_for_namespace.get(namespace_ref) orelse - ImportItemForNamespaceMap.init(p.allocator); + ImportItemForNamespaceMap.init(allocator); // ESM requires live bindings // CommonJS does not require live bindings @@ -482,7 +543,7 @@ pub const ImportScanner = struct { }; } - try p.import_records_for_current_part.append(st.import_record_index); + try p.import_records_for_current_part.append(allocator, st.import_record_index); if (st.star_name_loc != null) { record.contains_import_star = true; @@ -543,7 +604,7 @@ pub const ImportScanner = struct { if (decl.value) |val| { while (true) { if (@as(Expr.Tag, val.data) == .e_dot) { - value = val.getDot().target; + value = val.data.e_dot.target; } else { break; } @@ -619,7 +680,7 @@ pub const ImportScanner = struct { }, else => {}, } - var decls = try p.allocator.alloc(G.Decl, 1); + var decls = try allocator.alloc(G.Decl, 1); decls[0] = G.Decl{ .binding = p.b(B.Identifier{ .ref = st.default_name.ref.? }, stmt.loc), .value = ex }; stmt = p.s(S.Local{ @@ -639,7 +700,7 @@ pub const ImportScanner = struct { } } - var decls = try p.allocator.alloc(G.Decl, 1); + var decls = try allocator.alloc(G.Decl, 1); decls[0] = G.Decl{ .binding = p.b(B.Identifier{ .ref = st.default_name.ref.? }, stmt.loc), .value = p.e(E.Function{ .func = func.func }, stmt.loc) }; stmt = p.s(S.Local{ @@ -657,7 +718,7 @@ pub const ImportScanner = struct { } } - var decls = try p.allocator.alloc(G.Decl, 1); + var decls = try allocator.alloc(G.Decl, 1); decls[0] = G.Decl{ .binding = p.b(B.Identifier{ .ref = st.default_name.ref.? }, stmt.loc), .value = p.e(E.Class{ @@ -694,7 +755,7 @@ pub const ImportScanner = struct { } }, .s_export_star => |st| { - try p.import_records_for_current_part.append(st.import_record_index); + try p.import_records_for_current_part.append(allocator, st.import_record_index); if (st.alias) |alias| { // "export * as ns from 'path'" @@ -709,11 +770,11 @@ pub const ImportScanner = struct { try p.recordExport(alias.loc, alias.original_name, st.namespace_ref); } else { // "export * from 'path'" - try p.export_star_import_records.append(st.import_record_index); + try p.export_star_import_records.append(allocator, st.import_record_index); } }, .s_export_from => |st| { - try p.import_records_for_current_part.append(st.import_record_index); + try p.import_records_for_current_part.append(allocator, st.import_record_index); for (st.items) |item| { const ref = item.name.ref orelse p.panic("Expected export from item to have a name {s}", .{st}); @@ -1063,11 +1124,11 @@ pub const SideEffects = enum(u2) { }, .s_while => { - return shouldKeepStmtInDeadControlFlow(stmt.getWhile().body); + return shouldKeepStmtInDeadControlFlow(stmt.data.s_while.body); }, .s_do_while => { - return shouldKeepStmtInDeadControlFlow(stmt.getDoWhile().body); + return shouldKeepStmtInDeadControlFlow(stmt.data.s_do_while.body); }, .s_for => |__for__| { @@ -1102,7 +1163,7 @@ pub const SideEffects = enum(u2) { // Returns "equal, ok". If "ok" is false, then nothing is known about the two // values. If "ok" is true, the equality or inequality of the two values is // stored in "equal". - pub fn eql(left: Expr.Data, right: Expr.Data, p: anytype) Equality { + pub fn eql(left: Expr.Data, right: Expr.Data, _: anytype) Equality { var equality = Equality{}; switch (left) { .e_null => { @@ -1629,7 +1690,7 @@ const TempRef = struct { }; const ImportNamespaceCallOrConstruct = struct { - ref: js_ast.Ref, + ref: Ref, is_construct: bool = false, }; @@ -1652,26 +1713,55 @@ const StrictModeFeature = enum { if_else_function_stmt, }; -const SymbolMergeResult = enum { - forbidden, - replace_with_new, - overwrite_with_new, - keep_existing, - become_private_get_set_pair, - become_private_static_get_set_pair, -}; +const Map = _hash_map.AutoHashMapUnmanaged; + +const List = std.ArrayListUnmanaged; +const ListManaged = std.ArrayList; +const LocList = ListManaged(logger.Loc); +const StmtList = ListManaged(Stmt); -const Map = AutoHashMap; +// This hash table is used every time we parse function args +// Rather than allocating a new hash table each time, we can just reuse the previous allocation + +const StringVoidMap = struct { + allocator: std.mem.Allocator, + map: std.StringHashMapUnmanaged(void) = std.StringHashMapUnmanaged(void){}, + + /// Returns true if the map already contained the given key. + pub fn getOrPutContains(this: *StringVoidMap, key: string) bool { + const entry = this.map.getOrPut(this.allocator, key) catch unreachable; + return entry.found_existing; + } -const List = std.ArrayList; -const LocList = List(logger.Loc); -const StmtList = List(Stmt); + pub fn contains(this: *StringVoidMap, key: string) bool { + return this.map.contains(key); + } + + fn init(allocator: std.mem.Allocator) anyerror!StringVoidMap { + return StringVoidMap{ .allocator = allocator }; + } + + pub fn reset(this: *StringVoidMap) void { + // We must reset or the hash table will contain invalid pointers + this.map.clearRetainingCapacity(); + } -const SymbolUseMap = Map(js_ast.Ref, js_ast.Symbol.Use); -const StringRefMap = StringHashMap(js_ast.Ref); -const StringBoolMap = StringHashMap(bool); -const RefBoolMap = Map(js_ast.Ref, bool); -const RefRefMap = Map(js_ast.Ref, js_ast.Ref); + pub inline fn get(allocator: std.mem.Allocator) *Node { + return Pool.get(allocator); + } + + pub inline fn release(node: *Node) void { + Pool.release(node); + } + + pub const Pool = ObjectPool(StringVoidMap, init, true); + pub const Node = Pool.Node; +}; + +const SymbolUseMap = Map(Ref, js_ast.Symbol.Use); +const StringBoolMap = _hash_map.StringHashMapUnmanaged(bool); +const RefMap = Map(Ref, void); +const RefRefMap = Map(Ref, Ref); const ImportRecord = importRecord.ImportRecord; const Flags = js_ast.Flags; const ScopeOrder = struct { @@ -1722,7 +1812,7 @@ const FnOrArrowDataParse = struct { // restored on the call stack around code that parses nested functions and // arrow expressions. const FnOrArrowDataVisit = struct { - // super_index_ref: ?*js_ast.Ref = null, + // super_index_ref: ?*Ref = null, is_arrow: bool = false, is_async: bool = false, @@ -1743,18 +1833,18 @@ const FnOnlyDataVisit = struct { // This is a reference to the magic "arguments" variable that exists inside // functions in JavaScript. It will be non-nil inside functions and nil // otherwise. - arguments_ref: ?js_ast.Ref = null, + arguments_ref: ?Ref = null, // Arrow functions don't capture the value of "this" and "arguments". Instead, // the values are inherited from the surrounding context. If arrow functions // are turned into regular functions due to lowering, we will need to generate // local variables to capture these values so they are preserved correctly. - this_capture_ref: ?js_ast.Ref = null, - arguments_capture_ref: ?js_ast.Ref = null, + this_capture_ref: ?Ref = null, + arguments_capture_ref: ?Ref = null, // Inside a static class property initializer, "this" expressions should be // replaced with the class name. - this_class_static_ref: ?js_ast.Ref = null, + this_class_static_ref: ?Ref = null, // If we're inside an async arrow function and async functions are not // supported, then we will have to convert that arrow function to a generator @@ -1837,18 +1927,18 @@ pub const ScanPassResult = struct { pub const ParsePassSymbolUse = struct { ref: Ref, used: bool = false, import_record_index: u32 }; pub const NamespaceCounter = struct { count: u16, import_record_index: u32 }; pub const ParsePassSymbolUsageMap = std.StringArrayHashMap(ParsePassSymbolUse); - import_records: List(ImportRecord), + import_records: ListManaged(ImportRecord), named_imports: js_ast.Ast.NamedImports, used_symbols: ParsePassSymbolUsageMap, - import_records_to_keep: List(u32), + import_records_to_keep: ListManaged(u32), approximate_newline_count: usize = 0, - pub fn init(allocator: *std.mem.Allocator) ScanPassResult { + pub fn init(allocator: std.mem.Allocator) ScanPassResult { return .{ - .import_records = List(ImportRecord).init(allocator), + .import_records = ListManaged(ImportRecord).init(allocator), .named_imports = js_ast.Ast.NamedImports.init(allocator), .used_symbols = ParsePassSymbolUsageMap.init(allocator), - .import_records_to_keep = List(u32).init(allocator), + .import_records_to_keep = ListManaged(u32).init(allocator), .approximate_newline_count = 0, }; } @@ -1867,7 +1957,7 @@ pub const Parser = struct { log: *logger.Log, source: *const logger.Source, define: *Define, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, pub const Options = struct { jsx: options.JSX.Pragma, @@ -1932,7 +2022,6 @@ pub const Parser = struct { // Parse the file in the first pass, but do not bind symbols var opts = ParseStatementOptions{ .is_module_scope = true }; - debugl("<p.parseStmtsUpTo>"); // Parsing seems to take around 2x as much time as visiting. // Which makes sense. @@ -2031,14 +2120,13 @@ pub const Parser = struct { // Parse the file in the first pass, but do not bind symbols var opts = ParseStatementOptions{ .is_module_scope = true }; - debugl("<p.parseStmtsUpTo>"); // Parsing seems to take around 2x as much time as visiting. // Which makes sense. // June 4: "Parsing took: 18028000" // June 4: "Rest of this took: 8003000" const stmts = try p.parseStmtsUpTo(js_lexer.T.t_end_of_file, &opts); - debugl("</p.parseStmtsUpTo>"); + try p.prepareForVisitPass(); // ESM is always strict mode. I don't think we need this. @@ -2061,10 +2149,9 @@ pub const Parser = struct { // }, logger.Loc.Empty); // } - debugl("<p.appendPart>"); - var before = List(js_ast.Part).init(p.allocator); - var after = List(js_ast.Part).init(p.allocator); - var parts = List(js_ast.Part).init(p.allocator); + var before = ListManaged(js_ast.Part).init(p.allocator); + var after = ListManaged(js_ast.Part).init(p.allocator); + var parts = ListManaged(js_ast.Part).init(p.allocator); try p.appendPart(&parts, stmts); var did_import_fast_refresh = false; @@ -2286,7 +2373,7 @@ pub const Parser = struct { .import_record_index = import_record_id, }, ) catch unreachable; - p.is_import_item.put(automatic_namespace_ref, true) catch unreachable; + p.is_import_item.put(p.allocator, automatic_namespace_ref, .{}) catch unreachable; import_records[import_record_i] = import_record_id; import_record_i += 1; } @@ -2370,7 +2457,7 @@ pub const Parser = struct { .import_record_index = import_record_id, }, ) catch unreachable; - p.is_import_item.put(classic_namespace_ref, true) catch unreachable; + p.is_import_item.put(p.allocator, classic_namespace_ref, .{}) catch unreachable; import_records[import_record_i] = import_record_id; declared_symbols[declared_symbols_i] = .{ .ref = classic_namespace_ref, .is_top_level = true }; declared_symbols_i += 1; @@ -2403,7 +2490,7 @@ pub const Parser = struct { .import_record_index = import_record_id, }, ) catch unreachable; - p.is_import_item.put(p.jsx_refresh_runtime.ref, true) catch unreachable; + p.is_import_item.put(p.allocator, p.jsx_refresh_runtime.ref, .{}) catch unreachable; import_records[import_record_i] = import_record_id; p.recordUsage(p.jsx_refresh_runtime.ref); } @@ -2415,7 +2502,7 @@ pub const Parser = struct { .stmts = jsx_part_stmts[0..stmt_i], .declared_symbols = declared_symbols, .import_record_indices = import_records, - .symbol_uses = SymbolUseMap.init(p.allocator), + .symbol_uses = SymbolUseMap{}, .tag = .jsx_import, }) catch unreachable; } @@ -2448,7 +2535,7 @@ pub const Parser = struct { .import_record_index = import_record_id, }, ) catch unreachable; - p.is_import_item.put(p.jsx_refresh_runtime.ref, true) catch unreachable; + p.is_import_item.put(p.allocator, p.jsx_refresh_runtime.ref, .{}) catch unreachable; var import_records = try p.allocator.alloc(@TypeOf(import_record_id), 1); import_records[0] = import_record_id; declared_symbols[0] = .{ .ref = p.jsx_refresh_runtime.ref, .is_top_level = true }; @@ -2459,7 +2546,7 @@ pub const Parser = struct { .stmts = part_stmts, .declared_symbols = declared_symbols, .import_record_indices = import_records, - .symbol_uses = SymbolUseMap.init(p.allocator), + .symbol_uses = SymbolUseMap{}, }) catch unreachable; } @@ -2470,24 +2557,24 @@ pub const Parser = struct { if (FeatureFlags.auto_import_buffer) { // If they use Buffer...just automatically import it. // ✨ magic ✨ (i don't like this) - if (p.symbols.items[p.buffer_ref.inner_index].use_count_estimate > 0) { - var named_import = p.named_imports.getOrPut(p.buffer_ref); - - // if Buffer is actually an import, let them use that one instead. - if (!named_import.found_existing) { - const import_record_id = p.addImportRecord( - .require, - logger.Loc.empty, - NodeFallbacks.buffer_fallback_import_name, - ); - var import_stmt = p.s(S.Import{ - .namespace_ref = p.buffer_ref, - .star_name_loc = loc, - .is_single_line = true, - .import_record_index = import_record_id, - }, loc); - } - } + // if (p.symbols.items[p.buffer_ref.inner_index].use_count_estimate > 0) { + // var named_import = p.named_imports.getOrPut(p.buffer_ref); + + // // if Buffer is actually an import, let them use that one instead. + // if (!named_import.found_existing) { + // const import_record_id = p.addImportRecord( + // .require, + // logger.Loc.empty, + // NodeFallbackModules.buffer_fallback_import_name, + // ); + // var import_stmt = p.s(S.Import{ + // .namespace_ref = p.buffer_ref, + // .star_name_loc = loc, + // .is_single_line = true, + // .import_record_index = import_record_id, + // }, loc); + // } + // } } const has_cjs_imports = p.cjs_import_stmts.items.len > 0 and p.options.transform_require_to_import; @@ -2542,7 +2629,7 @@ pub const Parser = struct { .stmts = p.cjs_import_stmts.items, .declared_symbols = declared_symbols, .import_record_indices = import_records, - .symbol_uses = SymbolUseMap.init(p.allocator), + .symbol_uses = SymbolUseMap{}, }) catch unreachable; } @@ -2582,20 +2669,18 @@ pub const Parser = struct { before.deinit(); parts_slice = parts.items; } - debugl("</p.appendPart>"); // Pop the module scope to apply the "ContainsDirectEval" rules // p.popScope(); - debugl("<result.Ast>"); + result.ast = try p.toAST(parts_slice, exports_kind, wrapper_expr); result.ok = true; - debugl("</result.Ast>"); return result; } - pub fn init(_options: Options, log: *logger.Log, source: *const logger.Source, define: *Define, allocator: *std.mem.Allocator) !Parser { - const lexer = try js_lexer.Lexer.init(log, source, allocator); + pub fn init(_options: Options, log: *logger.Log, source: *const logger.Source, define: *Define, allocator: std.mem.Allocator) !Parser { + const lexer = try js_lexer.Lexer.init(log, source.*, allocator); return Parser{ .options = _options, .allocator = allocator, @@ -2795,10 +2880,10 @@ const ImportItemForNamespaceMap = std.StringArrayHashMap(LocRef); pub const MacroState = struct { refs: MacroRefs, - prepend_stmts: *List(Stmt) = undefined, + prepend_stmts: *ListManaged(Stmt) = undefined, imports: std.AutoArrayHashMap(i32, Ref), - pub fn init(allocator: *std.mem.Allocator) MacroState { + pub fn init(allocator: std.mem.Allocator) MacroState { return MacroState{ .refs = MacroRefs.init(allocator), .prepend_stmts = undefined, @@ -2827,7 +2912,7 @@ pub fn NewParser( const P = @This(); pub const jsx_transform_type: JSXTransformType = js_parser_jsx; macro: MacroState = undefined, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, options: Parser.Options, log: *logger.Log, define: *Define, @@ -2843,19 +2928,19 @@ pub fn NewParser( fn_or_arrow_data_parse: FnOrArrowDataParse = FnOrArrowDataParse{}, fn_or_arrow_data_visit: FnOrArrowDataVisit = FnOrArrowDataVisit{}, fn_only_data_visit: FnOnlyDataVisit = FnOnlyDataVisit{}, - allocated_names: List(string), + allocated_names: List(string) = .{}, latest_arrow_arg_loc: logger.Loc = logger.Loc.Empty, forbid_suffix_after_as_loc: logger.Loc = logger.Loc.Empty, current_scope: *js_ast.Scope = undefined, - scopes_for_current_part: List(*js_ast.Scope), - symbols: List(js_ast.Symbol), - ts_use_counts: List(u32), - exports_ref: js_ast.Ref = js_ast.Ref.None, - require_ref: js_ast.Ref = js_ast.Ref.None, - module_ref: js_ast.Ref = js_ast.Ref.None, - buffer_ref: js_ast.Ref = js_ast.Ref.None, - import_meta_ref: js_ast.Ref = js_ast.Ref.None, - promise_ref: ?js_ast.Ref = null, + scopes_for_current_part: List(*js_ast.Scope) = .{}, + symbols: List(js_ast.Symbol) = .{}, + ts_use_counts: List(u32) = .{}, + exports_ref: Ref = Ref.None, + require_ref: Ref = Ref.None, + module_ref: Ref = Ref.None, + buffer_ref: Ref = Ref.None, + import_meta_ref: Ref = Ref.None, + promise_ref: ?Ref = null, scopes_in_order_visitor_index: usize = 0, has_classic_runtime_warned: bool = false, @@ -2865,9 +2950,9 @@ pub fn NewParser( cjs_import_stmts: std.ArrayList(Stmt), - injected_define_symbols: List(Ref), - symbol_uses: SymbolUseMap, - declared_symbols: List(js_ast.DeclaredSymbol), + injected_define_symbols: List(Ref) = .{}, + symbol_uses: SymbolUseMap = .{}, + declared_symbols: List(js_ast.DeclaredSymbol) = .{}, runtime_imports: RuntimeImports = RuntimeImports{}, parse_pass_symbol_uses: ParsePassSymbolUsageType = undefined, @@ -2877,17 +2962,17 @@ pub fn NewParser( // legacy_octal_literals: map[js_ast.E]logger.Range, // For lowering private methods - // weak_map_ref: ?js_ast.Ref, - // weak_set_ref: ?js_ast.Ref, + // weak_map_ref: ?Ref, + // weak_set_ref: ?Ref, // private_getters: RefRefMap, // private_setters: RefRefMap, // These are for TypeScript should_fold_numeric_constants: bool = false, - emitted_namespace_vars: RefBoolMap, - is_exported_inside_namespace: RefRefMap, - known_enum_values: Map(js_ast.Ref, StringHashMap(f64)), - local_type_names: StringBoolMap, + emitted_namespace_vars: RefMap = RefMap{}, + is_exported_inside_namespace: RefRefMap = .{}, + known_enum_values: Map(Ref, _hash_map.StringHashMapUnmanaged(f64)) = .{}, + local_type_names: StringBoolMap = StringBoolMap{}, // This is the reference to the generated function argument for the namespace, // which is different than the reference to the namespace itself: @@ -2903,7 +2988,7 @@ pub fn NewParser( // // This variable is "ns2" not "ns1". It is only used during the second // "visit" pass. - enclosing_namespace_arg_ref: ?js_ast.Ref = null, + enclosing_namespace_arg_ref: ?Ref = null, jsx_filename: GeneratedSymbol = GeneratedSymbol{ .ref = Ref.None, .primary = Ref.None, .backup = Ref.None }, jsx_runtime: GeneratedSymbol = GeneratedSymbol{ .ref = Ref.None, .primary = Ref.None, .backup = Ref.None }, @@ -2919,19 +3004,18 @@ pub fn NewParser( // Imports (both ES6 and CommonJS) are tracked at the top level import_records: ImportRecordList, - import_records_for_current_part: List(u32), - export_star_import_records: List(u32), + import_records_for_current_part: List(u32) = .{}, + export_star_import_records: List(u32) = .{}, // These are for handling ES6 imports and exports es6_import_keyword: logger.Range = logger.Range.None, es6_export_keyword: logger.Range = logger.Range.None, enclosing_class_keyword: logger.Range = logger.Range.None, - import_items_for_namespace: std.AutoHashMap(js_ast.Ref, ImportItemForNamespaceMap), - is_import_item: RefBoolMap, + import_items_for_namespace: std.AutoHashMapUnmanaged(Ref, ImportItemForNamespaceMap) = .{}, + is_import_item: RefMap = .{}, named_imports: NamedImportsType, named_exports: js_ast.Ast.NamedExports, - top_level_symbol_to_parts: Map(js_ast.Ref, List(u32)), - import_namespace_cc_map: Map(ImportNamespaceCallOrConstruct, bool), + import_namespace_cc_map: Map(ImportNamespaceCallOrConstruct, bool) = .{}, // When we're only scanning the imports // If they're using the automatic JSX runtime @@ -2955,7 +3039,7 @@ pub fn NewParser( // symbols must be separate from the pass that binds identifiers to declared // symbols to handle declaring a hoisted "var" symbol in a nested scope and // binding a name to it in a parent or sibling scope. - scopes_in_order: ScopeOrderList, + scopes_in_order: ScopeOrderList = .{}, // These properties are for the visit pass, which runs after the parse pass. // The visit pass binds identifiers to declared symbols, does constant @@ -3036,7 +3120,7 @@ pub fn NewParser( then_catch_chain: ThenCatchChain, // Temporary variables used for lowering - temp_refs_to_declare: List(TempRef), + temp_refs_to_declare: List(TempRef) = .{}, temp_ref_count: i32 = 0, // When bundling, hoisted top-level local variables declared with "var" in @@ -3044,7 +3128,7 @@ pub fn NewParser( // The old "var" statements are turned into regular assignments instead. This // makes it easier to quickly scan the top-level statements for "var" locals // with the guarantee that all will be found. - relocated_top_level_vars: List(js_ast.LocRef), + relocated_top_level_vars: List(js_ast.LocRef) = .{}, // ArrowFunction is a special case in the grammar. Although it appears to be // a PrimaryExpression, it's actually an AssignmentExpression. This means if @@ -3068,7 +3152,7 @@ pub fn NewParser( require_resolve_transposer: RequireResolveTransposer, // This is a general place to put lots of Expr objects - expr_list: List(Expr), + expr_list: List(Expr) = .{}, scope_order_to_visit: []ScopeOrder = &([_]ScopeOrder{}), @@ -3081,11 +3165,10 @@ pub fn NewParser( if (p.is_control_flow_dead) { return p.e(E.Null{}, arg.loc); } - const str = arg.data.e_string; const import_record_index = p.addImportRecord(.dynamic, arg.loc, arg.data.e_string.string(p.allocator) catch unreachable); p.import_records.items[import_record_index].handles_import_errors = (state.is_await_target and p.fn_or_arrow_data_visit.try_body_count != 0) or state.is_then_catch_target; - p.import_records_for_current_part.append(import_record_index) catch unreachable; + p.import_records_for_current_part.append(p.allocator, import_record_index) catch unreachable; return p.e(E.Import{ .expr = arg, .import_record_index = Ref.toInt(import_record_index), @@ -3105,11 +3188,11 @@ pub fn NewParser( }, state.loc); } - pub fn transposeRequireResolve(p: *P, arg: Expr, transpose_state: anytype) Expr { + pub fn transposeRequireResolve(_: *P, arg: Expr, _: anytype) Expr { return arg; } - pub fn transposeRequire(p: *P, arg: Expr, transpose_state: anytype) Expr { + pub fn transposeRequire(p: *P, arg: Expr, _: anytype) Expr { switch (arg.data) { .e_string => |str| { @@ -3124,7 +3207,7 @@ pub fn NewParser( const import_record_index = p.addImportRecord(.require, arg.loc, pathname); p.import_records.items[import_record_index].handles_import_errors = p.fn_or_arrow_data_visit.try_body_count != 0; - p.import_records_for_current_part.append(import_record_index) catch unreachable; + p.import_records_for_current_part.append(p.allocator, import_record_index) catch unreachable; if (!p.options.transform_require_to_import) { return p.e(E.Require{ .import_record_index = import_record_index }, arg.loc); @@ -3192,7 +3275,7 @@ pub fn NewParser( pub const Hoisted = Binding.ToExpr(P, P.wrapIdentifierHoisting); }; - pub fn s(p: *P, t: anytype, loc: logger.Loc) Stmt { + pub fn s(_: *P, t: anytype, loc: logger.Loc) Stmt { const Type = @TypeOf(t); // Output.print("\nStmt: {s} - {d}\n", .{ @typeName(@TypeOf(t)), loc.start }); if (@typeInfo(Type) == .Pointer) { @@ -3215,7 +3298,7 @@ pub fn NewParser( return Stmt.init(std.meta.Child(Type), t, loc); } else { - return Stmt.alloc(p.allocator, Type, t, loc); + return Stmt.alloc(Type, t, loc); } } @@ -3278,7 +3361,6 @@ pub fn NewParser( parser.export_star_import_records.deinit(); parser.import_items_for_namespace.deinit(); parser.named_imports.deinit(); - parser.top_level_symbol_to_parts.deinit(); parser.import_namespace_cc_map.deinit(); parser.scopes_in_order.deinit(); parser.temp_refs_to_declare.deinit(); @@ -3292,6 +3374,7 @@ pub fn NewParser( // That's part of why we do this. // Instead of rehashing `name` for every scope, we do it just once. const hash = @TypeOf(p.module_scope.members).getHash(name); + const allocator = p.allocator; const ref: Ref = brk: { var _scope: ?*Scope = p.current_scope; @@ -3308,7 +3391,7 @@ pub fn NewParser( // Forbid referencing "arguments" inside class bodies if (scope.forbid_arguments and !did_forbid_argumen and strings.eqlComptime(name, "arguments")) { const r = js_lexer.rangeOfIdentifier(p.source, loc); - p.log.addRangeErrorFmt(p.source, r, p.allocator, "Cannot access \"{s}\" here", .{name}) catch unreachable; + p.log.addRangeErrorFmt(p.source, r, allocator, "Cannot access \"{s}\" here", .{name}) catch unreachable; did_forbid_argumen = true; } @@ -3323,7 +3406,7 @@ pub fn NewParser( p.checkForNonBMPCodePoint(loc, name); const _ref = p.newSymbol(.unbound, name) catch unreachable; declare_loc = loc; - p.module_scope.members.putWithHash(name, hash, js_ast.Scope.Member{ .ref = _ref, .loc = logger.Loc.Empty }) catch unreachable; + p.module_scope.members.putWithHash(allocator, name, hash, js_ast.Scope.Member{ .ref = _ref, .loc = logger.Loc.Empty }) catch unreachable; break :brk _ref; }; @@ -3396,14 +3479,14 @@ pub fn NewParser( } } - pub fn recordUsage(p: *P, ref: js_ast.Ref) void { + pub fn recordUsage(p: *P, ref: Ref) void { // The use count stored in the symbol is used for generating symbol names // during minification. These counts shouldn't include references inside dead // code regions since those will be culled. if (!p.is_control_flow_dead) { std.debug.assert(p.symbols.items.len > ref.inner_index); p.symbols.items[ref.inner_index].use_count_estimate += 1; - var result = p.symbol_uses.getOrPut(ref) catch unreachable; + var result = p.symbol_uses.getOrPut(p.allocator, ref) catch unreachable; if (!result.found_existing) { result.entry.value = Symbol.Use{ .count_estimate = 1 }; } else { @@ -3446,80 +3529,6 @@ pub fn NewParser( } } - fn canMergeSymbols(p: *P, scope: *js_ast.Scope, existing: Symbol.Kind, new: Symbol.Kind) SymbolMergeResult { - if (existing == .unbound) { - return .replace_with_new; - } - - // In TypeScript, imports are allowed to silently collide with symbols within - // the module. Presumably this is because the imports may be type-only: - // - // import {Foo} from 'bar' - // class Foo {} - // - if (is_typescript_enabled and existing == .import) { - return .replace_with_new; - } - - // "enum Foo {} enum Foo {}" - // "namespace Foo { ... } enum Foo {}" - if (new == .ts_enum and (existing == .ts_enum or existing == .ts_namespace)) { - return .replace_with_new; - } - - // "namespace Foo { ... } namespace Foo { ... }" - // "function Foo() {} namespace Foo { ... }" - // "enum Foo {} namespace Foo { ... }" - if (new == .ts_namespace) { - switch (existing) { - .ts_namespace, .hoisted_function, .generator_or_async_function, .ts_enum, .class => { - return .keep_existing; - }, - else => {}, - } - } - - // "var foo; var foo;" - // "var foo; function foo() {}" - // "function foo() {} var foo;" - // "function *foo() {} function *foo() {}" but not "{ function *foo() {} function *foo() {} }" - if (Symbol.isKindHoistedOrFunction(new) and Symbol.isKindHoistedOrFunction(existing) and (scope.kind == .entry or scope.kind == .function_body or - (Symbol.isKindHoisted(new) and Symbol.isKindHoisted(existing)))) - { - return .keep_existing; - } - - // "get #foo() {} set #foo() {}" - // "set #foo() {} get #foo() {}" - if ((existing == .private_get and new == .private_set) or - (existing == .private_set and new == .private_get)) - { - return .become_private_get_set_pair; - } - if ((existing == .private_static_get and new == .private_static_set) or - (existing == .private_static_set and new == .private_static_get)) - { - return .become_private_static_get_set_pair; - } - - // "try {} catch (e) { var e }" - if (existing == .catch_identifier and new == .hoisted) { - return .replace_with_new; - } - - // "function() { var arguments }" - if (existing == .arguments and new == .hoisted) { - return .keep_existing; - } - - // "function() { let arguments }" - if (existing == .arguments and new != .hoisted) { - return .overwrite_with_new; - } - - return .forbidden; - } - pub fn handleIdentifier(p: *P, loc: logger.Loc, ident: E.Identifier, _original_name: ?string, opts: IdentifierOpts) Expr { const ref = ident.ref; @@ -3572,20 +3581,21 @@ pub fn NewParser( p: *P, import_path: string, imports: anytype, - parts: *List(js_ast.Part), + parts: *ListManaged(js_ast.Part), symbols: anytype, additional_stmt: ?Stmt, comptime suffix: string, comptime is_internal: bool, ) !void { + const allocator = p.allocator; const import_record_i = p.addImportRecordByRange(.stmt, logger.Range.None, import_path); var import_record: *ImportRecord = &p.import_records.items[import_record_i]; import_record.is_internal = is_internal; - var import_path_identifier = try import_record.path.name.nonUniqueNameString(p.allocator); - var namespace_identifier = try p.allocator.alloc(u8, import_path_identifier.len + suffix.len); - var clause_items = try p.allocator.alloc(js_ast.ClauseItem, imports.len); - var stmts = try p.allocator.alloc(Stmt, 1 + if (additional_stmt != null) @as(usize, 1) else @as(usize, 0)); - var declared_symbols = try p.allocator.alloc(js_ast.DeclaredSymbol, imports.len); + var import_path_identifier = try import_record.path.name.nonUniqueNameString(allocator); + var namespace_identifier = try allocator.alloc(u8, import_path_identifier.len + suffix.len); + var clause_items = try allocator.alloc(js_ast.ClauseItem, imports.len); + var stmts = try allocator.alloc(Stmt, 1 + if (additional_stmt != null) @as(usize, 1) else @as(usize, 0)); + var declared_symbols = try allocator.alloc(js_ast.DeclaredSymbol, imports.len); std.mem.copy(u8, namespace_identifier[0..suffix.len], suffix); std.mem.copy( u8, @@ -3594,7 +3604,7 @@ pub fn NewParser( ); const namespace_ref = try p.newSymbol(.other, namespace_identifier); - try p.module_scope.generated.append(namespace_ref); + try p.module_scope.generated.append(allocator, namespace_ref); for (imports) |alias, i| { const ref = symbols.get(alias) orelse unreachable; const alias_name = if (@TypeOf(symbols) == RuntimeImports) RuntimeImports.all[alias] else alias; @@ -3605,7 +3615,7 @@ pub fn NewParser( .name = LocRef{ .ref = ref, .loc = logger.Loc{} }, }; declared_symbols[i] = js_ast.DeclaredSymbol{ .ref = ref, .is_top_level = true }; - try p.is_import_item.put(ref, true); + try p.is_import_item.put(allocator, ref, .{}); try p.named_imports.put(ref, js_ast.NamedImport{ .alias = alias_name, .alias_loc = logger.Loc{}, @@ -3623,7 +3633,7 @@ pub fn NewParser( stmts[1] = add; } - var import_records = try p.allocator.alloc(@TypeOf(import_record_i), 1); + var import_records = try allocator.alloc(@TypeOf(import_record_i), 1); import_records[0] = import_record_i; // Append a single import to the end of the file (ES6 imports are hoisted @@ -3632,7 +3642,7 @@ pub fn NewParser( .stmts = stmts, .declared_symbols = declared_symbols, .import_record_indices = import_records, - .symbol_uses = SymbolUseMap.init(p.allocator), + .symbol_uses = SymbolUseMap{}, }) catch unreachable; } @@ -3691,8 +3701,8 @@ pub fn NewParser( if (p.options.jsx.development) generated_symbols_count += 1; } - try p.module_scope.generated.ensureUnusedCapacity(generated_symbols_count * 3); - try p.module_scope.members.ensureCapacity(generated_symbols_count * 3 + p.module_scope.members.count()); + try p.module_scope.generated.ensureUnusedCapacity(p.allocator, generated_symbols_count * 3); + try p.module_scope.members.ensureCapacity(p.allocator, generated_symbols_count * 3 + p.module_scope.members.count()); p.exports_ref = try p.declareCommonJSSymbol(.hoisted, "exports"); p.module_ref = try p.declareCommonJSSymbol(.hoisted, "module"); @@ -3817,6 +3827,7 @@ pub fn NewParser( fn hoistSymbols(p: *P, scope: *js_ast.Scope) void { if (!scope.kindStopsHoisting()) { var iter = scope.members.iterator(); + const allocator = p.allocator; nextMember: while (iter.next()) |res| { var symbol = &p.symbols.items[res.value.ref.inner_index]; if (!symbol.isHoisted()) { @@ -3873,18 +3884,18 @@ pub fn NewParser( // declaration can both silently shadow another hoisted symbol if (symbol.kind != .catch_identifier and symbol.kind != .hoisted_function) { const r = js_lexer.rangeOfIdentifier(p.source, res.value.loc); - var notes = p.allocator.alloc(logger.Data, 1) catch unreachable; + var notes = allocator.alloc(logger.Data, 1) catch unreachable; notes[0] = logger.rangeData( p.source, r, - std.fmt.allocPrint(p.allocator, "{s} has already been declared", .{symbol.original_name}) catch unreachable, + std.fmt.allocPrint(allocator, "{s} has already been declared", .{symbol.original_name}) catch unreachable, ); p.log.addRangeErrorFmtWithNotes( p.source, js_lexer.rangeOfIdentifier(p.source, existing_member_entry.value.loc), - p.allocator, + allocator, notes, "{s} was originally declared here", .{existing_symbol.original_name}, @@ -3896,7 +3907,7 @@ pub fn NewParser( } if (_scope.kindStopsHoisting()) { - _scope.members.putWithHash(symbol.original_name, hash, res.value) catch unreachable; + _scope.members.putWithHash(allocator, symbol.original_name, hash, res.value) catch unreachable; break; } __scope = _scope.parent; @@ -3904,7 +3915,7 @@ pub fn NewParser( } } - for (scope.children.items) |_item, i| { + for (scope.children.items) |_, i| { p.hoistSymbols(scope.children.items[i]); } } @@ -3931,32 +3942,26 @@ pub fn NewParser( p.current_scope = order.scope; - try p.scopes_for_current_part.append(order.scope); + try p.scopes_for_current_part.append(p.allocator, order.scope); } fn pushScopeForParsePass(p: *P, comptime kind: js_ast.Scope.Kind, loc: logger.Loc) !usize { - debugl("<pushScopeForParsePass>"); - defer debugl("</pushScopeForParsePass>"); var parent: *Scope = p.current_scope; + const allocator = p.allocator; + var scope = try allocator.create(Scope); - var scope = try p.allocator.create(Scope); scope.* = Scope{ - .members = @TypeOf(scope.members).init(p.allocator), - .children = @TypeOf(scope.children).init( - p.allocator, - ), - .generated = @TypeOf(scope.generated).init(p.allocator), .kind = kind, .label_ref = null, .parent = parent, }; - try parent.children.append(scope); + try parent.children.append(allocator, scope); scope.strict_mode = parent.strict_mode; p.current_scope = scope; - if (comptime !isRelease) { + if (comptime !Environment.isRelease) { // Enforce that scope locations are strictly increasing to help catch bugs // where the pushed scopes are mistmatched between the first and second passes if (p.scopes_in_order.items.len > 0) { @@ -3985,14 +3990,14 @@ pub fn NewParser( // // the name of a function expression is allowed. const adjacent_symbols = p.symbols.items[entry.value.ref.inner_index]; if (adjacent_symbols.kind != .hoisted_function) { - try scope.members.put(entry.key, entry.value); + try scope.members.put(allocator, entry.key, entry.value); } } } // Remember the length in case we call popAndDiscardScope() later const scope_index = p.scopes_in_order.items.len; - try p.scopes_in_order.append(p.allocator, ScopeOrder{ .loc = loc, .scope = scope }); + try p.scopes_in_order.append(allocator, ScopeOrder{ .loc = loc, .scope = scope }); // Output.print("\nLoc: {d}\n", .{loc.start}); return scope_index; } @@ -4023,7 +4028,6 @@ pub fn NewParser( var is_spread = false; for (ex.items) |_, i| { var item = ex.items[i]; - var _expr = item; if (item.data == .e_spread) { is_spread = true; item = item.data.e_spread.value; @@ -4118,7 +4122,7 @@ pub fn NewParser( } fn forbidLexicalDecl(p: *P, loc: logger.Loc) !void { - try p.log.addRangeError(p.source, p.lexer.range(), "Cannot use a declaration in a single-statement context"); + try p.log.addError(p.source, loc, "Cannot use a declaration in a single-statement context"); } fn logExprErrors(p: *P, errors: *DeferredErrors) void { @@ -4295,7 +4299,7 @@ pub fn NewParser( p.fn_or_arrow_data_parse.allow_yield = if (opts.allow_yield == .allow_expr) AwaitOrYield.forbid_all else AwaitOrYield.allow_ident; // If "super()" is allowed in the body, it's allowed in the arguments p.fn_or_arrow_data_parse.allow_super_call = opts.allow_super_call; - var args = List(G.Arg).init(p.allocator); + var args = List(G.Arg){}; while (p.lexer.token != T.t_close_paren) { // Skip over "this" type annotations if (is_typescript_enabled and p.lexer.token == T.t_this) { @@ -4328,7 +4332,7 @@ pub fn NewParser( var text = p.lexer.identifier; var arg = try p.parseBinding(); - if (is_typescript_enabled) { + if (comptime is_typescript_enabled) { if (is_identifier and opts.is_constructor) { // Skip over TypeScript accessibility modifiers, which turn this argument // into a class field when used inside a class constructor. This is known @@ -4380,7 +4384,7 @@ pub fn NewParser( default_value = try p.parseExpr(.comma); } - args.append(G.Arg{ + args.append(p.allocator, G.Arg{ .ts_decorators = ts_decorators, .binding = arg, .default = default_value, @@ -4452,7 +4456,7 @@ pub fn NewParser( return &([_]ExprNodeIndex{}); } - var decorators = List(ExprNodeIndex).init(p.allocator); + var decorators = ListManaged(ExprNodeIndex).init(p.allocator); while (p.lexer.token == T.t_at) { try p.lexer.next(); @@ -5024,24 +5028,24 @@ pub fn NewParser( var scope = p.current_scope; - try scope.generated.append(name.ref orelse unreachable); + try scope.generated.append(p.allocator, name.ref orelse unreachable); return name; } - pub fn newSymbol(p: *P, kind: Symbol.Kind, identifier: string) !js_ast.Ref { + pub fn newSymbol(p: *P, kind: Symbol.Kind, identifier: string) !Ref { const inner_index = Ref.toInt(p.symbols.items.len); - try p.symbols.append(Symbol{ + try p.symbols.append(p.allocator, Symbol{ .kind = kind, .original_name = identifier, .link = null, }); if (is_typescript_enabled) { - try p.ts_use_counts.append(0); + try p.ts_use_counts.append(p.allocator, 0); } - return js_ast.Ref{ + return Ref{ .source_index = Ref.toInt(p.source.index), .inner_index = inner_index, }; @@ -5313,7 +5317,7 @@ pub fn NewParser( return stmt; } - if (stmt.getFunction().func.name) |name| { + if (stmt.data.s_function.func.name) |name| { defaultName = js_ast.LocRef{ .loc = defaultLoc, .ref = name.ref }; } else { defaultName = try p.createDefaultName(defaultLoc); @@ -5377,7 +5381,7 @@ pub fn NewParser( // Handle the default export of an abstract class in TypeScript if (is_typescript_enabled and is_identifier and (p.lexer.token == .t_class or opts.ts_decorators != null) and strings.eqlComptime(name, "abstract")) { switch (expr.data) { - .e_identifier => |ident| { + .e_identifier => { var stmtOpts = ParseStatementOptions{ .ts_decorators = opts.ts_decorators, .is_name_optional = true, @@ -5461,7 +5465,7 @@ pub fn NewParser( } try p.lexer.next(); - var namespace_ref: js_ast.Ref = js_ast.Ref.None; + var namespace_ref: Ref = Ref.None; var alias: ?js_ast.G.ExportStarAlias = null; var path: ParsedPath = undefined; @@ -5694,8 +5698,16 @@ pub fn NewParser( try p.lexer.next(); try p.lexer.expect(.t_open_paren); const test_ = try p.parseExpr(.lowest); - const body_loc = p.lexer.loc(); try p.lexer.expect(.t_close_paren); + + const body_loc = p.lexer.loc(); + _ = try p.pushScopeForParsePass(.block, body_loc); + defer p.popScope(); + + var stmtOpts = ParseStatementOptions{}; + const body = try p.parseStmt(&stmtOpts); + + return p.s(S.With{ .body = body, .body_loc = body_loc, .value = test_ }, loc); }, .t_switch => { try p.lexer.next(); @@ -5709,12 +5721,12 @@ pub fn NewParser( defer p.popScope(); try p.lexer.expect(.t_open_brace); - var cases = List(js_ast.Case).init(p.allocator); + var cases = ListManaged(js_ast.Case).init(p.allocator); var foundDefault = false; var stmtOpts = ParseStatementOptions{ .lexical_decl = .allow_all }; var value: ?js_ast.Expr = null; while (p.lexer.token != .t_close_brace) { - var body = List(js_ast.Stmt).init(p.allocator); + var body = StmtList.init(p.allocator); value = null; if (p.lexer.token == .t_default) { if (foundDefault) { @@ -5910,7 +5922,7 @@ pub fn NewParser( } if (isForAwait and !p.lexer.isContextualKeyword("of")) { - if (init_) |init_stmt| { + if (init_ != null) { try p.lexer.expectedString("\"of\""); } else { try p.lexer.unexpected(); @@ -5942,7 +5954,7 @@ pub fn NewParser( if (init_) |init_stmt| { switch (init_stmt.data) { .s_local => { - if (init_stmt.getLocal().kind == .k_const) { + if (init_stmt.data.s_local.kind == .k_const) { try p.requireInitializers(decls); } }, @@ -6176,7 +6188,7 @@ pub fn NewParser( const name = try path_name.nonUniqueNameString(p.allocator); stmt.namespace_ref = try p.newSymbol(.other, name); var scope: *Scope = p.current_scope; - try scope.generated.append(stmt.namespace_ref); + try scope.generated.append(p.allocator, stmt.namespace_ref); } var item_refs = ImportItemForNamespaceMap.init(p.allocator); @@ -6191,7 +6203,7 @@ pub fn NewParser( if (stmt.default_name) |*name_loc| { const name = p.loadNameFromRef(name_loc.ref orelse unreachable); const ref = try p.declareSymbol(.import, name_loc.loc, name); - try p.is_import_item.put(ref, true); + try p.is_import_item.put(p.allocator, ref, .{}); name_loc.ref = ref; if (comptime ParsePassSymbolUsageType != void) { if (!is_macro) { @@ -6229,7 +6241,7 @@ pub fn NewParser( const ref = try p.declareSymbol(.import, item.name.loc, name); p.checkForNonBMPCodePoint(item.alias_loc, item.alias); - try p.is_import_item.put(ref, true); + try p.is_import_item.put(p.allocator, ref, .{}); item.name.ref = ref; item_refs.putAssumeCapacity(item.alias, LocRef{ .loc = item.name.loc, .ref = ref }); @@ -6277,7 +6289,7 @@ pub fn NewParser( } // Track the items for this namespace - try p.import_items_for_namespace.put(stmt.namespace_ref, item_refs); + try p.import_items_for_namespace.put(p.allocator, stmt.namespace_ref, item_refs); return p.s(stmt, loc); }, @@ -6483,7 +6495,7 @@ pub fn NewParser( var decls: []G.Decl = &([_]G.Decl{}); switch (stmt.data) { .s_local => |local| { - var _decls = try List(G.Decl).initCapacity(p.allocator, local.decls.len); + var _decls = try ListManaged(G.Decl).initCapacity(p.allocator, local.decls.len); for (local.decls) |decl| { try extractDeclsForBinding(decl.binding, &_decls); } @@ -6557,7 +6569,7 @@ pub fn NewParser( try p.lexer.expect(.t_identifier); if (opts.is_module_scope) { - p.local_type_names.put(name, true) catch unreachable; + p.local_type_names.put(p.allocator, name, true) catch unreachable; } try p.skipTypeScriptTypeParameters(); @@ -6578,7 +6590,7 @@ pub fn NewParser( const old_has_non_local_export_declare_inside_namespace = p.has_non_local_export_declare_inside_namespace; p.has_non_local_export_declare_inside_namespace = false; - var stmts: List(Stmt) = List(Stmt).init(p.allocator); + var stmts: ListManaged(Stmt) = ListManaged(Stmt).init(p.allocator); if (p.lexer.token == .t_dot) { const dot_loc = p.lexer.loc(); @@ -6598,7 +6610,7 @@ pub fn NewParser( .is_namespace_scope = true, .is_typescript_declare = opts.is_typescript_declare, }; - stmts = List(Stmt).fromOwnedSlice(p.allocator, try p.parseStmtsUpTo(.t_close_brace, &_opts)); + stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, try p.parseStmtsUpTo(.t_close_brace, &_opts)); try p.lexer.next(); } const has_non_local_export_declare_inside_namespace = p.has_non_local_export_declare_inside_namespace; @@ -6634,7 +6646,7 @@ pub fn NewParser( if ((stmts.items.len == import_equal_count and !has_non_local_export_declare_inside_namespace) or opts.is_typescript_declare) { p.popAndDiscardScope(scope_index); if (opts.is_module_scope) { - p.local_type_names.put(name_text, true) catch unreachable; + p.local_type_names.put(p.allocator, name_text, true) catch unreachable; } return p.s(S.TypeScript{}, loc); } @@ -6662,7 +6674,7 @@ pub fn NewParser( // run the renamer. For external-facing things the renamer will avoid // collisions automatically so this isn't important for correctness. arg_ref = p.newSymbol(.hoisted, strings.cat(p.allocator, "_", name_text) catch unreachable) catch unreachable; - p.current_scope.generated.append(arg_ref.?) catch unreachable; + p.current_scope.generated.append(p.allocator, arg_ref.?) catch unreachable; } else { arg_ref = p.newSymbol(.hoisted, name_text) catch unreachable; } @@ -6684,7 +6696,7 @@ pub fn NewParser( try p.lexer.expect(.t_identifier); if (opts.is_module_scope) { - p.local_type_names.put(name, true) catch unreachable; + p.local_type_names.put(p.allocator, name, true) catch unreachable; } try p.skipTypeScriptTypeParameters(); @@ -6773,7 +6785,7 @@ pub fn NewParser( return p.lexer.string_literal_slice; } else if (p.lexer.utf16ToStringWithValidation(p.lexer.string_literal)) |alias| { return alias; - } else |err| { + } else |_| { const r = p.source.rangeOfString(loc); // TODO: improve error message try p.log.addRangeErrorFmt(p.source, r, p.allocator, "Invalid {s} alias because it contains an unpaired Unicode surrogate (like emoji)", .{kind}); @@ -6794,7 +6806,7 @@ pub fn NewParser( fn parseImportClause( p: *P, ) !ImportClause { - var items = List(js_ast.ClauseItem).init(p.allocator); + var items = ListManaged(js_ast.ClauseItem).init(p.allocator); try p.lexer.expect(.t_open_brace); var is_single_line = !p.lexer.has_newline_before; @@ -6948,7 +6960,7 @@ pub fn NewParser( .t_open_bracket => { try p.lexer.next(); var is_single_line = !p.lexer.has_newline_before; - var items = List(js_ast.ArrayBinding).init(p.allocator); + var items = ListManaged(js_ast.ArrayBinding).init(p.allocator); var has_spread = false; // "in" expressions are allowed @@ -7019,7 +7031,7 @@ pub fn NewParser( // p.markSyntaxFeature(compat.Destructuring, p.lexer.Range()) try p.lexer.next(); var is_single_line = false; - var properties = List(js_ast.B.Property).init(p.allocator); + var properties = ListManaged(js_ast.B.Property).init(p.allocator); // "in" expressions are allowed var old_allow_in = p.allow_in; @@ -7162,7 +7174,7 @@ pub fn NewParser( } fn parseAndDeclareDecls(p: *P, kind: Symbol.Kind, opts: *ParseStatementOptions) anyerror![]G.Decl { - var decls = List(G.Decl).init(p.allocator); + var decls = ListManaged(G.Decl).init(p.allocator); while (true) { // Forbid "let let" and "const let" but not "var let" @@ -7189,7 +7201,7 @@ pub fn NewParser( } // If we end with a .t_close_paren, that's a bug. It means we aren't following the last parenthese - if (isDebug) { + if (Environment.isDebug) { std.debug.assert(p.lexer.token != .t_close_paren); } } @@ -7299,7 +7311,7 @@ pub fn NewParser( // run the renamer. For external-facing things the renamer will avoid // collisions automatically so this isn't important for correctness. arg_ref = p.newSymbol(.hoisted, strings.cat(p.allocator, "_", name_text) catch unreachable) catch unreachable; - p.current_scope.generated.append(arg_ref) catch unreachable; + p.current_scope.generated.append(p.allocator, arg_ref) catch unreachable; } else { arg_ref = p.declareSymbol(.hoisted, name_loc, name_text) catch unreachable; } @@ -7326,7 +7338,7 @@ pub fn NewParser( } fn parseExportClause(p: *P) !ExportClauseResult { - var items = List(js_ast.ClauseItem).initCapacity(p.allocator, 1) catch unreachable; + var items = ListManaged(js_ast.ClauseItem).initCapacity(p.allocator, 1) catch unreachable; try p.lexer.expect(.t_open_brace); var is_single_line = !p.lexer.has_newline_before; var first_non_identifier_loc = logger.Loc{ .start = 0 }; @@ -7419,7 +7431,7 @@ pub fn NewParser( } // TODO: - pub fn checkForNonBMPCodePoint(p: *P, loc: logger.Loc, name: string) void {} + pub fn checkForNonBMPCodePoint(_: *P, _: logger.Loc, _: string) void {} fn parseStmtsUpTo(p: *P, eend: js_lexer.T, _opts: *ParseStatementOptions) ![]Stmt { var opts = _opts.*; @@ -7497,7 +7509,7 @@ pub fn NewParser( if (needsCheck and returnWithoutSemicolonStart != -1) { switch (stmt.data) { - .s_expr => |exp| { + .s_expr => { try p.log.addWarning( p.source, logger.Loc{ .start = returnWithoutSemicolonStart + 6 }, @@ -7516,43 +7528,24 @@ pub fn NewParser( } fn markStrictModeFeature(p: *P, feature: StrictModeFeature, r: logger.Range, detail: string) !void { - var text: string = undefined; - var can_be_transformed = false; - switch (feature) { - .with_statement => { - text = "With statements"; - }, - .delete_bare_name => { - text = "\"delete\" of a bare identifier"; - }, - .for_in_var_init => { - text = "Variable initializers within for-in loops"; - can_be_transformed = true; - }, - .eval_or_arguments => { - text = try std.fmt.allocPrint(p.allocator, "Declarations with the name {s}", .{detail}); - }, - .reserved_word => { - text = try std.fmt.allocPrint(p.allocator, "{s} is a reserved word and", .{detail}); - }, - .legacy_octal_literal => { - text = "Legacy octal literals"; - }, - .legacy_octal_escape => { - text = "Legacy octal escape sequences"; - }, - .if_else_function_stmt => { - text = "Function declarations inside if statements"; - }, + const can_be_transformed = feature == StrictModeFeature.for_in_var_init; + const text = switch (feature) { + .with_statement => "With statements", + .delete_bare_name => "\"delete\" of a bare identifier", + .for_in_var_init => "Variable initializers within for-in loops", + .eval_or_arguments => try std.fmt.allocPrint(p.allocator, "Declarations with the name {s}", .{detail}), + .reserved_word => try std.fmt.allocPrint(p.allocator, "{s} is a reserved word and", .{detail}), + .legacy_octal_literal => "Legacy octal literals", + .legacy_octal_escape => "Legacy octal escape sequences", + .if_else_function_stmt => "Function declarations inside if statements", // else => { // text = "This feature"; // }, - } + }; var scope = p.current_scope; if (p.isStrictMode()) { var why: string = ""; - var notes: []logger.Data = &[_]logger.Data{}; var where: logger.Range = logger.Range.None; switch (scope.strict_mode) { .implicit_strict_mode_import => { @@ -7576,15 +7569,15 @@ pub fn NewParser( try p.log.addRangeErrorWithNotes(p.source, r, try std.fmt.allocPrint(p.allocator, "{s} cannot be used in strict mode", .{text}), &([_]logger.Data{logger.rangeData(p.source, where, why)})); } else if (!can_be_transformed and p.isStrictModeOutputFormat()) { - try p.log.addRangeError(p.source, r, try std.fmt.allocPrint(p.allocator, "{s} cannot be used with \"esm\" due to strict mode", .{text})); + try p.log.addRangeError(p.source, r, try std.fmt.allocPrint(p.allocator, "{s} cannot be used with esm due to strict mode", .{text})); } } - pub fn isStrictMode(p: *P) bool { + pub inline fn isStrictMode(p: *P) bool { return p.current_scope.strict_mode != .sloppy_mode; } - pub inline fn isStrictModeOutputFormat(p: *P) bool { + pub inline fn isStrictModeOutputFormat(_: *P) bool { return true; } @@ -7620,7 +7613,7 @@ pub fn NewParser( const ref = try p.newSymbol(kind, name); if (member == null) { - try p.module_scope.members.putWithHash(name, name_hash, Scope.Member{ .ref = ref, .loc = logger.Loc.Empty }); + try p.module_scope.members.putWithHash(p.allocator, name, name_hash, Scope.Member{ .ref = ref, .loc = logger.Loc.Empty }); return ref; } @@ -7628,7 +7621,7 @@ pub fn NewParser( // this module will be unable to reference this symbol. However, we must // still add the symbol to the scope so it gets minified (automatically- // generated code may still reference the symbol). - try p.module_scope.generated.append(ref); + try p.module_scope.generated.append(p.allocator, ref); return ref; } @@ -7660,13 +7653,13 @@ pub fn NewParser( var ref = try p.newSymbol(kind, name); const scope = p.current_scope; - var entry = try scope.members.getOrPut(name); + var entry = try scope.members.getOrPut(p.allocator, name); if (entry.found_existing) { const existing = entry.entry.value; var symbol: *Symbol = &p.symbols.items[@intCast(usize, existing.ref.inner_index)]; if (comptime !is_generated) { - switch (p.canMergeSymbols(scope, symbol.kind, kind)) { + switch (scope.canMergeSymbols(symbol.kind, kind, is_typescript_enabled)) { .forbidden => { const r = js_lexer.rangeOfIdentifier(p.source, loc); var notes = try p.allocator.alloc(logger.Data, 1); @@ -7695,7 +7688,7 @@ pub fn NewParser( } else { // Ensure that EImportIdentifier is created for the symbol in handleIdentifier if (symbol.kind == .import and kind != .import) { - try p.is_import_item.put(ref, true); + try p.is_import_item.put(p.allocator, ref, .{}); } p.symbols.items[ref.inner_index].link = existing.ref; @@ -7704,7 +7697,7 @@ pub fn NewParser( entry.entry.value = js_ast.Scope.Member{ .ref = ref, .loc = loc }; if (comptime is_generated) { - try p.module_scope.generated.append(ref); + try p.module_scope.generated.append(p.allocator, ref); } return ref; } @@ -7745,29 +7738,26 @@ pub fn NewParser( // The name is optional if (p.lexer.token == .t_identifier) { + const text = p.lexer.identifier; + // Don't declare the name "arguments" since it's shadowed and inaccessible - var _name = js_ast.LocRef{ + name = js_ast.LocRef{ .loc = p.lexer.loc(), - .ref = null, + .ref = if (text.len > 0 and !strings.eqlComptime(text, "arguments")) + try p.declareSymbol(.hoisted_function, p.lexer.loc(), text) + else + try p.newSymbol(.hoisted_function, text), }; - const text = p.lexer.identifier; - if (text.len > 0 and !strings.eqlComptime(text, "arguments")) { - _name.ref = try p.declareSymbol(.hoisted_function, _name.loc, text); - } else { - _name.ref = try p.newSymbol(.hoisted_function, text); - } - - name = _name; try p.lexer.next(); } // Even anonymous functions can have TypeScript type parameters - if (is_typescript_enabled) { + if (comptime is_typescript_enabled) { try p.skipTypeScriptTypeParameters(); } - var func = try p.parseFn(name, FnOrArrowDataParse{ + const func = try p.parseFn(name, FnOrArrowDataParse{ .async_range = async_range, .allow_await = if (is_async) .allow_expr else .allow_ident, .allow_yield = if (is_generator) .allow_expr else .allow_ident, @@ -7850,7 +7840,7 @@ pub fn NewParser( }, .b_array => |bind| { - for (bind.items) |item, i| { + for (bind.items) |_, i| { p.declareBinding(kind, &bind.items[i].binding, opts) catch unreachable; } }, @@ -7883,7 +7873,7 @@ pub fn NewParser( return self.mm(@TypeOf(kind), kind); } - pub fn storeNameInRef(p: *P, name: string) !js_ast.Ref { + pub fn storeNameInRef(p: *P, name: string) !Ref { if (comptime ParsePassSymbolUsageType != void) { if (p.parse_pass_symbol_uses.getPtr(name)) |res| { res.used = true; @@ -7893,19 +7883,19 @@ pub fn NewParser( if (@ptrToInt(p.source.contents.ptr) <= @ptrToInt(name.ptr) and (@ptrToInt(name.ptr) + name.len) <= (@ptrToInt(p.source.contents.ptr) + p.source.contents.len)) { const start = Ref.toInt(@ptrToInt(name.ptr) - @ptrToInt(p.source.contents.ptr)); const end = Ref.toInt(name.len); - return js_ast.Ref{ .source_index = start, .inner_index = end, .is_source_contents_slice = true }; + return Ref{ .source_index = start, .inner_index = end, .is_source_contents_slice = true }; } else if (p.allocated_names.capacity > 0) { const inner_index = Ref.toInt(p.allocated_names.items.len); - try p.allocated_names.append(name); - return js_ast.Ref{ .source_index = std.math.maxInt(Ref.Int), .inner_index = inner_index }; + try p.allocated_names.append(p.allocator, name); + return Ref{ .source_index = std.math.maxInt(Ref.Int), .inner_index = inner_index }; } else { p.allocated_names = try @TypeOf(p.allocated_names).initCapacity(p.allocator, 1); p.allocated_names.appendAssumeCapacity(name); - return js_ast.Ref{ .source_index = std.math.maxInt(Ref.Int), .inner_index = 0 }; + return Ref{ .source_index = std.math.maxInt(Ref.Int), .inner_index = 0 }; } } - pub fn loadNameFromRef(p: *P, ref: js_ast.Ref) string { + pub fn loadNameFromRef(p: *P, ref: Ref) string { if (ref.is_source_contents_slice) { return p.source.contents[ref.source_index .. ref.source_index + ref.inner_index]; } else if (ref.source_index == std.math.maxInt(Ref.Int)) { @@ -8034,9 +8024,8 @@ pub fn NewParser( pub fn skipTypeScriptArrowArgsWithBacktracking(p: *P) anyerror!void { try p.skipTypescriptFnArgs(); - p.lexer.expect(.t_equals_greater_than) catch |err| { + p.lexer.expect(.t_equals_greater_than) catch return error.Backtrack; - }; } pub fn skipTypeScriptTypeArgumentsWithBacktracking(p: *P) anyerror!void { @@ -8050,9 +8039,9 @@ pub fn NewParser( } pub fn skipTypeScriptArrowReturnTypeWithBacktracking(p: *P) anyerror!void { - p.lexer.expect(.t_colon) catch |err| { + p.lexer.expect(.t_colon) catch return error.Backtrack; - }; + try p.skipTypescriptReturnType(); // Check the token after this and backtrack if it's the wrong one if (p.lexer.token != .t_equals_greater_than) { @@ -8189,7 +8178,7 @@ pub fn NewParser( p.current_scope = current_scope.parent orelse p.panic("Internal error: attempted to call popScope() on the topmost scope", .{}); } - pub fn markExprAsParenthesized(p: *P, expr: *Expr) void { + pub fn markExprAsParenthesized(_: *P, expr: *Expr) void { switch (expr.data) { .e_array => |ex| { ex.is_parenthesized = true; @@ -8270,7 +8259,7 @@ pub fn NewParser( // Handle index signatures if (is_typescript_enabled and p.lexer.token == .t_colon and wasIdentifier and opts.is_class) { switch (expr.data) { - .e_identifier => |ident| { + .e_identifier => { try p.lexer.next(); try p.skipTypeScriptType(.lowest); try p.lexer.expect(.t_close_bracket); @@ -8313,15 +8302,10 @@ pub fn NewParser( // Support contextual keywords if (kind == .normal and !opts.is_generator) { // Does the following token look like a key? - var couldBeModifierKeyword = p.lexer.isIdentifierOrKeyword(); - if (!couldBeModifierKeyword) { - switch (p.lexer.token) { - .t_open_bracket, .t_numeric_literal, .t_string_literal, .t_asterisk, .t_private_identifier => { - couldBeModifierKeyword = true; - }, - else => {}, - } - } + const couldBeModifierKeyword = p.lexer.isIdentifierOrKeyword() or switch (p.lexer.token) { + .t_open_bracket, .t_numeric_literal, .t_string_literal, .t_asterisk, .t_private_identifier => true, + else => false, + }; // If so, check for a modifier keyword if (couldBeModifierKeyword) { @@ -8370,9 +8354,21 @@ pub fn NewParser( key = p.e(E.String{ .utf8 = name }, name_range.loc); // Parse a shorthand property - const isShorthandProperty = (!opts.is_class and kind == .normal and p.lexer.token != .t_colon and p.lexer.token != .t_open_paren and p.lexer.token != .t_less_than and !opts.is_generator and !opts.is_async and !js_lexer.Keywords.has(name)); + const isShorthandProperty = (!opts.is_class and + kind == .normal and + p.lexer.token != .t_colon and + p.lexer.token != .t_open_paren and + p.lexer.token != .t_less_than and + !opts.is_generator and + !opts.is_async and + !js_lexer.Keywords.has(name)); + if (isShorthandProperty) { - if ((p.fn_or_arrow_data_parse.allow_await != .allow_ident and strings.eqlComptime(name, "await")) or (p.fn_or_arrow_data_parse.allow_yield != .allow_ident and strings.eqlComptime(name, "yield"))) { + if ((p.fn_or_arrow_data_parse.allow_await != .allow_ident and + strings.eqlComptime(name, "await")) or + (p.fn_or_arrow_data_parse.allow_yield != .allow_ident and + strings.eqlComptime(name, "yield"))) + { // TODO: add fmt to addRangeError p.log.addRangeError(p.source, name_range, "Cannot use \"yield\" or \"await\" here.") catch unreachable; } @@ -8660,7 +8656,7 @@ pub fn NewParser( var body_loc = p.lexer.loc(); try p.lexer.expect(T.t_open_brace); - var properties = List(G.Property).init(p.allocator); + var properties = ListManaged(G.Property).init(p.allocator); // Allow "in" and private fields inside class bodies const old_allow_in = p.allow_in; @@ -8750,8 +8746,8 @@ pub fn NewParser( return true; } - pub fn parseTemplateParts(p: *P, include_raw: bool) ![]E.TemplatePart { - var parts = List(E.TemplatePart).initCapacity(p.allocator, 1) catch unreachable; + pub fn parseTemplateParts(p: *P, _: bool) ![]E.TemplatePart { + var parts = ListManaged(E.TemplatePart).initCapacity(p.allocator, 1) catch unreachable; // Allow "in" inside template literals var oldAllowIn = p.allow_in; p.allow_in = true; @@ -8774,7 +8770,7 @@ pub fn NewParser( try p.lexer.next(); break :parseTemplatePart; } - std.debug.assert(p.lexer.token != .t_end_of_file); + if (comptime Environment.allow_assert) std.debug.assert(p.lexer.token != .t_end_of_file); } p.allow_in = oldAllowIn; @@ -8799,7 +8795,7 @@ pub fn NewParser( p.allow_in = true; defer p.allow_in = old_allow_in; - var args = List(Expr).init(p.allocator); + var args = ListManaged(Expr).init(p.allocator); try p.lexer.expect(.t_open_paren); while (p.lexer.token != .t_close_paren) { @@ -8828,9 +8824,7 @@ pub fn NewParser( return _parseSuffix(p, left, level, errors orelse &DeferredErrors.None, flags); } pub fn _parseSuffix(p: *P, _left: Expr, level: Level, errors: *DeferredErrors, flags: Expr.EFlags) anyerror!Expr { - var expr: Expr = Expr{ .loc = logger.Loc.Empty, .data = Prefill.Data.EMissing }; var left = _left; - var loc = p.lexer.loc(); var optional_chain: ?js_ast.OptionalChain = null; while (true) { if (p.lexer.loc().start == p.after_arrow_body_loc.start) { @@ -9604,6 +9598,7 @@ pub fn NewParser( import.import_record_index = record_id; p.is_import_item.ensureCapacity( + p.allocator, @intCast(u32, p.is_import_item.count() + import.items.len), ) catch unreachable; @@ -9618,7 +9613,7 @@ pub fn NewParser( const name_ref = p.declareSymbol(.import, this.loc, clause.original_name) catch unreachable; clause.name = LocRef{ .loc = this.loc, .ref = name_ref }; - p.is_import_item.put(name_ref, true) catch unreachable; + p.is_import_item.putAssumeCapacity(name_ref, .{}); p.macro.imports.putAssumeCapacity(js_ast.Macro.JSNode.SymbolMap.generateImportHash(import_hash_name, import_data.path), name_ref); @@ -9825,7 +9820,7 @@ pub fn NewParser( return try p.parseStringLiteral(); }, .t_template_head => { - var head = p.lexer.toEString(); + const head = p.lexer.toEString(); const parts = try p.parseTemplateParts(false); @@ -9978,12 +9973,12 @@ pub fn NewParser( // Special-case the weird "new.target" expression here if (p.lexer.token == .t_dot) { try p.lexer.next(); + if (p.lexer.token != .t_identifier or !strings.eqlComptime(p.lexer.raw(), "target")) { try p.lexer.unexpected(); return error.SyntaxError; } - const r = logger.Range{ .loc = loc, .len = p.lexer.range().end().start - loc.start }; try p.lexer.next(); return p.e(E.NewTarget{}, loc); } @@ -10015,7 +10010,7 @@ pub fn NewParser( .t_open_bracket => { try p.lexer.next(); var is_single_line = !p.lexer.has_newline_before; - var items = List(Expr).init(p.allocator); + var items = ListManaged(Expr).init(p.allocator); var self_errors = DeferredErrors{}; var comma_after_spread = logger.Loc{}; @@ -10086,7 +10081,7 @@ pub fn NewParser( .t_open_brace => { try p.lexer.next(); var is_single_line = !p.lexer.has_newline_before; - var properties = List(G.Property).init(p.allocator); + var properties = ListManaged(G.Property).init(p.allocator); var self_errors = DeferredErrors{}; var comma_after_spread = logger.Loc{}; @@ -10270,7 +10265,6 @@ pub fn NewParser( p.es6_import_keyword = js_lexer.rangeOfIdentifier(p.source, loc); try p.lexer.next(); if (p.lexer.isContextualKeyword("meta")) { - const r = p.lexer.range(); try p.lexer.next(); p.has_import_meta = true; return p.e(E.ImportMeta{}, loc); @@ -10435,7 +10429,7 @@ pub fn NewParser( if (@as(JSXTag.TagType, tag.data) == .tag) { start_tag = tag.data.tag; var spread_loc: logger.Loc = logger.Loc.Empty; - var props = List(G.Property).init(p.allocator); + var props = ListManaged(G.Property).init(p.allocator); var key_prop_i: i32 = -1; var spread_prop_i: i32 = -1; var i: i32 = 0; @@ -10463,7 +10457,7 @@ pub fn NewParser( continue; } - var prop_name = p.e(E.String{ .utf8 = prop_name_literal }, key_range.loc); + const prop_name = p.e(E.String{ .utf8 = prop_name_literal }, key_range.loc); // Parse the value var value: Expr = undefined; @@ -10540,7 +10534,7 @@ pub fn NewParser( // Use ExpectJSXElementChild() so we parse child strings try p.lexer.expectJSXElementChild(.t_greater_than); - var children = List(Expr).init(p.allocator); + var children = ListManaged(Expr).init(p.allocator); while (true) { switch (p.lexer.token) { @@ -10636,21 +10630,24 @@ pub fn NewParser( return try p._parsePrefix(level, errors orelse &DeferredErrors.None, flags); } - fn appendPart(p: *P, parts: *List(js_ast.Part), stmts: []Stmt) !void { - p.symbol_uses = SymbolUseMap.init(p.allocator); - p.declared_symbols.deinit(); - p.declared_symbols = @TypeOf(p.declared_symbols).init(p.allocator); - p.import_records_for_current_part.deinit(); - p.import_records_for_current_part = @TypeOf(p.import_records_for_current_part).init(p.allocator); - p.scopes_for_current_part.deinit(); - p.scopes_for_current_part = @TypeOf(p.scopes_for_current_part).init(p.allocator); + fn appendPart(p: *P, parts: *ListManaged(js_ast.Part), stmts: []Stmt) !void { + p.symbol_uses = SymbolUseMap{}; + const allocator = p.allocator; + p.declared_symbols.deinit( + allocator, + ); + p.declared_symbols = @TypeOf(p.declared_symbols){}; + p.import_records_for_current_part.deinit(allocator); + p.import_records_for_current_part = @TypeOf(p.import_records_for_current_part){}; + p.scopes_for_current_part.deinit(allocator); + p.scopes_for_current_part = @TypeOf(p.scopes_for_current_part){}; var opts = PrependTempRefsOpts{}; - var partStmts = List(Stmt).fromOwnedSlice(p.allocator, stmts); + var partStmts = ListManaged(Stmt).fromOwnedSlice(allocator, stmts); try p.visitStmtsAndPrependTempRefs(&partStmts, &opts); // Insert any relocated variable statements now if (p.relocated_top_level_vars.items.len > 0) { - var already_declared = RefBoolMap.init(p.allocator); + var already_declared = RefMap{}; for (p.relocated_top_level_vars.items) |*local| { // Follow links because "var" declarations may be merged due to hoisting while (local.ref != null) { @@ -10662,17 +10659,17 @@ pub fn NewParser( } const ref = local.ref orelse continue; if (!already_declared.contains(ref)) { - try already_declared.put(ref, true); + try already_declared.put(allocator, ref, .{}); - const decls = try p.allocator.alloc(G.Decl, 1); + const decls = try allocator.alloc(G.Decl, 1); decls[0] = Decl{ .binding = p.b(B.Identifier{ .ref = ref }, local.loc), }; try partStmts.append(p.s(S.Local{ .decls = decls }, local.loc)); } } - p.relocated_top_level_vars.deinit(); - p.relocated_top_level_vars = @TypeOf(p.relocated_top_level_vars).init(p.allocator); + p.relocated_top_level_vars.deinit(allocator); + p.relocated_top_level_vars = @TypeOf(p.relocated_top_level_vars){}; // Follow links because "var" declarations may be merged due to hoisting @@ -10683,16 +10680,19 @@ pub fn NewParser( if (partStmts.items.len > 0) { const _stmts = partStmts.toOwnedSlice(); - var part = js_ast.Part{ + + try parts.append(js_ast.Part{ .stmts = _stmts, .symbol_uses = p.symbol_uses, - .declared_symbols = p.declared_symbols.toOwnedSlice(), - .import_record_indices = p.import_records_for_current_part.toOwnedSlice(), - .scopes = p.scopes_for_current_part.toOwnedSlice(), + .declared_symbols = p.declared_symbols.toOwnedSlice( + p.allocator, + ), + .import_record_indices = p.import_records_for_current_part.toOwnedSlice( + p.allocator, + ), + .scopes = p.scopes_for_current_part.toOwnedSlice(p.allocator), .can_be_removed_if_unused = p.stmtsCanBeRemovedIfUnused(_stmts), - }; - - try parts.append(part); + }); } } @@ -10744,7 +10744,7 @@ pub fn NewParser( // check if the imported file is marked as "sideEffects: false" before we // can remove a SImport statement. Otherwise the import must be kept for // its side effects. - .s_import => |st| {}, + .s_import => {}, .s_class => |st| { if (!p.classCanBeRemovedIfUnused(&st.class)) { return false; @@ -10808,15 +10808,13 @@ pub fn NewParser( return true; } - fn visitStmtsAndPrependTempRefs(p: *P, stmts: *List(Stmt), opts: *PrependTempRefsOpts) !void { + fn visitStmtsAndPrependTempRefs(p: *P, stmts: *ListManaged(Stmt), opts: *PrependTempRefsOpts) !void { if (only_scan_imports_and_do_not_visit) { @compileError("only_scan_imports_and_do_not_visit must not run this."); } - var old_temp_refs = p.temp_refs_to_declare; - var old_temp_ref_count = p.temp_ref_count; - p.temp_refs_to_declare.deinit(); - p.temp_refs_to_declare = @TypeOf(p.temp_refs_to_declare).init(p.allocator); + p.temp_refs_to_declare.deinit(p.allocator); + p.temp_refs_to_declare = @TypeOf(p.temp_refs_to_declare){}; p.temp_ref_count = 0; try p.visitStmts(stmts, opts.kind); @@ -10825,7 +10823,7 @@ pub fn NewParser( if (opts.fn_body_loc != null) { // Capture "this" if (p.fn_only_data_visit.this_capture_ref) |ref| { - try p.temp_refs_to_declare.append(TempRef{ + try p.temp_refs_to_declare.append(p.allocator, TempRef{ .ref = ref, .value = p.e(E.This{}, opts.fn_body_loc orelse p.panic("Internal error: Expected opts.fn_body_loc to exist", .{})), }); @@ -10834,7 +10832,7 @@ pub fn NewParser( } fn recordDeclaredSymbol(p: *P, ref: Ref) !void { - try p.declared_symbols.append(js_ast.DeclaredSymbol{ + try p.declared_symbols.append(p.allocator, js_ast.DeclaredSymbol{ .ref = ref, .is_top_level = p.current_scope == p.module_scope, }); @@ -10883,7 +10881,7 @@ pub fn NewParser( ); p.pushScopeForVisitPass(.function_body, body.loc) catch unreachable; - var stmts = List(Stmt).fromOwnedSlice(p.allocator, body.stmts); + var stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, body.stmts); var temp_opts = PrependTempRefsOpts{ .kind = StmtsKind.fn_body, .fn_body_loc = body.loc }; p.visitStmtsAndPrependTempRefs(&stmts, &temp_opts) catch unreachable; func.body = G.FnBody{ .stmts = stmts.toOwnedSlice(), .loc = body.loc }; @@ -10930,12 +10928,12 @@ pub fn NewParser( // Output.print("\nVisit: {s} - {d}\n", .{ @tagName(expr.data), expr.loc.start }); switch (expr.data) { .e_null, .e_super, .e_boolean, .e_big_int, .e_reg_exp, .e_new_target, .e_undefined => {}, - .e_string => |e_| { + .e_string => { // If you're using this, you're probably not using 0-prefixed legacy octal notation // if e.LegacyOctalLoc.Start > 0 { }, - .e_number => |e_| { + .e_number => { // idc about legacy octal loc }, @@ -11125,7 +11123,7 @@ pub fn NewParser( const include_filename = FeatureFlags.include_filename_in_jsx and p.options.jsx.development; const args = p.allocator.alloc(Expr, if (p.options.jsx.development) @as(usize, 6) else @as(usize, 4)) catch unreachable; args[0] = tag; - var props = List(G.Property).fromOwnedSlice(p.allocator, e_.properties); + var props = ListManaged(G.Property).fromOwnedSlice(p.allocator, e_.properties); // arguments needs to be like // { // ...props, @@ -11261,7 +11259,6 @@ pub fn NewParser( if (p.macro.refs.get(ref)) |import_record_id| { const name = p.symbols.items[ref.inner_index].original_name; const record = &p.import_records.items[import_record_id]; - const prepend_offset = p.macro.prepend_stmts.items.len; // We must visit it to convert inline_identifiers and record usage const macro_result = (p.options.macro_context.call( record.path.text, @@ -11332,7 +11329,7 @@ pub fn NewParser( } const is_call_target = @as(Expr.Tag, p.call_target) == .e_binary and expr.data.e_binary == p.call_target.e_binary; - const is_stmt_expr = @as(Expr.Tag, p.stmt_expr_value) == .e_binary and expr.data.e_binary == p.stmt_expr_value.e_binary; + // const is_stmt_expr = @as(Expr.Tag, p.stmt_expr_value) == .e_binary and expr.data.e_binary == p.stmt_expr_value.e_binary; const was_anonymous_named_expr = p.isAnonymousNamedExpr(e_.right); if (comptime jsx_transform_type == .macro) { @@ -12007,7 +12004,6 @@ pub fn NewParser( } } - var has_spread = false; for (e_.items) |*item| { switch (item.data) { .e_missing => {}, @@ -12130,7 +12126,7 @@ pub fn NewParser( // const could_be_require_resolve = (e_.args.len == 1 and @as( // Expr.Tag, // e_.target.data, - // ) == .e_dot and e_.target.getDot().optional_chain == null and strings.eql( + // ) == .e_dot and e_.target.data.e_dot.optional_chain == null and strings.eql( // e_.target.dat.e_dot.name, // "resolve", // )); @@ -12241,7 +12237,7 @@ pub fn NewParser( }); p.pushScopeForVisitPass(.function_body, e_.body.loc) catch unreachable; - var stmts_list = List(Stmt).fromOwnedSlice(p.allocator, dupe); + var stmts_list = ListManaged(Stmt).fromOwnedSlice(p.allocator, dupe); var temp_opts = PrependTempRefsOpts{ .kind = StmtsKind.fn_body }; p.visitStmtsAndPrependTempRefs(&stmts_list, &temp_opts) catch unreachable; p.allocator.free(e_.body.stmts); @@ -12271,7 +12267,13 @@ pub fn NewParser( fn visitArgs(p: *P, args: []G.Arg, opts: VisitArgsOpts) void { const strict_loc = fnBodyContainsUseStrict(opts.body); const has_simple_args = isSimpleParameterList(args, opts.has_rest_arg); - var duplicate_args_check: ?StringBoolMap = null; + var duplicate_args_check: ?*StringVoidMap.Node = null; + defer { + if (duplicate_args_check) |checker| { + StringVoidMap.release(checker); + } + } + // Section 15.2.1 Static Semantics: Early Errors: "It is a Syntax Error if // FunctionBodyContainsUseStrict of FunctionBody is true and // IsSimpleParameterList of FormalParameters is false." @@ -12284,11 +12286,14 @@ pub fn NewParser( // functions which have simple parameter lists and which are not defined in // strict mode code." if (opts.is_unique_formal_parameters or strict_loc != null or !has_simple_args or p.isStrictMode()) { - duplicate_args_check = StringBoolMap.init(p.allocator); + duplicate_args_check = StringVoidMap.get(_global.default_allocator); } var i: usize = 0; - var duplicate_args_check_ptr: ?*StringBoolMap = if (duplicate_args_check != null) &duplicate_args_check.? else null; + var duplicate_args_check_ptr: ?*StringVoidMap = if (duplicate_args_check != null) + &duplicate_args_check.?.data + else + null; while (i < args.len) : (i += 1) { if (args[i].ts_decorators.len > 0) { @@ -12311,7 +12316,7 @@ pub fn NewParser( return decs; } - pub fn keepExprSymbolName(p: *P, _value: Expr, name: string) Expr { + pub fn keepExprSymbolName(_: *P, _value: Expr, _: string) Expr { return _value; // var start = p.expr_list.items.len; // p.expr_list.ensureUnusedCapacity(2) catch unreachable; @@ -12441,7 +12446,7 @@ pub fn NewParser( return true; } }, - .e_import_identifier => |ex| { + .e_import_identifier => { // References to an ES6 import item are always side-effect free in an // ECMAScript environment. @@ -12596,8 +12601,8 @@ pub fn NewParser( fn maybeRewritePropertyAccess( p: *P, loc: logger.Loc, - assign_target: js_ast.AssignTarget, - is_delete_target: bool, + _: js_ast.AssignTarget, + _: bool, target: js_ast.Expr, name: string, name_loc: logger.Loc, @@ -12645,17 +12650,17 @@ pub fn NewParser( // the value is ignored because that's what the TypeScript compiler does. } - fn visitAndAppendStmt(p: *P, stmts: *List(Stmt), stmt: *Stmt) !void { + fn visitAndAppendStmt(p: *P, stmts: *ListManaged(Stmt), stmt: *Stmt) !void { switch (stmt.data) { // These don't contain anything to traverse .s_debugger, .s_empty, .s_comment => {}, - .s_type_script => |data| { + .s_type_script => { // Erase TypeScript constructs from the output completely return; }, - .s_directive => |data| { + .s_directive => { // if p.isStrictMode() && s.LegacyOctalLoc.Start > 0 { // p.markStrictModeFeature(legacyOctalEscape, p.source.RangeOfLegacyOctalEscape(s.LegacyOctalLoc), "") @@ -12719,14 +12724,14 @@ pub fn NewParser( const name = p.loadNameFromRef(data.namespace_ref); data.namespace_ref = try p.newSymbol(.other, name); - try p.current_scope.generated.append(data.namespace_ref); + try p.current_scope.generated.append(p.allocator, data.namespace_ref); try p.recordDeclaredSymbol(data.namespace_ref); // This is a re-export and the symbols created here are used to reference for (data.items) |*item| { const _name = p.loadNameFromRef(item.name.ref orelse unreachable); const ref = try p.newSymbol(.other, _name); - try p.current_scope.generated.append(data.namespace_ref); + try p.current_scope.generated.append(p.allocator, data.namespace_ref); try p.recordDeclaredSymbol(data.namespace_ref); item.name.ref = ref; } @@ -12736,7 +12741,7 @@ pub fn NewParser( // "export * from 'path'" const name = p.loadNameFromRef(data.namespace_ref); data.namespace_ref = try p.newSymbol(.other, name); - try p.current_scope.generated.append(data.namespace_ref); + try p.current_scope.generated.append(p.allocator, data.namespace_ref); try p.recordDeclaredSymbol(data.namespace_ref); // "export * as ns from 'path'" @@ -12748,12 +12753,12 @@ pub fn NewParser( // because Safari doesn't support it and I've seen cases where this breaks p.recordUsage(data.namespace_ref); - try stmts.ensureCapacity(stmts.items.len + 2); + try stmts.ensureTotalCapacity(stmts.items.len + 2); stmts.appendAssumeCapacity(p.s(S.Import{ .namespace_ref = data.namespace_ref, .star_name_loc = alias.loc, .import_record_index = data.import_record_index }, stmt.loc)); var items = try List(js_ast.ClauseItem).initCapacity(p.allocator, 1); items.appendAssumeCapacity(js_ast.ClauseItem{ .alias = alias.original_name, .original_name = alias.original_name, .alias_loc = alias.loc, .name = LocRef{ .loc = alias.loc, .ref = data.namespace_ref } }); - stmts.appendAssumeCapacity(p.s(S.ExportClause{ .items = items.toOwnedSlice(), .is_single_line = true }, stmt.loc)); + stmts.appendAssumeCapacity(p.s(S.ExportClause{ .items = items.toOwnedSlice(p.allocator), .is_single_line = true }, stmt.loc)); return; } }, @@ -12839,7 +12844,8 @@ pub fn NewParser( return; }, .s_class => |class| { - var shadow_ref = p.visitClass(s2.loc, &class.class); + // TODO: https://github.com/Jarred-Sumner/bun/issues/51 + _ = p.visitClass(s2.loc, &class.class); if (p.options.enable_bundling) { var export_default_args = p.allocator.alloc(Expr, 2) catch unreachable; @@ -13039,7 +13045,7 @@ pub fn NewParser( // as a loop body. This is used to enable optimizations specific to the // topmost scope in a loop body block. const kind = if (std.meta.eql(p.loop_body, stmt.data)) StmtsKind.loop_body else StmtsKind.none; - var _stmts = List(Stmt).fromOwnedSlice(p.allocator, data.stmts); + var _stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, data.stmts); p.visitStmts(&_stmts, kind) catch unreachable; data.stmts = _stmts.toOwnedSlice(); p.popScope(); @@ -13058,7 +13064,14 @@ pub fn NewParser( return; }, .s_with => |data| { - notimpl(); + // using with is forbidden in strict mode + // we largely only deal with strict mode + // however, old code should still technically transpile + // we do not attempt to preserve all the semantics of with + data.value = p.visitExpr(data.value); + // This stmt should be a block + if (comptime Environment.allow_assert) std.debug.assert(data.body.data == .s_block); + data.body = p.visitSingleStmt(data.body, StmtsKind.none); }, .s_while => |data| { data.test_ = p.visitExpr(data.test_); @@ -13206,7 +13219,7 @@ pub fn NewParser( .s_try => |data| { p.pushScopeForVisitPass(.block, stmt.loc) catch unreachable; { - var _stmts = List(Stmt).fromOwnedSlice(p.allocator, data.body); + var _stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, data.body); p.fn_or_arrow_data_visit.try_body_count += 1; p.visitStmts(&_stmts, StmtsKind.none) catch unreachable; p.fn_or_arrow_data_visit.try_body_count -= 1; @@ -13220,7 +13233,7 @@ pub fn NewParser( if (catch_.binding != null) { p.visitBinding(catch_.binding.?, null); } - var _stmts = List(Stmt).fromOwnedSlice(p.allocator, catch_.body); + var _stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, catch_.body); p.visitStmts(&_stmts, StmtsKind.none) catch unreachable; catch_.body = _stmts.toOwnedSlice(); } @@ -13230,7 +13243,7 @@ pub fn NewParser( if (data.finally) |*finally| { p.pushScopeForVisitPass(.block, finally.loc) catch unreachable; { - var _stmts = List(Stmt).fromOwnedSlice(p.allocator, finally.stmts); + var _stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, finally.stmts); p.visitStmts(&_stmts, StmtsKind.none) catch unreachable; finally.stmts = _stmts.toOwnedSlice(); } @@ -13254,7 +13267,7 @@ pub fn NewParser( // Check("case", *c.Value, c.Value.Loc) // p.warnAboutTypeofAndString(s.Test, *c.Value) } - var _stmts = List(Stmt).fromOwnedSlice(p.allocator, case.body); + var _stmts = ListManaged(Stmt).fromOwnedSlice(p.allocator, case.body); p.visitStmts(&_stmts, StmtsKind.none) catch unreachable; data.cases[i].body = _stmts.toOwnedSlice(); } @@ -13322,13 +13335,14 @@ pub fn NewParser( defer p.popScope(); p.recordDeclaredSymbol(data.arg) catch unreachable; + const allocator = p.allocator; // Scan ahead for any variables inside this namespace. This must be done // ahead of time before visiting any statements inside the namespace // because we may end up visiting the uses before the declarations. // We need to convert the uses into property accesses on the namespace. for (data.values) |value| { if (!value.ref.isNull()) { - p.is_exported_inside_namespace.put(value.ref, data.arg) catch unreachable; + p.is_exported_inside_namespace.put(allocator, value.ref, data.arg) catch unreachable; } } @@ -13338,13 +13352,14 @@ pub fn NewParser( var next_numeric_value: f64 = 0.0; var has_numeric_value = true; - var value_exprs = List(Expr).initCapacity(p.allocator, data.values.len) catch unreachable; + var value_exprs = ListManaged(Expr).initCapacity(allocator, data.values.len) catch unreachable; // Track values so they can be used by constant folding. We need to follow // links here in case the enum was merged with a preceding namespace - var values_so_far = StringHashMap(f64).init(p.allocator); - p.known_enum_values.put(data.name.ref orelse p.panic("Expected data.name.ref", .{}), values_so_far) catch unreachable; - p.known_enum_values.put(data.arg, values_so_far) catch unreachable; + var values_so_far = _hash_map.StringHashMapUnmanaged(f64){}; + + p.known_enum_values.put(allocator, data.name.ref orelse p.panic("Expected data.name.ref", .{}), values_so_far) catch unreachable; + p.known_enum_values.put(allocator, data.arg, values_so_far) catch unreachable; // We normally don't fold numeric constants because they might increase code // size, but it's important to fold numeric constants inside enums since @@ -13363,18 +13378,18 @@ pub fn NewParser( .e_number => |num| { // prob never allocates in practice - values_so_far.put(name.string(p.allocator) catch unreachable, num.value) catch unreachable; + values_so_far.put(allocator, name.string(allocator) catch unreachable, num.value) catch unreachable; has_numeric_value = true; next_numeric_value = num.value + 1.0; }, - .e_string => |str| { + .e_string => { has_string_value = true; }, else => {}, } } else if (has_numeric_value) { enum_value.value = p.e(E.Number{ .value = next_numeric_value }, enum_value.loc); - values_so_far.put(name.string(p.allocator) catch unreachable, next_numeric_value) catch unreachable; + values_so_far.put(allocator, name.string(allocator) catch unreachable, next_numeric_value) catch unreachable; next_numeric_value += 1; } else { enum_value.value = p.e(E.Undefined{}, enum_value.loc); @@ -13389,7 +13404,7 @@ pub fn NewParser( enum_value.name, enum_value.loc, ), - }, enum_value.loc), enum_value.value orelse unreachable, p.allocator); + }, enum_value.loc), enum_value.value orelse unreachable, allocator); p.recordUsage(data.arg); @@ -13408,7 +13423,7 @@ pub fn NewParser( .index = assign_target, }, enum_value.loc), p.e(enum_value.name, enum_value.loc), - p.allocator, + allocator, ), ) catch unreachable; } @@ -13417,7 +13432,7 @@ pub fn NewParser( p.should_fold_numeric_constants = old_should_fold_numeric_constants; - var value_stmts = List(Stmt).initCapacity(p.allocator, value_exprs.items.len) catch unreachable; + var value_stmts = ListManaged(Stmt).initCapacity(allocator, value_exprs.items.len) catch unreachable; // Generate statements from expressions for (value_exprs.items) |expr| { value_stmts.appendAssumeCapacity(p.s(S.SExpr{ .value = expr }, expr.loc)); @@ -13453,7 +13468,7 @@ pub fn NewParser( } var prepend_temp_refs = PrependTempRefsOpts{ .kind = StmtsKind.fn_body }; - var prepend_list = List(Stmt).fromOwnedSlice(p.allocator, data.stmts); + var prepend_list = ListManaged(Stmt).fromOwnedSlice(p.allocator, data.stmts); const old_enclosing_namespace_arg_ref = p.enclosing_namespace_arg_ref; p.enclosing_namespace_arg_ref = data.arg; @@ -13489,7 +13504,7 @@ pub fn NewParser( } } - pub fn appendIfBodyPreservingScope(p: *P, stmts: *List(Stmt), body: Stmt) !void { + pub fn appendIfBodyPreservingScope(p: *P, stmts: *ListManaged(Stmt), body: Stmt) !void { switch (body.data) { .s_block => |block| { var keep_block = false; @@ -13523,7 +13538,7 @@ pub fn NewParser( switch (binding.data) { .b_missing => {}, .b_identifier => |ident| { - p.is_exported_inside_namespace.put(ident.ref, ref) catch unreachable; + p.is_exported_inside_namespace.put(p.allocator, ident.ref, ref) catch unreachable; }, .b_array => |array| { for (array.items) |item| { @@ -13543,7 +13558,7 @@ pub fn NewParser( fn generateClosureForTypeScriptNamespaceOrEnum( p: *P, - stmts: *List(Stmt), + stmts: *ListManaged(Stmt), stmt_loc: logger.Loc, is_export: bool, name_loc: logger.Loc, @@ -13559,14 +13574,15 @@ pub fn NewParser( name_ref = link; symbol = p.symbols.items[name_ref.inner_index]; } + const allocator = p.allocator; // Make sure to only emit a variable once for a given namespace, since there // can be multiple namespace blocks for the same namespace if (symbol.kind == .ts_namespace or symbol.kind == .ts_enum and !p.emitted_namespace_vars.contains(name_ref)) { - p.emitted_namespace_vars.put(name_ref, true) catch unreachable; + p.emitted_namespace_vars.put(allocator, name_ref, .{}) catch unreachable; - var decls = p.allocator.alloc(G.Decl, 1) catch unreachable; + var decls = allocator.alloc(G.Decl, 1) catch unreachable; decls[0] = G.Decl{ .binding = p.b(B.Identifier{ .ref = name_ref }, name_loc) }; if (p.enclosing_namespace_arg_ref == null) { @@ -13625,12 +13641,12 @@ pub fn NewParser( name_loc, ), p.e(E.Object{ .properties = &[_]G.Property{} }, name_loc), - p.allocator, + allocator, ), }, name_loc, ), - p.allocator, + allocator, ); p.recordUsage(namespace); p.recordUsage(namespace); @@ -13646,16 +13662,16 @@ pub fn NewParser( E.Object{ .properties = &[_]G.Property{} }, name_loc, ), - p.allocator, + allocator, ), }, name_loc); p.recordUsage(name_ref); p.recordUsage(name_ref); } - var func_args = p.allocator.alloc(G.Arg, 1) catch unreachable; + var func_args = allocator.alloc(G.Arg, 1) catch unreachable; func_args[0] = .{ .binding = p.b(B.Identifier{ .ref = arg_ref }, name_loc) }; - var args_list = p.allocator.alloc(ExprNodeIndex, 1) catch unreachable; + var args_list = allocator.alloc(ExprNodeIndex, 1) catch unreachable; args_list[0] = arg_expr; const func = G.Fn{ .args = func_args, @@ -13663,7 +13679,7 @@ pub fn NewParser( .open_parens_loc = stmt_loc, .body = G.FnBody{ .loc = stmt_loc, - .stmts = try p.allocator.dupe(StmtNodeIndex, stmts_inside_closure), + .stmts = try allocator.dupe(StmtNodeIndex, stmts_inside_closure), }, }; const target = p.e( @@ -13691,7 +13707,13 @@ pub fn NewParser( stmts.append(closure) catch unreachable; } - fn lowerClass(p: *P, stmtorexpr: js_ast.StmtOrExpr, ref: Ref) []Stmt { + // TODO: https://github.com/Jarred-Sumner/bun/issues/51 + fn lowerClass( + p: *P, + stmtorexpr: js_ast.StmtOrExpr, + // ref + _: Ref, + ) []Stmt { switch (stmtorexpr) { .stmt => |stmt| { var stmts = p.allocator.alloc(Stmt, 1) catch unreachable; @@ -13752,13 +13774,13 @@ pub fn NewParser( loc: logger.Loc, ref: Ref, ) Expr { - p.relocated_top_level_vars.append(LocRef{ .loc = loc, .ref = ref }) catch unreachable; + p.relocated_top_level_vars.append(p.allocator, LocRef{ .loc = loc, .ref = ref }) catch unreachable; var _ref = ref; p.recordUsage(_ref); return Expr.initIdentifier(_ref, loc); } - fn isAnonymousNamedExpr(p: *P, expr: ExprNodeIndex) bool { + fn isAnonymousNamedExpr(_: *P, expr: ExprNodeIndex) bool { switch (expr.data) { .e_arrow => { return true; @@ -13861,7 +13883,7 @@ pub fn NewParser( return false; } - fn visitBinding(p: *P, binding: BindingNodeIndex, duplicate_arg_check: ?*StringBoolMap) void { + fn visitBinding(p: *P, binding: BindingNodeIndex, duplicate_arg_check: ?*StringVoidMap) void { switch (binding.data) { .b_missing => {}, .b_identifier => |bind| { @@ -13870,10 +13892,8 @@ pub fn NewParser( if (isEvalOrArguments(name)) { p.markStrictModeFeature(.eval_or_arguments, js_lexer.rangeOfIdentifier(p.source, binding.loc), name) catch unreachable; } - if (duplicate_arg_check) |dup| { - const res = dup.getOrPut(name) catch unreachable; - if (res.found_existing) { + if (dup.getOrPutContains(name)) { p.log.addRangeErrorFmt( p.source, js_lexer.rangeOfIdentifier(p.source, binding.loc), @@ -13882,7 +13902,6 @@ pub fn NewParser( .{name}, ) catch unreachable; } - res.entry.value = true; } }, .b_array => |bind| { @@ -13945,15 +13964,9 @@ pub fn NewParser( } fn visitSingleStmt(p: *P, stmt: Stmt, kind: StmtsKind) Stmt { - const has_if_scope = has_if: { - switch (stmt.data) { - .s_function => { - break :has_if stmt.getFunction().func.flags.has_if_scope; - }, - else => { - break :has_if false; - }, - } + const has_if_scope = switch (stmt.data) { + .s_function => stmt.data.s_function.func.flags.has_if_scope, + else => false, }; // Introduce a fake block scope for function declarations inside if statements @@ -13961,7 +13974,7 @@ pub fn NewParser( p.pushScopeForVisitPass(.block, stmt.loc) catch unreachable; } - var stmts = List(Stmt).initCapacity(p.allocator, 1) catch unreachable; + var stmts = ListManaged(Stmt).initCapacity(p.allocator, 1) catch unreachable; stmts.append(stmt) catch unreachable; p.visitStmts(&stmts, kind) catch unreachable; @@ -13978,7 +13991,7 @@ pub fn NewParser( return Stmt{ .data = Prefill.Data.SEmpty, .loc = loc }; } - if (stmts.len == 1 and std.meta.activeTag(stmts[0].data) != .s_local or (std.meta.activeTag(stmts[0].data) == .s_local and stmts[0].getLocal().kind == S.Local.Kind.k_var)) { + if (stmts.len == 1 and std.meta.activeTag(stmts[0].data) != .s_local or (std.meta.activeTag(stmts[0].data) == .s_local and stmts[0].data.s_local.kind == S.Local.Kind.k_var)) { // "let" and "const" must be put in a block when in a single-statement context return stmts[0]; } @@ -14031,7 +14044,10 @@ pub fn NewParser( const old_enclosing_class_keyword = p.enclosing_class_keyword; p.enclosing_class_keyword = class.class_keyword; p.current_scope.recursiveSetStrictMode(.implicit_strict_mode_class); - var class_name_ref: Ref = if (class.class_name != null) class.class_name.?.ref.? else p.newSymbol(.other, "this") catch unreachable; + var class_name_ref: Ref = if (class.class_name != null) + class.class_name.?.ref.? + else + p.newSymbol(.other, "this") catch unreachable; var shadow_ref = Ref.None; @@ -14044,7 +14060,7 @@ pub fn NewParser( shadow_ref = p.newSymbol(Symbol.Kind.cconst, identifier) catch unreachable; p.recordDeclaredSymbol(shadow_ref) catch unreachable; if (class.class_name) |class_name| { - p.current_scope.members.put(identifier, Scope.Member{ .loc = class_name.loc, .ref = shadow_ref }) catch unreachable; + p.current_scope.members.put(p.allocator, identifier, Scope.Member{ .loc = class_name.loc, .ref = shadow_ref }) catch unreachable; } } @@ -14053,7 +14069,10 @@ pub fn NewParser( } p.pushScopeForVisitPass(.class_body, class.body_loc) catch unreachable; - defer p.popScope(); + defer { + p.popScope(); + p.enclosing_class_keyword = old_enclosing_class_keyword; + } var i: usize = 0; while (i < class.properties.len) : (i += 1) { @@ -14064,7 +14083,7 @@ pub fn NewParser( // Special-case EPrivateIdentifier to allow it here if (is_private) { - p.recordDeclaredSymbol(property.key.?.getPrivateIdentifier().ref) catch unreachable; + p.recordDeclaredSymbol(property.key.?.data.e_private_identifier.ref) catch unreachable; } else if (property.key) |key| { class.properties[i].key = p.visitExpr(key); } @@ -14116,12 +14135,12 @@ pub fn NewParser( if (p.symbols.items[shadow_ref.inner_index].use_count_estimate == 0) { // Don't generate a shadowing name if one isn't needed shadow_ref = Ref.None; - } else if (class.class_name) |class_name| { + } else if (class.class_name) |_| { // If there was originally no class name but something inside needed one // (e.g. there was a static property initializer that referenced "this"), // store our generated name so the class expression ends up with a name. class.class_name = LocRef{ .loc = name_scope_loc, .ref = class_name_ref }; - p.current_scope.generated.append(class_name_ref) catch unreachable; + p.current_scope.generated.append(p.allocator, class_name_ref) catch unreachable; p.recordDeclaredSymbol(class_name_ref) catch unreachable; } } @@ -14164,7 +14183,7 @@ pub fn NewParser( break :brk generated_symbol.ref; }; - p.module_scope.generated.append(ref) catch unreachable; + p.module_scope.generated.append(p.allocator, ref) catch unreachable; } else { ref = p.runtime_imports.at(name).?; } @@ -14179,7 +14198,7 @@ pub fn NewParser( } // Try separating the list for appending, so that it's not a pointer. - fn visitStmts(p: *P, stmts: *List(Stmt), kind: StmtsKind) !void { + fn visitStmts(p: *P, stmts: *ListManaged(Stmt), _: StmtsKind) !void { if (only_scan_imports_and_do_not_visit) { @compileError("only_scan_imports_and_do_not_visit must not run this."); } @@ -14190,9 +14209,9 @@ pub fn NewParser( defer p.is_control_flow_dead = old_is_control_flow_dead; // visit all statements first - var visited = try List(Stmt).initCapacity(p.allocator, stmts.items.len); - var before = List(Stmt).init(p.allocator); - var after = List(Stmt).init(p.allocator); + var visited = try ListManaged(Stmt).initCapacity(p.allocator, stmts.items.len); + var before = ListManaged(Stmt).init(p.allocator); + var after = ListManaged(Stmt).init(p.allocator); if (p.current_scope == p.module_scope) { p.macro.prepend_stmts = &before; @@ -14202,7 +14221,7 @@ pub fn NewParser( defer visited.deinit(); defer after.deinit(); - for (stmts.items) |*stmt, i| { + for (stmts.items) |*stmt| { const list = list_getter: { switch (stmt.data) { .s_export_equals => { @@ -14231,7 +14250,7 @@ pub fn NewParser( var visited_count = visited.items.len; if (p.is_control_flow_dead) { var end: usize = 0; - for (visited.items) |item, i| { + for (visited.items) |item| { if (!SideEffects.shouldKeepStmtInDeadControlFlow(item)) { continue; } @@ -14267,7 +14286,7 @@ pub fn NewParser( } } - fn extractDeclsForBinding(binding: Binding, decls: *List(G.Decl)) !void { + fn extractDeclsForBinding(binding: Binding, decls: *ListManaged(G.Decl)) !void { switch (binding.data) { .b_property, .b_missing => {}, .b_identifier => { @@ -14292,7 +14311,7 @@ pub fn NewParser( // This assumes that the open parenthesis has already been parsed by the caller pub fn parseParenExpr(p: *P, loc: logger.Loc, level: Level, opts: ParenExprOpts) anyerror!Expr { - var items_list = List(Expr).init(p.allocator); + var items_list = ListManaged(Expr).init(p.allocator); var errors = DeferredErrors{}; var arrowArgErrors = DeferredArrowArgErrors{}; var spread_range = logger.Range{}; @@ -14319,7 +14338,6 @@ pub fn NewParser( // Scan over the comma-separated arguments or expressions while (p.lexer.token != .t_close_paren) { - const item_loc = p.lexer.loc(); const is_spread = p.lexer.token == .t_dot_dot_dot; if (is_spread) { @@ -14383,8 +14401,8 @@ pub fn NewParser( return error.SyntaxError; } - var invalidLog = List(logger.Loc).init(p.allocator); - var args = List(G.Arg).init(p.allocator); + var invalidLog = LocList.init(p.allocator); + var args = ListManaged(G.Arg).init(p.allocator); if (opts.is_async) { // markl,oweredsyntaxpoksdpokasd @@ -14500,7 +14518,7 @@ pub fn NewParser( for (to_flatten.children.items) |item| { item.parent = parent; - parent.children.append(item) catch unreachable; + parent.children.append(p.allocator, item) catch unreachable; } } @@ -14512,6 +14530,7 @@ pub fn NewParser( } pub fn toAST(p: *P, _parts: []js_ast.Part, exports_kind: js_ast.ExportsKind, commonjs_wrapper_expr: ?Expr) !js_ast.Ast { + const allocator = p.allocator; var parts = _parts; // Insert an import statement for any runtime imports we generated @@ -14531,21 +14550,11 @@ pub fn NewParser( p.import_records_for_current_part.shrinkRetainingCapacity(0); p.declared_symbols.shrinkRetainingCapacity(0); - var result = if (p.options.features.hot_module_reloading) try ImportScanner.scan( - *P, - p, - part.stmts, - true, - ) else try ImportScanner.scan( - *P, - p, - part.stmts, - false, - ); + var result = try ImportScanner.scan(*P, p, part.stmts); kept_import_equals = kept_import_equals or result.kept_import_equals; removed_import_equals = removed_import_equals or result.removed_import_equals; part.import_record_indices = part.import_record_indices; - part.declared_symbols = p.declared_symbols.toOwnedSlice(); + part.declared_symbols = p.declared_symbols.toOwnedSlice(allocator); part.stmts = result.stmts; if (part.stmts.len > 0) { if (p.module_scope.contains_direct_eval and part.declared_symbols.len > 0) { @@ -14586,16 +14595,14 @@ pub fn NewParser( if (commonjs_wrapper_expr) |commonjs_wrapper| { var part = &parts[parts.len - 1]; - var require_function_args = p.allocator.alloc(Arg, 2) catch unreachable; + var require_function_args = allocator.alloc(Arg, 2) catch unreachable; var imports_count: u32 = 0; // We have to also move export from, since we will preserve those var exports_from_count: u32 = 0; - var additional_stmts_because_of_exports: u32 = 0; - // Two passes. First pass just counts. - for (parts[parts.len - 1].stmts) |stmt, i| { + for (parts[parts.len - 1].stmts) |stmt| { imports_count += switch (stmt.data) { .s_import => @as(u32, 1), else => @as(u32, 0), @@ -14607,17 +14614,13 @@ pub fn NewParser( }; } - var new_stmts_list = p.allocator.alloc(Stmt, exports_from_count + imports_count + 1) catch unreachable; + var new_stmts_list = allocator.alloc(Stmt, exports_from_count + imports_count + 1) catch unreachable; var imports_list = new_stmts_list[0..imports_count]; var exports_list = if (exports_from_count > 0) new_stmts_list[imports_list.len + 1 ..] else &[_]Stmt{}; - const name_ref = null; require_function_args[0] = G.Arg{ .binding = p.b(B.Identifier{ .ref = p.module_ref }, logger.Loc.Empty) }; require_function_args[1] = G.Arg{ .binding = p.b(B.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty) }; - var exports_identifier: ExprNodeIndex = undefined; - var exports_identifier_set = false; - const default_name_loc_ref = LocRef{ .ref = name_ref, .loc = logger.Loc.Empty }; var imports_list_i: u32 = 0; var exports_list_i: u32 = 0; @@ -14631,166 +14634,6 @@ pub fn NewParser( imports_list_i += 1; }, - // .s_export_default => |s_export| { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - - // switch (s_export.value) { - // .expr => |default_expr| { - // part.stmts[i] = Expr.assignStmt(p.e( - // E.Dot{ .name = "default", .name_loc = part.stmts[i].loc, .target = exports_identifier }, - // part.stmts[i].loc, - // ), default_expr, p.allocator); - // }, - // .stmt => |default_stmt| { - // switch (default_stmt.data) { - // .s_function => |func| { - // part.stmts[i] = Expr.assignStmt(p.e( - // E.Dot{ .name = "default", .name_loc = part.stmts[i].loc, .target = exports_identifier }, - // part.stmts[i].loc, - // ), p.e( - // E.Function{ .func = func.func }, - // default_stmt.loc, - // ), p.allocator); - // }, - // .s_class => |class| { - // part.stmts[i] = Expr.assignStmt( - // p.e( - // E.Dot{ .name = "default", .name_loc = part.stmts[i].loc, .target = exports_identifier }, - // part.stmts[i].loc, - // ), - // p.e( - // default_stmt.data.s_class.class, - // default_stmt.loc, - // ), - // p.allocator, - // ); - // }, - // else => unreachable, - // } - // }, - // } - // }, - - // .s_function => |func| { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - - // part.stmts[i] = Expr.assignStmt(p.e( - // E.Dot{ .name = "default", .name_loc = part.stmts[i].loc, .target = exports_identifier }, - // part.stmts[i].loc, - // ), default_expr, p.allocator); - // }, - // .s_local => |local| { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - - // const items = local.decls; - - // for (items[1..]) |item| { - // assignment = Expr.joinWithComma(assignment, Expr.assign( - // p.e(E.Dot{ - // .name = item.alias, - // .target = exports_identifier, - // .name_loc = item.alias_loc, - // }, item.alias_loc), - // p.e( - // E.Identifier{ - // .ref = item.name.ref.?, - // }, - // item.name.loc, - // ), - // p.allocator, - // ), p.allocator); - // } - - // const original_loc = part.stmts[i].loc; - // part.stmts[i] = p.s(S.SExpr{ - // .value = assignment, - // }, original_loc); - - // }, - // .s_class => |class| { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - - // part.stmts[i] = Expr.assignStmt( - // }, - - // .s_export_clause => |s_export| { - // const items = s_export.items; - // switch (items.len) { - // 0 => { - // part.stmts[i] = Stmt.empty(); - // }, - // 1 => { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - - // part.stmts[i] = Expr.assignStmt(p.e( - // E.Dot{ - // .name = items[0].alias, - // .target = exports_identifier, - // .name_loc = items[0].alias_loc, - // }, - // items[0].alias_loc, - // ), p.e( - // E.Identifier{ - // .ref = items[0].name.ref.?, - // }, - // items[0].name.loc, - // ), p.allocator); - // }, - // else => { - // if (!exports_identifier_set) { - // exports_identifier = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); - // exports_identifier_set = true; - // } - // var assignment = Expr.assign(p.e( - // E.Dot{ - // .name = items[0].alias, - // .target = exports_identifier, - // .name_loc = items[0].alias_loc, - // }, - // items[0].alias_loc, - // ), p.e(E.Identifier{ - // .ref = items[0].name.ref.?, - // }, items[0].name.loc), p.allocator); - - // for (items[1..]) |item| { - // assignment = Expr.joinWithComma(assignment, Expr.assign( - // p.e(E.Dot{ - // .name = item.alias, - // .target = exports_identifier, - // .name_loc = item.alias_loc, - // }, item.alias_loc), - // p.e( - // E.Identifier{ - // .ref = item.name.ref.?, - // }, - // item.name.loc, - // ), - // p.allocator, - // ), p.allocator); - // } - - // const original_loc = part.stmts[i].loc; - // part.stmts[i] = p.s(S.SExpr{ - // .value = assignment, - // }, original_loc); - // }, - // } - // }, .s_export_star, .s_export_from => { exports_list[exports_list_i] = part.stmts[i]; part.stmts[i] = Stmt.empty(); @@ -14853,7 +14696,7 @@ pub fn NewParser( // We have to also move export from, since we will preserve those var exports_from_count: usize = 0; // Two passes. First pass just counts. - for (parts[parts.len - 1].stmts) |stmt, i| { + for (parts[parts.len - 1].stmts) |stmt| { imports_count += switch (stmt.data) { .s_import => @as(usize, 1), else => @as(usize, 0), @@ -14887,7 +14730,7 @@ pub fn NewParser( const has_any_exports = named_exports_count > 0; const toplevel_stmts_count = 4 + (@intCast(usize, @boolToInt(has_any_exports)) * 2); - var _stmts = p.allocator.alloc( + var _stmts = allocator.alloc( Stmt, end_iife_stmts_count + toplevel_stmts_count + (named_exports_count * 2) + imports_count + exports_from_count, ) catch unreachable; @@ -14898,7 +14741,7 @@ pub fn NewParser( // in debug: crash in the printer due to undefined memory // in release: print ";" instead. // this should never happen regardless, but i'm just being cautious here. - if (comptime !isDebug) { + if (comptime !Environment.isDebug) { std.mem.set(Stmt, _stmts, Stmt.empty()); } @@ -14923,7 +14766,7 @@ pub fn NewParser( var export_list_i: usize = 0; // We must always copy it into the new stmts array - for (part.stmts) |stmt, i| { + for (part.stmts) |stmt| { switch (stmt.data) { .s_import => { imports_list[import_list_i] = stmt; @@ -14940,10 +14783,10 @@ pub fn NewParser( } } - var args_list: []Expr = if (isDebug) &Prefill.HotModuleReloading.DebugEnabledArgs else &Prefill.HotModuleReloading.DebugDisabled; + var args_list: []Expr = if (Environment.isDebug) &Prefill.HotModuleReloading.DebugEnabledArgs else &Prefill.HotModuleReloading.DebugDisabled; const new_call_args_count: usize = comptime if (is_react_fast_refresh_enabled) 3 else 2; - var call_args = try p.allocator.alloc(Expr, new_call_args_count + 1); + var call_args = try allocator.alloc(Expr, new_call_args_count + 1); var new_call_args = call_args[0..new_call_args_count]; var hmr_module_ident = p.e(E.Identifier{ .ref = p.hmr_module.ref }, logger.Loc.Empty); @@ -14953,11 +14796,7 @@ pub fn NewParser( if (is_react_fast_refresh_enabled) { new_call_args[2] = p.e(E.Identifier{ .ref = p.jsx_refresh_runtime.ref }, logger.Loc.Empty); } - var exports_dot = p.e(E.Dot{ - .target = hmr_module_ident, - .name = ExportsStringName, - .name_loc = logger.Loc.Empty, - }, logger.Loc.Empty); + var hmr_module_class_ident = p.e(E.Identifier{ .ref = p.runtime_imports.__HMRClient.?.ref }, logger.Loc.Empty); var toplevel_stmts_i: u8 = 0; // HMRClient.activate(true) @@ -14976,7 +14815,7 @@ pub fn NewParser( logger.Loc.Empty, ); toplevel_stmts_i += 1; - var decls = try p.allocator.alloc(G.Decl, 2 + named_exports_count); + var decls = try allocator.alloc(G.Decl, 2 + named_exports_count); var first_decl = decls[0..2]; // We cannot rely on import.meta.url because if we import it within a blob: url, it will be nonsensical // var __hmrModule = new HMRModule(123123124, "/index.js"), __exports = __hmrModule.exports; @@ -15006,18 +14845,17 @@ pub fn NewParser( }, logger.Loc.Empty), }; - var export_clauses = try p.allocator.alloc(js_ast.ClauseItem, named_exports_count); + var export_clauses = try allocator.alloc(js_ast.ClauseItem, named_exports_count); var named_export_i: usize = 0; - var decl_i: usize = 1; var named_exports_iter = p.named_exports.iterator(); - var export_properties = try p.allocator.alloc(G.Property, named_exports_count); + var export_properties = try allocator.alloc(G.Property, named_exports_count); var export_name_string_length: usize = 0; while (named_exports_iter.next()) |named_export| { export_name_string_length += named_export.key_ptr.len + "$$hmr_".len; } - var export_name_string_all = try p.allocator.alloc(u8, export_name_string_length); + var export_name_string_all = try allocator.alloc(u8, export_name_string_length); var export_name_string_remainder = export_name_string_all; var hmr_module_exports_dot = p.e( E.Dot{ @@ -15029,7 +14867,7 @@ pub fn NewParser( ); var exports_decls = decls[first_decl.len..]; named_exports_iter = p.named_exports.iterator(); - var update_function_args = try p.allocator.alloc(G.Arg, 1); + var update_function_args = try allocator.alloc(G.Arg, 1); var exports_ident = p.e(E.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty); update_function_args[0] = G.Arg{ .binding = p.b(B.Identifier{ .ref = p.exports_ref }, logger.Loc.Empty) }; @@ -15091,7 +14929,7 @@ pub fn NewParser( .name = named_export.key_ptr.*, .name_loc = logger.Loc.Empty, }, logger.Loc.Empty), - p.allocator, + allocator, ); export_properties[named_export_i] = G.Property{ @@ -15174,7 +15012,7 @@ pub fn NewParser( logger.Loc.Empty, ), func, - p.allocator, + allocator, ), }, logger.Loc.Empty, @@ -15232,7 +15070,7 @@ pub fn NewParser( }, logger.Loc.Empty, ), - p.allocator, + allocator, ), }, logger.Loc.Empty, @@ -15258,28 +15096,10 @@ pub fn NewParser( } { - // Map locals to parts - p.top_level_symbol_to_parts = @TypeOf(p.top_level_symbol_to_parts).init(p.allocator); - var i: usize = 0; - while (i < parts.len) : (i += 1) { - const part = parts[i]; - for (part.declared_symbols) |declared| { - if (declared.is_top_level) { - if (p.top_level_symbol_to_parts.contains(declared.ref)) { - try p.top_level_symbol_to_parts.get(declared.ref).?.append(@intCast(u32, i)); - } else { - var list = try List(u32).initCapacity(p.allocator, 1); - list.appendAssumeCapacity(@intCast(u32, i)); - try p.top_level_symbol_to_parts.put(declared.ref, list); - } - } - } - } // Each part tracks the other parts it depends on within this file // var local_dependencies = AutoHashMap(u32, u32).init(p.allocator); - i = 0; // while (i < parts.len) : (i += 1) { // const part = parts[i]; // if (part.symbol_uses.count() > 0) { @@ -15326,7 +15146,6 @@ pub fn NewParser( .module_ref = p.module_ref, .import_records = p.import_records.items, .export_star_import_records = p.export_star_import_records.items, - .top_level_symbol_to_parts = p.top_level_symbol_to_parts, .approximate_newline_count = p.lexer.approximate_newline_count, .exports_kind = exports_kind, .named_imports = p.named_imports, @@ -15349,7 +15168,7 @@ pub fn NewParser( } pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, source: *const logger.Source, define: *Define, @@ -15360,11 +15179,9 @@ pub fn NewParser( var scope_order = try ScopeOrderList.initCapacity(allocator, 1); var scope = try allocator.create(Scope); scope.* = Scope{ - .members = @TypeOf(scope.members).init(allocator), - .children = @TypeOf(scope.children).init( - allocator, - ), - .generated = @TypeOf(scope.generated).init(allocator), + .members = @TypeOf(scope.members){}, + .children = @TypeOf(scope.children){}, + .generated = @TypeOf(scope.generated){}, .kind = .entry, .label_ref = null, .parent = null, @@ -15377,37 +15194,16 @@ pub fn NewParser( // It will fail for the case in the "in-keyword.js" file .allow_in = true, - .symbol_uses = SymbolUseMap.init(allocator), .call_target = nullExprData, .delete_target = nullExprData, .stmt_expr_value = nullExprData, - .expr_list = List(Expr).init(allocator), + .expr_list = .{}, .loop_body = nullStmtData, - .injected_define_symbols = @TypeOf(this.injected_define_symbols).init(allocator), - .emitted_namespace_vars = @TypeOf(this.emitted_namespace_vars).init(allocator), - .is_exported_inside_namespace = @TypeOf(this.is_exported_inside_namespace).init(allocator), - .known_enum_values = @TypeOf(this.known_enum_values).init(allocator), - .local_type_names = @TypeOf(this.local_type_names).init(allocator), - .allocated_names = @TypeOf(this.allocated_names).init(allocator), .define = define, - .scopes_for_current_part = @TypeOf(this.scopes_for_current_part).init(allocator), - .symbols = @TypeOf(this.symbols).init(allocator), - .ts_use_counts = @TypeOf(this.ts_use_counts).init(allocator), - .declared_symbols = @TypeOf(this.declared_symbols).init(allocator), .import_records = undefined, - .import_records_for_current_part = @TypeOf(this.import_records_for_current_part).init(allocator), - .export_star_import_records = @TypeOf(this.export_star_import_records).init(allocator), - .import_items_for_namespace = @TypeOf(this.import_items_for_namespace).init(allocator), .named_imports = undefined, - .named_exports = @TypeOf(this.named_exports).init(allocator), - .top_level_symbol_to_parts = @TypeOf(this.top_level_symbol_to_parts).init(allocator), - .import_namespace_cc_map = @TypeOf(this.import_namespace_cc_map).init(allocator), - .scopes_in_order = scope_order, - .current_scope = scope, - .temp_refs_to_declare = @TypeOf(this.temp_refs_to_declare).init(allocator), - .relocated_top_level_vars = @TypeOf(this.relocated_top_level_vars).init(allocator), + .named_exports = js_ast.Ast.NamedExports.init(allocator), .log = log, - .is_import_item = @TypeOf(this.is_import_item).init(allocator), .allocator = allocator, .options = opts, .then_catch_chain = ThenCatchChain{ .next_target = nullExprData }, @@ -15418,7 +15214,8 @@ pub fn NewParser( .require_resolve_transposer = undefined, .source = source, .macro = MacroState.init(allocator), - + .current_scope = scope, + .scopes_in_order = scope_order, .needs_jsx_import = if (comptime only_scan_imports_and_do_not_visit) false else NeedsJSXType{}, .lexer = lexer, }; diff --git a/src/js_printer.zig b/src/js_printer.zig index fa67250e4..e6b227918 100644 --- a/src/js_printer.zig +++ b/src/js_printer.zig @@ -9,8 +9,20 @@ const runtime = @import("runtime.zig"); const Lock = @import("./lock.zig").Lock; const Api = @import("./api/schema.zig").Api; const fs = @import("fs.zig"); -usingnamespace @import("global.zig"); -usingnamespace @import("ast/base.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const Ref = @import("ast/base.zig").Ref; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FeatureFlags = _global.FeatureFlags; +const FileDescriptorType = _global.FileDescriptorType; usingnamespace js_ast.G; const expect = std.testing.expect; @@ -51,7 +63,7 @@ fn notimpl() void { Global.panic("Not implemented yet!", .{}); } -fn formatUnsignedIntegerBetween(comptime len: u16, buf: *[len]u8, val: u64, comptime min: u32, comptime max: u32) void { +fn formatUnsignedIntegerBetween(comptime len: u16, buf: *[len]u8, val: u64) void { comptime var i: u16 = len; var remainder = val; // Write out the number from the end to the front @@ -94,14 +106,14 @@ pub const SourceMapChunk = struct { pub const Options = struct { transform_imports: bool = true, - to_module_ref: js_ast.Ref = js_ast.Ref.None, - require_ref: ?js_ast.Ref = null, + to_module_ref: Ref = Ref.None, + require_ref: ?Ref = null, indent: usize = 0, externals: []u32 = &[_]u32{}, runtime_imports: runtime.Runtime.Imports = runtime.Runtime.Imports{}, module_hash: u32 = 0, source_path: ?fs.Path = null, - bundle_export_ref: ?js_ast.Ref = null, + bundle_export_ref: ?Ref = null, rewrite_require_resolve: bool = true, css_import_behavior: Api.CssInJsBehavior = Api.CssInJsBehavior.facade, @@ -119,7 +131,7 @@ pub const Options = struct { // The temporary fix here is to tag a stmts ptr as the one we want to prepend to // Then, when we're JUST about to print it, we print the body of prepend_part_value first - prepend_part_key: ?*c_void = null, + prepend_part_key: ?*anyopaque = null, prepend_part_value: ?*js_ast.Part = null, // If we're writing out a source map, this table of line start indices lets @@ -198,7 +210,7 @@ const ImportVariant = enum { }; } - pub fn determine(record: *const importRecord.ImportRecord, namespace: *const Symbol, s_import: *const S.Import) ImportVariant { + pub fn determine(record: *const importRecord.ImportRecord, _: *const Symbol, s_import: *const S.Import) ImportVariant { var variant = ImportVariant.path_only; if (record.contains_import_star) { @@ -370,7 +382,7 @@ pub fn NewPrinter( return .comma; } - pub inline fn printUndefined(p: *Printer, level: Level) void { + pub inline fn printUndefined(p: *Printer, _: Level) void { // void 0 is more efficient in output size // however, "void 0" is the same as "undefined" is a point of confusion for many // since we are optimizing for development, undefined is more clear. @@ -430,9 +442,7 @@ pub fn NewPrinter( p.print("}"); } - pub fn printDecls(p: *Printer, comptime keyword: string, decls: []G.Decl, flags: ExprFlag) void { - debug("<printDecls>\n {s}", .{decls}); - defer debug("</printDecls>", .{}); + pub fn printDecls(p: *Printer, comptime keyword: string, decls: []G.Decl, _: ExprFlag) void { p.print(keyword); p.printSpace(); @@ -454,7 +464,7 @@ pub fn NewPrinter( } // noop for now - pub fn addSourceMapping(p: *Printer, loc: logger.Loc) void {} + pub fn addSourceMapping(_: *Printer, _: logger.Loc) void {} pub fn printSymbol(p: *Printer, ref: Ref) void { const name = p.renamer.nameForSymbol(ref); @@ -470,7 +480,13 @@ pub fn NewPrinter( } } - pub fn printFnArgs(p: *Printer, args: []G.Arg, has_rest_arg: bool, is_arrow: bool) void { + pub fn printFnArgs( + p: *Printer, + args: []G.Arg, + has_rest_arg: bool, + // is_arrow can be used for minifying later + _: bool, + ) void { const wrap = true; if (wrap) { @@ -547,7 +563,7 @@ pub fn NewPrinter( } } - pub fn bestQuoteCharForString(p: *Printer, str: anytype, allow_backtick_: bool) u8 { + pub fn bestQuoteCharForString(_: *Printer, str: anytype, allow_backtick_: bool) u8 { if (comptime is_json) return '"'; const allow_backtick = allow_backtick_; @@ -625,7 +641,7 @@ pub fn NewPrinter( }, 11...99 => { var buf: *[2]u8 = (p.writer.reserve(2) catch unreachable)[0..2]; - formatUnsignedIntegerBetween(2, buf, val, 11, 99); + formatUnsignedIntegerBetween(2, buf, val); p.writer.advance(2); }, 100 => { @@ -633,7 +649,7 @@ pub fn NewPrinter( }, 101...999 => { var buf: *[3]u8 = (p.writer.reserve(3) catch unreachable)[0..3]; - formatUnsignedIntegerBetween(3, buf, val, 101, 999); + formatUnsignedIntegerBetween(3, buf, val); p.writer.advance(3); }, @@ -642,7 +658,7 @@ pub fn NewPrinter( }, 1001...9999 => { var buf: *[4]u8 = (p.writer.reserve(4) catch unreachable)[0..4]; - formatUnsignedIntegerBetween(4, buf, val, 1001, 9999); + formatUnsignedIntegerBetween(4, buf, val); p.writer.advance(4); }, 10000 => { @@ -666,32 +682,32 @@ pub fn NewPrinter( 10001...99999 => { var buf: *[5]u8 = (p.writer.reserve(5) catch unreachable)[0..5]; - formatUnsignedIntegerBetween(5, buf, val, 10001, 99999); + formatUnsignedIntegerBetween(5, buf, val); p.writer.advance(5); }, 100001...999999 => { var buf: *[6]u8 = (p.writer.reserve(6) catch unreachable)[0..6]; - formatUnsignedIntegerBetween(6, buf, val, 100001, 999999); + formatUnsignedIntegerBetween(6, buf, val); p.writer.advance(6); }, 1_000_001...9_999_999 => { var buf: *[7]u8 = (p.writer.reserve(7) catch unreachable)[0..7]; - formatUnsignedIntegerBetween(7, buf, val, 1_000_001, 9_999_999); + formatUnsignedIntegerBetween(7, buf, val); p.writer.advance(7); }, 10_000_001...99_999_999 => { var buf: *[8]u8 = (p.writer.reserve(8) catch unreachable)[0..8]; - formatUnsignedIntegerBetween(8, buf, val, 10_000_001, 99_999_999); + formatUnsignedIntegerBetween(8, buf, val); p.writer.advance(8); }, 100_000_001...999_999_999 => { var buf: *[9]u8 = (p.writer.reserve(9) catch unreachable)[0..9]; - formatUnsignedIntegerBetween(9, buf, val, 100_000_001, 999_999_999); + formatUnsignedIntegerBetween(9, buf, val); p.writer.advance(9); }, 1_000_000_001...9_999_999_999 => { var buf: *[10]u8 = (p.writer.reserve(10) catch unreachable)[0..10]; - formatUnsignedIntegerBetween(10, buf, val, 100_000_001, 999_999_999); + formatUnsignedIntegerBetween(10, buf, val); p.writer.advance(10); }, else => std.fmt.formatInt(val, 10, .lower, .{}, p) catch unreachable, @@ -718,7 +734,6 @@ pub fn NewPrinter( const c: CodeUnitType = text[i]; i += 1; - var width: u3 = 0; // TODO: here switch (c) { @@ -934,8 +949,17 @@ pub fn NewPrinter( p.print("'`)); } )()"); } - pub fn printRequireOrImportExpr(p: *Printer, import_record_index: u32, leading_interior_comments: []G.Comment, _level: Level, flags: ExprFlag) void { - var level = _level; + pub fn printRequireOrImportExpr( + p: *Printer, + import_record_index: u32, + leading_interior_comments: []G.Comment, + level: Level, + flags: ExprFlag, + ) void { + const wrap = level.gte(.new) or flags.forbid_call; + if (wrap) p.print("("); + defer if (wrap) p.print(")"); + assert(p.import_records.len > import_record_index); const record = p.import_records[import_record_index]; @@ -987,7 +1011,7 @@ pub fn NewPrinter( } // noop for now - pub inline fn printPure(p: *Printer) void {} + pub inline fn printPure(_: *Printer) void {} pub fn printQuotedUTF8(p: *Printer, str: string, allow_backtick: bool) void { const quote = p.bestQuoteCharForString(str, allow_backtick); @@ -996,7 +1020,7 @@ pub fn NewPrinter( p.print(quote); } - pub inline fn canPrintIdentifier(p: *Printer, name: string) bool { + pub inline fn canPrintIdentifier(_: *Printer, name: string) bool { if (comptime is_json) return false; if (comptime ascii_only) { @@ -1006,7 +1030,7 @@ pub fn NewPrinter( } } - pub inline fn canPrintIdentifierUTF16(p: *Printer, name: []const u16) bool { + pub inline fn canPrintIdentifierUTF16(_: *Printer, name: []const u16) bool { if (comptime ascii_only) { return js_lexer.isLatin1Identifier([]const u16, name); } else { @@ -1072,7 +1096,7 @@ pub fn NewPrinter( if (e.args.len > 0) { p.printExpr(e.args[0], .comma, ExprFlag.None()); - for (e.args[1..]) |arg, i| { + for (e.args[1..]) |arg| { p.print(","); p.printSpace(); p.printExpr(arg, .comma, ExprFlag.None()); @@ -1128,7 +1152,7 @@ pub fn NewPrinter( if (e.args.len > 0) { p.printExpr(e.args[0], .comma, ExprFlag.None()); - for (e.args[1..]) |arg, i| { + for (e.args[1..]) |arg| { p.print(","); p.printSpace(); p.printExpr(arg, .comma, ExprFlag.None()); @@ -1279,7 +1303,7 @@ pub fn NewPrinter( switch (e.index.data) { .e_private_identifier => { - const priv = e.index.getPrivateIdentifier(); + const priv = e.index.data.e_private_identifier; if (is_optional_chain_start) { p.print("."); } @@ -1346,7 +1370,7 @@ pub fn NewPrinter( if (e.body.stmts.len == 1 and e.prefer_expr) { switch (e.body.stmts[0].data) { .s_return => { - if (e.body.stmts[0].getReturn().value) |val| { + if (e.body.stmts[0].data.s_return.value) |val| { p.arrow_expr_start = p.writer.written; p.printExpr(val, .comma, ExprFlag{ .forbid_in = true }); wasPrinted = true; @@ -1758,7 +1782,7 @@ pub fn NewPrinter( .bin_nullish_coalescing => { switch (e.left.data) { .e_binary => { - const left = e.left.getBinary(); + const left = e.left.data.e_binary; switch (left.op) { .bin_logical_and, .bin_logical_or => { left_level = .prefix; @@ -1771,7 +1795,7 @@ pub fn NewPrinter( switch (e.right.data) { .e_binary => { - const right = e.right.getBinary(); + const right = e.right.data.e_binary; switch (right.op) { .bin_logical_and, .bin_logical_or => { right_level = .prefix; @@ -1786,7 +1810,7 @@ pub fn NewPrinter( .bin_pow => { switch (e.left.data) { .e_unary => { - const left = e.left.getUnary(); + const left = e.left.data.e_unary; if (left.op.unaryAssignTarget() == .none) { left_level = .call; } @@ -1802,7 +1826,7 @@ pub fn NewPrinter( // Special-case "#foo in bar" if (e.op == .bin_in and @as(Expr.Tag, e.left.data) == .e_private_identifier) { - p.printSymbol(e.left.getPrivateIdentifier().ref); + p.printSymbol(e.left.data.e_private_identifier.ref); } else { flags.forbid_in = true; p.printExpr(e.left, left_level, flags); @@ -1939,8 +1963,6 @@ pub fn NewPrinter( } pub fn printProperty(p: *Printer, item: G.Property) void { - debugl("<printProperty>"); - defer debugl("</printProperty>"); if (item.kind == .spread) { p.print("..."); p.printExpr(item.value.?, .comma, ExprFlag.None()); @@ -2171,8 +2193,6 @@ pub fn NewPrinter( } pub fn printBinding(p: *Printer, binding: Binding) void { - debug("<printBinding>\n {s}", .{binding}); - defer debugl("</printBinding>"); p.addSourceMapping(binding.loc); switch (binding.data) { @@ -2212,7 +2232,7 @@ pub fn NewPrinter( // Make sure there's a comma after trailing missing items if (is_last) { switch (item.binding.data) { - .b_missing => |ok| { + .b_missing => { p.print(","); }, else => {}, @@ -2359,9 +2379,6 @@ pub fn NewPrinter( p.prev_stmt_tag = std.meta.activeTag(stmt.data); } - debug("<printStmt>: {s}\n", .{stmt}); - defer debug("</printStmt>: {s}\n", .{stmt}); - p.addSourceMapping(stmt.loc); switch (stmt.data) { .s_comment => |s| { @@ -2440,7 +2457,7 @@ pub fn NewPrinter( } } }, - .s_empty => |s| { + .s_empty => { p.printIndent(); p.print(";"); p.printNewline(); @@ -2480,11 +2497,7 @@ pub fn NewPrinter( .s_function => |func| { p.printSpaceBeforeIdentifier(); if (is_inside_bundle) { - if (func.func.name) |name| { - // p.print("var "); - // p.printSymbol(name.ref.?); - // p.print(" = "); - } else { + if (func.func.name == null) { p.printModuleExportSymbol(); p.print(" = "); } @@ -2524,11 +2537,7 @@ pub fn NewPrinter( p.printSpaceBeforeIdentifier(); if (is_inside_bundle) { - if (class.class.class_name) |name| { - // p.print("var "); - // p.printSymbol(name.ref.?); - // p.print(" = "); - } else { + if (class.class.class_name == null) { p.printModuleExportSymbol(); p.print(" = "); } @@ -2785,7 +2794,6 @@ pub fn NewPrinter( }, .s_export_from => |s| { if (is_inside_bundle) { - const record = p.import_records[s.import_record_index]; // $$lz(export, $React(), {default: "React"}); if (s.items.len == 1) { @@ -2896,7 +2904,7 @@ pub fn NewPrinter( switch (s.body.data) { .s_block => { p.printSpace(); - p.printBlock(s.body.loc, s.body.getBlock().stmts); + p.printBlock(s.body.loc, s.body.data.s_block.stmts); p.printSpace(); }, else => { @@ -3063,9 +3071,9 @@ pub fn NewPrinter( if (c.body.len == 1) { switch (c.body[0].data) { - .s_block => |block| { + .s_block => { p.printSpace(); - p.printBlock(c.body[0].loc, c.body[0].getBlock().stmts); + p.printBlock(c.body[0].loc, c.body[0].data.s_block.stmts); p.printNewline(); continue; }, @@ -3154,7 +3162,7 @@ pub fn NewPrinter( p.printSpaceBeforeIdentifier(); if (is_inside_bundle) { - return p.printBundledImport(record, s, stmt); + return p.printBundledImport(record, s); } if (record.wrap_with_to_module) { @@ -3278,7 +3286,7 @@ pub fn NewPrinter( p.print(" = () => ({default: {}});\n"); } - p.printBundledImport(record, s, stmt); + p.printBundledImport(record, s); return; } @@ -3337,7 +3345,7 @@ pub fn NewPrinter( item_count += 1; } - if (s.star_name_loc) |star| { + if (s.star_name_loc != null) { if (item_count > 0) { p.print(","); p.printSpace(); @@ -3365,7 +3373,7 @@ pub fn NewPrinter( p.printBlock(stmt.loc, s.stmts); p.printNewline(); }, - .s_debugger => |s| { + .s_debugger => { p.printIndent(); p.printSpaceBeforeIdentifier(); p.print("debugger"); @@ -3444,7 +3452,7 @@ pub fn NewPrinter( p.print("module.exports"); } - pub fn printBundledImport(p: *Printer, record: importRecord.ImportRecord, s: *S.Import, stmt: Stmt) void { + pub fn printBundledImport(p: *Printer, record: importRecord.ImportRecord, s: *S.Import) void { if (record.is_internal) { return; } @@ -3658,7 +3666,7 @@ pub fn NewPrinter( switch (s.yes.data) { .s_block => |block| { p.printSpace(); - p.printBlock(s.yes.loc, s.yes.getBlock().stmts); + p.printBlock(s.yes.loc, block.stmts); if (s.no != null) { p.printSpace(); @@ -3704,13 +3712,13 @@ pub fn NewPrinter( p.print("else"); switch (no_block.data) { - .s_block => |no| { + .s_block => { p.printSpace(); - p.printBlock(no_block.loc, no_block.getBlock().stmts); + p.printBlock(no_block.loc, no_block.data.s_block.stmts); p.printNewline(); }, - .s_if => |no| { - p.printIf(no_block.getIf()); + .s_if => { + p.printIf(no_block.data.s_if); }, else => { p.printNewline(); @@ -4117,33 +4125,33 @@ const FileWriterInternal = struct { .file = file, }; } - pub fn writeByte(ctx: *FileWriterInternal, byte: u8) anyerror!usize { + pub fn writeByte(_: *FileWriterInternal, byte: u8) anyerror!usize { try buffer.appendChar(byte); return 1; } - pub fn writeAll(ctx: *FileWriterInternal, bytes: anytype) anyerror!usize { + pub fn writeAll(_: *FileWriterInternal, bytes: anytype) anyerror!usize { try buffer.append(bytes); return bytes.len; } - pub fn slice(this: *@This()) string { + pub fn slice(_: *@This()) string { return buffer.list.items; } - pub fn getLastByte(_ctx: *const FileWriterInternal) u8 { + pub fn getLastByte(_: *const FileWriterInternal) u8 { return if (buffer.list.items.len > 0) buffer.list.items[buffer.list.items.len - 1] else 0; } - pub fn getLastLastByte(_ctx: *const FileWriterInternal) u8 { + pub fn getLastLastByte(_: *const FileWriterInternal) u8 { return if (buffer.list.items.len > 1) buffer.list.items[buffer.list.items.len - 2] else 0; } - pub fn reserveNext(ctx: *FileWriterInternal, count: u32) anyerror![*]u8 { + pub fn reserveNext(_: *FileWriterInternal, count: u32) anyerror![*]u8 { try buffer.growIfNeeded(count); return @ptrCast([*]u8, &buffer.list.items.ptr[buffer.list.items.len]); } - pub fn advanceBy(ctx: *FileWriterInternal, count: u32) void { - if (comptime Environment.isDebug) std.debug.assert(buffer.list.items.len + count < buffer.list.capacity); + pub fn advanceBy(_: *FileWriterInternal, count: u32) void { + if (comptime Environment.isDebug) std.debug.assert(buffer.list.items.len + count <= buffer.list.capacity); buffer.list.items = buffer.list.items.ptr[0 .. buffer.list.items.len + count]; } @@ -4192,7 +4200,7 @@ const FileWriterInternal = struct { } pub fn flush( - ctx: *FileWriterInternal, + _: *FileWriterInternal, ) anyerror!void {} }; @@ -4203,7 +4211,7 @@ pub const BufferWriter = struct { append_null_byte: bool = false, approximate_newline_count: usize = 0, - pub fn init(allocator: *std.mem.Allocator) !BufferWriter { + pub fn init(allocator: std.mem.Allocator) !BufferWriter { return BufferWriter{ .buffer = MutableString.init( allocator, @@ -4261,7 +4269,7 @@ pub const BufferWriter = struct { } pub fn flush( - ctx: *BufferWriter, + _: *BufferWriter, ) anyerror!void {} }; pub const BufferPrinter = NewWriter( @@ -4485,10 +4493,10 @@ pub fn printCommonJSThreaded( defer lock.unlock(); lock.lock(); result.off = @truncate(u32, try getPos(getter)); - if (comptime isMac or isLinux) { + if (comptime Environment.isMac or Environment.isLinux) { // Don't bother preallocate the file if it's less than 1 KB. Preallocating is potentially two syscalls if (printer.writer.written > 1024) { - if (comptime isMac) { + if (comptime Environment.isMac) { try C.preallocate_file( getter.handle, @intCast(std.os.off_t, 0), @@ -4496,7 +4504,7 @@ pub fn printCommonJSThreaded( ); } - if (comptime isLinux) { + if (comptime Environment.isLinux) { _ = std.os.system.fallocate(getter.handle, 0, @intCast(i64, result.off), printer.writer.written); } } diff --git a/src/jsc.zig b/src/jsc.zig new file mode 100644 index 000000000..ac178b2eb --- /dev/null +++ b/src/jsc.zig @@ -0,0 +1,7 @@ +// Top-level so it can access all files +pub usingnamespace @import("./javascript/jsc/bindings/exports.zig"); +pub usingnamespace @import("./javascript/jsc/bindings/bindings.zig"); +pub usingnamespace @import("./javascript/jsc/base.zig"); +pub usingnamespace @import("./javascript/jsc/javascript.zig"); +pub const C = @import("./javascript/jsc/javascript_core_c_api.zig"); +pub const WebCore = @import("./javascript/jsc/webcore/response.zig"); diff --git a/src/json_parser.zig b/src/json_parser.zig index f84619320..a1eeb20c5 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -6,7 +6,16 @@ const js_ast = @import("js_ast.zig"); const options = @import("options.zig"); const fs = @import("fs.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; usingnamespace @import("ast/base.zig"); usingnamespace js_ast.G; @@ -45,16 +54,16 @@ const HashMapPool = struct { threadlocal var loaded: bool = false; const IdentityContext = struct { - pub fn eql(this: @This(), a: u64, b: u64) bool { + pub fn eql(_: @This(), a: u64, b: u64) bool { return a == b; } - pub fn hash(this: @This(), a: u64) u64 { + pub fn hash(_: @This(), a: u64) u64 { return a; } }; - pub fn get(allocator: *std.mem.Allocator) *LinkedList.Node { + pub fn get(_: std.mem.Allocator) *LinkedList.Node { if (loaded) { if (list.popFirst()) |node| { node.data.clearRetainingCapacity(); @@ -83,22 +92,24 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { const Lexer = js_lexer.NewLexer(if (LEXER_DEBUGGER_WORKAROUND) js_lexer.JSONOptions{} else opts); lexer: Lexer, - source: *const logger.Source, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn init(allocator: *std.mem.Allocator, source: *const logger.Source, log: *logger.Log) !Parser { + pub fn init(allocator: std.mem.Allocator, source_: logger.Source, log: *logger.Log) !Parser { return Parser{ - .lexer = try Lexer.init(log, source, allocator), + .lexer = try Lexer.init(log, source_, allocator), .allocator = allocator, .log = log, - .source = source, }; } + pub inline fn source(p: *const Parser) *const logger.Source { + return &p.lexer.source; + } + const Parser = @This(); - pub fn e(p: *Parser, t: anytype, loc: logger.Loc) Expr { + pub fn e(_: *Parser, t: anytype, loc: logger.Loc) Expr { const Type = @TypeOf(t); if (@typeInfo(Type) == .Pointer) { return Expr.init(std.meta.Child(Type), t.*, loc); @@ -220,7 +231,7 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { // Warn about duplicate keys if (duplicate_get_or_put.found_existing) { - p.log.addRangeWarningFmt(p.source, key_range, p.allocator, "Duplicate key \"{s}\" in object literal", .{p.lexer.string_literal_slice}) catch unreachable; + p.log.addRangeWarningFmt(p.source(), key_range, p.allocator, "Duplicate key \"{s}\" in object literal", .{p.lexer.string_literal_slice}) catch unreachable; } } @@ -243,13 +254,13 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { }, else => { if (comptime maybe_auto_quote) { - p.lexer = try Lexer.initJSON(p.log, p.source, p.allocator); + p.lexer = try Lexer.initJSON(p.log, p.source().*, p.allocator); try p.lexer.parseStringLiteral(0); return p.parseExpr(false); } try p.lexer.unexpected(); - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.io.getStdErr().writeAll("\nThis range: \n") catch {}; std.io.getStdErr().writeAll( p.lexer.source.contents[p.lexer.range().loc.toUsize()..p.lexer.range().end().toUsize()], @@ -268,7 +279,7 @@ fn JSONLikeParser(opts: js_lexer.JSONOptions) type { if (p.lexer.token == closer) { if (comptime !opts.allow_trailing_commas) { - p.log.addRangeError(p.source, comma_range, "JSON does not support trailing commas") catch unreachable; + p.log.addRangeError(p.source(), comma_range, "JSON does not support trailing commas") catch unreachable; } return false; } @@ -292,7 +303,7 @@ pub const PackageJSONVersionChecker = struct { lexer: Lexer, source: *const logger.Source, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, depth: usize = 0, found_version_buf: [1024]u8 = undefined, @@ -310,9 +321,9 @@ pub const PackageJSONVersionChecker = struct { .allow_trailing_commas = true, }; - pub fn init(allocator: *std.mem.Allocator, source: *const logger.Source, log: *logger.Log) !Parser { + pub fn init(allocator: std.mem.Allocator, source: *const logger.Source, log: *logger.Log) !Parser { return Parser{ - .lexer = try Lexer.init(log, source, allocator), + .lexer = try Lexer.init(log, source.*, allocator), .allocator = allocator, .log = log, .source = source, @@ -321,7 +332,7 @@ pub const PackageJSONVersionChecker = struct { const Parser = @This(); - pub fn e(p: *Parser, t: anytype, loc: logger.Loc) Expr { + pub fn e(_: *Parser, t: anytype, loc: logger.Loc) Expr { const Type = @TypeOf(t); if (@typeInfo(Type) == .Pointer) { return Expr.init(std.meta.Child(Type), t.*, loc); @@ -442,7 +453,7 @@ pub const PackageJSONVersionChecker = struct { }, else => { try p.lexer.unexpected(); - if (comptime isDebug) { + if (comptime Environment.isDebug) { @breakpoint(); } return error.ParserError; @@ -456,7 +467,7 @@ pub const PackageJSONVersionChecker = struct { if (p.lexer.token == closer) { if (comptime !opts.allow_trailing_commas) { - p.log.addRangeError(p.source, comma_range, "JSON does not support trailing commas") catch unreachable; + p.log.addRangeError(p.source(), comma_range, "JSON does not support trailing commas") catch unreachable; } return false; } @@ -481,8 +492,8 @@ var empty_string_data = Expr.Data{ .e_string = &empty_string }; var empty_object_data = Expr.Data{ .e_object = &empty_object }; var empty_array_data = Expr.Data{ .e_array = &empty_array }; -pub fn ParseJSON(source: *const logger.Source, log: *logger.Log, allocator: *std.mem.Allocator) !Expr { - var parser = try JSONParser.init(allocator, source, log); +pub fn ParseJSON(source: *const logger.Source, log: *logger.Log, allocator: std.mem.Allocator) !Expr { + var parser = try JSONParser.init(allocator, source.*, log); switch (source.contents.len) { // This is to be consisntent with how disabled JS files are handled 0 => { @@ -515,8 +526,8 @@ pub const JSONParseResult = struct { }; }; -pub fn ParseJSONForBundling(source: *const logger.Source, log: *logger.Log, allocator: *std.mem.Allocator) !JSONParseResult { - var parser = try JSONParser.init(allocator, source, log); +pub fn ParseJSONForBundling(source: *const logger.Source, log: *logger.Log, allocator: std.mem.Allocator) !JSONParseResult { + var parser = try JSONParser.init(allocator, source.*, log); switch (source.contents.len) { // This is to be consisntent with how disabled JS files are handled 0 => { @@ -544,8 +555,8 @@ pub fn ParseJSONForBundling(source: *const logger.Source, log: *logger.Log, allo // threadlocal var env_json_auto_quote_buffer: MutableString = undefined; // threadlocal var env_json_auto_quote_buffer_loaded: bool = false; -pub fn ParseEnvJSON(source: *const logger.Source, log: *logger.Log, allocator: *std.mem.Allocator) !Expr { - var parser = try DotEnvJSONParser.init(allocator, source, log); +pub fn ParseEnvJSON(source: *const logger.Source, log: *logger.Log, allocator: std.mem.Allocator) !Expr { + var parser = try DotEnvJSONParser.init(allocator, source.*, log); switch (source.contents.len) { // This is to be consisntent with how disabled JS files are handled 0 => { @@ -594,7 +605,7 @@ pub fn ParseEnvJSON(source: *const logger.Source, log: *logger.Log, allocator: * } } -pub fn ParseTSConfig(source: *const logger.Source, log: *logger.Log, allocator: *std.mem.Allocator) !Expr { +pub fn ParseTSConfig(source: *const logger.Source, log: *logger.Log, allocator: std.mem.Allocator) !Expr { switch (source.contents.len) { // This is to be consisntent with how disabled JS files are handled 0 => { @@ -613,7 +624,7 @@ pub fn ParseTSConfig(source: *const logger.Source, log: *logger.Log, allocator: else => {}, } - var parser = try TSConfigParser.init(allocator, source, log); + var parser = try TSConfigParser.init(allocator, source.*, log); return parser.parseExpr(false); } diff --git a/src/libarchive/libarchive-bindings.zig b/src/libarchive/libarchive-bindings.zig index d449642ef..cefca76a7 100644 --- a/src/libarchive/libarchive-bindings.zig +++ b/src/libarchive/libarchive-bindings.zig @@ -6,6 +6,9 @@ pub const struct_archive_entry = opaque {}; pub const archive = struct_archive; pub const archive_entry = struct_archive_entry; const mode_t = @import("std").c.mode_t; +const FILE = @import("std").c.FILE; +const time_t = @import("std").c.time_t; +const dev_t = @import("std").c.dev_t; pub const FileType = enum(mode_t) { regular = 0100000, @@ -136,15 +139,15 @@ pub extern fn archive_bzlib_version() [*c]const u8; pub extern fn archive_liblz4_version() [*c]const u8; pub extern fn archive_libzstd_version() [*c]const u8; -pub const archive_read_callback = fn (*struct_archive, *c_void, [*c]*const c_void) callconv(.C) la_ssize_t; -pub const archive_skip_callback = fn (*struct_archive, *c_void, la_int64_t) callconv(.C) la_int64_t; -pub const archive_seek_callback = fn (*struct_archive, *c_void, la_int64_t, c_int) callconv(.C) la_int64_t; -pub const archive_write_callback = fn (*struct_archive, *c_void, ?*const c_void, usize) callconv(.C) la_ssize_t; -pub const archive_open_callback = fn (*struct_archive, *c_void) callconv(.C) c_int; -pub const archive_close_callback = fn (*struct_archive, *c_void) callconv(.C) c_int; -pub const archive_free_callback = fn (*struct_archive, *c_void) callconv(.C) c_int; -pub const archive_switch_callback = fn (*struct_archive, *c_void, ?*c_void) callconv(.C) c_int; -pub const archive_passphrase_callback = fn (*struct_archive, *c_void) callconv(.C) [*c]const u8; +pub const archive_read_callback = fn (*struct_archive, *anyopaque, [*c]*const anyopaque) callconv(.C) la_ssize_t; +pub const archive_skip_callback = fn (*struct_archive, *anyopaque, la_int64_t) callconv(.C) la_int64_t; +pub const archive_seek_callback = fn (*struct_archive, *anyopaque, la_int64_t, c_int) callconv(.C) la_int64_t; +pub const archive_write_callback = fn (*struct_archive, *anyopaque, ?*const anyopaque, usize) callconv(.C) la_ssize_t; +pub const archive_open_callback = fn (*struct_archive, *anyopaque) callconv(.C) c_int; +pub const archive_close_callback = fn (*struct_archive, *anyopaque) callconv(.C) c_int; +pub const archive_free_callback = fn (*struct_archive, *anyopaque) callconv(.C) c_int; +pub const archive_switch_callback = fn (*struct_archive, *anyopaque, ?*anyopaque) callconv(.C) c_int; +pub const archive_passphrase_callback = fn (*struct_archive, *anyopaque) callconv(.C) [*c]const u8; pub extern fn archive_read_new() *struct_archive; pub extern fn archive_read_support_compression_all(*struct_archive) c_int; pub extern fn archive_read_support_compression_bzip2(*struct_archive) c_int; @@ -154,7 +157,7 @@ pub extern fn archive_read_support_compression_lzip(*struct_archive) c_int; pub extern fn archive_read_support_compression_lzma(*struct_archive) c_int; pub extern fn archive_read_support_compression_none(*struct_archive) c_int; pub extern fn archive_read_support_compression_program(*struct_archive, command: [*c]const u8) c_int; -pub extern fn archive_read_support_compression_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int; +pub extern fn archive_read_support_compression_program_signature(*struct_archive, [*c]const u8, ?*const anyopaque, usize) c_int; pub extern fn archive_read_support_compression_rpm(*struct_archive) c_int; pub extern fn archive_read_support_compression_uu(*struct_archive) c_int; pub extern fn archive_read_support_compression_xz(*struct_archive) c_int; @@ -171,7 +174,7 @@ pub extern fn archive_read_support_filter_lzma(*struct_archive) c_int; pub extern fn archive_read_support_filter_lzop(*struct_archive) c_int; pub extern fn archive_read_support_filter_none(*struct_archive) c_int; pub extern fn archive_read_support_filter_program(*struct_archive, command: [*c]const u8) c_int; -pub extern fn archive_read_support_filter_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int; +pub extern fn archive_read_support_filter_program_signature(*struct_archive, [*c]const u8, ?*const anyopaque, usize) c_int; pub extern fn archive_read_support_filter_rpm(*struct_archive) c_int; pub extern fn archive_read_support_filter_uu(*struct_archive) c_int; pub extern fn archive_read_support_filter_xz(*struct_archive) c_int; @@ -199,27 +202,27 @@ pub extern fn archive_read_support_format_zip_seekable(*struct_archive) c_int; pub extern fn archive_read_set_format(*struct_archive, c_int) c_int; pub extern fn archive_read_append_filter(*struct_archive, c_int) c_int; pub extern fn archive_read_append_filter_program(*struct_archive, [*c]const u8) c_int; -pub extern fn archive_read_append_filter_program_signature(*struct_archive, [*c]const u8, ?*const c_void, usize) c_int; +pub extern fn archive_read_append_filter_program_signature(*struct_archive, [*c]const u8, ?*const anyopaque, usize) c_int; pub extern fn archive_read_set_open_callback(*struct_archive, ?archive_open_callback) c_int; pub extern fn archive_read_set_read_callback(*struct_archive, ?archive_read_callback) c_int; pub extern fn archive_read_set_seek_callback(*struct_archive, ?archive_seek_callback) c_int; pub extern fn archive_read_set_skip_callback(*struct_archive, ?archive_skip_callback) c_int; pub extern fn archive_read_set_close_callback(*struct_archive, ?archive_close_callback) c_int; pub extern fn archive_read_set_switch_callback(*struct_archive, ?archive_switch_callback) c_int; -pub extern fn archive_read_set_callback_data(*struct_archive, ?*c_void) c_int; -pub extern fn archive_read_set_callback_data2(*struct_archive, ?*c_void, c_uint) c_int; -pub extern fn archive_read_add_callback_data(*struct_archive, ?*c_void, c_uint) c_int; -pub extern fn archive_read_append_callback_data(*struct_archive, ?*c_void) c_int; -pub extern fn archive_read_prepend_callback_data(*struct_archive, ?*c_void) c_int; +pub extern fn archive_read_set_callback_data(*struct_archive, ?*anyopaque) c_int; +pub extern fn archive_read_set_callback_data2(*struct_archive, ?*anyopaque, c_uint) c_int; +pub extern fn archive_read_add_callback_data(*struct_archive, ?*anyopaque, c_uint) c_int; +pub extern fn archive_read_append_callback_data(*struct_archive, ?*anyopaque) c_int; +pub extern fn archive_read_prepend_callback_data(*struct_archive, ?*anyopaque) c_int; pub extern fn archive_read_open1(*struct_archive) c_int; -pub extern fn archive_read_open(*struct_archive, _client_data: ?*c_void, ?archive_open_callback, ?archive_read_callback, ?archive_close_callback) c_int; -pub extern fn archive_read_open2(*struct_archive, _client_data: ?*c_void, ?archive_open_callback, ?archive_read_callback, ?archive_skip_callback, ?archive_close_callback) c_int; +pub extern fn archive_read_open(*struct_archive, _client_data: ?*anyopaque, ?archive_open_callback, ?archive_read_callback, ?archive_close_callback) c_int; +pub extern fn archive_read_open2(*struct_archive, _client_data: ?*anyopaque, ?archive_open_callback, ?archive_read_callback, ?archive_skip_callback, ?archive_close_callback) c_int; pub extern fn archive_read_open_filename(*struct_archive, _filename: [*c]const u8, _block_size: usize) c_int; pub extern fn archive_read_open_filenames(*struct_archive, _filenames: [*c][*c]const u8, _block_size: usize) c_int; pub extern fn archive_read_open_filename_w(*struct_archive, _filename: [*c]const wchar_t, _block_size: usize) c_int; pub extern fn archive_read_open_file(*struct_archive, _filename: [*c]const u8, _block_size: usize) c_int; -pub extern fn archive_read_open_memory(*struct_archive, buff: ?*const c_void, size: usize) c_int; -pub extern fn archive_read_open_memory2(a: *struct_archive, buff: ?*const c_void, size: usize, read_size: usize) c_int; +pub extern fn archive_read_open_memory(*struct_archive, buff: ?*const anyopaque, size: usize) c_int; +pub extern fn archive_read_open_memory2(a: *struct_archive, buff: ?*const anyopaque, size: usize, read_size: usize) c_int; pub extern fn archive_read_open_fd(*struct_archive, _fd: c_int, _block_size: usize) c_int; pub extern fn archive_read_open_FILE(*struct_archive, _file: [*c]FILE) c_int; pub extern fn archive_read_next_header(*struct_archive, [*c]*struct_archive_entry) c_int; @@ -227,9 +230,9 @@ pub extern fn archive_read_next_header2(*struct_archive, *struct_archive_entry) pub extern fn archive_read_header_position(*struct_archive) la_int64_t; pub extern fn archive_read_has_encrypted_entries(*struct_archive) c_int; pub extern fn archive_read_format_capabilities(*struct_archive) c_int; -pub extern fn archive_read_data(*struct_archive, ?*c_void, usize) la_ssize_t; +pub extern fn archive_read_data(*struct_archive, ?*anyopaque, usize) la_ssize_t; pub extern fn archive_seek_data(*struct_archive, la_int64_t, c_int) la_int64_t; -pub extern fn archive_read_data_block(a: *struct_archive, buff: [*c]*const c_void, size: [*c]usize, offset: [*c]la_int64_t) c_int; +pub extern fn archive_read_data_block(a: *struct_archive, buff: [*c]*const anyopaque, size: [*c]usize, offset: [*c]la_int64_t) c_int; pub extern fn archive_read_data_skip(*struct_archive) c_int; pub extern fn archive_read_data_into_fd(*struct_archive, fd: c_int) c_int; pub extern fn archive_read_set_format_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int; @@ -237,10 +240,10 @@ pub extern fn archive_read_set_filter_option(_a: *struct_archive, m: [*c]const u pub extern fn archive_read_set_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int; pub extern fn archive_read_set_options(_a: *struct_archive, opts: [*c]const u8) c_int; pub extern fn archive_read_add_passphrase(*struct_archive, [*c]const u8) c_int; -pub extern fn archive_read_set_passphrase_callback(*struct_archive, client_data: ?*c_void, ?archive_passphrase_callback) c_int; +pub extern fn archive_read_set_passphrase_callback(*struct_archive, client_data: ?*anyopaque, ?archive_passphrase_callback) c_int; pub extern fn archive_read_extract(*struct_archive, *struct_archive_entry, flags: c_int) c_int; pub extern fn archive_read_extract2(*struct_archive, *struct_archive_entry, *struct_archive) c_int; -pub extern fn archive_read_extract_set_progress_callback(*struct_archive, _progress_func: ?fn (?*c_void) callconv(.C) void, _user_data: ?*c_void) void; +pub extern fn archive_read_extract_set_progress_callback(*struct_archive, _progress_func: ?fn (?*anyopaque) callconv(.C) void, _user_data: ?*anyopaque) void; pub extern fn archive_read_extract_set_skip_file(*struct_archive, la_int64_t, la_int64_t) void; pub extern fn archive_read_close(*struct_archive) c_int; pub extern fn archive_read_free(*struct_archive) c_int; @@ -304,17 +307,17 @@ pub extern fn archive_write_set_format_filter_by_ext(a: *struct_archive, filenam pub extern fn archive_write_set_format_filter_by_ext_def(a: *struct_archive, filename: [*c]const u8, def_ext: [*c]const u8) c_int; pub extern fn archive_write_zip_set_compression_deflate(*struct_archive) c_int; pub extern fn archive_write_zip_set_compression_store(*struct_archive) c_int; -pub extern fn archive_write_open(*struct_archive, ?*c_void, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback) c_int; -pub extern fn archive_write_open2(*struct_archive, ?*c_void, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback, ?archive_free_callback) c_int; +pub extern fn archive_write_open(*struct_archive, ?*anyopaque, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback) c_int; +pub extern fn archive_write_open2(*struct_archive, ?*anyopaque, ?archive_open_callback, ?archive_write_callback, ?archive_close_callback, ?archive_free_callback) c_int; pub extern fn archive_write_open_fd(*struct_archive, _fd: c_int) c_int; pub extern fn archive_write_open_filename(*struct_archive, _file: [*c]const u8) c_int; pub extern fn archive_write_open_filename_w(*struct_archive, _file: [*c]const wchar_t) c_int; pub extern fn archive_write_open_file(*struct_archive, _file: [*c]const u8) c_int; pub extern fn archive_write_open_FILE(*struct_archive, [*c]FILE) c_int; -pub extern fn archive_write_open_memory(*struct_archive, _buffer: ?*c_void, _buffSize: usize, _used: [*c]usize) c_int; +pub extern fn archive_write_open_memory(*struct_archive, _buffer: ?*anyopaque, _buffSize: usize, _used: [*c]usize) c_int; pub extern fn archive_write_header(*struct_archive, *struct_archive_entry) c_int; -pub extern fn archive_write_data(*struct_archive, ?*const c_void, usize) la_ssize_t; -pub extern fn archive_write_data_block(*struct_archive, ?*const c_void, usize, la_int64_t) la_ssize_t; +pub extern fn archive_write_data(*struct_archive, ?*const anyopaque, usize) la_ssize_t; +pub extern fn archive_write_data_block(*struct_archive, ?*const anyopaque, usize, la_int64_t) la_ssize_t; pub extern fn archive_write_finish_entry(*struct_archive) c_int; pub extern fn archive_write_close(*struct_archive) c_int; pub extern fn archive_write_fail(*struct_archive) c_int; @@ -325,13 +328,13 @@ pub extern fn archive_write_set_filter_option(_a: *struct_archive, m: [*c]const pub extern fn archive_write_set_option(_a: *struct_archive, m: [*c]const u8, o: [*c]const u8, v: [*c]const u8) c_int; pub extern fn archive_write_set_options(_a: *struct_archive, opts: [*c]const u8) c_int; pub extern fn archive_write_set_passphrase(_a: *struct_archive, p: [*c]const u8) c_int; -pub extern fn archive_write_set_passphrase_callback(*struct_archive, client_data: ?*c_void, ?archive_passphrase_callback) c_int; +pub extern fn archive_write_set_passphrase_callback(*struct_archive, client_data: ?*anyopaque, ?archive_passphrase_callback) c_int; pub extern fn archive_write_disk_new() *struct_archive; pub extern fn archive_write_disk_set_skip_file(*struct_archive, la_int64_t, la_int64_t) c_int; pub extern fn archive_write_disk_set_options(*struct_archive, flags: c_int) c_int; pub extern fn archive_write_disk_set_standard_lookup(*struct_archive) c_int; -pub extern fn archive_write_disk_set_group_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*c_void) callconv(.C) void) c_int; -pub extern fn archive_write_disk_set_user_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*c_void) callconv(.C) void) c_int; +pub extern fn archive_write_disk_set_group_lookup(*struct_archive, ?*anyopaque, ?fn (?*anyopaque, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*anyopaque) callconv(.C) void) c_int; +pub extern fn archive_write_disk_set_user_lookup(*struct_archive, ?*anyopaque, ?fn (?*anyopaque, [*c]const u8, la_int64_t) callconv(.C) la_int64_t, ?fn (?*anyopaque) callconv(.C) void) c_int; pub extern fn archive_write_disk_gid(*struct_archive, [*c]const u8, la_int64_t) la_int64_t; pub extern fn archive_write_disk_uid(*struct_archive, [*c]const u8, la_int64_t) la_int64_t; pub extern fn archive_read_disk_new() *struct_archive; @@ -342,8 +345,8 @@ pub extern fn archive_read_disk_entry_from_file(*struct_archive, *struct_archive pub extern fn archive_read_disk_gname(*struct_archive, la_int64_t) [*c]const u8; pub extern fn archive_read_disk_uname(*struct_archive, la_int64_t) [*c]const u8; pub extern fn archive_read_disk_set_standard_lookup(*struct_archive) c_int; -pub extern fn archive_read_disk_set_gname_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*c_void) callconv(.C) void) c_int; -pub extern fn archive_read_disk_set_uname_lookup(*struct_archive, ?*c_void, ?fn (?*c_void, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*c_void) callconv(.C) void) c_int; +pub extern fn archive_read_disk_set_gname_lookup(*struct_archive, ?*anyopaque, ?fn (?*anyopaque, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*anyopaque) callconv(.C) void) c_int; +pub extern fn archive_read_disk_set_uname_lookup(*struct_archive, ?*anyopaque, ?fn (?*anyopaque, la_int64_t) callconv(.C) [*c]const u8, ?fn (?*anyopaque) callconv(.C) void) c_int; pub extern fn archive_read_disk_open(*struct_archive, [*c]const u8) c_int; pub extern fn archive_read_disk_open_w(*struct_archive, [*c]const wchar_t) c_int; pub extern fn archive_read_disk_descend(*struct_archive) c_int; @@ -353,8 +356,8 @@ pub extern fn archive_read_disk_current_filesystem_is_synthetic(*struct_archive) pub extern fn archive_read_disk_current_filesystem_is_remote(*struct_archive) c_int; pub extern fn archive_read_disk_set_atime_restored(*struct_archive) c_int; pub extern fn archive_read_disk_set_behavior(*struct_archive, flags: c_int) c_int; -pub extern fn archive_read_disk_set_matching(*struct_archive, _matching: *struct_archive, _excluded_func: ?fn (*struct_archive, ?*c_void, *struct_archive_entry) callconv(.C) void, _client_data: ?*c_void) c_int; -pub extern fn archive_read_disk_set_metadata_filter_callback(*struct_archive, _metadata_filter_func: ?fn (*struct_archive, ?*c_void, *struct_archive_entry) callconv(.C) c_int, _client_data: ?*c_void) c_int; +pub extern fn archive_read_disk_set_matching(*struct_archive, _matching: *struct_archive, _excluded_func: ?fn (*struct_archive, ?*anyopaque, *struct_archive_entry) callconv(.C) void, _client_data: ?*anyopaque) c_int; +pub extern fn archive_read_disk_set_metadata_filter_callback(*struct_archive, _metadata_filter_func: ?fn (*struct_archive, ?*anyopaque, *struct_archive_entry) callconv(.C) c_int, _client_data: ?*anyopaque) c_int; pub extern fn archive_free(*struct_archive) c_int; pub extern fn archive_filter_count(*struct_archive) c_int; pub extern fn archive_filter_bytes(*struct_archive, c_int) la_int64_t; @@ -528,8 +531,8 @@ pub extern fn archive_entry_set_is_metadata_encrypted(*struct_archive_entry, is_ pub const struct_stat = opaque {}; pub extern fn archive_entry_stat(*struct_archive_entry) ?*const struct_stat; pub extern fn archive_entry_copy_stat(*struct_archive_entry, ?*const struct_stat) void; -pub extern fn archive_entry_mac_metadata(*struct_archive_entry, [*c]usize) ?*const c_void; -pub extern fn archive_entry_copy_mac_metadata(*struct_archive_entry, ?*const c_void, usize) void; +pub extern fn archive_entry_mac_metadata(*struct_archive_entry, [*c]usize) ?*const anyopaque; +pub extern fn archive_entry_copy_mac_metadata(*struct_archive_entry, ?*const anyopaque, usize) void; pub extern fn archive_entry_digest(*struct_archive_entry, c_int) [*c]const u8; pub extern fn archive_entry_acl_clear(*struct_archive_entry) void; pub extern fn archive_entry_acl_add_entry(*struct_archive_entry, c_int, c_int, c_int, c_int, [*c]const u8) c_int; @@ -547,10 +550,10 @@ pub extern fn archive_entry_acl_count(*struct_archive_entry, c_int) c_int; pub const struct_archive_acl = opaque {}; pub extern fn archive_entry_acl(*struct_archive_entry) *struct_archive_acl; pub extern fn archive_entry_xattr_clear(*struct_archive_entry) void; -pub extern fn archive_entry_xattr_add_entry(*struct_archive_entry, [*c]const u8, ?*const c_void, usize) void; +pub extern fn archive_entry_xattr_add_entry(*struct_archive_entry, [*c]const u8, ?*const anyopaque, usize) void; pub extern fn archive_entry_xattr_count(*struct_archive_entry) c_int; pub extern fn archive_entry_xattr_reset(*struct_archive_entry) c_int; -pub extern fn archive_entry_xattr_next(*struct_archive_entry, [*c][*c]const u8, [*c]?*const c_void, [*c]usize) c_int; +pub extern fn archive_entry_xattr_next(*struct_archive_entry, [*c][*c]const u8, [*c]?*const anyopaque, [*c]usize) c_int; pub extern fn archive_entry_sparse_clear(*struct_archive_entry) void; pub extern fn archive_entry_sparse_add_entry(*struct_archive_entry, la_int64_t, la_int64_t) void; pub extern fn archive_entry_sparse_count(*struct_archive_entry) c_int; diff --git a/src/libarchive/libarchive.zig b/src/libarchive/libarchive.zig index d22682ff6..646d5b8f0 100644 --- a/src/libarchive/libarchive.zig +++ b/src/libarchive/libarchive.zig @@ -1,7 +1,17 @@ // @link "../deps/libarchive.a" const lib = @import("./libarchive-bindings.zig"); -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FileDescriptorType = _global.FileDescriptorType; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const struct_archive = lib.struct_archive; pub const Seek = enum(c_int) { @@ -172,79 +182,6 @@ pub const Status = enum(c_int) { fatal = lib.ARCHIVE_FATAL, }; -pub fn NewStream(comptime SeekableStream: type) type { - return struct { - const Stream = @This(); - source: SeekableStream, - - pub inline fn fromCtx(ctx: *c_void) *Stream { - return @ptrCast(*Stream, @alignCast(@alignOf(*Stream), ctx)); - } - - pub fn archive_read_callback( - archive: *struct_archive, - ctx_: *c_void, - buffer: [*c]*const c_void, - ) callconv(.C) lib.la_ssize_t { - var this = fromCtx(ctx_); - } - - pub fn archive_skip_callback( - archive: *struct_archive, - ctx_: *c_void, - offset: lib.la_int64_, - ) callconv(.C) lib.la_int64_t { - var this = fromCtx(ctx_); - } - - pub fn archive_seek_callback( - archive: *struct_archive, - ctx_: *c_void, - offset: lib.la_int64_t, - whence: c_int, - ) callconv(.C) lib.la_int64_t { - var this = fromCtx(ctx_); - } - - pub fn archive_write_callback( - archive: *struct_archive, - ctx_: *c_void, - buffer: *const c_void, - len: usize, - ) callconv(.C) lib.la_ssize_t { - var this = fromCtx(ctx_); - } - pub fn archive_open_callback( - archive: *struct_archive, - ctx_: *c_void, - ) callconv(.C) c_int { - var this = fromCtx(ctx_); - } - - pub fn archive_close_callback( - archive: *struct_archive, - ctx_: *c_void, - ) callconv(.C) c_int { - var this = fromCtx(ctx_); - } - pub fn archive_free_callback( - archive: *struct_archive, - ctx_: *c_void, - ) callconv(.C) c_int { - var this = fromCtx(ctx_); - } - - pub fn archive_switch_callback( - archive: *struct_archive, - ctx1: *c_void, - ctx2: *c_void, - ) callconv(.C) c_int { - var this = fromCtx(ctx1); - var that = fromCtx(ctx2); - } - }; -} - pub const BufferReadStream = struct { const Stream = @This(); buf: []const u8, @@ -299,21 +236,21 @@ pub const BufferReadStream = struct { return this.buf[this.pos..]; } - pub inline fn fromCtx(ctx: *c_void) *Stream { + pub inline fn fromCtx(ctx: *anyopaque) *Stream { return @ptrCast(*Stream, @alignCast(@alignOf(*Stream), ctx)); } pub fn archive_close_callback( - archive: *struct_archive, - ctx_: *c_void, + _: *struct_archive, + _: *anyopaque, ) callconv(.C) c_int { return 0; } pub fn archive_read_callback( - archive: *struct_archive, - ctx_: *c_void, - buffer: [*c]*const c_void, + _: *struct_archive, + ctx_: *anyopaque, + buffer: [*c]*const anyopaque, ) callconv(.C) lib.la_ssize_t { var this = fromCtx(ctx_); const remaining = this.bufLeft(); @@ -326,8 +263,8 @@ pub const BufferReadStream = struct { } pub fn archive_skip_callback( - archive: *struct_archive, - ctx_: *c_void, + _: *struct_archive, + ctx_: *anyopaque, offset: lib.la_int64_t, ) callconv(.C) lib.la_int64_t { var this = fromCtx(ctx_); @@ -342,8 +279,8 @@ pub const BufferReadStream = struct { } pub fn archive_seek_callback( - archive: *struct_archive, - ctx_: *c_void, + _: *struct_archive, + ctx_: *anyopaque, offset: lib.la_int64_t, whence: c_int, ) callconv(.C) lib.la_int64_t { @@ -373,8 +310,8 @@ pub const BufferReadStream = struct { // pub fn archive_write_callback( // archive: *struct_archive, - // ctx_: *c_void, - // buffer: *const c_void, + // ctx_: *anyopaque, + // buffer: *const anyopaque, // len: usize, // ) callconv(.C) lib.la_ssize_t { // var this = fromCtx(ctx_); @@ -382,21 +319,21 @@ pub const BufferReadStream = struct { // pub fn archive_close_callback( // archive: *struct_archive, - // ctx_: *c_void, + // ctx_: *anyopaque, // ) callconv(.C) c_int { // var this = fromCtx(ctx_); // } // pub fn archive_free_callback( // archive: *struct_archive, - // ctx_: *c_void, + // ctx_: *anyopaque, // ) callconv(.C) c_int { // var this = fromCtx(ctx_); // } // pub fn archive_switch_callback( // archive: *struct_archive, - // ctx1: *c_void, - // ctx2: *c_void, + // ctx1: *anyopaque, + // ctx2: *anyopaque, // ) callconv(.C) c_int { // var this = fromCtx(ctx1); // var that = fromCtx(ctx2); @@ -415,10 +352,10 @@ pub const Archive = struct { pub const EntryMap = std.ArrayHashMap(u64, [*c]u8, U64Context, false); pub const U64Context = struct { - pub fn hash(ctx: @This(), k: u64) u32 { + pub fn hash(_: @This(), k: u64) u32 { return @truncate(u32, k); } - pub fn eql(ctx: @This(), a: u64, b: u64) bool { + pub fn eql(_: @This(), a: u64, b: u64) bool { return a == b; } }; @@ -429,7 +366,7 @@ pub const Archive = struct { filename_hash: u64 = 0, found: bool = false, fd: FileDescriptorType = 0, - pub fn init(filepath: string, estimated_size: usize, allocator: *std.mem.Allocator) !Plucker { + pub fn init(filepath: string, estimated_size: usize, allocator: std.mem.Allocator) !Plucker { return Plucker{ .contents = try MutableString.init(allocator, estimated_size), .filename_hash = std.hash.Wyhash.hash(0, filepath), @@ -448,9 +385,7 @@ pub const Archive = struct { comptime depth_to_skip: usize, ) !void { var entry: *lib.archive_entry = undefined; - var ext: *lib.archive = undefined; - const flags = @enumToInt(Flags.Extract.time) | @enumToInt(Flags.Extract.perm) | @enumToInt(Flags.Extract.acl) | @enumToInt(Flags.Extract.fflags); var stream: BufferReadStream = undefined; stream.init(file_buffer); defer stream.deinit(); @@ -533,9 +468,7 @@ pub const Archive = struct { comptime log: bool, ) !u32 { var entry: *lib.archive_entry = undefined; - var ext: *lib.archive = undefined; - const flags = @enumToInt(Flags.Extract.time) | @enumToInt(Flags.Extract.perm) | @enumToInt(Flags.Extract.acl) | @enumToInt(Flags.Extract.fflags); var stream: BufferReadStream = undefined; stream.init(file_buffer); defer stream.deinit(); @@ -576,7 +509,6 @@ pub const Archive = struct { var pathname_ = tokenizer.rest(); pathname = @intToPtr([*]const u8, @ptrToInt(pathname_.ptr))[0..pathname_.len :0]; - const mask = lib.archive_entry_filetype(entry); const size = @intCast(usize, @maximum(lib.archive_entry_size(entry), 0)); if (size > 0) { const slice = std.mem.span(pathname); diff --git a/src/linker.zig b/src/linker.zig index 52c3090a5..c652ec9b8 100644 --- a/src/linker.zig +++ b/src/linker.zig @@ -1,5 +1,15 @@ -usingnamespace @import("global.zig"); -usingnamespace @import("./ast/base.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const FileDescriptorType = _global.FileDescriptorType; +const C = _global.C; +const Ref = @import("./ast/base.zig").Ref; const std = @import("std"); const lex = @import("js_lexer.zig"); @@ -33,7 +43,7 @@ pub const OnImportCallback = fn (resolve_result: *const Resolver.Result, import_ pub const Linker = struct { const HashedFileNameMap = std.AutoHashMap(u64, string); const ThisLinker = @This(); - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, options: *Options.BundleOptions, fs: *Fs.FileSystem, log: *logger.Log, @@ -49,7 +59,7 @@ pub const Linker = struct { onImportCSS: ?OnImportCallback = null, pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, resolve_queue: *ResolveQueue, options: *Options.BundleOptions, @@ -72,12 +82,6 @@ pub const Linker = struct { }; } - // fs: fs.FileSystem, - // TODO: - pub fn requireOrImportMetaForSource(c: ThisLinker, source_index: Ref.Int) RequireOrImportMeta { - return RequireOrImportMeta{}; - } - pub fn getHashedFilename( this: *ThisLinker, file_path: Fs.Path, @@ -192,11 +196,9 @@ pub const Linker = struct { comptime import_path_format: Options.BundleOptions.ImportPathFormat, comptime ignore_runtime: bool, ) !void { - var needs_runtime = result.ast.uses_exports_ref or result.ast.uses_module_ref or result.ast.runtime_imports.hasAny(); const source_dir = file_path.sourceDir(); var externals = std.ArrayList(u32).init(linker.allocator); var needs_bundle = false; - var first_bundled_index: ?u32 = null; var had_resolve_errors = false; var needs_require = false; @@ -250,7 +252,7 @@ pub const Linker = struct { if (node_modules_bundle.getPackageIDByHash(package_json.hash)) |pkg_id| { const package = node_modules_bundle.bundle.packages[pkg_id]; - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert(strings.eql(node_modules_bundle.str(package.name), package_json.name)); std.debug.assert(strings.eql(node_modules_bundle.str(package.version), package_json.version)); } @@ -274,7 +276,7 @@ pub const Linker = struct { break :bundled; }; - if (comptime isDebug) { + if (comptime Environment.isDebug) { const module_path = node_modules_bundle.str(found_module.path); std.debug.assert( strings.eql( @@ -449,58 +451,6 @@ pub const Linker = struct { }; result.ast.prepend_part = js_ast.Part{ .stmts = std.mem.span(&require_part_stmts) }; } - - // This is a bad idea - // I don't think it's safe to do this - const ImportStatementSorter = struct { - import_records: []ImportRecord, - pub fn lessThan(ctx: @This(), lhs: js_ast.Stmt, rhs: js_ast.Stmt) bool { - switch (lhs.data) { - .s_import => |li| { - switch (rhs.data) { - .s_import => |ri| { - const a = ctx.import_records[li.import_record_index]; - const b = ctx.import_records[ri.import_record_index]; - if (a.is_bundled and !b.is_bundled) { - return false; - } else { - return true; - } - }, - else => { - return true; - }, - } - }, - else => { - switch (rhs.data) { - .s_import => |ri| { - const a = ctx.import_records[ri.import_record_index]; - if (!a.is_bundled) { - return false; - } else { - return true; - } - }, - else => { - return true; - }, - } - }, - } - } - }; - - // std.sort.sort(comptime T: type, items: []T, context: anytype, comptime lessThan: fn(context:@TypeOf(context), lhs:T, rhs:T)bool) - - // Change the import order so that any bundled imports appear last - // This is to make it so the bundle (which should be quite large) is least likely to block rendering - // if (needs_bundle) { - // const sorter = ImportStatementSorter{ .import_records = result.ast.import_records }; - // for (result.ast.parts) |*part, i| { - // std.sort.sort(js_ast.Stmt, part.stmts, sorter, ImportStatementSorter.lessThan); - // } - // } } const ImportPathsList = allocators.BSSStringList(512, 128); @@ -510,7 +460,7 @@ pub const Linker = struct { linker: *ThisLinker, source_dir: string, source_path: string, - package_version: ?string, + _: ?string, use_hashed_name: bool, namespace: string, comptime import_path_format: Options.BundleOptions.ImportPathFormat, @@ -568,7 +518,6 @@ pub const Linker = struct { relative_name = pretty; } - var pathname = Fs.PathName.init(pretty); var path = Fs.Path.initWithPretty(pretty, relative_name); path.text = path.text[0 .. path.text.len - path.name.ext.len]; return path; @@ -576,7 +525,7 @@ pub const Linker = struct { .absolute_url => { if (strings.eqlComptime(namespace, "node")) { - if (comptime isDebug) std.debug.assert(strings.eqlComptime(source_path[0..5], "node:")); + if (comptime Environment.isDebug) std.debug.assert(strings.eqlComptime(source_path[0..5], "node:")); return Fs.Path.init(try std.fmt.allocPrint( linker.allocator, diff --git a/src/lock.zig b/src/lock.zig index 23552f6ed..7e6bfccdf 100644 --- a/src/lock.zig +++ b/src/lock.zig @@ -9,7 +9,7 @@ pub const Mutex = struct { const UNLOCKED = 0; const LOCKED = 0b01; const CONTENDED = 0b11; - const is_x86 = std.Target.current.cpu.arch.isX86(); + const is_x86 = @import("builtin").target.cpu.arch.isX86(); pub fn tryAcquire(self: *Mutex) bool { return self.acquireFast(true); diff --git a/src/logger.zig b/src/logger.zig index c2386ddb2..ae1d20fed 100644 --- a/src/logger.zig +++ b/src/logger.zig @@ -1,8 +1,17 @@ const std = @import("std"); const Api = @import("./api/schema.zig").Api; -const js = @import("./javascript/jsc/bindings/bindings.zig"); +const js = @import("javascript_core"); const ImportKind = @import("./import_record.zig").ImportKind; -usingnamespace @import("global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const fs = @import("fs.zig"); const unicode = std.unicode; @@ -34,7 +43,7 @@ pub const Kind = enum(i8) { }; } - pub inline fn string(self: Kind) string { + pub inline fn string(self: Kind) _global.string { return switch (self) { .err => "error", .warn => "warn", @@ -103,7 +112,7 @@ pub const Location = struct { } // don't really know what's safe to deinit here! - pub fn deinit(l: *Location, allocator: *std.mem.Allocator) void {} + pub fn deinit(_: *Location, _: std.mem.Allocator) void {} pub fn init(file: []u8, namespace: []u8, line: i32, column: i32, length: u32, line_text: ?[]u8, suggestion: ?[]u8) Location { return Location{ @@ -158,12 +167,12 @@ pub const Location = struct { pub const Data = struct { text: string, location: ?Location = null, - pub fn deinit(d: *Data, allocator: *std.mem.Allocator) void { + pub fn deinit(d: *Data, allocator: std.mem.Allocator) void { if (d.location) |loc| { loc.deinit(allocator); } - allocator.free(text); + allocator.free(d.text); } pub fn toAPI(this: *const Data) Api.MessageData { @@ -351,7 +360,7 @@ pub const Msg = struct { }; }; - pub fn toAPI(this: *const Msg, allocator: *std.mem.Allocator) !Api.Message { + pub fn toAPI(this: *const Msg, allocator: std.mem.Allocator) !Api.Message { const notes_len = if (this.notes != null) this.notes.?.len else 0; var _notes = try allocator.alloc( Api.MessageData, @@ -378,7 +387,7 @@ pub const Msg = struct { return msg; } - pub fn toAPIFromList(comptime ListType: type, list: ListType, allocator: *std.mem.Allocator) ![]Api.Message { + pub fn toAPIFromList(comptime ListType: type, list: ListType, allocator: std.mem.Allocator) ![]Api.Message { var out_list = try allocator.alloc(Api.Message, list.items.len); for (list.items) |item, i| { out_list[i] = try item.toAPI(allocator); @@ -387,7 +396,7 @@ pub const Msg = struct { return out_list; } - pub fn deinit(msg: *Msg, allocator: *std.mem.Allocator) void { + pub fn deinit(msg: *Msg, allocator: std.mem.Allocator) void { msg.data.deinit(allocator); if (msg.notes) |notes| { for (notes) |note| { @@ -415,7 +424,7 @@ pub const Msg = struct { msg: *const Msg, comptime Writer: type, writer: Writer, - comptime allow_colors: bool, + comptime _: bool, ) !void { if (msg.data.location) |location| { try writer.print("{s}: {s}\n{s}\n{s}:{}:{} ({d})", .{ @@ -474,12 +483,12 @@ pub const Log = struct { warnings: usize = 0, errors: usize = 0, msgs: ArrayList(Msg), - level: Level = if (isDebug) Level.info else Level.warn, + level: Level = if (Environment.isDebug) Level.info else Level.warn, - pub fn toAPI(this: *const Log, allocator: *std.mem.Allocator) !Api.Log { + pub fn toAPI(this: *const Log, allocator: std.mem.Allocator) !Api.Log { var warnings: u32 = 0; var errors: u32 = 0; - for (this.msgs.items) |msg, i| { + for (this.msgs.items) |msg| { errors += @intCast(u32, @boolToInt(msg.kind == .err)); warnings += @intCast(u32, @boolToInt(msg.kind == .warn)); } @@ -499,7 +508,7 @@ pub const Log = struct { err, }; - pub fn init(allocator: *std.mem.Allocator) Log { + pub fn init(allocator: std.mem.Allocator) Log { return Log{ .msgs = ArrayList(Msg).init(allocator), }; @@ -636,7 +645,7 @@ pub const Log = struct { }); } - inline fn _addResolveError(log: *Log, source: *const Source, r: Range, allocator: *std.mem.Allocator, comptime fmt: string, args: anytype, import_kind: ImportKind, comptime dupe_text: bool) !void { + inline fn _addResolveError(log: *Log, source: *const Source, r: Range, allocator: std.mem.Allocator, comptime fmt: string, args: anytype, import_kind: ImportKind, comptime dupe_text: bool) !void { const text = try std.fmt.allocPrint(allocator, fmt, args); // TODO: fix this. this is stupid, it should be returned in allocPrint. const specifier = BabyString.in(text, args.@"0"); @@ -673,7 +682,7 @@ pub const Log = struct { log: *Log, source: *const Source, r: Range, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime fmt: string, args: anytype, import_kind: ImportKind, @@ -686,7 +695,7 @@ pub const Log = struct { log: *Log, source: *const Source, r: Range, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime fmt: string, args: anytype, import_kind: ImportKind, @@ -704,7 +713,7 @@ pub const Log = struct { }); } - pub fn addRangeErrorFmt(log: *Log, source: ?*const Source, r: Range, allocator: *std.mem.Allocator, comptime text: string, args: anytype) !void { + pub fn addRangeErrorFmt(log: *Log, source: ?*const Source, r: Range, allocator: std.mem.Allocator, comptime text: string, args: anytype) !void { @setCold(true); log.errors += 1; try log.addMsg(Msg{ @@ -713,7 +722,7 @@ pub const Log = struct { }); } - pub fn addRangeErrorFmtWithNotes(log: *Log, source: ?*const Source, r: Range, allocator: *std.mem.Allocator, notes: []Data, comptime text: string, args: anytype) !void { + pub fn addRangeErrorFmtWithNotes(log: *Log, source: ?*const Source, r: Range, allocator: std.mem.Allocator, notes: []Data, comptime text: string, args: anytype) !void { @setCold(true); log.errors += 1; try log.addMsg(Msg{ @@ -723,7 +732,7 @@ pub const Log = struct { }); } - pub fn addErrorFmt(log: *Log, source: ?*const Source, l: Loc, allocator: *std.mem.Allocator, comptime text: string, args: anytype) !void { + pub fn addErrorFmt(log: *Log, source: ?*const Source, l: Loc, allocator: std.mem.Allocator, comptime text: string, args: anytype) !void { @setCold(true); log.errors += 1; try log.addMsg(Msg{ @@ -742,7 +751,7 @@ pub const Log = struct { }); } - pub fn addWarningFmt(log: *Log, source: ?*const Source, l: Loc, allocator: *std.mem.Allocator, comptime text: string, args: anytype) !void { + pub fn addWarningFmt(log: *Log, source: ?*const Source, l: Loc, allocator: std.mem.Allocator, comptime text: string, args: anytype) !void { @setCold(true); if (!Kind.shouldPrint(.warn, log.level)) return; log.warnings += 1; @@ -752,7 +761,7 @@ pub const Log = struct { }); } - pub fn addRangeWarningFmt(log: *Log, source: ?*const Source, r: Range, allocator: *std.mem.Allocator, comptime text: string, args: anytype) !void { + pub fn addRangeWarningFmt(log: *Log, source: ?*const Source, r: Range, allocator: std.mem.Allocator, comptime text: string, args: anytype) !void { @setCold(true); if (!Kind.shouldPrint(.warn, log.level)) return; log.warnings += 1; @@ -766,7 +775,7 @@ pub const Log = struct { log: *Log, source: ?*const Source, r: Range, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime fmt: string, args: anytype, comptime note_fmt: string, @@ -895,7 +904,7 @@ pub const Log = struct { if (printed) _ = try to.write("\n"); } - pub fn toZigException(this: *const Log, allocator: *std.mem.Allocator) *js.ZigException.Holder { + pub fn toZigException(this: *const Log, allocator: std.mem.Allocator) *js.ZigException.Holder { var holder = try allocator.create(js.ZigException.Holder); holder.* = js.ZigException.Holder.init(); var zig_exception: *js.ZigException = holder.zigException(); @@ -928,9 +937,7 @@ pub const Source = struct { return Source{ .path = path, .key_path = path, .index = 0, .contents = "" }; } - pub fn initFile(file: fs.File, allocator: *std.mem.Allocator) !Source { - var name = file.path.name; - + pub fn initFile(file: fs.File, _: std.mem.Allocator) !Source { var source = Source{ .path = file.path, .key_path = fs.Path.init(file.path.text), @@ -940,9 +947,7 @@ pub const Source = struct { return source; } - pub fn initRecycledFile(file: fs.File, allocator: *std.mem.Allocator) !Source { - var name = file.path.name; - + pub fn initRecycledFile(file: fs.File, _: std.mem.Allocator) !Source { var source = Source{ .path = file.path, .key_path = fs.Path.init(file.path.text), diff --git a/src/main.zig b/src/main.zig index 6939edaf2..00c25c9f4 100644 --- a/src/main.zig +++ b/src/main.zig @@ -9,12 +9,21 @@ const js_ast = @import("js_ast.zig"); const linker = @import("linker.zig"); usingnamespace @import("ast/base.zig"); usingnamespace @import("defines.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const panicky = @import("panic_handler.zig"); const cli = @import("cli.zig"); pub const MainPanicHandler = panicky.NewPanicHandler(std.builtin.default_panic); const js = @import("javascript/jsc/bindings/bindings.zig"); -usingnamespace @import("javascript/jsc/javascript.zig"); +const JavaScript = @import("javascript/jsc/javascript.zig"); pub const io_mode = .blocking; @@ -58,7 +67,7 @@ pub fn main() anyerror!void { std.mem.doNotOptimizeAway(JavaScriptVirtualMachine.resolve); } -pub const JavaScriptVirtualMachine = VirtualMachine; +pub const JavaScriptVirtualMachine = JavaScript.VirtualMachine; test "" { @import("std").testing.refAllDecls(@This()); diff --git a/src/main_javascript.zig b/src/main_javascript.zig deleted file mode 100644 index 8cf3e959f..000000000 --- a/src/main_javascript.zig +++ /dev/null @@ -1,422 +0,0 @@ -const std = @import("std"); -const lex = @import("js_lexer.zig"); -const logger = @import("logger.zig"); -const options = @import("options.zig"); -const js_parser = @import("js_parser.zig"); -const json_parser = @import("json_parser.zig"); -const js_printer = @import("js_printer.zig"); -const js_ast = @import("js_ast.zig"); -const linker = @import("linker.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("defines.zig"); -usingnamespace @import("global.zig"); -const panicky = @import("panic_handler.zig"); -pub const MainPanicHandler = panicky.NewPanicHandler(panicky.default_panic); -const Api = @import("api/schema.zig").Api; -const resolve_path = @import("./resolver/resolve_path.zig"); -const clap = @import("clap"); -const bundler = @import("bundler.zig"); -const fs = @import("fs.zig"); -const NodeModuleBundle = @import("./node_module_bundle.zig").NodeModuleBundle; -const js = @import("javascript/jsc/bindings/bindings.zig"); -usingnamespace @import("javascript/jsc/javascript.zig"); -const allocators = @import("allocators.zig"); -pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace) noreturn { - if (MainPanicHandler.Singleton) |singleton| { - MainPanicHandler.handle_panic(msg, error_return_trace); - } else { - panicky.default_panic(msg, error_return_trace); - } -} - -const constStrToU8 = allocators.constStrToU8; -pub fn main() anyerror!void { - // The memory allocator makes a massive difference. - // std.heap.raw_c_allocator and default_allocator perform similarly. - // std.heap.GeneralPurposeAllocator makes this about 3x _slower_ than esbuild. - // var root_alloc = std.heap.ArenaAllocator.init(std.heap.raw_c_allocator); - // var root_alloc_ = &root_alloc.allocator; - - var stdout = std.io.getStdOut(); - // var stdout = std.io.bufferedWriter(stdout_file.writer()); - var stderr = std.io.getStdErr(); - // var stderr = std.io.bufferedWriter(stderr_file.writer()); - var output_source = Output.Source.init(stdout, stderr); - // defer stdout.flush() catch {}; - // defer stderr.flush() catch {}; - Output.Source.set(&output_source); - - defer Output.flush(); - try Cli.start( - default_allocator, - stdout, - stderr, - ); -} - -pub const Cli = struct { - const LoaderMatcher = strings.ExactSizeMatcher(4); - pub fn ColonListType(comptime t: type, value_resolver: anytype) type { - return struct { - pub fn init(allocator: *std.mem.Allocator, count: usize) !@This() { - var keys = try allocator.alloc(string, count); - var values = try allocator.alloc(t, count); - - return @This(){ .keys = keys, .values = values }; - } - keys: []string, - values: []t, - - pub fn load(self: *@This(), input: []const string) !void { - for (input) |str, i| { - // Support either ":" or "=" as the separator, preferring whichever is first. - // ":" is less confusing IMO because that syntax is used with flags - // but "=" is what esbuild uses and I want this to be somewhat familiar for people using esbuild - const midpoint = std.math.min(strings.indexOfChar(str, ':') orelse std.math.maxInt(usize), strings.indexOfChar(str, '=') orelse std.math.maxInt(usize)); - if (midpoint == std.math.maxInt(usize)) { - return error.InvalidSeparator; - } - - self.keys[i] = str[0..midpoint]; - self.values[i] = try value_resolver(str[midpoint + 1 .. str.len]); - } - } - - pub fn resolve(allocator: *std.mem.Allocator, input: []const string) !@This() { - var list = try init(allocator, input.len); - try list.load(input); - return list; - } - }; - } - pub const LoaderColonList = ColonListType(Api.Loader, Arguments.loader_resolver); - pub const DefineColonList = ColonListType(string, Arguments.noop_resolver); - - pub const Arguments = struct { - pub fn loader_resolver(in: string) !Api.Loader { - const Matcher = strings.ExactSizeMatcher(4); - switch (Matcher.match(in)) { - Matcher.case("jsx") => return Api.Loader.jsx, - Matcher.case("js") => return Api.Loader.js, - Matcher.case("ts") => return Api.Loader.ts, - Matcher.case("tsx") => return Api.Loader.tsx, - Matcher.case("css") => return Api.Loader.css, - Matcher.case("file") => return Api.Loader.file, - Matcher.case("json") => return Api.Loader.json, - else => { - return error.InvalidLoader; - }, - } - } - - pub fn noop_resolver(in: string) !string { - return in; - } - - pub fn fileReadError(err: anyerror, stderr: anytype, filename: string, kind: string) noreturn { - stderr.writer().print("Error reading file \"{s}\" for {s}: {s}", .{ filename, kind, @errorName(err) }) catch {}; - std.process.exit(1); - } - - pub fn readFile( - allocator: *std.mem.Allocator, - cwd: string, - filename: string, - ) ![]u8 { - var paths = [_]string{ cwd, filename }; - const outpath = try std.fs.path.resolve(allocator, &paths); - defer allocator.free(outpath); - var file = try std.fs.openFileAbsolute(outpath, std.fs.File.OpenFlags{ .read = true, .write = false }); - defer file.close(); - const stats = try file.stat(); - return try file.readToEndAlloc(allocator, stats.size); - } - - pub fn parse(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype) !Api.TransformOptions { - @setEvalBranchQuota(9999); - const params = comptime [_]clap.Param(clap.Help){ - clap.parseParam("-h, --help Display this help and exit. ") catch unreachable, - clap.parseParam("-r, --resolve <STR> Determine import/require behavior. \"disable\" ignores. \"dev\" bundles node_modules and builds everything else as independent entry points") catch unreachable, - clap.parseParam("-d, --define <STR>... Substitute K:V while parsing, e.g. --define process.env.NODE_ENV:development") catch unreachable, - clap.parseParam("-l, --loader <STR>... Parse files with .ext:loader, e.g. --loader .js:jsx. Valid loaders: jsx, js, json, tsx (not implemented yet), ts (not implemented yet), css (not implemented yet)") catch unreachable, - clap.parseParam("-o, --outdir <STR> Save output to directory (default: \"out\" if none provided and multiple entry points passed)") catch unreachable, - clap.parseParam("-e, --external <STR>... Exclude module from transpilation (can use * wildcards). ex: -e react") catch unreachable, - clap.parseParam("-i, --inject <STR>... Inject module at the top of every file") catch unreachable, - clap.parseParam("--cwd <STR> Absolute path to resolve entry points from. Defaults to cwd") catch unreachable, - clap.parseParam("--origin <STR> Rewrite import paths to start with --origin. Useful for web browsers.") catch unreachable, - clap.parseParam("--serve Start a local dev server. This also sets resolve to \"lazy\".") catch unreachable, - clap.parseParam("--public-dir <STR> Top-level directory for .html files, fonts, images, or anything external. Only relevant with --serve. Defaults to \"<cwd>/public\", to match create-react-app and Next.js") catch unreachable, - clap.parseParam("--jsx-factory <STR> Changes the function called when compiling JSX elements using the classic JSX runtime") catch unreachable, - clap.parseParam("--jsx-fragment <STR> Changes the function called when compiling JSX fragments using the classic JSX runtime") catch unreachable, - clap.parseParam("--jsx-import-source <STR> Declares the module specifier to be used for importing the jsx and jsxs factory functions. Default: \"react\"") catch unreachable, - clap.parseParam("--jsx-runtime <STR> \"automatic\" (default) or \"classic\"") catch unreachable, - clap.parseParam("--jsx-production Use jsx instead of jsxDEV (default) for the automatic runtime") catch unreachable, - clap.parseParam("--extension-order <STR>... defaults to: .tsx,.ts,.jsx,.js,.json ") catch unreachable, - clap.parseParam("--disable-react-fast-refresh Disable React Fast Refresh. Enabled if --serve is set and --jsx-production is not set. Otherwise, it's a noop.") catch unreachable, - clap.parseParam("--tsconfig-override <STR> Load tsconfig from path instead of cwd/tsconfig.json") catch unreachable, - clap.parseParam("--platform <STR> \"browser\" or \"node\". Defaults to \"browser\"") catch unreachable, - clap.parseParam("--main-fields <STR>... Main fields to lookup in package.json. Defaults to --platform dependent") catch unreachable, - clap.parseParam("--scan Instead of bundling or transpiling, print a list of every file imported by an entry point, recursively") catch unreachable, - clap.parseParam("--new-jsb Generate a new node_modules.jsb file from node_modules and entry point(s)") catch unreachable, - clap.parseParam("--jsb <STR> Use a Bun JavaScript Bundle (default: \"./node_modules.jsb\" if exists)") catch unreachable, - // clap.parseParam("--no-jsb Use a Bun JavaScript Bundle (default: \"./node_modules.jsb\" if exists)") catch unreachable, - clap.parseParam("<POS>... Entry points to use") catch unreachable, - }; - - var diag = clap.Diagnostic{}; - - var args = clap.parse(clap.Help, ¶ms, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| { - // Report useful error and exit - diag.report(stderr.writer(), err) catch {}; - return err; - }; - - if (args.flag("--help")) { - try clap.help(stderr.writer(), ¶ms); - std.process.exit(1); - } - - var cwd_paths = [_]string{args.option("--cwd") orelse try std.process.getCwdAlloc(allocator)}; - var cwd = try std.fs.path.resolve(allocator, &cwd_paths); - var tsconfig_override = if (args.option("--tsconfig-override")) |ts| (Arguments.readFile(allocator, cwd, ts) catch |err| fileReadError(err, stderr, ts, "tsconfig.json")) else null; - var origin = args.option("--origin"); - var defines_tuple = try DefineColonList.resolve(allocator, args.options("--define")); - var loader_tuple = try LoaderColonList.resolve(allocator, args.options("--define")); - - var define_keys = defines_tuple.keys; - var define_values = defines_tuple.values; - var loader_keys = loader_tuple.keys; - var loader_values = loader_tuple.values; - var entry_points = args.positionals(); - var inject = args.options("--inject"); - var output_dir = args.option("--outdir"); - const serve = false; - - var write = entry_points.len > 1 or output_dir != null; - if (write and output_dir == null) { - var _paths = [_]string{ cwd, "out" }; - output_dir = try std.fs.path.resolve(allocator, &_paths); - } - var externals = std.mem.zeroes([][]u8); - if (args.options("--external").len > 0) { - externals = try allocator.alloc([]u8, args.options("--external").len); - for (args.options("--external")) |external, i| { - externals[i] = constStrToU8(external); - } - } - - var jsx_factory = args.option("--jsx-factory"); - var jsx_fragment = args.option("--jsx-fragment"); - var jsx_import_source = args.option("--jsx-import-source"); - var jsx_runtime = args.option("--jsx-runtime"); - var jsx_production = args.flag("--jsx-production"); - var react_fast_refresh = false; - - if (serve or args.flag("--new-bun")) { - react_fast_refresh = true; - if (args.flag("--disable-react-fast-refresh") or jsx_production) { - react_fast_refresh = false; - } - } - - var main_fields = args.options("--main-fields"); - - var node_modules_bundle_path = args.option("--bun") orelse brk: { - if (args.flag("--new-bun")) { - break :brk null; - } - - const node_modules_bundle_path_absolute = resolve_path.joinAbs(cwd, .auto, "node_modules.bun"); - std.fs.accessAbsolute(node_modules_bundle_path_absolute, .{}) catch |err| { - break :brk null; - }; - - break :brk node_modules_bundle_path_absolute; - }; - - if (node_modules_bundle_path != null) { - node_modules_bundle_path = try std.fs.realpathAlloc(allocator, node_modules_bundle_path.?); - } - - if (args.flag("--new-bun")) { - node_modules_bundle_path = null; - } - - const PlatformMatcher = strings.ExactSizeMatcher(8); - const ResoveMatcher = strings.ExactSizeMatcher(8); - - var resolve = Api.ResolveMode.lazy; - if (args.option("--resolve")) |_resolve| { - switch (PlatformMatcher.match(_resolve)) { - PlatformMatcher.case("disable") => { - resolve = Api.ResolveMode.disable; - }, - PlatformMatcher.case("bundle") => { - resolve = Api.ResolveMode.bundle; - }, - PlatformMatcher.case("dev") => { - resolve = Api.ResolveMode.dev; - }, - PlatformMatcher.case("lazy") => { - resolve = Api.ResolveMode.lazy; - }, - else => { - diag.name.long = "--resolve"; - diag.arg = _resolve; - try diag.report(stderr.writer(), error.InvalidResolveOption); - std.process.exit(1); - }, - } - } - - var platform: ?Api.Platform = null; - - if (args.option("--platform")) |_platform| { - switch (PlatformMatcher.match(_platform)) { - PlatformMatcher.case("browser") => { - platform = Api.Platform.browser; - }, - PlatformMatcher.case("node") => { - platform = Api.Platform.node; - }, - else => { - diag.name.long = "--platform"; - diag.arg = _platform; - try diag.report(stderr.writer(), error.InvalidPlatform); - std.process.exit(1); - }, - } - } - - var jsx: ?Api.Jsx = null; - if (jsx_factory != null or - jsx_fragment != null or - jsx_import_source != null or - jsx_runtime != null or - jsx_production or react_fast_refresh) - { - var default_factory = "".*; - var default_fragment = "".*; - var default_import_source = "".*; - jsx = Api.Jsx{ - .factory = constStrToU8(jsx_factory orelse &default_factory), - .fragment = constStrToU8(jsx_fragment orelse &default_fragment), - .import_source = constStrToU8(jsx_import_source orelse &default_import_source), - .runtime = if (jsx_runtime != null) try resolve_jsx_runtime(jsx_runtime.?) else Api.JsxRuntime.automatic, - .development = !jsx_production, - .react_fast_refresh = react_fast_refresh, - }; - } - - if (entry_points.len == 0) { - try clap.help(stderr.writer(), ¶ms); - try diag.report(stderr.writer(), error.MissingEntryPoint); - std.process.exit(1); - } - - return Api.TransformOptions{ - .jsx = jsx, - .output_dir = output_dir, - .resolve = resolve, - .external = externals, - .absolute_working_dir = cwd, - .tsconfig_override = tsconfig_override, - .origin = origin, - .define = .{ - .keys = define_keys, - .values = define_values, - }, - .loaders = .{ - .extensions = loader_keys, - .loaders = loader_values, - }, - .node_modules_bundle_path = node_modules_bundle_path, - .public_dir = if (args.option("--public-dir")) |public_dir| allocator.dupe(u8, public_dir) catch unreachable else null, - .write = write, - .platform = .bun, - .serve = serve, - .inject = inject, - .entry_points = entry_points, - .extension_order = args.options("--extension-order"), - .main_fields = args.options("--main-fields"), - .generate_node_module_bundle = if (args.flag("--new-bun")) true else false, - }; - } - }; - pub fn resolve_jsx_runtime(str: string) !Api.JsxRuntime { - if (strings.eql(str, "automatic")) { - return Api.JsxRuntime.automatic; - } else if (strings.eql(str, "fallback")) { - return Api.JsxRuntime.classic; - } else { - return error.InvalidJSXRuntime; - } - } - pub fn printScanResults(scan_results: bundler.ScanResult.Summary, allocator: *std.mem.Allocator) !void { - var stdout = std.io.getStdOut(); - const print_start = std.time.nanoTimestamp(); - try std.json.stringify(scan_results.list(), .{}, stdout.writer()); - Output.printError("\nJSON printing took: {d}\n", .{std.time.nanoTimestamp() - print_start}); - } - pub fn startTransform(allocator: *std.mem.Allocator, args: Api.TransformOptions, log: *logger.Log) anyerror!void {} - const StringS = struct { - pub const src = "var headers = new Headers(); headers.set(\"hey\", \"hi\"); console.log(headers.get(\"hey\")); \"HELLO\";"; - }; - - pub fn Threader(comptime Stdout: type, comptime Stderr: type) type { - return struct { - allocator: *std.mem.Allocator, - stdout: Stdout, - stderr: Stderr, - args: Api.TransformOptions, - pub fn spawn(this: @This()) !void { - var stdout = std.io.getStdOut(); - // var stdout = std.io.bufferedWriter(stdout_file.writer()); - var stderr = std.io.getStdErr(); - // var stderr = std.io.bufferedWriter(stderr_file.writer()); - var output_source = Output.Source.init(stdout, stderr); - // defer stdout.flush() catch {}; - // defer stderr.flush() catch {}; - Output.Source.set(&output_source); - - var log = logger.Log.init(this.allocator); - - var vm = try VirtualMachine.init(this.allocator, this.args, null, &log); - var promise = try vm.loadEntryPoint( - vm.bundler.options.entry_points[0], - ); - if (promise.status(vm.global.vm()) == js.JSPromise.Status.Rejected) { - vm.defaultErrorHandler(promise.result(vm.global.vm())); - } - } - }; - } - - pub fn start(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype) anyerror!void { - const start_time = std.time.nanoTimestamp(); - var log = logger.Log.init(allocator); - var panicker = MainPanicHandler.init(&log); - MainPanicHandler.Singleton = &panicker; - - var args = try Arguments.parse(default_allocator, stdout, stderr); - // var serve_bundler = try bundler.ServeBundler.init(allocator, &log, args); - // var res = try serve_bundler.buildFile(&log, allocator, args.entry_points[0], std.fs.path.extension(args.entry_points[0])); - - // var results = try bundler.Bundler.bundle(allocator, &log, args); - // var file = results.output_files[0]; - - // var resolved_entry_point = try vm.bundler.resolver.resolve( - // vm.bundler.fs.top_level_dir, - // vm.bundler.normalizeEntryPointPath(vm.bundler.options.entry_points[0]), - // .entry_point, - // ); - const Threadable = Threader(@TypeOf(stdout), @TypeOf(stderr)); - const runner = Threadable{ .allocator = allocator, .stdout = stdout, .stderr = stderr, .args = args }; - var thread = try std.Thread.spawn(.{}, Threadable.spawn, .{runner}); - thread.join(); - } -}; - -pub const JavaScript = struct {}; - -pub const JavaScriptVirtualMachine = VirtualMachine; diff --git a/src/main_wasi.zig b/src/main_wasi.zig deleted file mode 100644 index 66371e949..000000000 --- a/src/main_wasi.zig +++ /dev/null @@ -1,107 +0,0 @@ -const std = @import("std"); -const lex = @import("js_lexer.zig"); -const logger = @import("logger.zig"); - -const options = @import("options.zig"); -const js_parser = @import("js_parser.zig"); -const json_parser = @import("json_parser.zig"); -const js_printer = @import("js_printer.zig"); -const js_ast = @import("js_ast.zig"); -const linker = @import("linker.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("defines.zig"); -const panicky = @import("panic_handler.zig"); -const fs = @import("fs.zig"); - -const MainPanicHandler = panicky.NewPanicHandler(panicky.default_panic); - -pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace) noreturn { - if (MainPanicHandler.Singleton) |singleton| { - MainPanicHandler.handle_panic(msg, error_return_trace); - } else { - panicky.default_panic(msg, error_return_trace); - } -} -// const Alloc = zee.ZeeAllocDefaults.wasm_allocator -pub fn main() anyerror!void { - var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); - var allocator = &arena.allocator; - var log = logger.Log.init(default_allocator); - var panicker = MainPanicHandler.init(&log); - MainPanicHandler.Singleton = &panicker; - - const args = try std.process.argsAlloc(default_allocator); - const stdout = std.io.getStdOut(); - const stderr = std.io.getStdErr(); - - if (args.len < 1) { - const len = stderr.write("Pass a file"); - return; - } - - const absolutePath = args[args.len - 1]; - const pathname = fs.PathName.init(absolutePath); - const entryPointName = try default_allocator.alloc(u8, pathname.base.len + pathname.ext.len); - std.mem.copy(u8, entryPointName, pathname.base); - std.mem.copy(u8, entryPointName[pathname.base.len..entryPointName.len], pathname.ext); - const code = try std.io.getStdIn().readToEndAlloc(default_allocator, std.math.maxInt(usize)); - - const opts = try options.TransformOptions.initUncached(default_allocator, entryPointName, code); - var source = logger.Source.initFile(opts.entry_point, default_allocator); - var ast: js_ast.Ast = undefined; - - var raw_defines = RawDefines.init(default_allocator); - try raw_defines.put("process.env.NODE_ENV", "\"development\""); - - var user_defines = try DefineData.from_input(raw_defines, &log, default_allocator); - - var define = try Define.init( - default_allocator, - user_defines, - ); - - switch (opts.loader) { - .json => { - var expr = try json_parser.ParseJSON(&source, &log, default_allocator); - var stmt = js_ast.Stmt.alloc(default_allocator, js_ast.S.ExportDefault{ - .value = js_ast.StmtOrExpr{ .expr = expr }, - .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} }, - }, logger.Loc{ .start = 0 }); - - var part = js_ast.Part{ - .stmts = &([_]js_ast.Stmt{stmt}), - }; - - ast = js_ast.Ast.initTest(&([_]js_ast.Part{part})); - }, - .jsx, .tsx, .ts, .js => { - var parser = try js_parser.Parser.init(opts, &log, &source, define, default_allocator); - var res = try parser.parse(); - ast = res.ast; - }, - else => { - Global.panic("Unsupported loader: {s}", .{opts.loader}); - }, - } - - var _linker = linker.Linker{}; - var symbols: [][]js_ast.Symbol = &([_][]js_ast.Symbol{ast.symbols}); - const printed = try js_printer.printAst( - default_allocator, - ast, - js_ast.Symbol.Map.initList(symbols), - &source, - false, - js_printer.Options{ .to_module_ref = ast.module_ref orelse js_ast.Ref{ .inner_index = 0 } }, - &_linker, - ); - - // if (std.builtin.mode == std.builtin.Mode.Debug) { - // var fixed_buffer = [_]u8{0} ** 512000; - // var buf_stream = std.io.fixedBufferStream(&fixed_buffer); - - // try ast.toJSON(default_allocator, stderr.writer()); - // } - - _ = try stdout.write(printed.js); -} diff --git a/src/main_wasm.zig b/src/main_wasm.zig deleted file mode 100644 index e8281b486..000000000 --- a/src/main_wasm.zig +++ /dev/null @@ -1,305 +0,0 @@ -const std = @import("std"); -const lex = @import("js_lexer.zig"); -const logger = @import("logger.zig"); -const options = @import("options.zig"); -const js_parser = @import("js_parser.zig"); -const json_parser = @import("json_parser.zig"); -const js_printer = @import("js_printer.zig"); -const js_ast = @import("js_ast.zig"); -const linker = @import("linker.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("defines.zig"); -const panicky = @import("panic_handler.zig"); -usingnamespace @import("global.zig"); -const fs = @import("fs.zig"); -const Schema = @import("api/schema.zig").Api; -const builtin = std.builtin; -const MainPanicHandler = panicky.NewPanicHandler(panicky.default_panic); -// const zee = @import("zee_alloc.zig"); - -pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace) noreturn { - if (MainPanicHandler.Singleton) |singleton| { - MainPanicHandler.handle_panic(msg, error_return_trace); - } else { - panicky.default_panic(msg, error_return_trace); - } -} - -var default_options = std.mem.zeroes(Schema.TransformOptions); - -pub const Uint8Array = packed struct { - pub const Float = @Type(builtin.TypeInfo{ .Float = .{ .bits = 2 * @bitSizeOf(usize) } }); - pub const Abi = if (builtin.target.isWasm()) Float else Uint8Array; - - ptr: [*]u8, - len: usize, - - pub fn toSlice(raw: Abi) []u8 { - const self = @bitCast(Uint8Array, raw); - return self.ptr[0..self.len]; - } - - pub fn fromSlice(slice: []u8) Abi { - const self = Uint8Array{ .ptr = slice.ptr, .len = slice.len }; - return @bitCast(Abi, self); - } - - pub fn empty() Abi { - return Uint8Array.fromSlice(&[0]u8{}); - } - - pub fn encode(comptime SchemaType: type, obj: SchemaType) !Abi { - var list = std.ArrayList(u8).init(default_allocator); - var writer = list.writer(); - try obj.encode(writer); - return Uint8Array.fromSlice(list.toOwnedSlice()); - } - - pub fn decode(self: Abi, comptime SchemaType: type) !SchemaType { - var buf = Uint8Array.toSlice(self); - var stream = std.io.fixedBufferStream(buf); - const res = try SchemaType.decode(default_allocator, stream.reader()); - return res; - } -}; - -pub fn constStrToU8(s: string) []u8 { - return @intToPtr([*]u8, @ptrToInt(s.ptr))[0..s.len]; -} - -pub const Api = struct { - options: *Schema.TransformOptions = &default_options, - files: std.ArrayList(string), - log: logger.Log, - defines: ?*Define = null, - - pub fn transform(self: *Api, request: Schema.Transform) !Schema.TransformResponse { - const opts = try options.TransformOptions.initUncached(default_allocator, request.path.?, request.contents); - var source = logger.Source.initFile(opts.entry_point, default_allocator); - - var ast: js_ast.Ast = undefined; - if (self.defines == null) { - var raw_defines = RawDefines.init(default_allocator); - raw_defines.put("process.env.NODE_ENV", "\"development\"") catch unreachable; - - var user_defines = try DefineData.from_input(raw_defines, &self.log, default_allocator); - self.defines = try Define.init( - default_allocator, - user_defines, - ); - } - - switch (opts.loader) { - .json => { - var expr = try json_parser.ParseJSON(&source, &self.log, default_allocator); - var stmt = js_ast.Stmt.alloc(default_allocator, js_ast.S.ExportDefault{ - .value = js_ast.StmtOrExpr{ .expr = expr }, - .default_name = js_ast.LocRef{ .loc = logger.Loc{}, .ref = Ref{} }, - }, logger.Loc{ .start = 0 }); - - var part = js_ast.Part{ - .stmts = &([_]js_ast.Stmt{stmt}), - }; - - ast = js_ast.Ast.initTest(&([_]js_ast.Part{part})); - }, - .jsx, .tsx, .ts, .js => { - var parser = try js_parser.Parser.init(opts, &self.log, &source, self.defines.?, default_allocator); - var res = try parser.parse(); - ast = res.ast; - }, - else => { - Global.panic("Unsupported loader: {s}", .{opts.loader}); - }, - } - - var _linker = linker.Linker{}; - var symbols: [][]js_ast.Symbol = &([_][]js_ast.Symbol{ast.symbols}); - const printed = try js_printer.printAst( - default_allocator, - ast, - js_ast.Symbol.Map.initList(symbols), - &source, - false, - js_printer.Options{ .to_module_ref = ast.module_ref orelse js_ast.Ref{ .inner_index = 0 } }, - &_linker, - ); - // Output.print("Parts count: {d}", .{ast.parts.len}); - var output_files = try default_allocator.alloc(Schema.OutputFile, 1); - var _data = printed.js[0..printed.js.len]; - var _path = constStrToU8(source.path.text); - - output_files[0] = Schema.OutputFile{ .data = _data, .path = _path }; - - var resp = std.mem.zeroes(Schema.TransformResponse); - resp.status = .success; - resp.files = output_files; - - return resp; - // var source = logger.Source.initFile(file: fs.File, allocator: *std.mem.Allocator) - } -}; - -pub extern fn console_log(abi: Uint8Array.Abi) void; -pub extern fn console_error(abi: Uint8Array.Abi) void; -pub extern fn console_warn(abi: Uint8Array.Abi) void; -pub extern fn console_info(abi: Uint8Array.Abi) void; - -// const ZeeAlloc = zee.ZeeAlloc(.{}); -// var zee_instance: ZeeAlloc = undefined; -// const Gpa = std.heap.GeneralPurposeAllocator(.{}); -// var arena: std.heap.ArenaAllocator = undefined; -// var gpa: Gpa = undefined; -var hunk: alloc.Hunk = undefined; -var hunk_high: alloc.HunkSide = undefined; -var hunk_low: alloc.HunkSide = undefined; -var perma_hunk: alloc.Hunk = undefined; -var perma_hunk_high_alloc: *std.mem.Allocator = undefined; -var perma_hunk_high: alloc.HunkSide = undefined; -var perma_hunk_low_alloc: *std.mem.Allocator = undefined; -var perma_hunk_low: alloc.HunkSide = undefined; -var last_start_high: usize = 0; -var last_start_low: usize = 0; -pub const Exports = struct { - fn init() callconv(.C) i32 { - var perma_hunk_buf = std.heap.page_allocator.alloc(u8, 128000) catch return -1; - perma_hunk = alloc.Hunk.init(perma_hunk_buf); - perma_hunk_high = perma_hunk.high(); - perma_hunk_low = perma_hunk.low(); - - perma_hunk_high_alloc = &perma_hunk_low.allocator; - - // var gpa = Gpa{}; - // var allocator = &gpa.allocator; - var out_buffer = perma_hunk_low.allocator.alloc(u8, 4096) catch return -1; - var err_buffer = perma_hunk_low.allocator.alloc(u8, 4096) catch return -1; - var output = perma_hunk_low.allocator.create(Output.Source) catch return -1; - var stream = std.io.fixedBufferStream(out_buffer); - var err_stream = std.io.fixedBufferStream(err_buffer); - output.* = Output.Source.init( - stream, - err_stream, - ); - output.out_buffer = out_buffer; - output.err_buffer = err_buffer; - Output.Source.set(output); - - var _api = std.heap.page_allocator.create(Api) catch return -1; - _api.* = Api{ .files = std.ArrayList(string).init(std.heap.page_allocator), .log = logger.Log.init(std.heap.page_allocator) }; - api = _api; - - _ = MainPanicHandler.init(&api.?.log); - - // This will need more thought. - var raw_defines = RawDefines.init(std.heap.page_allocator); - raw_defines.put("process.env.NODE_ENV", "\"development\"") catch return -1; - var user_defines = DefineData.from_input(raw_defines, &_api.log, std.heap.page_allocator) catch return -1; - _api.defines = Define.init( - std.heap.page_allocator, - user_defines, - ) catch return -1; - - if (alloc.needs_setup) { - var buf = std.heap.page_allocator.alloc(u8, 26843545) catch return -1; - hunk = alloc.Hunk.init(buf); - hunk_high = hunk.high(); - hunk_low = hunk.low(); - default_allocator = &hunk_high.allocator; - default_allocator = &hunk_low.allocator; - alloc.needs_setup = false; - } - - Output.printErrorable("Initialized.", .{}) catch |err| { - var name = default_allocator.alloc(u8, @errorName(err).len) catch unreachable; - std.mem.copy(u8, name, @errorName(err)); - console_error(Uint8Array.fromSlice(name)); - }; - - return 1; - } - - fn transform(abi: Uint8Array.Abi) callconv(.C) Uint8Array.Abi { - // Output.print("Received {d}", .{abi}); - const req: Schema.Transform = Uint8Array.decode(abi, Schema.Transform) catch return Uint8Array.empty(); - // Output.print("Req {s}", .{req}); - // default_allocator.free(Uint8Array.toSlice(abi)); - const resp = api.?.transform(req) catch return Uint8Array.empty(); - - var res = Uint8Array.encode(Schema.TransformResponse, resp) catch return Uint8Array.empty(); - - return res; - } - - // Reset - fn cycleStart() callconv(.C) void { - last_start_high = hunk.getHighMark(); - last_start_low = hunk.getLowMark(); - } - - fn cycleEnd() callconv(.C) void { - if (last_start_high > 0) { - hunk.freeToHighMark(last_start_high); - last_start_high = 0; - } - - if (last_start_low > 0) { - hunk.freeToLowMark(last_start_low); - last_start_low = 0; - } - } - - fn malloc(size: usize) callconv(.C) Uint8Array.Abi { - if (size == 0) { - return 0; - } - const result = default_allocator.alloc(u8, size) catch unreachable; - return Uint8Array.fromSlice(result); - } - // fn calloc(num_elements: usize, element_size: usize) callconv(.C) ?*c_void { - // const size = num_elements *% element_size; - // const c_ptr = @call(.{ .modifier = .never_inline }, malloc, .{size}); - // if (c_ptr) |ptr| { - // const p = @ptrCast([*]u8, ptr); - // @memset(p, 0, size); - // } - // return c_ptr; - // } - // fn realloc(c_ptr: ?*c_void, new_size: usize) callconv(.C) ?*c_void { - // if (new_size == 0) { - // // @call(.{ .modifier = .never_inline }, free, .{@intCast(Uint8Array.Abi, c_ptr.?)}); - // return null; - // } else if (c_ptr) |ptr| { - // // Use a synthetic slice - // const p = @ptrCast([*]u8, ptr); - // const result = default_allocator.realloc(p[0..1], new_size) catch return null; - // return @ptrCast(*c_void, result.ptr); - // } else { - // return @call(.{ .modifier = .never_inline }, malloc, .{new_size}); - // } - // } - fn free(abi: Uint8Array.Abi) callconv(.C) void { - default_allocator.free(Uint8Array.toSlice(abi)); - } -}; - -var api: ?*Api = null; - -comptime { - @export(Exports.init, .{ .name = "init", .linkage = .Strong }); - @export(Exports.transform, .{ .name = "transform", .linkage = .Strong }); - @export(Exports.malloc, .{ .name = "malloc", .linkage = .Strong }); - // @export(Exports.calloc, .{ .name = "calloc", .linkage = .Strong }); - // @export(Exports.realloc, .{ .name = "realloc", .linkage = .Strong }); - @export(Exports.cycleStart, .{ .name = "cycleStart", .linkage = .Strong }); - @export(Exports.cycleEnd, .{ .name = "cycleEnd", .linkage = .Strong }); - @export(Exports.free, .{ .name = "free", .linkage = .Strong }); -} - -pub fn main() anyerror!void { - std.mem.doNotOptimizeAway(Exports.init); - std.mem.doNotOptimizeAway(Exports.transform); - std.mem.doNotOptimizeAway(Exports.malloc); - // std.mem.doNotOptimizeAway(Exports.calloc); - // std.mem.doNotOptimizeAway(Exports.realloc); - std.mem.doNotOptimizeAway(Exports.free); -} diff --git a/src/memory_allocator.zig b/src/memory_allocator.zig index 9f6642bd5..446c4f13d 100644 --- a/src/memory_allocator.zig +++ b/src/memory_allocator.zig @@ -3,18 +3,42 @@ const builtin = @import("std").builtin; const std = @import("std"); const mimalloc = @import("./allocators/mimalloc.zig"); +const c = struct { + pub const malloc_size = mimalloc.mi_malloc_size; + pub const malloc_usable_size = mimalloc.mi_malloc_usable_size; + pub const malloc = mimalloc.mi_malloc; + pub const free = mimalloc.mi_free; +}; const Allocator = mem.Allocator; const assert = std.debug.assert; - const CAllocator = struct { comptime { - if (!builtin.link_libc) { + if (!@import("builtin").link_libc) { @compileError("C allocator is only available when linking against libc"); } } - pub const supports_malloc_size = true; - pub const malloc_size = mimalloc.mi_malloc_size; - pub const supports_posix_memalign = true; + + usingnamespace if (@hasDecl(c, "malloc_size")) + struct { + pub const supports_malloc_size = true; + pub const malloc_size = c.malloc_size; + } + else if (@hasDecl(c, "malloc_usable_size")) + struct { + pub const supports_malloc_size = true; + pub const malloc_size = c.malloc_usable_size; + } + else if (@hasDecl(c, "_msize")) + struct { + pub const supports_malloc_size = true; + pub const malloc_size = c._msize; + } + else + struct { + pub const supports_malloc_size = false; + }; + + pub const supports_posix_memalign = @hasDecl(c, "posix_memalign"); fn getHeader(ptr: [*]u8) *[*]u8 { return @intToPtr(*[*]u8, @ptrToInt(ptr) - @sizeOf(usize)); @@ -24,9 +48,10 @@ const CAllocator = struct { if (supports_posix_memalign) { // The posix_memalign only accepts alignment values that are a // multiple of the pointer size + const eff_alignment = std.math.max(alignment, @sizeOf(usize)); - var aligned_ptr: ?*c_void = undefined; - if (mimalloc.mi_posix_memalign(&aligned_ptr, @maximum(alignment, @sizeOf(usize)), len) != 0) + var aligned_ptr: ?*anyopaque = undefined; + if (c.posix_memalign(&aligned_ptr, eff_alignment, len) != 0) return null; return @ptrCast([*]u8, aligned_ptr); @@ -35,7 +60,7 @@ const CAllocator = struct { // Thin wrapper around regular malloc, overallocate to account for // alignment padding and store the orignal malloc()'ed pointer before // the aligned address. - var unaligned_ptr = @ptrCast([*]u8, mimalloc.mi_malloc(len + alignment - 1 + @sizeOf(usize)) orelse return null); + var unaligned_ptr = @ptrCast([*]u8, c.malloc(len + alignment - 1 + @sizeOf(usize)) orelse return null); const unaligned_addr = @ptrToInt(unaligned_ptr); const aligned_addr = mem.alignForward(unaligned_addr + @sizeOf(usize), alignment); var aligned_ptr = unaligned_ptr + (aligned_addr - unaligned_addr); @@ -46,31 +71,30 @@ const CAllocator = struct { fn alignedFree(ptr: [*]u8) void { if (supports_posix_memalign) { - return mimalloc.mi_free(ptr); + return c.free(ptr); } const unaligned_ptr = getHeader(ptr).*; - mimalloc.mi_free(unaligned_ptr); + c.free(unaligned_ptr); } fn alignedAllocSize(ptr: [*]u8) usize { if (supports_posix_memalign) { - return malloc_size(ptr); + return CAllocator.malloc_size(ptr); } const unaligned_ptr = getHeader(ptr).*; const delta = @ptrToInt(ptr) - @ptrToInt(unaligned_ptr); - return malloc_size(unaligned_ptr) - delta; + return CAllocator.malloc_size(unaligned_ptr) - delta; } fn alloc( - allocator: *Allocator, + _: *anyopaque, len: usize, alignment: u29, len_align: u29, return_address: usize, ) error{OutOfMemory}![]u8 { - _ = allocator; _ = return_address; assert(len > 0); assert(std.math.isPowerOfTwo(alignment)); @@ -80,7 +104,7 @@ const CAllocator = struct { return ptr[0..len]; } const full_len = init: { - if (supports_malloc_size) { + if (CAllocator.supports_malloc_size) { const s = alignedAllocSize(ptr); assert(s >= len); break :init s; @@ -91,39 +115,45 @@ const CAllocator = struct { } fn resize( - allocator: *Allocator, + _: *anyopaque, buf: []u8, buf_align: u29, new_len: usize, len_align: u29, return_address: usize, - ) Allocator.Error!usize { - _ = allocator; + ) ?usize { _ = buf_align; _ = return_address; - if (new_len == 0) { - alignedFree(buf.ptr); - return 0; - } if (new_len <= buf.len) { return mem.alignAllocLen(buf.len, new_len, len_align); } - if (supports_malloc_size) { + if (CAllocator.supports_malloc_size) { const full_len = alignedAllocSize(buf.ptr); if (new_len <= full_len) { return mem.alignAllocLen(full_len, new_len, len_align); } } + return null; + } - return error.OutOfMemory; + fn free( + _: *anyopaque, + buf: []u8, + buf_align: u29, + return_address: usize, + ) void { + _ = buf_align; + _ = return_address; + alignedFree(buf.ptr); } }; -/// Supports the full Allocator interface, including alignment, and exploiting -/// `malloc_usable_size` if available. For an allocator that directly calls -/// `malloc`/`free`, see `raw_c_allocator`. -pub const c_allocator = &c_allocator_state; -var c_allocator_state = Allocator{ - .allocFn = CAllocator.alloc, - .resizeFn = CAllocator.resize, +pub const c_allocator = Allocator{ + .ptr = undefined, + .vtable = &c_allocator_vtable, +}; +const c_allocator_vtable = Allocator.VTable{ + .alloc = CAllocator.alloc, + .resize = CAllocator.resize, + .free = CAllocator.free, }; diff --git a/src/http/network_thread.zig b/src/network_thread.zig index 3af6644d6..0f24e8f35 100644 --- a/src/http/network_thread.zig +++ b/src/network_thread.zig @@ -3,7 +3,8 @@ pub const Batch = ThreadPool.Batch; pub const Task = ThreadPool.Task; const std = @import("std"); const AsyncIO = @import("io"); -const Output = @import("../global.zig").Output; +const Output = @import("./global.zig").Output; +const IdentityContext = @import("./identity_context.zig").IdentityContext; const NetworkThread = @This(); @@ -42,19 +43,9 @@ const CachedAddressList = struct { } }; -const IdentityContext = struct { - pub fn eql(this: @This(), a: u64, b: u64) bool { - return a == b; - } - - pub fn hash(this: @This(), a: u64) u64 { - return a; - } -}; - -const AddressListCache = std.HashMap(u64, CachedAddressList, IdentityContext, 80); +const AddressListCache = std.HashMap(u64, CachedAddressList, IdentityContext(u64), 80); var address_list_cached: AddressListCache = undefined; -pub fn getAddressList(allocator: *std.mem.Allocator, name: []const u8, port: u16) !*CachedAddressList { +pub fn getAddressList(allocator: std.mem.Allocator, name: []const u8, port: u16) !*CachedAddressList { const hash = CachedAddressList.hash(name, port); const now = @intCast(u64, @maximum(0, std.time.milliTimestamp())); if (address_list_cached.getPtr(hash)) |cached| { @@ -92,5 +83,5 @@ pub fn init() !void { }; global.pool.io = &AsyncIO.global; - address_list_cached = AddressListCache.init(@import("../global.zig").default_allocator); + address_list_cached = AddressListCache.init(@import("./global.zig").default_allocator); } diff --git a/src/node_module_bundle.zig b/src/node_module_bundle.zig index 4fd781829..2f0e23356 100644 --- a/src/node_module_bundle.zig +++ b/src/node_module_bundle.zig @@ -2,7 +2,18 @@ const schema = @import("./api/schema.zig"); const Api = schema.Api; const std = @import("std"); const Fs = @import("./fs.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FileDescriptorType = _global.FileDescriptorType; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; pub fn modulesIn(bundle: *const Api.JavascriptBundle, pkg: *const Api.JavascriptBundledPackage) []const Api.JavascriptBundledModule { return bundle.modules[pkg.modules_offset .. pkg.modules_offset + pkg.modules_length]; @@ -20,13 +31,13 @@ const PackageNameMap = std.StringHashMap([]BundledPackageID); pub const AllocatedString = struct { str: string, len: u32, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, }; pub const NodeModuleBundle = struct { container: Api.JavascriptBundleContainer, bundle: Api.JavascriptBundle, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, bytes_ptr: []u8 = undefined, bytes: []u8 = &[_]u8{}, fd: FileDescriptorType = 0, @@ -57,7 +68,7 @@ pub const NodeModuleBundle = struct { return this.bytecode_cache_fetcher.fetch(basename, fs); } - pub fn readCodeAsStringSlow(this: *NodeModuleBundle, allocator: *std.mem.Allocator) !string { + pub fn readCodeAsStringSlow(this: *NodeModuleBundle, allocator: std.mem.Allocator) !string { if (this.code_string) |code| { return code.str; } @@ -78,12 +89,12 @@ pub const NodeModuleBundle = struct { // this.package_has_multiple_versions = try std.bit_set.DynamicBitSet.initFull(package_count, this.allocator); - try this.package_id_map.ensureCapacity( + try this.package_id_map.ensureTotalCapacity( package_count, ); this.package_name_ids_ptr = try this.allocator.alloc(BundledPackageID, this.bundle.packages.len); var remaining_names = this.package_name_ids_ptr; - try this.package_name_map.ensureCapacity( + try this.package_name_map.ensureTotalCapacity( package_count, ); var prev_package_ids_for_name: []u32 = &[_]u32{}; @@ -159,7 +170,7 @@ pub const NodeModuleBundle = struct { pub fn allocModuleImport( this: *const NodeModuleBundle, to: *const Api.JavascriptBundledModule, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) !string { return try std.fmt.allocPrint( allocator, @@ -172,18 +183,6 @@ pub const NodeModuleBundle = struct { ); } - pub fn findModuleInPackageByPathWithoutPackageName( - this: *const NodeModuleBundle, - package: *const Api.JavascriptBundledPackage, - query: ModuleQuery, - ) ?Api.JavascriptBundledModule { - // const ModuleSearcher = struct { - // ctx: *const NodeModuleBundle, - // query: ModuleQuery, - // }; - // std.sort.binarySearch(comptime T: type, key: T, items: []const T, context: anytype, comptime compareFn: fn(context:@TypeOf(context), lhs:T, rhs:T)math.Order) - } - pub fn findModuleInPackage( this: *const NodeModuleBundle, package: *const Api.JavascriptBundledPackage, @@ -230,7 +229,6 @@ pub const NodeModuleBundle = struct { // Comapre the module name const lhs_name = context.moduleName(&lhs); const rhs_name = context.moduleName(&rhs); - const VoidType = void; const traversal_length = std.math.min(lhs_name.len, rhs_name.len); @@ -266,7 +264,7 @@ pub const NodeModuleBundle = struct { ) orelse return null) + package.modules_offset; } - pub fn init(container: Api.JavascriptBundleContainer, allocator: *std.mem.Allocator) NodeModuleBundle { + pub fn init(container: Api.JavascriptBundleContainer, allocator: std.mem.Allocator) NodeModuleBundle { return NodeModuleBundle{ .container = container, .bundle = container.bundle.?, @@ -288,7 +286,7 @@ pub const NodeModuleBundle = struct { return std.mem.readIntNative(u32, jsbundle_prefix[magic_bytes.len .. magic_bytes.len + 4]); } - pub fn loadBundle(allocator: *std.mem.Allocator, stream: anytype) !NodeModuleBundle { + pub fn loadBundle(allocator: std.mem.Allocator, stream: anytype) !NodeModuleBundle { const end = try getCodeEndPosition(stream, false); try stream.seekTo(end); const file_end = try stream.getEndPos(); @@ -319,26 +317,9 @@ pub const NodeModuleBundle = struct { return bundle.bundle.manifest_string[pointer.offset .. pointer.offset + pointer.length]; } - pub fn getPackageSize(this: *const NodeModuleBundle, pkg: Api.JavascriptBundledPackage) usize { - var size: usize = 0; - for (modules) |module| { - size += module.code.length; - } - return size; - } - - pub fn isPackageBigger( - this: *const NodeModuleBundle, - a: Api.JavascriptBundledPackage, - b: Api.JavascriptBundledPackage, - ) bool { - return this.getPackageSize(a) < this.getPackageSize(b); - } - pub fn printSummary(this: *const NodeModuleBundle) void { - const last = std.math.max(this.bundle.packages.len, 1) - 1; const indent = comptime " "; - for (this.bundle.packages) |pkg, i| { + for (this.bundle.packages) |pkg| { const modules = this.bundle.modules[pkg.modules_offset .. pkg.modules_offset + pkg.modules_length]; Output.prettyln( @@ -377,7 +358,7 @@ pub const NodeModuleBundle = struct { Output.prettyln(indent ++ "<b>{d:6} packages", .{this.bundle.packages.len}); } - pub inline fn codeStartOffset(this: *const NodeModuleBundle) u32 { + pub inline fn codeStartOffset(_: *const NodeModuleBundle) u32 { return @intCast(u32, jsbundle_prefix.len); } @@ -385,8 +366,8 @@ pub const NodeModuleBundle = struct { comptime StreamType: type, input: StreamType, comptime DestinationStreamType: type, - output: DestinationStreamType, - allocator: *std.mem.Allocator, + _: DestinationStreamType, + allocator: std.mem.Allocator, ) !void { const this = try loadBundle(allocator, input); this.printSummary(); @@ -430,9 +411,9 @@ pub const NodeModuleBundle = struct { } }; - if (isMac) { + if (comptime Environment.isMac) { // darwin only allows reading ahead on/off, not specific amount - _ = std.os.fcntl(input.handle, std.os.F_RDAHEAD, 1) catch 0; + _ = std.os.fcntl(input.handle, std.os.F.RDAHEAD, 1) catch 0; } const end = (try getCodeEndPosition(input, false)) - @intCast(u32, jsbundle_prefix.len); diff --git a/src/open.zig b/src/open.zig index f3fac5f96..7af79457d 100644 --- a/src/open.zig +++ b/src/open.zig @@ -1,14 +1,23 @@ -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); -const opener = switch (std.Target.current.os.tag) { +const opener = switch (@import("builtin").target.os.tag) { .macos => "/usr/bin/open", .windows => "start", else => "xdg-open", }; pub fn openURL(url: string) !void { - if (comptime isWasi) { + if (comptime Environment.isWasi) { Output.prettyln("-> {s}", .{url}); Output.flush(); return; diff --git a/src/options.zig b/src/options.zig index 357bafedf..24b5cdf87 100644 --- a/src/options.zig +++ b/src/options.zig @@ -12,7 +12,18 @@ const resolve_path = @import("./resolver/resolve_path.zig"); const NodeModuleBundle = @import("./node_module_bundle.zig").NodeModuleBundle; const URL = @import("./query_string_map.zig").URL; const ConditionsMap = @import("./resolver/package_json.zig").ESModule.ConditionsMap; -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FileDescriptorType = _global.FileDescriptorType; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; const Analytics = @import("./analytics/analytics_thread.zig"); @@ -26,23 +37,37 @@ pub const WriteDestination = enum { // eventaully: wasm }; -pub fn validatePath(log: *logger.Log, fs: *Fs.FileSystem.Implementation, cwd: string, rel_path: string, allocator: *std.mem.Allocator, path_kind: string) string { +pub fn validatePath( + log: *logger.Log, + _: *Fs.FileSystem.Implementation, + cwd: string, + rel_path: string, + allocator: std.mem.Allocator, + _: string, +) string { if (rel_path.len == 0) { return ""; } const paths = [_]string{ cwd, rel_path }; + // TODO: switch to getFdPath()-based implemetation const out = std.fs.path.resolve(allocator, &paths) catch |err| { - Global.invariant(false, "<r><red>{s}<r> resolving external: <b>\"{s}\"<r>", .{ @errorName(err), rel_path }); + log.addErrorFmt( + null, + logger.Loc.Empty, + allocator, + "<r><red>{s}<r> resolving external: <b>\"{s}\"<r>", + .{ @errorName(err), rel_path }, + ) catch unreachable; return ""; }; return out; } -pub fn stringHashMapFromArrays(comptime t: type, allocator: *std.mem.Allocator, keys: anytype, values: anytype) !t { +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.ensureCapacity(@intCast(u32, keys.len)); + try hash_map.ensureTotalCapacity(@intCast(u32, keys.len)); for (keys) |key, i| { hash_map.putAssumeCapacity(key, values[i]); } @@ -80,7 +105,7 @@ pub const ExternalModules = struct { }; pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, fs: *Fs.FileSystem.Implementation, cwd: string, externals: []const string, @@ -96,7 +121,7 @@ pub const ExternalModules = struct { switch (platform) { .node => { // TODO: fix this stupid copy - result.node_modules.hash_map.ensureCapacity(NodeBuiltinPatterns.len) catch unreachable; + result.node_modules.hash_map.ensureTotalCapacity(NodeBuiltinPatterns.len) catch unreachable; for (NodeBuiltinPatterns) |pattern| { result.node_modules.insert(pattern) catch unreachable; } @@ -104,7 +129,7 @@ pub const ExternalModules = struct { .bun => { // // TODO: fix this stupid copy - // result.node_modules.hash_map.ensureCapacity(BunNodeBuiltinPatternsCompat.len) catch unreachable; + // result.node_modules.hash_map.ensureTotalCapacity(BunNodeBuiltinPatternsCompat.len) catch unreachable; // for (BunNodeBuiltinPatternsCompat) |pattern| { // result.node_modules.insert(pattern) catch unreachable; // } @@ -401,7 +426,7 @@ pub const Platform = enum { }; }; - pub fn outExtensions(platform: Platform, allocator: *std.mem.Allocator) std.StringHashMap(string) { + pub fn outExtensions(platform: Platform, allocator: std.mem.Allocator) std.StringHashMap(string) { var exts = std.StringHashMap(string).init(allocator); const js = Extensions.Out.JavaScript[0]; @@ -628,7 +653,7 @@ pub const ESMConditions = struct { import: ConditionsMap = undefined, require: ConditionsMap = undefined, - pub fn init(allocator: *std.mem.Allocator, defaults: []const string) !ESMConditions { + pub fn init(allocator: std.mem.Allocator, defaults: []const string) !ESMConditions { var default_condition_amp = ConditionsMap.init(allocator); var import_condition_map = ConditionsMap.init(allocator); @@ -713,7 +738,7 @@ pub const JSX = struct { // "React.createElement" => ["React", "createElement"] // ...unless new is "React.createElement" and original is ["React", "createElement"] // saves an allocation for the majority case - pub fn memberListToComponentsIfDifferent(allocator: *std.mem.Allocator, original: []const string, new: string) ![]const string { + pub fn memberListToComponentsIfDifferent(allocator: std.mem.Allocator, original: []const string, new: string) ![]const string { var splitter = std.mem.split(u8, new, "."); var needs_alloc = false; @@ -747,7 +772,7 @@ pub const JSX = struct { return out; } - pub fn fromApi(jsx: api.Api.Jsx, allocator: *std.mem.Allocator) !Pragma { + pub fn fromApi(jsx: api.Api.Jsx, allocator: std.mem.Allocator) !Pragma { var pragma = JSX.Pragma{}; if (jsx.fragment.len > 0) { @@ -814,7 +839,7 @@ pub const DefaultUserDefines = struct { }; pub fn definesFromTransformOptions( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, _input_define: ?Api.StringMap, hmr: bool, @@ -883,7 +908,7 @@ pub fn definesFromTransformOptions( ); } -pub fn loadersFromTransformOptions(allocator: *std.mem.Allocator, _loaders: ?Api.LoaderMap) !std.StringHashMap(Loader) { +pub fn loadersFromTransformOptions(allocator: std.mem.Allocator, _loaders: ?Api.LoaderMap) !std.StringHashMap(Loader) { var input_loaders = _loaders orelse std.mem.zeroes(Api.LoaderMap); var loader_values = try allocator.alloc(Loader, input_loaders.loaders.len); for (loader_values) |_, i| { @@ -991,7 +1016,7 @@ pub const BundleOptions = struct { return !this.defines_loaded; } - pub fn loadDefines(this: *BundleOptions, allocator: *std.mem.Allocator, loader_: ?*DotEnv.Loader, env: ?*const Env) !void { + pub fn loadDefines(this: *BundleOptions, allocator: std.mem.Allocator, loader_: ?*DotEnv.Loader, env: ?*const Env) !void { if (this.defines_loaded) { return; } @@ -1011,8 +1036,6 @@ pub const BundleOptions = struct { return this.loaders.get(ext) orelse .file; } - pub fn asJavascriptBundleConfig(this: *const BundleOptions) Api.JavascriptBundleConfig {} - pub fn isFrontendFrameworkEnabled(this: *const BundleOptions) bool { const framework: *const Framework = &(this.framework orelse return false); return framework.resolved and (framework.client.isEnabled() or framework.fallback.isEnabled()); @@ -1059,7 +1082,7 @@ pub const BundleOptions = struct { }; pub fn fromApi( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, fs: *Fs.FileSystem, log: *logger.Log, transform: Api.TransformOptions, @@ -1288,7 +1311,7 @@ pub const BundleOptions = struct { break :choice ""; }, } - } else |err| { + } else |_| { break :choice ""; } }; @@ -1303,7 +1326,6 @@ pub const BundleOptions = struct { var _dirs = [_]string{chosen_dir}; opts.routes.static_dir = try fs.absAlloc(allocator, &_dirs); opts.routes.static_dir_handle = std.fs.openDirAbsolute(opts.routes.static_dir, .{ .iterate = true }) catch |err| brk: { - var did_warn = false; switch (err) { error.FileNotFound => { opts.routes.static_dir_enabled = false; @@ -1353,7 +1375,7 @@ pub const BundleOptions = struct { // Windows has weird locking rules for file access. // so it's a bad idea to keep a file handle open for a long time on Windows. - if (isWindows and opts.routes.static_dir_handle != null) { + if (Environment.isWindows and opts.routes.static_dir_handle != null) { opts.routes.static_dir_handle.?.close(); } opts.hot_module_reloading = opts.platform.isWebLike(); @@ -1420,7 +1442,7 @@ pub const TransformOptions = struct { platform: Platform = Platform.browser, main_fields: []string = Platform.DefaultMainFields.get(Platform.browser), - pub fn initUncached(allocator: *std.mem.Allocator, entryPointName: string, code: string) !TransformOptions { + pub fn initUncached(allocator: std.mem.Allocator, entryPointName: string, code: string) !TransformOptions { assert(entryPointName.len > 0); var entryPoint = Fs.File{ @@ -1429,12 +1451,12 @@ pub const TransformOptions = struct { }; var cwd: string = "/"; - if (isWasi or isNative) { + if (Environment.isWasi or Environment.isWindows) { cwd = try std.process.getCwdAlloc(allocator); } var define = std.StringHashMap(string).init(allocator); - try define.ensureCapacity(1); + try define.ensureTotalCapacity(1); define.putAssumeCapacity("process.env.NODE_ENV", "development"); @@ -1508,7 +1530,7 @@ pub const OutputFile = struct { pub fn initPending(loader: Loader, pending: resolver.Result) OutputFile { return .{ - .loader = .file, + .loader = loader, .input = pending.pathConst().?.*, .size = 0, .value = .{ .pending = pending }, @@ -1539,26 +1561,7 @@ pub const OutputFile = struct { }; } - pub fn moveTo(file: *const OutputFile, base_path: string, rel_path: []u8, dir: FileDescriptorType) !void { - var move = file.value.move; - if (move.dir > 0) { - std.os.renameat(move.dir, move.pathname, dir, rel_path) catch |err| { - const dir_ = std.fs.Dir{ .fd = dir }; - if (std.fs.path.dirname(rel_path)) |dirname| { - dir_.makePath(dirname) catch {}; - std.os.renameat(move.dir, move.pathname, dir, rel_path) catch {}; - return; - } - }; - return; - } - - try std.os.rename(move.pathname, resolve_path.joinAbs(base_path, .auto, rel_path)); - } - - pub fn copyTo(file: *const OutputFile, base_path: string, rel_path: []u8, dir: FileDescriptorType) !void { - var copy = file.value.copy; - + pub fn copyTo(file: *const OutputFile, _: string, rel_path: []u8, dir: FileDescriptorType) !void { var dir_obj = std.fs.Dir{ .fd = dir }; const file_out = (try dir_obj.createFile(rel_path, .{})); @@ -1567,7 +1570,7 @@ pub const OutputFile = struct { // TODO: close file_out on error const fd_in = (try std.fs.openFileAbsolute(file.input.text, .{ .read = true })).handle; - if (isNative) { + if (Environment.isWindows) { Fs.FileSystem.setMaxFd(fd_out); Fs.FileSystem.setMaxFd(fd_in); do_close = Fs.FileSystem.instance.fs.needToCloseFiles(); @@ -1582,14 +1585,14 @@ pub const OutputFile = struct { const os = std.os; - if (comptime std.Target.current.isDarwin()) { + if (comptime @import("builtin").target.isDarwin()) { const rc = os.system.fcopyfile(fd_in, fd_out, null, os.system.COPYFILE_DATA); if (rc == 0) { return; } } - if (std.Target.current.os.tag == .linux) { + if (@import("builtin").target.os.tag == .linux) { // Try copy_file_range first as that works at the FS level and is the // most efficient method (if available). var offset: u64 = 0; @@ -1629,7 +1632,7 @@ pub const TransformResult = struct { outbase: string, output_files: []OutputFile, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) !TransformResult { var errors = try std.ArrayList(logger.Msg).initCapacity(allocator, log.errors); var warnings = try std.ArrayList(logger.Msg).initCapacity(allocator, log.warnings); @@ -1664,10 +1667,10 @@ pub const Env = struct { behavior: Api.DotEnvBehavior = Api.DotEnvBehavior.disable, prefix: string = "", defaults: List = List{}, - allocator: *std.mem.Allocator = undefined, + allocator: std.mem.Allocator = undefined, pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) Env { return Env{ .allocator = allocator, @@ -1716,7 +1719,7 @@ pub const Env = struct { } } - pub fn setFromLoaded(this: *Env, config: Api.LoadedEnvConfig, allocator: *std.mem.Allocator) !void { + pub fn setFromLoaded(this: *Env, config: Api.LoadedEnvConfig, allocator: std.mem.Allocator) !void { this.allocator = allocator; this.behavior = switch (config.dotenv) { Api.DotEnvBehavior.prefix => Api.DotEnvBehavior.prefix, @@ -1743,7 +1746,7 @@ pub const Env = struct { pub fn getOrPutValue(this: *Env, key: string, value: string) !void { var slice = this.defaults.slice(); const keys = slice.items(.key); - for (keys) |_key, i| { + for (keys) |_key| { if (strings.eql(key, _key)) { return; } @@ -1778,14 +1781,14 @@ pub const EntryPoint = struct { } }; - pub fn toAPI(this: *const EntryPoint, allocator: *std.mem.Allocator, toplevel_path: string, kind: Kind) !?Api.FrameworkEntryPoint { + pub fn toAPI(this: *const EntryPoint, allocator: std.mem.Allocator, toplevel_path: string, kind: Kind) !?Api.FrameworkEntryPoint { if (this.kind == .disabled) return null; return Api.FrameworkEntryPoint{ .kind = kind.toAPI(), .env = this.env.toAPI(), .path = try this.normalizedPath(allocator, toplevel_path) }; } - fn normalizedPath(this: *const EntryPoint, allocator: *std.mem.Allocator, toplevel_path: string) !string { + fn normalizedPath(this: *const EntryPoint, allocator: std.mem.Allocator, toplevel_path: string) !string { std.debug.assert(std.fs.path.isAbsolute(this.path)); var str = this.path; if (strings.indexOf(str, toplevel_path)) |top| { @@ -1809,7 +1812,7 @@ pub const EntryPoint = struct { pub fn fromLoaded( this: *EntryPoint, framework_entry_point: Api.FrameworkEntryPoint, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, kind: Kind, ) !void { this.path = framework_entry_point.path; @@ -1820,7 +1823,7 @@ pub const EntryPoint = struct { pub fn fromAPI( this: *EntryPoint, framework_entry_point: Api.FrameworkEntryPointMessage, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, kind: Kind, ) !void { this.path = framework_entry_point.path orelse ""; @@ -1868,7 +1871,7 @@ pub const Framework = struct { return entry; } - pub fn fromLoadedFramework(loaded: Api.LoadedFramework, allocator: *std.mem.Allocator) !Framework { + pub fn fromLoadedFramework(loaded: Api.LoadedFramework, allocator: std.mem.Allocator) !Framework { var framework = Framework{ .package = loaded.package, .development = loaded.development, @@ -1895,7 +1898,7 @@ pub const Framework = struct { pub fn toAPI( this: *const Framework, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, toplevel_path: string, ) !?Api.LoadedFramework { if (this.client.kind == .disabled and this.server.kind == .disabled and this.fallback.kind == .disabled) return null; @@ -1920,7 +1923,7 @@ pub const Framework = struct { pub fn fromApi( transform: Api.FrameworkConfig, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) !Framework { var client = EntryPoint{}; var server = EntryPoint{}; @@ -2010,7 +2013,7 @@ pub const RouteConfig = struct { }; } - pub fn fromApi(router_: Api.RouteConfig, allocator: *std.mem.Allocator) !RouteConfig { + pub fn fromApi(router_: Api.RouteConfig, allocator: std.mem.Allocator) !RouteConfig { var router = zero(); var static_dir: string = std.mem.trimRight(u8, router_.static_dir orelse "", "/\\"); diff --git a/src/panic_handler.zig b/src/panic_handler.zig index ab8d1cf81..aa3d8de64 100644 --- a/src/panic_handler.zig +++ b/src/panic_handler.zig @@ -1,7 +1,16 @@ const std = @import("std"); const logger = @import("logger.zig"); const root = @import("root"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; pub fn NewPanicHandler(comptime panic_func: fn handle_panic(msg: []const u8, error_return_type: ?*std.builtin.StackTrace) noreturn) type { return struct { diff --git a/src/pool.zig b/src/pool.zig index 45934b98e..bfb026c3f 100644 --- a/src/pool.zig +++ b/src/pool.zig @@ -1,6 +1,6 @@ const std = @import("std"); -pub fn ObjectPool(comptime Type: type, comptime Init: (fn (allocator: *std.mem.Allocator) anyerror!Type), comptime threadsafe: bool) type { +pub fn ObjectPool(comptime Type: type, comptime Init: (fn (allocator: std.mem.Allocator) anyerror!Type), comptime threadsafe: bool) type { return struct { const LinkedList = std.SinglyLinkedList(Type); const Data = if (threadsafe) @@ -17,7 +17,7 @@ pub fn ObjectPool(comptime Type: type, comptime Init: (fn (allocator: *std.mem.A const data = Data; pub const Node = LinkedList.Node; - pub fn get(allocator: *std.mem.Allocator) *LinkedList.Node { + pub fn get(allocator: std.mem.Allocator) *LinkedList.Node { if (data.loaded) { if (data.list.popFirst()) |node| { node.data.reset(); diff --git a/src/query_string_map.zig b/src/query_string_map.zig index 4c149dce1..0f43e9671 100644 --- a/src/query_string_map.zig +++ b/src/query_string_map.zig @@ -1,7 +1,16 @@ const std = @import("std"); const Api = @import("./api/schema.zig").Api; const resolve_path = @import("./resolver/resolve_path.zig"); -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; // This is close to WHATWG URL, but we don't want the validation errors pub const URL = struct { @@ -21,7 +30,7 @@ pub const URL = struct { port_was_automatically_set: bool = false, pub fn isDomainName(this: *const URL) bool { - for (this.hostname) |c, i| { + for (this.hostname) |c| { switch (c) { '0'...'9', '.', ':' => {}, else => { @@ -158,7 +167,7 @@ pub const URL = struct { try writer.print("{s}/{s}", .{ this.origin, normalized_path }); } - pub fn joinAlloc(this: *const URL, allocator: *std.mem.Allocator, prefix: string, dirname: string, basename: string, extname: string, absolute_path: string) !string { + pub fn joinAlloc(this: *const URL, allocator: std.mem.Allocator, prefix: string, dirname: string, basename: string, extname: string, absolute_path: string) !string { const has_uplevels = std.mem.indexOf(u8, dirname, "../") != null; if (has_uplevels) { @@ -381,7 +390,7 @@ pub const URL = struct { /// QueryString array-backed hash table that does few allocations and preserves the original order pub const QueryStringMap = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, slice: string, buffer: []u8, list: Param.List, @@ -426,7 +435,6 @@ pub const QueryStringMap = struct { while (this.visited.isSet(this.i)) : (this.i += 1) {} if (this.i >= this.map.list.len) return null; - var count: usize = 0; var slice = this.map.list.slice(); const hash = slice.items(.name_hash)[this.i]; var result = Result{ .name = this.map.str(slice.items(.name)[this.i]), .values = target[0..1] }; @@ -443,7 +451,7 @@ pub const QueryStringMap = struct { while (std.mem.indexOfScalar(u64, remainder_hashes[current_i..], hash)) |next_index| { const real_i = current_i + next_index + this.i; - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert(!this.visited.isSet(real_i)); } @@ -510,7 +518,7 @@ pub const QueryStringMap = struct { }; pub fn initWithScanner( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, _scanner: CombinedScanner, ) !?QueryStringMap { var list = Param.List{}; @@ -552,7 +560,6 @@ pub const QueryStringMap = struct { const Writer = @TypeOf(writer); while (scanner.pathname.next()) |result| { - var list_slice = list.slice(); var name = result.name; var value = result.value; const name_slice = result.rawName(scanner.pathname.routename); @@ -619,7 +626,7 @@ pub const QueryStringMap = struct { } pub fn init( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, query_string: string, ) !?QueryStringMap { var list = Param.List{}; @@ -1055,7 +1062,6 @@ test "PercentEncoding.decode" { { const correct = "hello my name is ?????"; - const input = "hello%20my%20name%20is%20%3F%3F%3F%3F%3F"; const written = try PercentEncoding.decode(Writer, writer, correct); try expect(written == correct.len); try expectString(buffer[0..written], correct); diff --git a/src/renamer.zig b/src/renamer.zig index 0ed434105..1fd3de3bf 100644 --- a/src/renamer.zig +++ b/src/renamer.zig @@ -1,6 +1,16 @@ const js_ast = @import("js_ast.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); +const Ref = @import("./ast/base.zig").Ref; const logger = @import("logger.zig"); // This is...poorly named @@ -14,7 +24,7 @@ pub const Renamer = struct { return Renamer{ .symbols = symbols, .source = source }; } - pub fn nameForSymbol(renamer: *Renamer, ref: js_ast.Ref) string { + pub fn nameForSymbol(renamer: *Renamer, ref: Ref) string { if (ref.is_source_contents_slice) { return renamer.source.contents[ref.source_index .. ref.source_index + ref.inner_index]; } @@ -30,8 +40,8 @@ pub const Renamer = struct { }; pub const DisabledRenamer = struct { - pub fn init(symbols: js_ast.Symbol.Map) DisabledRenamer {} - pub inline fn nameForSymbol(renamer: *Renamer, ref: js_ast.Ref) string { + pub fn init(_: js_ast.Symbol.Map) DisabledRenamer {} + pub inline fn nameForSymbol(_: *Renamer, _: js_ast.Ref) string { @compileError("DisabledRunner called"); } }; diff --git a/src/resolver/data_url.zig b/src/resolver/data_url.zig index dd443dbe8..8a9186bf8 100644 --- a/src/resolver/data_url.zig +++ b/src/resolver/data_url.zig @@ -1,8 +1,18 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const assert = std.debug.assert; const mem = std.mem; +const Allocator = mem.Allocator; // https://github.com/Vexu/zuri/blob/master/src/zuri.zig#L61-L127 pub const PercentEncoding = struct { @@ -31,7 +41,7 @@ pub const PercentEncoding = struct { } /// decode path if it is percent encoded - pub fn decode(allocator: *Allocator, path: []const u8) EncodeError!?[]u8 { + pub fn decode(allocator: Allocator, path: []const u8) EncodeError!?[]u8 { var ret: ?[]u8 = null; errdefer if (ret) |some| allocator.free(some); var ret_index: usize = 0; @@ -65,32 +75,6 @@ pub const PercentEncoding = struct { if (ret) |some| return allocator.shrink(some, ret_index); return null; } - - /// percent encode if path contains characters not allowed in paths - pub fn encode(allocator: *Allocator, path: []const u8) EncodeError!?[]u8 { - var ret: ?[]u8 = null; - var ret_index: usize = 0; - for (path) |c, i| { - if (c != '/' and !isPchar(path[i..])) { - if (ret == null) { - ret = try allocator.alloc(u8, path.len * 3); - mem.copy(u8, ret.?, path[0..i]); - ret_index = i; - } - const hex_digits = "0123456789ABCDEF"; - ret.?[ret_index] = '%'; - ret.?[ret_index + 1] = hex_digits[(c & 0xF0) >> 4]; - ret.?[ret_index + 2] = hex_digits[c & 0x0F]; - ret_index += 3; - } else if (ret != null) { - ret.?[ret_index] = c; - ret_index += 1; - } - } - - if (ret) |some| return allocator.shrink(some, ret_index); - return null; - } }; pub const MimeType = enum { @@ -144,17 +128,4 @@ pub const DataURL = struct { pub fn decode_mime_type(d: DataURL) MimeType { return MimeType.decode(d.mime_type); } - - pub fn decode_data(d: *DataURL, allocator: *std.mem.Allocator, url: string) !string { - // Try to read base64 data - if (d.is_base64) { - const size = try std.base64.standard.Decoder.calcSizeForSlice(d.data); - var buf = try allocator.alloc(u8, size); - try std.base64.standard.Decoder.decode(buf, d.data); - return buf; - } - - // Try to read percent-escaped data - return try PercentEncoding.decode(allocator, url); - } }; diff --git a/src/resolver/dir_info.zig b/src/resolver/dir_info.zig index b79067a48..86a9bc791 100644 --- a/src/resolver/dir_info.zig +++ b/src/resolver/dir_info.zig @@ -1,4 +1,15 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FeatureFlags = _global.FeatureFlags; const allocators = @import("../allocators.zig"); const DirInfo = @This(); @@ -50,7 +61,7 @@ pub fn getFileDescriptor(dirinfo: *const DirInfo) StoredFileDescriptorType { pub fn getEntries(dirinfo: *const DirInfo) ?*Fs.FileSystem.DirEntry { var entries_ptr = Fs.FileSystem.instance.fs.entries.atIndex(dirinfo.entries) orelse return null; switch (entries_ptr.*) { - .entries => |entr| { + .entries => { return &entries_ptr.entries; }, .err => { @@ -62,7 +73,7 @@ pub fn getEntries(dirinfo: *const DirInfo) ?*Fs.FileSystem.DirEntry { pub fn getEntriesConst(dirinfo: *const DirInfo) ?*const Fs.FileSystem.DirEntry { const entries_ptr = Fs.FileSystem.instance.fs.entries.atIndex(dirinfo.entries) orelse return null; switch (entries_ptr.*) { - .entries => |entr| { + .entries => { return &entries_ptr.entries; }, .err => { diff --git a/src/resolver/package_json.zig b/src/resolver/package_json.zig index 099035299..c2c86186a 100644 --- a/src/resolver/package_json.zig +++ b/src/resolver/package_json.zig @@ -1,4 +1,14 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const Api = @import("../api/schema.zig").Api; const std = @import("std"); const options = @import("../options.zig"); @@ -28,7 +38,7 @@ pub const PackageJSON = struct { }; const node_modules_path = std.fs.path.sep_str ++ "node_modules" ++ std.fs.path.sep_str; - pub fn nameForImport(this: *const PackageJSON, allocator: *std.mem.Allocator) !string { + pub fn nameForImport(this: *const PackageJSON, allocator: std.mem.Allocator) !string { if (strings.indexOf(this.source.path.text, node_modules_path)) |_| { return this.name; } else { @@ -100,7 +110,7 @@ pub const PackageJSON = struct { fn loadDefineDefaults( env: *options.Env, json: *const js_ast.E.Object, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) !void { var valid_count: usize = 0; for (json.properties) |prop| { @@ -123,7 +133,7 @@ pub const PackageJSON = struct { fn loadOverrides( framework: *options.Framework, json: *const js_ast.E.Object, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) void { var valid_count: usize = 0; for (json.properties) |prop| { @@ -146,7 +156,7 @@ pub const PackageJSON = struct { fn loadDefineExpression( env: *options.Env, json: *const js_ast.E.Object, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, ) anyerror!void { for (json.properties) |prop| { switch (prop.key.?.data) { @@ -182,7 +192,7 @@ pub const PackageJSON = struct { fn loadFrameworkExpression( framework: *options.Framework, json: js_ast.Expr, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime read_define: bool, ) bool { if (json.asProperty("client")) |client| { @@ -277,7 +287,7 @@ pub const PackageJSON = struct { package_json: *const PackageJSON, pair: *FrameworkRouterPair, json: js_ast.Expr, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime read_defines: bool, comptime load_framework: LoadFramework, ) void { @@ -362,7 +372,6 @@ pub const PackageJSON = struct { if (router.expr.asProperty("extensions")) |extensions_expr| { if (extensions_expr.expr.asArray()) |*array| { - const count = array.array.items.len; var valid_count: usize = 0; while (array.next()) |expr| { @@ -476,7 +485,7 @@ pub const PackageJSON = struct { json_source.path.pretty = r.prettyPath(json_source.path); const json: js_ast.Expr = (r.caches.json.parseJSON(r.log, json_source, r.allocator) catch |err| { - if (isDebug) { + if (Environment.isDebug) { Output.printError("{s}: JSON parse error: {s}", .{ package_json_path, @errorName(err) }); } return null; @@ -560,7 +569,6 @@ pub const PackageJSON = struct { if (bun_json.expr.asProperty("macros")) |macros| { if (macros.expr.data == .e_object) { - var always_bundle_count: u16 = 0; const properties = macros.expr.data.e_object.properties; for (properties) |property| { @@ -764,7 +772,7 @@ pub const ExportsMap = struct { root: Entry, exports_range: logger.Range = logger.Range.None, - pub fn parse(allocator: *std.mem.Allocator, source: *const logger.Source, log: *logger.Log, json: js_ast.Expr) ?ExportsMap { + pub fn parse(allocator: std.mem.Allocator, source: *const logger.Source, log: *logger.Log, json: js_ast.Expr) ?ExportsMap { var visitor = Visitor{ .allocator = allocator, .source = source, .log = log }; const root = visitor.visit(json); @@ -780,7 +788,7 @@ pub const ExportsMap = struct { } pub const Visitor = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, source: *const logger.Source, log: *logger.Log, @@ -949,7 +957,7 @@ pub const ExportsMap = struct { pub fn valueForKey(this: *const Entry, key_: string) ?Entry { switch (this.data) { - .map => |map| { + .map => { var slice = this.data.map.list.slice(); const keys = slice.items(.key); for (keys) |key, i| { @@ -973,7 +981,7 @@ pub const ESModule = struct { debug_logs: ?*resolver.DebugLogs = null, conditions: ConditionsMap, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, pub const Resolution = struct { status: Status = Status.Undefined, @@ -1425,7 +1433,7 @@ pub const ESModule = struct { var last_exception = Status.Undefined; var last_debug = Resolution.Debug{ .token = target.first_token }; - for (array) |targetValue, i| { + for (array) |targetValue| { // Let resolved be the result, continuing the loop on any Invalid Package Target error. const result = r.resolveTarget(package_url, targetValue, subpath, pattern); if (result.status == .InvalidPackageTarget or result.status == .Null) { diff --git a/src/resolver/resolve_path.zig b/src/resolver/resolve_path.zig index 587a8e9ed..f7335a8b4 100644 --- a/src/resolver/resolve_path.zig +++ b/src/resolver/resolve_path.zig @@ -29,8 +29,6 @@ pub fn longestCommonPathGeneric(strings: []const []const u8, comptime separator: min_length = @minimum(str.len, min_length); } - var last_common_separator_is_at_end = false; - var index: usize = 0; var last_common_separator: usize = 0; @@ -316,7 +314,7 @@ pub fn relativePlatform(from: []const u8, to: []const u8, comptime platform: Pla return relativeNormalized(normalized_from, normalized_to, platform, always_copy); } -pub fn relativeAlloc(allocator: *std.mem.Allocator, from: []const u8, to: []const u8) ![]const u8 { +pub fn relativeAlloc(allocator: std.mem.Allocator, from: []const u8, to: []const u8) ![]const u8 { if (comptime FeatureFlags.use_std_path_relative) { return try std.fs.path.relative(allocator, from, to); } else { @@ -430,7 +428,7 @@ pub const Platform = enum { }; } - pub const current: Platform = switch (std.Target.current.os.tag) { + pub const current: Platform = switch (@import("builtin").target.os.tag) { .windows => Platform.windows, else => Platform.posix, }; @@ -506,7 +504,7 @@ pub const Platform = enum { pub fn resolve(comptime _platform: Platform) Platform { if (comptime _platform == .auto) { - return switch (std.Target.current.os.tag) { + return switch (@import("builtin").target.os.tag) { .windows => Platform.windows, .freestanding, .emscripten, .other => Platform.loose, @@ -526,19 +524,14 @@ pub fn normalizeString(str: []const u8, comptime allow_above_root: bool, comptim pub fn normalizeStringBuf(str: []const u8, buf: []u8, comptime allow_above_root: bool, comptime _platform: Platform, comptime preserve_trailing_slash: anytype) []u8 { const platform = comptime _platform.resolve(); - switch (platform) { + switch (comptime platform) { .auto => unreachable, .windows => { - return normalizeStringWindowsBuf( - str, - buf, - allow_above_root, - preserve_trailing_slash, - ); + @compileError("Not implemented"); }, .posix => { - return normalizeStringPosixBuf( + return normalizeStringLooseBuf( str, buf, allow_above_root, @@ -557,7 +550,7 @@ pub fn normalizeStringBuf(str: []const u8, buf: []u8, comptime allow_above_root: } } -pub fn normalizeStringAlloc(allocator: *std.mem.Allocator, str: []const u8, comptime allow_above_root: bool, comptime _platform: Platform) ![]const u8 { +pub fn normalizeStringAlloc(allocator: std.mem.Allocator, str: []const u8, comptime allow_above_root: bool, comptime _platform: Platform) ![]const u8 { return try allocator.dupe(u8, normalizeString(str, allow_above_root, _platform)); } @@ -602,12 +595,6 @@ pub fn joinStringBuf(buf: []u8, _parts: anytype, comptime _platform: Platform) [ return std.fs.path.join(&alloc.allocator, _parts) catch unreachable; } - if (_parts.len == 0) { - return _cwd; - } - - var parts = _parts; - var written: usize = 0; const platform = comptime _platform.resolve(); @@ -631,19 +618,18 @@ pub fn joinStringBuf(buf: []u8, _parts: anytype, comptime _platform: Platform) [ // Preserve leading separator if (_parts[0].len > 0 and _parts[0][0] == _platform.separator()) { - const out = switch (platform) { - .loose => normalizeStringLooseBuf(parser_join_input_buffer[0..written], buf[1..], false, false), - .windows => normalizeStringWindows(parser_join_input_buffer[0..written], buf[1..], false, false), - else => normalizeStringPosixBuf(parser_join_input_buffer[0..written], buf[1..], false, false), + const out = switch (comptime platform) { + // .loose => + .windows => @compileError("Not implemented yet"), + else => normalizeStringLooseBuf(parser_join_input_buffer[0..written], buf[1..], false, false), }; buf[0] = _platform.separator(); return buf[0 .. out.len + 1]; } else { return switch (platform) { - .loose => normalizeStringLooseBuf(parser_join_input_buffer[0..written], buf[0..], false, false), - .windows => normalizeStringWindows(parser_join_input_buffer[0..written], buf[0..], false, false), - else => normalizeStringPosixBuf(parser_join_input_buffer[0..written], buf[0..], false, false), + else => normalizeStringLooseBuf(parser_join_input_buffer[0..written], buf[0..], false, false), + .windows => @compileError("Not implemented yet"), }; } } @@ -676,7 +662,6 @@ inline fn _joinAbsStringBuf(comptime is_sentinel: bool, comptime ReturnType: typ var cwd = _cwd; var out: usize = 0; // When parts[0] is absolute, we treat that as, effectively, the cwd - var ignore_cwd = cwd.len == 0; // Windows leading separators can be a lot of things... // So we need to do this instead of just checking the first char. @@ -712,7 +697,7 @@ inline fn _joinAbsStringBuf(comptime is_sentinel: bool, comptime ReturnType: typ std.debug.assert(out < buf.len); std.mem.copy(u8, buf[0..out], start); - for (parts) |part, i| { + for (parts) |part| { // Do not normalize here // It will break stuff! var normalized_part = part; @@ -774,71 +759,6 @@ pub fn lastIndexOfSeparatorLoose(slice: []const u8) ?usize { return std.mem.lastIndexOfAny(u8, slice, "/\\"); } -pub fn normalizeStringPosix(str: []const u8, comptime allow_above_root: bool, comptime preserve_trailing_slash: bool) []u8 { - return normalizeStringGenericBuf( - str, - &parser_buffer, - allow_above_root, - std.fs.path.sep_posix, - isSepPosix, - lastIndexOfSeparatorPosix, - preserve_trailing_slash, - ); -} - -pub fn normalizeStringPosixBuf( - str: []const u8, - buf: []u8, - comptime allow_above_root: bool, - comptime preserve_trailing_slash: bool, -) []u8 { - return normalizeStringGeneric( - str, - buf, - allow_above_root, - std.fs.path.sep_posix, - isSepPosix, - lastIndexOfSeparatorPosix, - preserve_trailing_slash, - ); -} - -pub fn normalizeStringWindows(str: []const u8, comptime allow_above_root: bool, comptime preserve_trailing_slash: bool) []u8 { - return normalizeStringGenericBuf( - str, - &parser_buffer, - allow_above_root, - std.fs.path.sep_windows, - isSepWin32, - lastIndexOfSeparatorWindows, - preserve_trailing_slash, - ); -} - -pub fn normalizeStringWindowsBuf(str: []const u8, buf: []u8, comptime allow_above_root: bool, comptime preserve_trailing_slash: bool) []u8 { - return normalizeStringGeneric( - str, - buf, - allow_above_root, - std.fs.path.sep_windows, - isSepWin32, - lastIndexOfSeparatorWindows, - preserve_trailing_slash, - ); -} - -pub fn normalizeStringLoose(str: []const u8, comptime allow_above_root: bool, comptime preserve_trailing_slash: bool) []u8 { - return normalizeStringGenericBuf( - str, - &parser_buffer, - allow_above_root, - std.fs.path.sep_posix, - isSepAny, - lastIndexOfSeparatorLoose, - preserve_trailing_slash, - ); -} - pub fn normalizeStringLooseBuf(str: []const u8, buf: []u8, comptime allow_above_root: bool, comptime preserve_trailing_slash: bool) []u8 { return normalizeStringGeneric( str, @@ -1032,15 +952,6 @@ test "relative" { var t = tester.Tester.t(default_allocator); defer t.report(@src()); - const strs = [_][]const u8{ - "/var/boo/foo/", - "/var/boo/foo/baz/", - "/var/boo/foo/beep/", - "/var/boo/foo/beep/bleep", - "/bar/baz", - "/bar/not-related", - "/bar/file.txt", - }; _ = t.expect("var/foo", try relativeAlloc(default_allocator, "/", "/var/foo/"), @src()); _ = t.expect("index.js", try relativeAlloc(default_allocator, "/app/public/", "/app/public/index.js"), @src()); _ = t.expect("..", try relativeAlloc(default_allocator, "/app/public/index.js", "/app/public/"), @src()); diff --git a/src/resolver/resolver.zig b/src/resolver/resolver.zig index 34dc09088..571abbc8d 100644 --- a/src/resolver/resolver.zig +++ b/src/resolver/resolver.zig @@ -1,4 +1,16 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const FeatureFlags = _global.FeatureFlags; +const PathString = _global.PathString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const C = _global.C; const ast = @import("../import_record.zig"); const logger = @import("../logger.zig"); const options = @import("../options.zig"); @@ -12,17 +24,18 @@ const MacroRemap = @import("./package_json.zig").MacroMap; const ESModule = @import("./package_json.zig").ESModule; const BrowserMap = @import("./package_json.zig").BrowserMap; const CacheSet = cache.Set; -usingnamespace @import("./data_url.zig"); +const DataURL = @import("./data_url.zig").DataURL; pub const DirInfo = @import("./dir_info.zig"); -const HTTPWatcher = if (isTest) void else @import("../http.zig").Watcher; +const HTTPWatcher = if (Environment.isTest) void else @import("../http.zig").Watcher; const Wyhash = std.hash.Wyhash; const ResolvePath = @import("./resolve_path.zig"); const NodeFallbackModules = @import("../node_fallbacks.zig"); const Mutex = @import("../lock.zig").Lock; const StringBoolMap = std.StringHashMap(bool); +const FileDescriptorType = _global.FileDescriptorType; const allocators = @import("../allocators.zig"); - +const Msg = logger.Msg; const Path = Fs.Path; const NodeModuleBundle = @import("../node_module_bundle.zig").NodeModuleBundle; @@ -162,7 +175,7 @@ pub const Result = struct { suggestion_text: string = "", suggestion_message: string = "", - pub fn init(allocator: *std.mem.Allocator) DebugMeta { + pub fn init(allocator: std.mem.Allocator) DebugMeta { return DebugMeta{ .notes = std.ArrayList(logger.Data).init(allocator) }; } @@ -181,7 +194,7 @@ pub const Result = struct { } }; - pub fn hash(this: *const Result, root_dir: string, loader: options.Loader) u32 { + pub fn hash(this: *const Result, _: string, _: options.Loader) u32 { const module = this.path_pair.primary.text; const node_module_root = std.fs.path.sep_str ++ "node_modules" ++ std.fs.path.sep_str; if (strings.lastIndexOf(module, node_module_root)) |end_| { @@ -226,7 +239,7 @@ pub const DebugLogs = struct { pub const FlushMode = enum { fail, success }; - pub fn init(allocator: *std.mem.Allocator) !DebugLogs { + pub fn init(allocator: std.mem.Allocator) !DebugLogs { var mutable = try MutableString.init(allocator, 0); return DebugLogs{ .indent = mutable, @@ -235,7 +248,6 @@ pub const DebugLogs = struct { } pub fn deinit(d: DebugLogs) void { - var allocator = d.notes.allocator; d.notes.deinit(); // d.indent.deinit(); } @@ -270,39 +282,6 @@ pub const DebugLogs = struct { } }; -pub const TSConfigExtender = struct { - visited: *StringBoolMap, - file_dir: string, - r: *ThisResolver, - - pub fn extends(ctx: *TSConfigExtender, ext: String, range: logger.Range) ?*TSConfigJSON { - unreachable; - // if (isPackagePath(extends)) { - // // // If this is a package path, try to resolve it to a "node_modules" - // // // folder. This doesn't use the normal node module resolution algorithm - // // // both because it's different (e.g. we don't want to match a directory) - // // // and because it would deadlock since we're currently in the middle of - // // // populating the directory info cache. - // // var current = ctx.file_dir; - // // while (true) { - // // // Skip "node_modules" folders - // // if (!strings.eql(std.fs.path.basename(current), "node_modules")) { - // // var paths1 = [_]string{ current, "node_modules", extends }; - // // var join1 = r.fs.absAlloc(ctx.r.allocator, &paths1) catch unreachable; - // // const res = ctx.r.parseTSConfig(join1, ctx.1) catch |err| { - // // if (err == error.ENOENT) { - // // continue; - // // } else if (err == error.ParseErrorImportCycle) {} else if (err != error.ParseErrorAlreadyLogged) {} - // // return null; - // // }; - // // return res; - - // // } - // // } - // } - } -}; - pub const MatchResult = struct { path_pair: PathPair, dirname_fd: StoredFileDescriptorType = 0, @@ -338,7 +317,7 @@ pub const Resolver = struct { opts: options.BundleOptions, fs: *Fs.FileSystem, log: *logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, node_module_bundle: ?*NodeModuleBundle, extension_order: []const string = undefined, timer: std.time.Timer = undefined, @@ -399,7 +378,7 @@ pub const Resolver = struct { dir_cache: *DirInfo.HashMap, pub fn init1( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, _fs: *Fs.FileSystem, opts: options.BundleOptions, @@ -1042,7 +1021,7 @@ pub const Resolver = struct { return result; } - if (res.package_json) |pkg| { + if (res.package_json != null) { var base_dir_info = res.dir_info orelse (r.readDirInfo(res.path_pair.primary.name.dir) catch null) orelse return result; if (base_dir_info.getEnclosingBrowserScope()) |browser_scope| { if (r.checkBrowserMap( @@ -1387,11 +1366,11 @@ pub const Resolver = struct { } // TODO: - pub fn prettyPath(r: *ThisResolver, path: Path) string { + pub fn prettyPath(_: *ThisResolver, path: Path) string { return path.text; } - pub fn binDirs(r: *const ThisResolver) []const string { + pub fn binDirs(_: *const ThisResolver) []const string { if (!bin_folders_loaded) return &[_]string{}; return bin_folders.constSlice(); } @@ -1461,7 +1440,7 @@ pub const Resolver = struct { .hash = 0, .status = .not_found, }; - const root_path = if (comptime isWindows) + const root_path = if (comptime Environment.isWindows) std.fs.path.diskDesignator(path) else // we cannot just use "/" @@ -1730,7 +1709,6 @@ pub const Resolver = struct { if (strings.eql(key, path)) { for (entry.value_ptr.*) |original_path| { var absolute_original_path = original_path; - var was_alloc = false; if (!std.fs.path.isAbsolute(absolute_original_path)) { const parts = [_]string{ abs_base_url, original_path }; @@ -2202,7 +2180,7 @@ pub const Resolver = struct { } const dir_info = (r.dirInfoCached(path) catch |err| { - if (comptime isDebug) Output.prettyErrorln("err: {s} reading {s}", .{ @errorName(err), path }); + if (comptime Environment.isDebug) Output.prettyErrorln("err: {s} reading {s}", .{ @errorName(err), path }); return null; }) orelse return null; var package_json: ?*PackageJSON = null; @@ -2376,7 +2354,7 @@ pub const Resolver = struct { // Try the path with extensions std.mem.copy(u8, &load_as_file_buf, path); - for (r.extension_order) |ext| { + for (extension_order) |ext| { var buffer = load_as_file_buf[0 .. path.len + ext.len]; std.mem.copy(u8, buffer[path.len..buffer.len], ext); const file_name = buffer[path.len - base.len .. buffer.len]; @@ -2522,7 +2500,7 @@ pub const Resolver = struct { if (r.care_about_bin_folder) { append_bin_dir: { if (info.has_node_modules) { - if (entries.getComptimeQuery("node_modules")) |q| { + if (entries.hasComptimeQuery("node_modules")) { if (!bin_folders_loaded) { bin_folders_loaded = true; bin_folders = BinFolderArray.init(0) catch unreachable; diff --git a/src/resolver/tsconfig_json.zig b/src/resolver/tsconfig_json.zig index ac132c326..9c457682c 100644 --- a/src/resolver/tsconfig_json.zig +++ b/src/resolver/tsconfig_json.zig @@ -1,4 +1,13 @@ -usingnamespace @import("../global.zig"); +const _global = @import("../global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const options = @import("../options.zig"); const logger = @import("../logger.zig"); @@ -77,7 +86,7 @@ pub const TSConfigJSON = struct { } pub fn parse( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, log: *logger.Log, source: logger.Source, json_cache: *cache.Json, @@ -180,7 +189,7 @@ pub const TSConfigJSON = struct { if (compiler_opts.expr.asProperty("paths")) |paths_prop| { switch (paths_prop.expr.data) { .e_object => { - var paths = paths_prop.expr.getObject(); + var paths = paths_prop.expr.data.e_object; result.base_url_for_paths = if (result.base_url.len > 0) result.base_url else "."; result.paths = PathsMap.init(allocator); for (paths.properties) |property| { @@ -216,7 +225,7 @@ pub const TSConfigJSON = struct { // and then, if that didn't work, also check "projectRoot/generated/folder1/file2". switch (value_prop.data) { .e_array => { - const array = value_prop.getArray(); + const array = value_prop.data.e_array; if (array.items.len > 0) { var values = allocator.alloc(string, array.items.len) catch unreachable; @@ -282,9 +291,9 @@ pub const TSConfigJSON = struct { return _result; } - pub fn isValidTSConfigPathPattern(text: string, log: *logger.Log, source: *const logger.Source, loc: logger.Loc, allocator: *std.mem.Allocator) bool { + pub fn isValidTSConfigPathPattern(text: string, log: *logger.Log, source: *const logger.Source, loc: logger.Loc, allocator: std.mem.Allocator) bool { var found_asterisk = false; - for (text) |c, i| { + for (text) |c| { if (c == '*') { if (found_asterisk) { const r = source.rangeOfString(loc); @@ -298,7 +307,7 @@ pub const TSConfigJSON = struct { return true; } - pub fn parseMemberExpressionForJSX(log: *logger.Log, source: *const logger.Source, loc: logger.Loc, text: string, allocator: *std.mem.Allocator) ![]string { + pub fn parseMemberExpressionForJSX(log: *logger.Log, source: *const logger.Source, loc: logger.Loc, text: string, allocator: std.mem.Allocator) ![]string { if (text.len == 0) { return &([_]string{}); } @@ -323,7 +332,7 @@ pub const TSConfigJSON = struct { return c == '/' or c == '\\'; } - pub fn isValidTSConfigPathNoBaseURLPattern(text: string, log: *logger.Log, source: *const logger.Source, allocator: *std.mem.Allocator, loc: logger.Loc) bool { + pub fn isValidTSConfigPathNoBaseURLPattern(text: string, log: *logger.Log, source: *const logger.Source, allocator: std.mem.Allocator, loc: logger.Loc) bool { var c0: u8 = 0; var c1: u8 = 0; var c2: u8 = 0; diff --git a/src/router.zig b/src/router.zig index ac7587851..3dba0b0d7 100644 --- a/src/router.zig +++ b/src/router.zig @@ -7,8 +7,19 @@ const Router = @This(); const Api = @import("./api/schema.zig").Api; const std = @import("std"); -usingnamespace @import("global.zig"); - +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const PathString = _global.PathString; +const HashedString = _global.HashedString; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; const DirInfo = @import("./resolver/dir_info.zig"); const Fs = @import("./fs.zig"); const Options = @import("./options.zig"); @@ -30,13 +41,13 @@ pub const Param = struct { dir: StoredFileDescriptorType = 0, routes: Routes, loaded_routes: bool = false, -allocator: *std.mem.Allocator, +allocator: std.mem.Allocator, fs: *Fs.FileSystem, config: Options.RouteConfig, pub fn init( fs: *Fs.FileSystem, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, config: Options.RouteConfig, ) !Router { return Router{ @@ -103,14 +114,14 @@ pub const Routes = struct { index: ?*Route = null, index_id: ?usize = 0, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, config: Options.RouteConfig, // This is passed here and propagated through Match // We put this here to avoid loading the FrameworkConfig for the client, on the server. client_framework_enabled: bool = false, - pub fn matchPage(this: *Routes, routes_dir: string, url_path: URLPath, params: *Param.List) ?Match { + pub fn matchPage(this: *Routes, _: string, url_path: URLPath, params: *Param.List) ?Match { // Trim trailing slash var path = url_path.path; var redirect = false; @@ -187,13 +198,12 @@ pub const Routes = struct { return null; } - fn matchDynamic(this: *Routes, allocator: *std.mem.Allocator, path: string, comptime MatchContext: type, ctx: MatchContext) ?*Route { + fn matchDynamic(this: *Routes, allocator: std.mem.Allocator, path: string, comptime MatchContext: type, ctx: MatchContext) ?*Route { // its cleaned, so now we search the big list of strings var i: usize = 0; while (i < this.dynamic_names.len) : (i += 1) { const name = this.dynamic_match_names[i]; const case_sensitive_name_without_leading_slash = this.dynamic_names[i][1..]; - var offset: u32 = 0; if (Pattern.match(path, case_sensitive_name_without_leading_slash, name, allocator, *@TypeOf(ctx.params), &ctx.params, true)) { return this.dynamic[i]; } @@ -202,7 +212,7 @@ pub const Routes = struct { return null; } - fn match(this: *Routes, allocator: *std.mem.Allocator, pathname_: string, comptime MatchContext: type, ctx: MatchContext) ?*Route { + fn match(this: *Routes, allocator: std.mem.Allocator, pathname_: string, comptime MatchContext: type, ctx: MatchContext) ?*Route { var pathname = std.mem.trimLeft(u8, pathname_, "/"); if (pathname.len == 0) { @@ -215,7 +225,7 @@ pub const Routes = struct { }; const RouteLoader = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, fs: *FileSystem, config: Options.RouteConfig, route_dirname_len: u16 = 0, @@ -308,7 +318,7 @@ const RouteLoader = struct { } } - pub fn loadAll(allocator: *std.mem.Allocator, config: Options.RouteConfig, log: *Logger.Log, comptime ResolverType: type, resolver: *ResolverType, root_dir_info: *const DirInfo) Routes { + pub fn loadAll(allocator: std.mem.Allocator, config: Options.RouteConfig, log: *Logger.Log, comptime ResolverType: type, resolver: *ResolverType, root_dir_info: *const DirInfo) Routes { var this = RouteLoader{ .allocator = allocator, .log = log, @@ -335,7 +345,6 @@ const RouteLoader = struct { var dynamic_start: ?usize = null; var index_id: ?usize = null; - const public_dir_is_in_top_level_dir = strings.startsWith(this.config.dir, this.fs.top_level_dir); for (this.all_routes.items) |route, i| { if (@enumToInt(route.kind) > @enumToInt(Pattern.Tag.static) and dynamic_start == null) { dynamic_start = i; @@ -426,7 +435,7 @@ const RouteLoader = struct { if (strings.eql(extname[1..], _extname)) { // length is extended by one // entry.dir is a string with a trailing slash - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert(entry.dir.ptr[fs.top_level_dir.len - 1] == '/'); } @@ -487,7 +496,7 @@ pub const TinyPtr = packed struct { const right = @ptrToInt(in.ptr) + in.len; const end = @ptrToInt(parent.ptr) + parent.len; - if (comptime isDebug) { + if (comptime Environment.isDebug) { std.debug.assert(end < right); } @@ -546,7 +555,7 @@ pub const Route = struct { break :brk table; }; - pub fn sortByNameString(ctx: @This(), lhs: string, rhs: string) bool { + pub fn sortByNameString(_: @This(), lhs: string, rhs: string) bool { const math = std.math; const n = @minimum(lhs.len, rhs.len); @@ -607,7 +616,7 @@ pub const Route = struct { extname: string, entry: *Fs.FileSystem.Entry, log: *Logger.Log, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, public_dir_: string, routes_dirname_len: u16, ) ?Route { @@ -849,12 +858,12 @@ const MockRequestContextType = struct { this.handle_request_called = true; } - pub fn handleRedirect(this: *MockRequestContextType, pathname: string) !void { + pub fn handleRedirect(this: *MockRequestContextType, _: string) !void { this.redirect_called = true; } pub const JavaScriptHandler = struct { - pub fn enqueue(ctx: *MockRequestContextType, server: *MockServer, params: *Router.Param.List) !void {} + pub fn enqueue(_: *MockRequestContextType, _: *MockServer, _: *Router.Param.List) !void {} }; }; @@ -864,7 +873,7 @@ pub const MockServer = struct { pub const Watcher = struct { watchloop_handle: ?StoredFileDescriptorType = null, - pub fn start(this: *Watcher) anyerror!void {} + pub fn start(_: *Watcher) anyerror!void {} }; }; @@ -948,7 +957,6 @@ pub const Test = struct { var resolver = Resolver.init1(default_allocator, &logger, &FileSystem.instance, opts); var root_dir = (try resolver.readDirInfo(pages_dir)).?; - var entries = root_dir.getEntries().?; return RouteLoader.loadAll(default_allocator, opts.routes, &logger, Resolver, &resolver, root_dir); // try router.loadRoutes(root_dir, Resolver, &resolver, 0, true); // var entry_points = try router.getEntryPoints(default_allocator); @@ -1006,7 +1014,6 @@ pub const Test = struct { var resolver = Resolver.init1(default_allocator, &logger, &FileSystem.instance, opts); var root_dir = (try resolver.readDirInfo(pages_dir)).?; - var entries = root_dir.getEntries().?; try router.loadRoutes(&logger, root_dir, Resolver, &resolver); var entry_points = try router.getEntryPoints(); @@ -1027,7 +1034,7 @@ const Pattern = struct { name: string, /// case-insensitive, must not have a leading slash match_name: string, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, comptime ParamsListType: type, params: ParamsListType, comptime allow_optional_catch_all: bool, @@ -1127,7 +1134,7 @@ const Pattern = struct { /// Validate a Route pattern, returning the number of route parameters. /// `null` means invalid. Error messages are logged. /// That way, we can provide a list of all invalid routes rather than failing the first time. - pub fn validate(input: string, allocator: *std.mem.Allocator, log: *Logger.Log) ?ValidationResult { + pub fn validate(input: string, allocator: std.mem.Allocator, log: *Logger.Log) ?ValidationResult { if (CodepointIterator.needsUTF8Decoding(input)) { const source = Logger.Source.initEmptyFile(input); log.addErrorFmt( @@ -1275,7 +1282,6 @@ const Pattern = struct { tag = Tag.dynamic; var param = TinyPtr{}; - var catch_all_start = i; i += 1; @@ -1294,7 +1300,6 @@ const Pattern = struct { i += 1; - const catch_all_dot_start = i; if (!strings.eqlComptimeIgnoreLen(input[i..][0..3], "...")) return error.InvalidOptionalCatchAllRoute; i += 3; param.offset = i; @@ -1536,8 +1541,6 @@ test "Github API Route Loader" { const fixtures = @import("./test/fixtures.zig"); var router = try Test.make("routes-github-api", fixtures.github_api_routes_list); - var parameters = Param.List{}; - { ctx = MockRequestContextType{ .url = try URLPath.parse("/organizations") }; try router.match(*MockServer, &server, MockRequestContextType, &ctx); @@ -1647,8 +1650,6 @@ test "Sample Route Loader" { const fixtures = @import("./test/fixtures.zig"); var router = try Test.make("routes-sample", fixtures.sample_route_list); - var parameters = Param.List{}; - { ctx = MockRequestContextType{ .url = try URLPath.parse("/foo") }; try router.match(*MockServer, &server, MockRequestContextType, &ctx); @@ -1800,7 +1801,6 @@ test "Dynamic routes" { var ctx = MockRequestContextType{ .url = try URLPath.parse("/blog/hi"), }; - var filepath_buf: [std.fs.MAX_PATH_BYTES]u8 = undefined; var router = try Test.make("routes-dynamic", .{ .@"pages/index.js" = "//index.js", .@"pages/blog/hi.js" = "//blog-hi", diff --git a/src/runtime.version b/src/runtime.version index 936ae3d67..7c41153bd 100644 --- a/src/runtime.version +++ b/src/runtime.version @@ -1 +1 @@ -b79c80cf594c185e
\ No newline at end of file +44fa33dd97836c59
\ No newline at end of file diff --git a/src/runtime.zig b/src/runtime.zig index 337c9fdab..7c41899e9 100644 --- a/src/runtime.zig +++ b/src/runtime.zig @@ -1,10 +1,19 @@ const options = @import("./options.zig"); -usingnamespace @import("ast/base.zig"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); const resolve_path = @import("./resolver/resolve_path.zig"); const Fs = @import("./fs.zig"); const Schema = @import("./api/schema.zig"); +const Ref = @import("ast/base.zig").Ref; // packages/bun-cli-*/bun const BUN_ROOT = "../../"; @@ -18,8 +27,7 @@ pub const ErrorCSS = struct { pub const ProdSourceContent = @embedFile("../" ++ ErrorCSSPath); pub inline fn sourceContent() string { - if (comptime isDebug) { - var env = std.process.getEnvMap(default_allocator) catch unreachable; + if (comptime Environment.isDebug) { var out_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; var dirname = std.fs.selfExeDirPath(&out_buffer) catch unreachable; var paths = [_]string{ dirname, BUN_ROOT, ErrorCSSPathDev }; @@ -43,8 +51,7 @@ pub const ErrorJS = struct { pub const ProdSourceContent = @embedFile("../" ++ ErrorJSPath); pub inline fn sourceContent() string { - if (comptime isDebug) { - var env = std.process.getEnvMap(default_allocator) catch unreachable; + if (comptime Environment.isDebug) { var out_buffer: [std.fs.MAX_PATH_BYTES]u8 = undefined; var dirname = std.fs.selfExeDirPath(&out_buffer) catch unreachable; var paths = [_]string{ dirname, BUN_ROOT, ErrorJSPath }; @@ -68,8 +75,8 @@ pub const Fallback = struct { const Base64FallbackMessage = struct { msg: *const Api.FallbackMessageContainer, - allocator: *std.mem.Allocator, - pub fn format(this: Base64FallbackMessage, comptime fmt: []const u8, opts_: std.fmt.FormatOptions, writer: anytype) !void { + allocator: std.mem.Allocator, + pub fn format(this: Base64FallbackMessage, comptime _: []const u8, _: std.fmt.FormatOptions, writer: anytype) !void { var bb = std.ArrayList(u8).init(this.allocator); defer bb.deinit(); var bb_writer = bb.writer(); @@ -102,7 +109,7 @@ pub const Fallback = struct { }; pub inline fn scriptContent() string { - if (comptime isDebug) { + if (comptime Environment.isDebug) { var dirpath = std.fs.path.dirname(@src().file).?; var env = std.process.getEnvMap(default_allocator) catch unreachable; @@ -135,7 +142,7 @@ pub const Fallback = struct { } pub fn render( - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, msg: *const Api.FallbackMessageContainer, preload: string, entry_point: string, @@ -161,7 +168,7 @@ pub const Runtime = struct { pub const ProdSourceContent = @embedFile("./runtime.out.js"); pub inline fn sourceContent() string { - if (comptime isDebug) { + if (comptime Environment.isDebug) { var dirpath = std.fs.path.dirname(@src().file).?; var env = std.process.getEnvMap(default_allocator) catch unreachable; @@ -196,7 +203,7 @@ pub const Runtime = struct { const bytecodeCacheFilename = std.fmt.comptimePrint("__runtime.{s}", .{version_hash}); var bytecodeCacheFetcher = Fs.BytecodeCacheFetcher{}; - pub fn byteCodeCacheFile(fs: *Fs.FileSystem.RealFS) ?StoredFileDescriptorType { + pub fn byteCodeCacheFile(fs: *Fs.FileSystem.RealFS) ?_global.StoredFileDescriptorType { return bytecodeCacheFetcher.fetch(bytecodeCacheFilename, fs); } diff --git a/src/string_builder.zig b/src/string_builder.zig index 26782b896..577fa1548 100644 --- a/src/string_builder.zig +++ b/src/string_builder.zig @@ -1,4 +1,4 @@ -usingnamespace @import("string_types.zig"); +const string = @import("string_types.zig").string; const Allocator = @import("std").mem.Allocator; const assert = @import("std").debug.assert; const copy = @import("std").mem.copy; @@ -13,7 +13,7 @@ pub fn count(this: *StringBuilder, slice: string) void { this.cap += slice.len; } -pub fn allocate(this: *StringBuilder, allocator: *Allocator) !void { +pub fn allocate(this: *StringBuilder, allocator: Allocator) !void { var slice = try allocator.alloc(u8, this.cap); this.ptr = slice.ptr; this.len = 0; diff --git a/src/string_immutable.zig b/src/string_immutable.zig index 2f14d7e28..8b6215606 100644 --- a/src/string_immutable.zig +++ b/src/string_immutable.zig @@ -3,7 +3,9 @@ const expect = std.testing.expect; const JavascriptString = @import("ast/base.zig").JavascriptString; -usingnamespace @import("string_types.zig"); +const string = @import("string_types.zig").string; +const stringZ = @import("string_types.zig").stringZ; +const CodePoint = @import("string_types.zig").CodePoint; pub inline fn containsChar(self: string, char: u8) bool { return indexOfChar(self, char) != null; @@ -61,7 +63,7 @@ pub inline fn indexOf(self: string, str: string) ?usize { return std.mem.indexOf(u8, self, str); } -pub fn cat(allocator: *std.mem.Allocator, first: string, second: string) !string { +pub fn cat(allocator: std.mem.Allocator, first: string, second: string) !string { var out = try allocator.alloc(u8, first.len + second.len); std.mem.copy(u8, out, first); std.mem.copy(u8, out[first.len..], second); @@ -84,7 +86,7 @@ pub const StringOrTinyString = struct { }; } - pub fn deinit(this: *StringOrTinyString, allocator: *std.mem.Allocator) void { + pub fn deinit(this: *StringOrTinyString, _: std.mem.Allocator) void { if (this.is_tiny_string == 1) return; // var slice_ = this.slice(); @@ -289,9 +291,7 @@ pub fn endsWithAny(self: string, str: string) bool { return false; } -pub fn lastNonwhitespace(self: string, str: string) bool {} - -pub fn quotedAlloc(allocator: *std.mem.Allocator, self: string) !string { +pub fn quotedAlloc(allocator: std.mem.Allocator, self: string) !string { var count: usize = 0; for (self) |char| { count += @boolToInt(char == '"'); @@ -450,7 +450,6 @@ pub fn eqlLong(a_: string, b: string, comptime check_len: bool) bool { } if ((len & 2) != 0) { - const slice = b.ptr; if (@bitCast(u16, a[b_ptr..len][0..@sizeOf(u16)].*) != @bitCast(u16, b.ptr[b_ptr..len][0..@sizeOf(u16)].*)) return false; @@ -464,7 +463,7 @@ pub fn eqlLong(a_: string, b: string, comptime check_len: bool) bool { return true; } -pub inline fn append(allocator: *std.mem.Allocator, self: string, other: string) !string { +pub inline fn append(allocator: std.mem.Allocator, self: string, other: string) !string { return std.fmt.allocPrint(allocator, "{s}{s}", .{ self, other }); } @@ -494,7 +493,7 @@ pub fn eqlUtf16(comptime self: string, other: []const u16) bool { return std.mem.eql(u16, std.unicode.utf8ToUtf16LeStringLiteral(self), other); } -pub fn toUTF8Alloc(allocator: *std.mem.Allocator, js: []const u16) !string { +pub fn toUTF8Alloc(allocator: std.mem.Allocator, js: []const u16) !string { var temp: [4]u8 = undefined; var list = std.ArrayList(u8).initCapacity(allocator, js.len) catch unreachable; var i: usize = 0; @@ -759,15 +758,15 @@ pub fn containsNonBmpCodePointUTF16(_text: []const u16) bool { return false; } -pub fn join(slices: []const string, delimiter: string, allocator: *std.mem.Allocator) !string { +pub fn join(slices: []const string, delimiter: string, allocator: std.mem.Allocator) !string { return try std.mem.join(allocator, delimiter, slices); } -pub fn cmpStringsAsc(ctx: void, a: string, b: string) bool { +pub fn cmpStringsAsc(_: void, a: string, b: string) bool { return std.mem.order(u8, a, b) == .lt; } -pub fn cmpStringsDesc(ctx: void, a: string, b: string) bool { +pub fn cmpStringsDesc(_: void, a: string, b: string) bool { return std.mem.order(u8, a, b) == .gt; } @@ -944,7 +943,7 @@ pub const UnsignedCodepointIterator = NewCodePointIterator(u32, 0); pub fn NewLengthSorter(comptime Type: type, comptime field: string) type { return struct { const LengthSorter = @This(); - pub fn lessThan(context: LengthSorter, lhs: Type, rhs: Type) bool { + pub fn lessThan(_: LengthSorter, lhs: Type, rhs: Type) bool { return @field(lhs, field).len < @field(rhs, field).len; } }; diff --git a/src/string_mutable.zig b/src/string_mutable.zig index acbecba94..324b6661f 100644 --- a/src/string_mutable.zig +++ b/src/string_mutable.zig @@ -1,15 +1,18 @@ const std = @import("std"); const expect = std.testing.expect; -usingnamespace @import("string_types.zig"); const strings = @import("string_immutable.zig"); const js_lexer = @import("js_lexer.zig"); +const string = @import("string_types.zig").string; +const stringZ = @import("string_types.zig").stringZ; +const CodePoint = @import("string_types.zig").CodePoint; + pub const MutableString = struct { - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, list: std.ArrayListUnmanaged(u8), - pub fn init2048(allocator: *std.mem.Allocator) !MutableString { + pub fn init2048(allocator: std.mem.Allocator) !MutableString { return MutableString.init(allocator, 2048); } @@ -39,11 +42,11 @@ pub const MutableString = struct { return self.list.items.len; } - pub fn init(allocator: *std.mem.Allocator, capacity: usize) !MutableString { + pub fn init(allocator: std.mem.Allocator, capacity: usize) !MutableString { return MutableString{ .allocator = allocator, .list = try std.ArrayListUnmanaged(u8).initCapacity(allocator, capacity) }; } - pub fn initCopy(allocator: *std.mem.Allocator, str: anytype) !MutableString { + pub fn initCopy(allocator: std.mem.Allocator, str: anytype) !MutableString { var mutable = try MutableString.init(allocator, std.mem.len(str)); try mutable.copy(str); return mutable; @@ -53,7 +56,7 @@ pub const MutableString = struct { // identifier, you're going to potentially cause trouble with non-BMP code // points in target environments that don't support bracketed Unicode escapes. - pub fn ensureValidIdentifier(str: string, allocator: *std.mem.Allocator) !string { + pub fn ensureValidIdentifier(str: string, allocator: std.mem.Allocator) !string { if (str.len == 0) { return "_"; } @@ -90,8 +93,6 @@ pub const MutableString = struct { var mutable = try MutableString.initCopy(allocator, str[0..start_i]); needs_gap = false; - var i: usize = 0; - var slice = str[start_i..]; iterator = strings.CodepointIterator.init(slice); cursor = strings.CodepointIterator.Cursor{}; @@ -128,7 +129,7 @@ pub const MutableString = struct { } pub fn copy(self: *MutableString, str: anytype) !void { - try self.list.ensureCapacity(self.allocator, std.mem.len(str[0..])); + try self.list.ensureTotalCapacity(self.allocator, std.mem.len(str[0..])); if (self.list.items.len == 0) { try self.list.insertSlice(self.allocator, 0, str); diff --git a/src/sync.zig b/src/sync.zig index a64e6f49e..176853f26 100644 --- a/src/sync.zig +++ b/src/sync.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const system = std.system; // https://gist.github.com/kprotty/0d2dc3da4840341d6ff361b27bdac7dc pub const ThreadPool = struct { @@ -6,11 +7,11 @@ pub const ThreadPool = struct { spawned: usize = 0, run_queue: Queue, idle_semaphore: Semaphore, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, workers: []Worker = &[_]Worker{}, pub const InitConfig = struct { - allocator: ?*std.mem.Allocator = null, + allocator: ?std.mem.Allocator = null, max_threads: ?usize = null, var default_gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -54,13 +55,13 @@ pub const ThreadPool = struct { const Args = @TypeOf(args); const Closure = struct { func_args: Args, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, run_node: RunNode = .{ .data = .{ .runFn = runFn } }, fn runFn(runnable: *Runnable) void { const run_node = @fieldParentPtr(RunNode, "data", runnable); const closure = @fieldParentPtr(@This(), "run_node", run_node); - const result = @call(.{}, func, closure.func_args); + _ = @call(.{}, func, closure.func_args); closure.allocator.destroy(closure); } }; @@ -321,7 +322,7 @@ pub const ThreadPool = struct { return self.popFrom(.head); } - fn steal(self: *Queue, target: *Queue, mode: enum { fair, unfair }) ?*RunNode { + fn steal(_: *Queue, target: *Queue, mode: enum { fair, unfair }) ?*RunNode { return target.popFrom(switch (mode) { .fair => .tail, .unfair => .head, @@ -381,7 +382,7 @@ pub fn Channel( } }, .Dynamic => struct { - pub fn init(allocator: *std.mem.Allocator) Self { + pub fn init(allocator: std.mem.Allocator) Self { return Self.withBuffer(Buffer.init(allocator)); } }, @@ -520,16 +521,16 @@ pub fn Channel( }; } -pub const RwLock = if (std.builtin.os.tag != .windows and std.builtin.link_libc) +pub const RwLock = if (@import("builtin").os.tag != .windows and @import("builtin").link_libc) struct { - rwlock: if (std.builtin.os.tag != .windows) pthread_rwlock_t else void, + rwlock: if (@import("builtin").os.tag != .windows) pthread_rwlock_t else void, pub fn init() RwLock { return .{ .rwlock = PTHREAD_RWLOCK_INITIALIZER }; } pub fn deinit(self: *RwLock) void { - const safe_rc = switch (std.builtin.os.tag) { + const safe_rc = switch (@import("builtin").os.tag) { .dragonfly, .netbsd => std.os.EAGAIN, else => 0, }; @@ -569,12 +570,12 @@ pub const RwLock = if (std.builtin.os.tag != .windows and std.builtin.link_libc) } const PTHREAD_RWLOCK_INITIALIZER = pthread_rwlock_t{}; - const pthread_rwlock_t = switch (std.builtin.os.tag) { + 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, }, - .linux => switch (std.builtin.abi) { + .linux => switch (@import("builtin").abi) { .android => switch (@sizeOf(usize)) { 4 => extern struct { lock: std.c.pthread_mutex_t = std.c.PTHREAD_MUTEX_INITIALIZER, @@ -608,7 +609,7 @@ pub const RwLock = if (std.builtin.os.tag != .windows and std.builtin.link_libc) }, .netbsd => extern struct { ptr_magic: c_uint = 0x99990009, - ptr_interlock: switch (std.Target.current.cpu.arch) { + ptr_interlock: switch (@import("builtin").target.cpu.arch) { .aarch64, .sparc, .x86_64, .i386 => u8, .arm, .powerpc => c_int, else => unreachable, @@ -619,7 +620,7 @@ pub const RwLock = if (std.builtin.os.tag != .windows and std.builtin.link_libc) ptr_wblocked_last: ?*u8 = null, ptr_nreaders: c_uint = 0, ptr_owner: std.c.pthread_t = null, - ptr_private: ?*c_void = null, + ptr_private: ?*anyopaque = null, }, .haiku => extern struct { flags: u32 = 0, @@ -628,10 +629,10 @@ pub const RwLock = if (std.builtin.os.tag != .windows and std.builtin.link_libc) lock_count: i32 = 0, reader_count: i32 = 0, writer_count: i32 = 0, - waiters: [2]?*c_void = [_]?*c_void{ null, null }, + waiters: [2]?*anyopaque = [_]?*anyopaque{ null, null }, }, .kfreebsd, .freebsd, .openbsd => extern struct { - ptr: ?*c_void = null, + ptr: ?*anyopaque = null, }, .hermit => extern struct { ptr: usize = std.math.maxInt(usize), @@ -834,7 +835,7 @@ pub const Semaphore = struct { } }; -pub const Mutex = if (std.builtin.os.tag == .windows) +pub const Mutex = if (@import("builtin").os.tag == .windows) struct { srwlock: SRWLOCK, @@ -865,16 +866,16 @@ pub const Mutex = if (std.builtin.os.tag == .windows) extern "kernel32" fn AcquireSRWLockExclusive(s: *SRWLOCK) callconv(system.WINAPI) void; extern "kernel32" fn ReleaseSRWLockExclusive(s: *SRWLOCK) callconv(system.WINAPI) void; } -else if (std.builtin.link_libc) +else if (@import("builtin").link_libc) struct { - mutex: if (std.builtin.link_libc) std.c.pthread_mutex_t else void, + mutex: if (@import("builtin").link_libc) std.c.pthread_mutex_t else void, pub fn init() Mutex { return .{ .mutex = std.c.PTHREAD_MUTEX_INITIALIZER }; } pub fn deinit(self: *Mutex) void { - const safe_rc = switch (std.builtin.os.tag) { + const safe_rc = switch (@import("builtin").os.tag) { .dragonfly, .netbsd => std.os.EAGAIN, else => 0, }; @@ -901,7 +902,7 @@ else if (std.builtin.link_libc) extern "c" fn pthread_mutex_trylock(m: *std.c.pthread_mutex_t) callconv(.C) c_int; } -else if (std.builtin.os.tag == .linux) +else if (@import("builtin").os.tag == .linux) struct { state: State, @@ -1017,7 +1018,7 @@ else } }; -pub const Condvar = if (std.builtin.os.tag == .windows) +pub const Condvar = if (@import("builtin").os.tag == .windows) struct { cond: CONDITION_VARIABLE, @@ -1061,16 +1062,16 @@ pub const Condvar = if (std.builtin.os.tag == .windows) f: system.ULONG, ) callconv(system.WINAPI) system.BOOL; } -else if (std.builtin.link_libc) +else if (@import("builtin").link_libc) struct { - cond: if (std.builtin.link_libc) std.c.pthread_cond_t else void, + cond: if (@import("builtin").link_libc) std.c.pthread_cond_t else void, pub fn init() Condvar { return .{ .cond = std.c.PTHREAD_COND_INITIALIZER }; } pub fn deinit(self: *Condvar) void { - const safe_rc = switch (std.builtin.os.tag) { + const safe_rc = switch (@import("builtin").os.tag) { .dragonfly, .netbsd => std.os.EAGAIN, else => 0, }; @@ -1180,7 +1181,7 @@ else }; }; -const Futex = switch (std.builtin.os.tag) { +const Futex = switch (@import("builtin").os.tag) { .linux => struct { fn wait(ptr: *const i32, cmp: i32) void { switch (system.getErrno(system.futex_wait( @@ -1212,7 +1213,7 @@ const Futex = switch (std.builtin.os.tag) { }; fn spinLoopHint() void { - switch (std.builtin.cpu.arch) { + switch (@import("builtin").cpu.arch) { .i386, .x86_64 => asm volatile ("pause" ::: "memory"), .arm, .aarch64 => asm volatile ("yield" ::: "memory"), else => {}, diff --git a/src/tagged_pointer.zig b/src/tagged_pointer.zig index 0b75b0f29..bb094f6d5 100644 --- a/src/tagged_pointer.zig +++ b/src/tagged_pointer.zig @@ -1,5 +1,14 @@ const std = @import("std"); -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const TagSize = u15; const AddressableSize = u49; @@ -11,7 +20,7 @@ pub const TaggedPointer = packed struct { pub inline fn init(ptr: anytype, data: TagSize) TaggedPointer { const Ptr = @TypeOf(ptr); - if (comptime @typeInfo(Ptr) != .Pointer and Ptr != ?*c_void) { + if (comptime @typeInfo(Ptr) != .Pointer and Ptr != ?*anyopaque) { @compileError(@typeName(Ptr) ++ " must be a ptr, received: " ++ @tagName(@typeInfo(Ptr))); } @@ -31,13 +40,13 @@ pub const TaggedPointer = packed struct { const ValueType = @TypeOf(val); return switch (ValueType) { f64, i64, u64 => @bitCast(TaggedPointer, val), - ?*c_void, *c_void => @bitCast(TaggedPointer, @ptrToInt(val)), + ?*anyopaque, *anyopaque => @bitCast(TaggedPointer, @ptrToInt(val)), else => @compileError("Unsupported type: " ++ @typeName(ValueType)), }; } - pub inline fn to(this: TaggedPointer) *c_void { - return @intToPtr(*c_void, @bitCast(u64, this)); + pub inline fn to(this: TaggedPointer) *anyopaque { + return @intToPtr(*anyopaque, @bitCast(u64, this)); } }; @@ -94,7 +103,7 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { return this.repr.data == comptime @enumToInt(@field(Tag, @typeName(Type))); } - pub inline fn isValidPtr(_ptr: ?*c_void) bool { + pub inline fn isValidPtr(_ptr: ?*anyopaque) bool { return This.isValid(This.from(_ptr)); } @@ -109,11 +118,11 @@ pub fn TaggedPointerUnion(comptime Types: anytype) type { }; } - pub inline fn from(_ptr: ?*c_void) This { + pub inline fn from(_ptr: ?*anyopaque) This { return This{ .repr = TaggedPointer.from(_ptr) }; } - pub inline fn ptr(this: This) *c_void { + pub inline fn ptr(this: This) *anyopaque { return this.repr.to(); } diff --git a/src/test/tester.zig b/src/test/tester.zig index ac5ba57e5..84be7ddbb 100644 --- a/src/test/tester.zig +++ b/src/test/tester.zig @@ -12,9 +12,9 @@ const RESET = "\x1b[0m"; pub const Tester = struct { pass: std.ArrayList(Expectation), fail: std.ArrayList(Expectation), - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, - pub fn t(allocator: *std.mem.Allocator) Tester { + pub fn t(allocator: std.mem.Allocator) Tester { return Tester{ .allocator = allocator, .pass = std.ArrayList(Expectation).init(allocator), @@ -156,7 +156,7 @@ pub const Tester = struct { RESET, }) catch unreachable; std.fmt.format(stderr.writer(), RESET, .{}) catch unreachable; - std.testing.expect(false) catch std.debug.panic("Test failure", .{}); + std.testing.expect(false) catch std.debug.panic("Test failure in {s}: {s}:{d}:{d}", .{ src.fn_name, src.file, src.line, src.column }); }, } } diff --git a/src/walker_skippable.zig b/src/walker_skippable.zig index 3ce72889c..b52895b51 100644 --- a/src/walker_skippable.zig +++ b/src/walker_skippable.zig @@ -110,7 +110,7 @@ pub fn deinit(self: *Walker) void { /// `self` will not be closed after walking it. pub fn walk( self: Dir, - allocator: *Allocator, + allocator: Allocator, skip_filenames: []const []const u8, skip_dirnames: []const []const u8, ) !Walker { diff --git a/src/watcher.zig b/src/watcher.zig index f8de190bd..fc8ae5308 100644 --- a/src/watcher.zig +++ b/src/watcher.zig @@ -1,6 +1,18 @@ const Fs = @import("./fs.zig"); const std = @import("std"); -usingnamespace @import("global.zig"); +const _global = @import("global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const StoredFileDescriptorType = _global.StoredFileDescriptorType; +const FeatureFlags = _global.FeatureFlags; +const default_allocator = _global.default_allocator; +const C = _global.C; +const c = std.c; const options = @import("./options.zig"); const IndexType = @import("./allocators.zig").IndexType; @@ -15,8 +27,8 @@ const PackageJSON = @import("./resolver/package_json.zig").PackageJSON; const WATCHER_MAX_LIST = 8096; pub const INotify = struct { - pub const IN_CLOEXEC = std.os.O_CLOEXEC; - pub const IN_NONBLOCK = std.os.O_NONBLOCK; + pub const IN_CLOEXEC = std.os.O.CLOEXEC; + pub const IN_NONBLOCK = std.os.O.NONBLOCK; pub const IN_ACCESS = 0x00000001; pub const IN_MODIFY = 0x00000002; @@ -201,7 +213,7 @@ pub const WatchEvent = struct { pub const Sorter = void; - pub fn sortByIndex(context: Sorter, event: WatchEvent, rhs: WatchEvent) bool { + pub fn sortByIndex(_: Sorter, event: WatchEvent, rhs: WatchEvent) bool { return event.index < rhs.index; } @@ -218,10 +230,10 @@ pub const WatchEvent = struct { this.* = WatchEvent{ .op = Op{ - .delete = (kevent.fflags & std.os.NOTE_DELETE) > 0, - .metadata = (kevent.fflags & std.os.NOTE_ATTRIB) > 0, - .rename = (kevent.fflags & std.os.NOTE_RENAME) > 0, - .write = (kevent.fflags & std.os.NOTE_WRITE) > 0, + .delete = (kevent.fflags & std.c.NOTE_DELETE) > 0, + .metadata = (kevent.fflags & std.c.NOTE_ATTRIB) > 0, + .rename = (kevent.fflags & std.c.NOTE_RENAME) > 0, + .write = (kevent.fflags & std.c.NOTE_WRITE) > 0, }, .index = @truncate(WatchItemIndex, kevent.udata), }; @@ -270,7 +282,7 @@ pub fn NewWatcher(comptime ContextType: type) type { // this is what kqueue knows about fd: StoredFileDescriptorType, ctx: ContextType, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, watchloop_handle: ?std.Thread.Id = null, cwd: string, thread: std.Thread = undefined, @@ -283,7 +295,7 @@ pub fn NewWatcher(comptime ContextType: type) type { return @truncate(HashType, std.hash.Wyhash.hash(0, filepath)); } - pub fn init(ctx: ContextType, fs: *Fs.FileSystem, allocator: *std.mem.Allocator) !*Watcher { + pub fn init(ctx: ContextType, fs: *Fs.FileSystem, allocator: std.mem.Allocator) !*Watcher { var watcher = try allocator.create(Watcher); try PlatformWatcher.init(); @@ -324,14 +336,14 @@ pub fn NewWatcher(comptime ContextType: type) type { } var evict_list_i: WatchItemIndex = 0; - pub fn removeAtIndex(this: *Watcher, index: WatchItemIndex, hash: HashType, parents: []HashType, comptime kind: WatchItem.Kind) void { + pub fn removeAtIndex(_: *Watcher, index: WatchItemIndex, hash: HashType, parents: []HashType, comptime kind: WatchItem.Kind) void { std.debug.assert(index != NoWatchItem); evict_list[evict_list_i] = index; evict_list_i += 1; if (comptime kind == .directory) { - for (parents) |parent, i| { + for (parents) |parent| { if (parent == hash) { evict_list[evict_list_i] = @truncate(WatchItemIndex, parent); evict_list_i += 1; @@ -358,10 +370,9 @@ pub fn NewWatcher(comptime ContextType: type) type { var slice = this.watchlist.slice(); var fds = slice.items(.fd); - var event_list_ids = slice.items(.eventlist_index); var last_item = NoWatchItem; - for (evict_list[0..evict_list_i]) |item, i| { + for (evict_list[0..evict_list_i]) |item| { // catch duplicates, since the list is sorted, duplicates will appear right after each other if (item == last_item) continue; @@ -377,7 +388,7 @@ pub fn NewWatcher(comptime ContextType: type) type { last_item = NoWatchItem; // This is split into two passes because reading the slice while modified is potentially unsafe. - for (evict_list[0..evict_list_i]) |item, i| { + for (evict_list[0..evict_list_i]) |item| { if (item == last_item) continue; this.watchlist.swapRemove(item); last_item = item; @@ -385,8 +396,6 @@ pub fn NewWatcher(comptime ContextType: type) type { } fn _watchLoop(this: *Watcher) !void { - const time = std.time; - if (Environment.isMac) { std.debug.assert(DarwinWatcher.fd > 0); const KEvent = std.c.Kevent; @@ -514,11 +523,11 @@ pub fn NewWatcher(comptime ContextType: type) type { // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html var event = std.mem.zeroes(KEvent); - event.flags = os.EV_ADD | os.EV_CLEAR | os.EV_ENABLE; + event.flags = c.EV_ADD | c.EV_CLEAR | c.EV_ENABLE; // we want to know about the vnode - event.filter = std.os.EVFILT_VNODE; + event.filter = std.c.EVFILT_VNODE; - event.fflags = std.os.NOTE_WRITE | std.os.NOTE_RENAME | std.os.NOTE_DELETE; + event.fflags = std.c.NOTE_WRITE | std.c.NOTE_RENAME | std.c.NOTE_DELETE; // id event.ident = @intCast(usize, fd); @@ -580,8 +589,6 @@ pub fn NewWatcher(comptime ContextType: type) type { const parent_hash = Watcher.getHash(Fs.PathName.init(file_path).dirWithTrailingSlash()); var index: PlatformWatcher.EventListIndex = undefined; - const file_path_ptr = @intToPtr([*]const u8, @ptrToInt(file_path.ptr)); - const file_path_len = file_path.len; const file_path_: string = if (comptime copy_file_path) std.mem.span(try this.allocator.dupeZ(u8, file_path)) @@ -597,15 +604,15 @@ pub fn NewWatcher(comptime ContextType: type) type { // https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/kqueue.2.html var event = std.mem.zeroes(KEvent); - event.flags = os.EV_ADD | os.EV_CLEAR | os.EV_ENABLE; + event.flags = c.EV_ADD | c.EV_CLEAR | c.EV_ENABLE; // we want to know about the vnode - event.filter = std.os.EVFILT_VNODE; + event.filter = std.c.EVFILT_VNODE; // monitor: // - Write // - Rename // - Delete - event.fflags = std.os.NOTE_WRITE | std.os.NOTE_RENAME | std.os.NOTE_DELETE; + event.fflags = std.c.NOTE_WRITE | std.c.NOTE_RENAME | std.c.NOTE_DELETE; // id event.ident = @intCast(usize, fd); diff --git a/src/which.zig b/src/which.zig index 69377df63..558abc389 100644 --- a/src/which.zig +++ b/src/which.zig @@ -6,7 +6,6 @@ fn isValid(buf: *[std.fs.MAX_PATH_BYTES]u8, segment: []const u8, bin: []const u8 std.mem.copy(u8, buf[segment.len + 1 ..], bin); buf[segment.len + 1 + bin.len ..][0] = 0; const filepath = buf[0 .. segment.len + 1 + bin.len :0]; - var stat = std.mem.zeroes(std.os.Stat); // we cannot use access() here even though all we want to do now here is check it is executable // directories can be considered executable std.os.accessZ(filepath, std.os.X_OK) catch return null; diff --git a/src/which_npm_client.zig b/src/which_npm_client.zig index 777e717fa..e32fe61f8 100644 --- a/src/which_npm_client.zig +++ b/src/which_npm_client.zig @@ -1,4 +1,13 @@ -usingnamespace @import("./global.zig"); +const _global = @import("./global.zig"); +const string = _global.string; +const Output = _global.Output; +const Global = _global.Global; +const Environment = _global.Environment; +const strings = _global.strings; +const MutableString = _global.MutableString; +const stringZ = _global.stringZ; +const default_allocator = _global.default_allocator; +const C = _global.C; const std = @import("std"); @@ -9,6 +18,4 @@ pub const NPMClient = struct { pub const Tag = enum { bun, }; - - pub fn detect(allocator: *std.mem.Allocator, realpath_buf: *[std.fs.MAX_PATH_BYTES]u8, PATH: string, cwd: string, comptime allow_yarn: bool) !NPMClient {} }; diff --git a/src/zlib.zig b/src/zlib.zig index 67979972b..0ff2cfb7a 100644 --- a/src/zlib.zig +++ b/src/zlib.zig @@ -52,16 +52,16 @@ const charf = u8; const intf = c_int; const uIntf = uInt; const uLongf = uLong; -const voidpc = ?*const c_void; -const voidpf = ?*c_void; -const voidp = ?*c_void; +const voidpc = ?*const anyopaque; +const voidpf = ?*anyopaque; +const voidp = ?*anyopaque; const z_crc_t = c_uint; // typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); // typedef void (*free_func) OF((voidpf opaque, voidpf address)); -pub const z_alloc_fn = ?fn (*c_void, uInt, uInt) callconv(.C) voidpf; -pub const z_free_fn = ?fn (*c_void, *c_void) callconv(.C) void; +pub const z_alloc_fn = ?fn (*anyopaque, uInt, uInt) callconv(.C) voidpf; +pub const z_free_fn = ?fn (*anyopaque, *anyopaque) callconv(.C) void; pub const struct_internal_state = extern struct { dummy: c_int, @@ -113,7 +113,7 @@ pub const zStream_struct = extern struct { /// used to free the internal state free_func: z_free_fn, /// private data object passed to zalloc and zfree - user_data: *c_void, + user_data: *anyopaque, /// best guess about the data type: binary or text for deflate, or the decoding state for inflate data_type: DataType, @@ -236,18 +236,18 @@ pub fn NewZlibReader(comptime Writer: type, comptime buffer_size: usize) type { input: []const u8, buf: [buffer_size]u8, zlib: zStream_struct, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, arena: std.heap.ArenaAllocator, state: State = State.Uninitialized, - pub fn alloc(ctx: *c_void, items: uInt, len: uInt) callconv(.C) *c_void { + pub fn alloc(ctx: *anyopaque, items: uInt, len: uInt) callconv(.C) *anyopaque { var this = @ptrCast(*ZlibReader, @alignCast(@alignOf(*ZlibReader), ctx)); const buf = this.arena.allocator.alloc(u8, items * len) catch unreachable; return buf.ptr; } // we free manually all at once - pub fn free(ctx: *c_void, ptr: *c_void) callconv(.C) void {} + pub fn free(_: *anyopaque, _: *anyopaque) callconv(.C) void {} pub fn deinit(this: *ZlibReader) void { var allocator = this.allocator; @@ -263,7 +263,7 @@ pub fn NewZlibReader(comptime Writer: type, comptime buffer_size: usize) type { } } - pub fn init(writer: Writer, input: []const u8, allocator: *std.mem.Allocator) !*ZlibReader { + pub fn init(writer: Writer, input: []const u8, allocator: std.mem.Allocator) !*ZlibReader { var zlib_reader = try allocator.create(ZlibReader); zlib_reader.* = ZlibReader{ .context = writer, @@ -419,18 +419,18 @@ pub const ZlibReaderArrayList = struct { list: std.ArrayListUnmanaged(u8), list_ptr: *std.ArrayListUnmanaged(u8), zlib: zStream_struct, - allocator: *std.mem.Allocator, + allocator: std.mem.Allocator, arena: std.heap.ArenaAllocator, state: State = State.Uninitialized, - pub fn alloc(ctx: *c_void, items: uInt, len: uInt) callconv(.C) *c_void { + pub fn alloc(ctx: *anyopaque, items: uInt, len: uInt) callconv(.C) *anyopaque { var this = @ptrCast(*ZlibReader, @alignCast(@alignOf(*ZlibReader), ctx)); - const buf = this.arena.allocator.alloc(u8, items * len) catch unreachable; + const buf = this.allocator.alloc(u8, items * len) catch unreachable; return buf.ptr; } // we free manually all at once - pub fn free(ctx: *c_void, ptr: *c_void) callconv(.C) void {} + pub fn free(_: *anyopaque, _: *anyopaque) callconv(.C) void {} pub fn deinit(this: *ZlibReader) void { var allocator = this.allocator; @@ -446,7 +446,7 @@ pub const ZlibReaderArrayList = struct { } } - pub fn init(input: []const u8, list: *std.ArrayListUnmanaged(u8), allocator: *std.mem.Allocator) ZlibError!*ZlibReader { + pub fn init(input: []const u8, list: *std.ArrayListUnmanaged(u8), allocator: std.mem.Allocator) ZlibError!*ZlibReader { var zlib_reader = try allocator.create(ZlibReader); zlib_reader.* = ZlibReader{ .input = input, |