aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json2
-rw-r--r--Makefile8
-rw-r--r--README.md32
-rw-r--r--build.zig108
-rwxr-xr-xbun.lockbbin7340 -> 7548 bytes
-rw-r--r--integration/snapshots/caught-require.debug.js30
-rw-r--r--integration/snapshots/caught-require.hmr.debug.js50
-rw-r--r--integration/snapshots/jsx-entities.debug.jsx2
-rw-r--r--integration/snapshots/number-literal-bug.debug.js9
-rw-r--r--integration/snapshots/optional-chain-with-function.debug.js6
-rw-r--r--integration/snapshots/template-literal.debug.js37
-rw-r--r--integration/snapshots/unicode-identifiers.debug.js4
-rw-r--r--integration/snapshots/unicode-identifiers.hmr.debug.js4
-rw-r--r--misctools/features.zig11
-rw-r--r--misctools/fetch.zig17
-rw-r--r--misctools/headers-cleaner.zig100
-rw-r--r--misctools/http_bench.zig37
-rw-r--r--misctools/readlink-getfd.zig11
-rw-r--r--misctools/readlink-realpath.zig11
-rw-r--r--misctools/tgz.zig11
-rw-r--r--package.json2
-rw-r--r--src/allocators.zig122
-rw-r--r--src/allocators/mimalloc.zig561
-rw-r--r--src/analytics/analytics_schema.zig6
-rw-r--r--src/analytics/analytics_thread.zig31
-rw-r--r--src/api/schema.zig6
-rw-r--r--src/ast/base.zig12
-rw-r--r--src/blob.zig23
-rw-r--r--src/builder.zig2
-rw-r--r--src/bun_js.zig17
-rw-r--r--src/bun_queue.zig62
-rw-r--r--src/bundler.zig130
-rw-r--r--src/c.zig49
-rw-r--r--src/cache.zig56
-rw-r--r--src/cli.zig65
-rw-r--r--src/cli/add_completions.zig3
-rw-r--r--src/cli/build_command.zig35
-rw-r--r--src/cli/bun_command.zig13
-rw-r--r--src/cli/colon_list_type.zig15
-rw-r--r--src/cli/create_command.zig47
-rw-r--r--src/cli/discord_command.zig13
-rw-r--r--src/cli/install_completions_command.zig44
-rw-r--r--src/cli/package_manager_command.zig2
-rw-r--r--src/cli/run_command.zig20
-rw-r--r--src/cli/shell_completions.zig11
-rw-r--r--src/cli/upgrade_command.zig27
-rw-r--r--src/copy_file.zig4
-rw-r--r--src/css_scanner.zig43
-rw-r--r--src/darwin_c.zig22
-rw-r--r--src/defines-table.zig11
-rw-r--r--src/defines.zig31
-rw-r--r--src/deps/boringssl.translated.zig1161
m---------src/deps/mimalloc0
-rw-r--r--src/deps/picohttp.zig12
-rw-r--r--src/deps/zig-clap/clap.zig8
-rw-r--r--src/deps/zig-clap/clap/args.zig8
-rw-r--r--src/deps/zig-clap/clap/comptime.zig2
-rw-r--r--src/env.zig23
-rw-r--r--src/env_loader.zig35
-rw-r--r--src/exact_size_matcher.zig2
-rw-r--r--src/exports.zig43
-rw-r--r--src/fallback.version2
-rw-r--r--src/feature_flags.zig4
-rw-r--r--src/fs.zig82
-rw-r--r--src/futex.zig10
-rw-r--r--src/global.zig53
-rw-r--r--src/hash_map.zig58
-rw-r--r--src/http.zig190
-rw-r--r--src/http/method.zig11
-rw-r--r--src/http/mime_type.zig11
-rw-r--r--src/http/url_path.zig14
-rw-r--r--src/http/websocket.zig44
-rw-r--r--src/http_client_async.zig105
-rw-r--r--src/identity_context.zig8
-rw-r--r--src/import_record.zig2
-rw-r--r--src/install/bin.zig1
-rw-r--r--src/install/bit_set.zig18
-rw-r--r--src/install/dependency.zig6
-rw-r--r--src/install/extract_tarball.zig2
-rw-r--r--src/install/install.zig219
-rw-r--r--src/install/integrity.zig4
-rw-r--r--src/install/npm.zig24
-rw-r--r--src/install/repository.zig2
-rw-r--r--src/install/resolvers/folder_resolver.zig6
-rw-r--r--src/install/semver.zig48
-rw-r--r--src/io/io_darwin.zig55
-rw-r--r--src/io/io_linux.zig28
-rw-r--r--src/io/time.zig6
-rw-r--r--src/javascript/jsc/api/router.zig111
-rw-r--r--src/javascript/jsc/base.zig124
-rw-r--r--src/javascript/jsc/bindings/ZigGlobalObject.cpp185
-rw-r--r--src/javascript/jsc/bindings/bindings-generator.zig4
-rw-r--r--src/javascript/jsc/bindings/bindings.zig43
-rw-r--r--src/javascript/jsc/bindings/exports.zig205
-rw-r--r--src/javascript/jsc/bindings/header-gen.zig27
-rw-r--r--src/javascript/jsc/bindings/headers-cpp.h2
-rw-r--r--src/javascript/jsc/bindings/headers-replacements.zig5
-rw-r--r--src/javascript/jsc/bindings/headers.h9
-rw-r--r--src/javascript/jsc/bindings/headers.zig85
-rw-r--r--src/javascript/jsc/bindings/shared.zig9
-rw-r--r--src/javascript/jsc/bindings/shimmer.zig19
-rw-r--r--src/javascript/jsc/config.zig15
-rw-r--r--src/javascript/jsc/javascript.zig340
-rw-r--r--src/javascript/jsc/javascript_core_c_api.zig (renamed from src/javascript/jsc/JavascriptCore.zig)50
-rw-r--r--src/javascript/jsc/typescript.zig5
-rw-r--r--src/javascript/jsc/webcore/response.zig324
-rw-r--r--src/js_ast.zig1100
-rw-r--r--src/js_lexer.zig55
-rw-r--r--src/js_lexer/identifier.zig4
-rw-r--r--src/js_lexer/identifier_cache.zig2
-rw-r--r--src/js_lexer_tables.zig8
-rw-r--r--src/js_parser/imports.zig47
-rw-r--r--src/js_parser/js_parser.zig1265
-rw-r--r--src/js_printer.zig178
-rw-r--r--src/jsc.zig7
-rw-r--r--src/json_parser.zig67
-rw-r--r--src/libarchive/libarchive-bindings.zig85
-rw-r--r--src/libarchive/libarchive.zig128
-rw-r--r--src/linker.zig87
-rw-r--r--src/lock.zig2
-rw-r--r--src/logger.zig65
-rw-r--r--src/main.zig15
-rw-r--r--src/main_javascript.zig422
-rw-r--r--src/main_wasi.zig107
-rw-r--r--src/main_wasm.zig305
-rw-r--r--src/memory_allocator.zig92
-rw-r--r--src/network_thread.zig (renamed from src/http/network_thread.zig)19
-rw-r--r--src/node_module_bundle.zig71
-rw-r--r--src/open.zig15
-rw-r--r--src/options.zig125
-rw-r--r--src/panic_handler.zig11
-rw-r--r--src/pool.zig4
-rw-r--r--src/query_string_map.zig26
-rw-r--r--src/renamer.zig18
-rw-r--r--src/resolver/data_url.zig53
-rw-r--r--src/resolver/dir_info.zig17
-rw-r--r--src/resolver/package_json.zig38
-rw-r--r--src/resolver/resolve_path.zig117
-rw-r--r--src/resolver/resolver.zig80
-rw-r--r--src/resolver/tsconfig_json.zig25
-rw-r--r--src/router.zig60
-rw-r--r--src/runtime.version2
-rw-r--r--src/runtime.zig31
-rw-r--r--src/string_builder.zig4
-rw-r--r--src/string_immutable.zig25
-rw-r--r--src/string_mutable.zig19
-rw-r--r--src/sync.zig53
-rw-r--r--src/tagged_pointer.zig25
-rw-r--r--src/test/tester.zig6
-rw-r--r--src/walker_skippable.zig2
-rw-r--r--src/watcher.zig57
-rw-r--r--src/which.zig1
-rw-r--r--src/which_npm_client.zig13
-rw-r--r--src/zlib.zig30
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"
},
diff --git a/Makefile b/Makefile
index 53a476516..55c932fae 100644
--- a/Makefile
+++ b/Makefile
@@ -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
diff --git a/README.md b/README.md
index 779ce58b9..4104a1381 100644
--- a/README.md
+++ b/README.md
@@ -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)
diff --git a/build.zig b/build.zig
index 84abf5428..d3dbe0a9e 100644
--- a/build.zig
+++ b/build.zig
@@ -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| {
diff --git a/bun.lockb b/bun.lockb
index 119c3bb0f..f25c8b35d 100755
--- a/bun.lockb
+++ b/bun.lockb
Binary files differ
diff --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, &params, .{
@@ -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, &params, .{
@@ -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,
diff --git a/src/c.zig b/src/c.zig
index b5027196a..f3b56fe1b 100644
--- a/src/c.zig
+++ b/src/c.zig
@@ -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, &params, .{
@@ -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, &params, .{ .allocator = ctx.allocator }) catch |err| {
+ var jsBundleArgs = clap.parse(clap.Help, &params, .{ .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, &regex_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, &params, .{ .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(), &params);
- 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(), &params);
- 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,