zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 2129f28953b72da2f1bb58ff063a044d737c59c4 (tree)
parent 815e53b147a321d0bdb47dc008aa8181f57175ac
Author: Ryan Liptak <squeek502@hotmail.com>
Date:   Thu,  4 May 2023 18:15:50 -0700

Update all std.mem.split calls to their appropriate function

Everywhere that can now use `splitScalar` should get a nice little performance boost.

Diffstat:
Mbuild.zig | 6+++---
Mdoc/docgen.zig | 2+-
Mlib/std/Build/Step/Compile.zig | 2+-
Mlib/std/Build/Step/ConfigHeader.zig | 4++--
Mlib/std/SemanticVersion.zig | 10+++++-----
Mlib/std/builtin.zig | 2+-
Mlib/std/crypto/Certificate.zig | 4++--
Mlib/std/crypto/phc_encoding.zig | 9++++++---
Mlib/std/crypto/scrypt.zig | 2+-
Mlib/std/http/Client.zig | 2+-
Mlib/std/http/Server.zig | 2+-
Mlib/std/net.zig | 6+++---
Mlib/std/process.zig | 2+-
Mlib/std/zig/CrossTarget.zig | 12++++++------
Mlib/std/zig/ErrorBundle.zig | 2+-
Mlib/std/zig/render.zig | 2+-
Mlib/std/zig/system/NativeTargetInfo.zig | 2+-
Msrc/Autodoc.zig | 2+-
Msrc/Compilation.zig | 6+++---
Msrc/libc_installation.zig | 2+-
Msrc/link/MachO/Dylib.zig | 2+-
Msrc/main.zig | 16++++++++--------
Mtest/src/Cases.zig | 6+++---
Mtest/src/check-stack-trace.zig | 2+-
Mtools/gen_outline_atomics.zig | 2+-
Mtools/update_crc_catalog.zig | 2+-
Mtools/update_spirv_features.zig | 2+-
27 files changed, 58 insertions(+), 55 deletions(-)

