From b4db223d33e7a6433f367d5e649469c87d34acf7 Mon Sep 17 00:00:00 2001 From: bfredl Date: Thu, 1 Jan 2026 14:19:33 +0100 Subject: [PATCH] fix(build): treesitter parsers are not ReleaseSafe --- build.zig | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/build.zig b/build.zig index a7e31dd373..8ff2ab6958 100644 --- a/build.zig +++ b/build.zig @@ -141,10 +141,12 @@ pub fn build(b: *std.Build) !void { .target = target, .optimize = optimize, }) else null; + // TODO(bfredl): fix upstream bugs with UBSAN + const optimize_ts = .ReleaseFast; const treesitter = if (system_integration_options.tree_sitter) null else b.lazyDependency("treesitter", .{ .target = target, - .optimize = .ReleaseFast, + .optimize = optimize_ts, }); const nlua0 = try build_lua.build_nlua0( @@ -623,31 +625,31 @@ pub fn build(b: *std.Build) !void { xxd_exe.linkLibC(); test_deps.dependOn(&b.addInstallArtifact(xxd_exe, .{}).step); - const parser_c = b.dependency("treesitter_c", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize, .install)); + const parser_c = b.dependency("treesitter_c", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "c", parser_c.path("."), false, target, optimize_ts, .install)); - const parser_markdown = b.dependency("treesitter_markdown", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize, .install)); - test_deps.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize, .install)); + const parser_markdown = b.dependency("treesitter_markdown", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "markdown", parser_markdown.path("tree-sitter-markdown/"), true, target, optimize_ts, .install)); + test_deps.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "markdown_inline", parser_markdown.path("tree-sitter-markdown-inline/"), true, target, optimize_ts, .install)); - const parser_vim = b.dependency("treesitter_vim", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize, .install)); + const parser_vim = b.dependency("treesitter_vim", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "vim", parser_vim.path("."), true, target, optimize_ts, .install)); - const parser_vimdoc = b.dependency("treesitter_vimdoc", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize, .install)); + const parser_vimdoc = b.dependency("treesitter_vimdoc", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "vimdoc", parser_vimdoc.path("."), false, target, optimize_ts, .install)); - const parser_lua = b.dependency("treesitter_lua", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize, .install)); + const parser_lua = b.dependency("treesitter_lua", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "lua", parser_lua.path("."), true, target, optimize_ts, .install)); - const parser_query = b.dependency("treesitter_query", .{ .target = target, .optimize = optimize }); - test_deps.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize, .test_)); - install.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize, .install)); + const parser_query = b.dependency("treesitter_query", .{ .target = target, .optimize = optimize_ts }); + test_deps.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize_ts, .test_)); + install.dependOn(add_ts_parser(b, "query", parser_query.path("."), false, target, optimize_ts, .install)); var unit_headers: ?[]const LazyPath = null; if (support_unittests) {