diff --git a/build.zig b/build.zig @@ -239,7 +239,7 @@ pub fn build(b: *std.Build) !void { }, 2 => { // Untagged development build (e.g. 0.10.0-dev.2025+ecf0050a9). - var it = mem.split(u8, git_describe, "-"); + var it = mem.splitScalar(u8, git_describe, '-'); const tagged_ancestor = it.first(); const commit_height = it.next().?; const commit_id = it.next().?; @@ -859,14 +859,14 @@ fn parseConfigH(b: *std.Build, config_h_text: []const u8) ?CMakeConfig { while (lines_it.next()) |line| { inline for (mappings) |mapping| { if (mem.startsWith(u8, line, mapping.prefix)) { - var it = mem.split(u8, line, "\""); + var it = mem.splitScalar(u8, line, '"'); _ = it.first(); // skip the stuff before the quote const quoted = it.next().?; // the stuff inside the quote @field(ctx, mapping.field) = toNativePathSep(b, quoted); } } if (mem.startsWith(u8, line, "#define ZIG_LLVM_LINK_MODE ")) { - var it = mem.split(u8, line, "\""); + var it = mem.splitScalar(u8, line, '"'); _ = it.next().?; // skip the stuff before the quote const quoted = it.next().?; // the stuff inside the quote ctx.llvm_linkage = if (mem.eql(u8, quoted, "shared")) .dynamic else .static; diff --git a/doc/docgen.zig b/doc/docgen.zig @@ -1223,7 +1223,7 @@ fn printShell(out: anytype, shell_content: []const u8, escape: bool) !void { const trimmed_shell_content = mem.trim(u8, shell_content, " \n"); try out.writeAll("<figure><figcaption class=\"shell-cap\">Shell</figcaption><pre><samp>"); var cmd_cont: bool = false; - var iter = std.mem.split(u8, trimmed_shell_content, "\n"); + var iter = std.mem.splitScalar(u8, trimmed_shell_content, '\n'); while (iter.next()) |orig_line| { const line = mem.trimRight(u8, orig_line, " "); if (!cmd_cont and line.len > 1 and mem.eql(u8, line[0..2], "$ ") and line[line.len - 1] != '\\') { diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig @@ -2140,7 +2140,7 @@ fn checkCompileErrors(self: *Compile) !void { // Render the expected lines into a string that we can compare verbatim. var expected_generated = std.ArrayList(u8).init(arena); - var actual_line_it = mem.split(u8, actual_stderr, "\n"); + var actual_line_it = mem.splitScalar(u8, actual_stderr, '\n'); for (self.expect_errors) |expect_line| { const actual_line = actual_line_it.next() orelse { try expected_generated.appendSlice(expect_line); diff --git a/lib/std/Build/Step/ConfigHeader.zig b/lib/std/Build/Step/ConfigHeader.zig @@ -250,7 +250,7 @@ fn render_autoconf( var any_errors = false; var line_index: u32 = 0; - var line_it = std.mem.split(u8, contents, "\n"); + var line_it = std.mem.splitScalar(u8, contents, '\n'); while (line_it.next()) |line| : (line_index += 1) { if (!std.mem.startsWith(u8, line, "#")) { try output.appendSlice(line); @@ -297,7 +297,7 @@ fn render_cmake( var any_errors = false; var line_index: u32 = 0; - var line_it = std.mem.split(u8, contents, "\n"); + var line_it = std.mem.splitScalar(u8, contents, '\n'); while (line_it.next()) |line| : (line_index += 1) { if (!std.mem.startsWith(u8, line, "#")) { try output.appendSlice(line); diff --git a/lib/std/SemanticVersion.zig b/lib/std/SemanticVersion.zig @@ -42,8 +42,8 @@ pub fn order(lhs: Version, rhs: Version) std.math.Order { if (lhs.pre == null and rhs.pre != null) return .gt; // Iterate over pre-release identifiers until a difference is found. - var lhs_pre_it = std.mem.split(u8, lhs.pre.?, "."); - var rhs_pre_it = std.mem.split(u8, rhs.pre.?, "."); + var lhs_pre_it = std.mem.splitScalar(u8, lhs.pre.?, '.'); + var rhs_pre_it = std.mem.splitScalar(u8, rhs.pre.?, '.'); while (true) { const next_lid = lhs_pre_it.next(); const next_rid = rhs_pre_it.next(); @@ -86,7 +86,7 @@ pub fn parse(text: []const u8) !Version { // Parse the required major, minor, and patch numbers. const extra_index = std.mem.indexOfAny(u8, text, "-+"); const required = text[0..(extra_index orelse text.len)]; - var it = std.mem.split(u8, required, "."); + var it = std.mem.splitScalar(u8, required, '.'); var ver = Version{ .major = try parseNum(it.first()), .minor = try parseNum(it.next() orelse return error.InvalidVersion), @@ -108,7 +108,7 @@ pub fn parse(text: []const u8) !Version { // Check validity of optional pre-release identifiers. // See: https://semver.org/#spec-item-9 if (ver.pre) |pre| { - it = std.mem.split(u8, pre, "."); + it = std.mem.splitScalar(u8, pre, '.'); while (it.next()) |id| { // Identifiers MUST NOT be empty. if (id.len == 0) return error.InvalidVersion; @@ -127,7 +127,7 @@ pub fn parse(text: []const u8) !Version { // Check validity of optional build metadata identifiers. // See: https://semver.org/#spec-item-10 if (ver.build) |build| { - it = std.mem.split(u8, build, "."); + it = std.mem.splitScalar(u8, build, '.'); while (it.next()) |id| { // Identifiers MUST NOT be empty. if (id.len == 0) return error.InvalidVersion; diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig @@ -531,7 +531,7 @@ pub const Version = struct { // found no digits or '.' before unexpected character if (end == 0) return error.InvalidVersion; - var it = std.mem.split(u8, text[0..end], "."); + var it = std.mem.splitScalar(u8, text[0..end], '.'); // substring is not empty, first call will succeed const major = it.first(); if (major.len == 0) return error.InvalidVersion; diff --git a/lib/std/crypto/Certificate.zig b/lib/std/crypto/Certificate.zig @@ -337,8 +337,8 @@ pub const Parsed = struct { return true; // exact match } - var it_host = std.mem.split(u8, host_name, "."); - var it_dns = std.mem.split(u8, dns_name, "."); + var it_host = std.mem.splitScalar(u8, host_name, '.'); + var it_dns = std.mem.splitScalar(u8, dns_name, '.'); const len_match = while (true) { const host = it_host.next(); diff --git a/lib/std/crypto/phc_encoding.zig b/lib/std/crypto/phc_encoding.zig @@ -7,9 +7,12 @@ const mem = std.mem; const meta = std.meta; const fields_delimiter = "$"; +const fields_delimiter_scalar = '$'; const version_param_name = "v"; const params_delimiter = ","; +const params_delimiter_scalar = ','; const kv_delimiter = "="; +const kv_delimiter_scalar = '='; pub const Error = std.crypto.errors.EncodingError || error{NoSpaceLeft}; @@ -73,7 +76,7 @@ pub fn BinValue(comptime max_len: usize) type { /// Other fields will also be deserialized from the function parameters section. pub fn deserialize(comptime HashResult: type, str: []const u8) Error!HashResult { var out = mem.zeroes(HashResult); - var it = mem.split(u8, str, fields_delimiter); + var it = mem.splitScalar(u8, str, fields_delimiter_scalar); var set_fields: usize = 0; while (true) { @@ -104,7 +107,7 @@ pub fn deserialize(comptime HashResult: type, str: []const u8) Error!HashResult // Read optional parameters var has_params = false; - var it_params = mem.split(u8, field, params_delimiter); + var it_params = mem.splitScalar(u8, field, params_delimiter_scalar); while (it_params.next()) |params| { const param = kvSplit(params) catch break; var found = false; @@ -252,7 +255,7 @@ fn serializeTo(params: anytype, out: anytype) !void { // Split a `key=value` string into `key` and `value` fn kvSplit(str: []const u8) !struct { key: []const u8, value: []const u8 } { - var it = mem.split(u8, str, kv_delimiter); + var it = mem.splitScalar(u8, str, kv_delimiter_scalar); const key = it.first(); const value = it.next() orelse return Error.InvalidEncoding; const ret = .{ .key = key, .value = value }; diff --git a/lib/std/crypto/scrypt.zig b/lib/std/crypto/scrypt.zig @@ -287,7 +287,7 @@ const crypt_format = struct { out.r = try Codec.intDecode(u30, str[4..9]); out.p = try Codec.intDecode(u30, str[9..14]); - var it = mem.split(u8, str[14..], "$"); + var it = mem.splitScalar(u8, str[14..], '$'); const salt = it.first(); if (@hasField(T, "salt")) out.salt = salt; diff --git a/lib/std/http/Client.zig b/lib/std/http/Client.zig @@ -426,7 +426,7 @@ pub const Response = struct { } else if (std.ascii.eqlIgnoreCase(header_name, "transfer-encoding")) { // Transfer-Encoding: second, first // Transfer-Encoding: deflate, chunked - var iter = mem.splitBackwards(u8, header_value, ","); + var iter = mem.splitBackwardsScalar(u8, header_value, ','); if (iter.next()) |first| { const trimmed = mem.trim(u8, first, " "); diff --git a/lib/std/http/Server.zig b/lib/std/http/Server.zig @@ -277,7 +277,7 @@ pub const Request = struct { } else if (std.ascii.eqlIgnoreCase(header_name, "transfer-encoding")) { // Transfer-Encoding: second, first // Transfer-Encoding: deflate, chunked - var iter = mem.splitBackwards(u8, header_value, ","); + var iter = mem.splitBackwardsScalar(u8, header_value, ','); if (iter.next()) |first| { const trimmed = mem.trim(u8, first, " "); diff --git a/lib/std/net.zig b/lib/std/net.zig @@ -1263,7 +1263,7 @@ fn linuxLookupNameFromHosts( }, else => |e| return e, }) |line| { - var split_it = mem.split(u8, line, "#"); + var split_it = mem.splitScalar(u8, line, '#'); const no_comment_line = split_it.first(); var line_it = mem.tokenizeAny(u8, no_comment_line, " \t"); @@ -1465,7 +1465,7 @@ fn getResolvConf(allocator: mem.Allocator, rc: *ResolvConf) !void { else => |e| return e, }) |line| { const no_comment_line = no_comment_line: { - var split = mem.split(u8, line, "#"); + var split = mem.splitScalar(u8, line, '#'); break :no_comment_line split.first(); }; var line_it = mem.tokenizeAny(u8, no_comment_line, " \t"); @@ -1473,7 +1473,7 @@ fn getResolvConf(allocator: mem.Allocator, rc: *ResolvConf) !void { const token = line_it.next() orelse continue; if (mem.eql(u8, token, "options")) { while (line_it.next()) |sub_tok| { - var colon_it = mem.split(u8, sub_tok, ":"); + var colon_it = mem.splitScalar(u8, sub_tok, ':'); const name = colon_it.first(); const value_txt = colon_it.next() orelse continue; const value = std.fmt.parseInt(u8, value_txt, 10) catch |err| switch (err) { diff --git a/lib/std/process.zig b/lib/std/process.zig @@ -310,7 +310,7 @@ pub fn getEnvMap(allocator: Allocator) !EnvMap { for (environ) |env| { const pair = mem.sliceTo(env, 0); - var parts = mem.split(u8, pair, "="); + var parts = mem.splitScalar(u8, pair, '='); const key = parts.first(); const value = parts.rest(); try result.put(key, value); diff --git a/lib/std/zig/CrossTarget.zig b/lib/std/zig/CrossTarget.zig @@ -239,7 +239,7 @@ pub fn parse(args: ParseOptions) !CrossTarget { .dynamic_linker = DynamicLinker.init(args.dynamic_linker), }; - var it = mem.split(u8, args.arch_os_abi, "-"); + var it = mem.splitScalar(u8, args.arch_os_abi, '-'); const arch_name = it.first(); const arch_is_native = mem.eql(u8, arch_name, "native"); if (!arch_is_native) { @@ -257,7 +257,7 @@ pub fn parse(args: ParseOptions) !CrossTarget { const opt_abi_text = it.next(); if (opt_abi_text) |abi_text| { - var abi_it = mem.split(u8, abi_text, "."); + var abi_it = mem.splitScalar(u8, abi_text, '.'); const abi = std.meta.stringToEnum(Target.Abi, abi_it.first()) orelse return error.UnknownApplicationBinaryInterface; result.abi = abi; @@ -343,7 +343,7 @@ pub fn parse(args: ParseOptions) !CrossTarget { /// This is intended to be used if the API user of CrossTarget needs to learn the /// target CPU architecture in order to fully populate `ParseOptions`. pub fn parseCpuArch(args: ParseOptions) ?Target.Cpu.Arch { - var it = mem.split(u8, args.arch_os_abi, "-"); + var it = mem.splitScalar(u8, args.arch_os_abi, '-'); const arch_name = it.first(); const arch_is_native = mem.eql(u8, arch_name, "native"); if (arch_is_native) { @@ -645,7 +645,7 @@ pub fn updateCpuFeatures(self: CrossTarget, set: *Target.Cpu.Feature.Set) void { } fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const u8) !void { - var it = mem.split(u8, text, "."); + var it = mem.splitScalar(u8, text, '.'); const os_name = it.first(); diags.os_name = os_name; const os_is_native = mem.eql(u8, os_name, "native"); @@ -706,7 +706,7 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const .linux, .dragonfly, => { - var range_it = mem.split(u8, version_text, "..."); + var range_it = mem.splitFull(u8, version_text, "..."); const min_text = range_it.next().?; const min_ver = SemVer.parse(min_text) catch |err| switch (err) { @@ -726,7 +726,7 @@ fn parseOs(result: *CrossTarget, diags: *ParseOptions.Diagnostics, text: []const }, .windows => { - var range_it = mem.split(u8, version_text, "..."); + var range_it = mem.splitFull(u8, version_text, "..."); const min_text = range_it.first(); const min_ver = std.meta.stringToEnum(Target.Os.WindowsVersion, min_text) orelse diff --git a/lib/std/zig/ErrorBundle.zig b/lib/std/zig/ErrorBundle.zig @@ -294,7 +294,7 @@ fn renderErrorMessageToWriter( /// /// This is used to split the message in `@compileError("hello\nworld")` for example. fn writeMsg(eb: ErrorBundle, err_msg: ErrorMessage, stderr: anytype, indent: usize) !void { - var lines = std.mem.split(u8, eb.nullTerminatedString(err_msg.msg), "\n"); + var lines = std.mem.splitScalar(u8, eb.nullTerminatedString(err_msg.msg), '\n'); while (lines.next()) |line| { try stderr.writeAll(line); if (lines.index == null) break; diff --git a/lib/std/zig/render.zig b/lib/std/zig/render.zig @@ -1995,7 +1995,7 @@ fn renderArrayInit( if (!expr_newlines[i]) { try ais.writer().writeAll(expr_text); } else { - var by_line = std.mem.split(u8, expr_text, "\n"); + var by_line = std.mem.splitScalar(u8, expr_text, '\n'); var last_line_was_empty = false; try ais.writer().writeAll(by_line.first()); while (by_line.next()) |line| { diff --git a/lib/std/zig/system/NativeTargetInfo.zig b/lib/std/zig/system/NativeTargetInfo.zig @@ -556,7 +556,7 @@ fn glibcVerFromSoFile(file: fs.File) !std.builtin.Version { const dynstr_size = @intCast(usize, dynstr.size); const dynstr_bytes = buf[0..dynstr_size]; _ = try preadMin(file, dynstr_bytes, dynstr.offset, dynstr_bytes.len); - var it = mem.split(u8, dynstr_bytes, &.{0}); + var it = mem.splitScalar(u8, dynstr_bytes, 0); var max_ver: std.builtin.Version = .{ .major = 2, .minor = 2, .patch = 5 }; while (it.next()) |s| { if (mem.startsWith(u8, s, "GLIBC_2.")) { diff --git a/src/Autodoc.zig b/src/Autodoc.zig @@ -4951,7 +4951,7 @@ fn findGuidePaths(self: *Autodoc, file: *File, str: []const u8) ![]const u8 { // TODO: this algo is kinda inefficient - var it = std.mem.split(u8, str, "\n"); + var it = std.mem.splitScalar(u8, str, '\n'); while (it.next()) |line| { const trimmed_line = std.mem.trim(u8, line, " "); if (std.mem.startsWith(u8, trimmed_line, guide_prefix)) { diff --git a/src/Compilation.zig b/src/Compilation.zig @@ -4636,7 +4636,7 @@ pub fn hasSharedLibraryExt(filename: []const u8) bool { return true; } // Look for .so.X, .so.X.Y, .so.X.Y.Z - var it = mem.split(u8, filename, "."); + var it = mem.splitScalar(u8, filename, '.'); _ = it.first(); var so_txt = it.next() orelse return false; while (!mem.eql(u8, so_txt, "so")) { @@ -5016,14 +5016,14 @@ fn parseLldStderr(comp: *Compilation, comptime prefix: []const u8, stderr: []con defer context_lines.deinit(); var current_err: ?*LldError = null; - var lines = mem.split(u8, stderr, std.cstr.line_sep); + var lines = mem.splitFull(u8, stderr, std.cstr.line_sep); while (lines.next()) |line| { if (mem.startsWith(u8, line, prefix ++ ":")) { if (current_err) |err| { err.context_lines = try context_lines.toOwnedSlice(); } - var split = std.mem.split(u8, line, "error: "); + var split = std.mem.splitFull(u8, line, "error: "); _ = split.first(); const duped_msg = try std.fmt.allocPrint(comp.gpa, "{s}: {s}", .{ prefix, split.rest() }); diff --git a/src/libc_installation.zig b/src/libc_installation.zig @@ -63,7 +63,7 @@ pub const LibCInstallation = struct { var it = std.mem.tokenizeScalar(u8, contents, '\n'); while (it.next()) |line| { if (line.len == 0 or line[0] == '#') continue; - var line_it = std.mem.split(u8, line, "="); + var line_it = std.mem.splitScalar(u8, line, '='); const name = line_it.first(); const value = line_it.rest(); inline for (fields, 0..) |field, i| { diff --git a/src/link/MachO/Dylib.zig b/src/link/MachO/Dylib.zig @@ -91,7 +91,7 @@ pub const Id = struct { var out: u32 = 0; var values: [3][]const u8 = undefined; - var split = mem.split(u8, string, "."); + var split = mem.splitScalar(u8, string, '.'); var count: u4 = 0; while (split.next()) |value| { if (count > 2) { diff --git a/src/main.zig b/src/main.zig @@ -976,7 +976,7 @@ fn buildOutputType( } } else if (mem.eql(u8, arg, "--mod")) { const info = args_iter.nextOrFatal(); - var info_it = mem.split(u8, info, ":"); + var info_it = mem.splitScalar(u8, info, ':'); const mod_name = info_it.next() orelse fatal("expected non-empty argument after {s}", .{arg}); const deps_str = info_it.next() orelse fatal("expected 'name:deps:path' after {s}", .{arg}); const root_src_orig = info_it.rest(); @@ -1176,7 +1176,7 @@ fn buildOutputType( } else { if (build_options.omit_pkg_fetching_code) unreachable; // example: --listen 127.0.0.1:9000 - var it = std.mem.split(u8, next_arg, ":"); + var it = std.mem.splitScalar(u8, next_arg, ':'); const host = it.next().?; const port_text = it.next() orelse "14735"; const port = std.fmt.parseInt(u16, port_text, 10) catch |err| @@ -1673,7 +1673,7 @@ fn buildOutputType( }, .rdynamic => rdynamic = true, .wl => { - var split_it = mem.split(u8, it.only_arg, ","); + var split_it = mem.splitScalar(u8, it.only_arg, ','); while (split_it.next()) |linker_arg| { // Handle nested-joined args like `-Wl,-rpath=foo`. // Must be prefixed with 1 or 2 dashes. @@ -2183,17 +2183,17 @@ fn buildOutputType( const next_arg = linker_args_it.nextOrFatal(); try symbol_wrap_set.put(arena, next_arg, {}); } else if (mem.startsWith(u8, arg, "/subsystem:")) { - var split_it = mem.splitBackwards(u8, arg, ":"); + var split_it = mem.splitBackwardsScalar(u8, arg, ':'); subsystem = try parseSubSystem(split_it.first()); } else if (mem.startsWith(u8, arg, "/implib:")) { - var split_it = mem.splitBackwards(u8, arg, ":"); + var split_it = mem.splitBackwardsScalar(u8, arg, ':'); emit_implib = .{ .yes = split_it.first() }; emit_implib_arg_provided = true; } else if (mem.startsWith(u8, arg, "/pdb:")) { - var split_it = mem.splitBackwards(u8, arg, ":"); + var split_it = mem.splitBackwardsScalar(u8, arg, ':'); pdb_out_path = split_it.first(); } else if (mem.startsWith(u8, arg, "/version:")) { - var split_it = mem.splitBackwards(u8, arg, ":"); + var split_it = mem.splitBackwardsScalar(u8, arg, ':'); const version_arg = split_it.first(); version = std.builtin.Version.parse(version_arg) catch |err| { fatal("unable to parse /version '{s}': {s}", .{ arg, @errorName(err) }); @@ -3534,7 +3534,7 @@ const ModuleDepIterator = struct { split: mem.SplitIterator(u8, .scalar), fn init(deps_str: []const u8) ModuleDepIterator { - return .{ .split = mem.split(u8, deps_str, ",") }; + return .{ .split = mem.splitScalar(u8, deps_str, ',') }; } const Dependency = struct { diff --git a/test/src/Cases.zig b/test/src/Cases.zig @@ -877,7 +877,7 @@ const TestManifest = struct { if (trimmed.len == 0) break; // Parse key=value(s) - var kv_it = std.mem.split(u8, trimmed, "="); + var kv_it = std.mem.splitScalar(u8, trimmed, '='); const key = kv_it.first(); try manifest.config_map.putNoClobber(key, kv_it.next() orelse return error.MissingValuesForConfig); } @@ -895,7 +895,7 @@ const TestManifest = struct { ) ConfigValueIterator(T) { const bytes = self.config_map.get(key) orelse TestManifestConfigDefaults.get(self.type, key); return ConfigValueIterator(T){ - .inner = std.mem.split(u8, bytes, ","), + .inner = std.mem.splitScalar(u8, bytes, ','), }; } @@ -1399,7 +1399,7 @@ fn runOneCase( // Render the expected lines into a string that we can compare verbatim. var expected_generated = std.ArrayList(u8).init(arena); - var actual_line_it = std.mem.split(u8, actual_stderr.items, "\n"); + var actual_line_it = std.mem.splitScalar(u8, actual_stderr.items, '\n'); for (expected_errors) |expect_line| { const actual_line = actual_line_it.next() orelse { try expected_generated.appendSlice(expect_line); diff --git a/test/src/check-stack-trace.zig b/test/src/check-stack-trace.zig @@ -27,7 +27,7 @@ pub fn main() !void { var buf = std.ArrayList(u8).init(arena); defer buf.deinit(); if (stderr.len != 0 and stderr[stderr.len - 1] == '\n') stderr = stderr[0 .. stderr.len - 1]; - var it = mem.split(u8, stderr, "\n"); + var it = mem.splitScalar(u8, stderr, '\n'); process_lines: while (it.next()) |line| { if (line.len == 0) continue; diff --git a/tools/gen_outline_atomics.zig b/tools/gen_outline_atomics.zig @@ -88,7 +88,7 @@ fn writeFunction( \\ asm volatile ( \\ ); - var iter = std.mem.split(u8, body, "\n"); + var iter = std.mem.splitScalar(u8, body, '\n'); while (iter.next()) |line| { try w.writeAll(" \\\\"); try w.writeAll(line); diff --git a/tools/update_crc_catalog.zig b/tools/update_crc_catalog.zig @@ -78,7 +78,7 @@ pub fn main() anyerror!void { var residue: []const u8 = undefined; var name: []const u8 = undefined; - var it = mem.split(u8, line, " "); + var it = mem.splitFull(u8, line, " "); while (it.next()) |property| { const i = mem.indexOf(u8, property, "=").?; const key = property[0..i]; diff --git a/tools/update_spirv_features.zig b/tools/update_spirv_features.zig @@ -19,7 +19,7 @@ const Version = struct { minor: u32, fn parse(str: []const u8) !Version { - var it = std.mem.split(u8, str, "."); + var it = std.mem.splitScalar(u8, str, '.'); const major = it.first(); const minor = it.next() orelse return error.InvalidVersion;