Rename skip32 to skip_u32
diff --git a/internal/cgen/builtin.go b/internal/cgen/builtin.go
index debf53c..f028724 100644
--- a/internal/cgen/builtin.go
+++ b/internal/cgen/builtin.go
@@ -199,7 +199,7 @@
 			iopPrefix, name, io0Prefix, name, io0Prefix, name)
 		return nil
 
-	case t.IDSkip32Fast:
+	case t.IDSkipU32Fast:
 		// Generate a two part expression using the comma operator: "(pointer
 		// increment, return_empty_struct call)". The final part is a function
 		// call (to a static inline function) instead of a struct literal, to
@@ -640,7 +640,7 @@
 			b.printf(" = *iop_a_src++;\n")
 			return nil
 
-		case t.IDSkip, t.IDSkip32:
+		case t.IDSkip, t.IDSkipU32:
 			x := n.Args()[0].AsArg().Value()
 			if cv := x.ConstValue(); cv != nil && cv.Cmp(one) == 0 {
 				if err := g.writeCoroSuspPoint(b, false); err != nil {
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 6dd1183..b2fddb1 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -228,7 +228,7 @@
 	// TODO: these should have an explicit pre-condition "available() >= N".
 	// For now, that's implicitly checked (i.e. hard coded).
 	//
-	// The io_reader has peek_etc methods and skip_fast, not read_etc_fast,
+	// io_reader has peek_etc methods and skip_u32_fast, not read_etc_fast,
 	// because we sometimes advance the pointer by less than what's read. See
 	// https://fgiesen.wordpress.com/2018/02/20/reading-bits-in-far-too-many-ways-part-2/
 
@@ -276,13 +276,13 @@
 	"io_reader.take!(n: u64) slice u8",
 
 	"io_reader.skip?(n: u64)",
-	"io_reader.skip32?(n: u32)",
+	"io_reader.skip_u32?(n: u32)",
 
 	// TODO: this should have explicit pre-conditions "actual <= worst_case"
 	// and "worst_case <= available()". As an implementation restriction, we
 	// also require that worst_case has a constant value. For now, that's all
 	// implicitly checked (i.e. hard coded).
-	"io_reader.skip32_fast!(actual: u32, worst_case: u32)",
+	"io_reader.skip_u32_fast!(actual: u32, worst_case: u32)",
 
 	// ---- io_writer
 
@@ -305,8 +305,8 @@
 	// TODO: these should have an explicit pre-condition "available() >= N".
 	// For now, that's implicitly checked (i.e. hard coded).
 	//
-	// The io_writer has write_etc_fast methods, not poke_etc and skip_fast,
-	// because skip_fast could leave uninitialized bytes in the io_buffer.
+	// io_writer has write_etc_fast methods, not poke_etc and skip_u32_fast,
+	// because skip_u32_fast could leave uninitialized bytes in the io_buffer.
 	"io_writer.write_u8_fast!(a: u8)",
 	"io_writer.write_u16be_fast!(a: u16)",
 	"io_writer.write_u16le_fast!(a: u16)",
diff --git a/lang/check/bounds.go b/lang/check/bounds.go
index 80d9bd9..8771cef 100644
--- a/lang/check/bounds.go
+++ b/lang/check/bounds.go
@@ -1024,7 +1024,7 @@
 				return bounds{}, err
 			}
 
-		} else if method == t.IDSkip32Fast {
+		} else if method == t.IDSkipU32Fast {
 			args := n.Args()
 			if len(args) != 2 {
 				return bounds{}, fmt.Errorf("check: internal error: bad skip_fast arguments")
diff --git a/lang/token/list.go b/lang/token/list.go
index 28e9cde..5343025 100644
--- a/lang/token/list.go
+++ b/lang/token/list.go
@@ -513,8 +513,8 @@
 	IDPosition         = ID(0x168)
 	IDSince            = ID(0x169)
 	IDSkip             = ID(0x16A)
-	IDSkip32           = ID(0x16B)
-	IDSkip32Fast       = ID(0x16C)
+	IDSkipU32          = ID(0x16B)
+	IDSkipU32Fast      = ID(0x16C)
 	IDTake             = ID(0x16D)
 
 	IDCopyFromSlice                 = ID(0x170)
@@ -874,8 +874,8 @@
 	IDPosition:         "position",
 	IDSince:            "since",
 	IDSkip:             "skip",
-	IDSkip32:           "skip32",
-	IDSkip32Fast:       "skip32_fast",
+	IDSkipU32:          "skip_u32",
+	IDSkipU32Fast:      "skip_u32_fast",
 	IDTake:             "take",
 
 	IDCopyFromSlice:                 "copy_from_slice",
diff --git a/std/bmp/decode_bmp.wuffs b/std/bmp/decode_bmp.wuffs
index 61b5852..28311da 100644
--- a/std/bmp/decode_bmp.wuffs
+++ b/std/bmp/decode_bmp.wuffs
@@ -82,7 +82,7 @@
 		return "#bad header"
 	}
 
-	args.src.skip32?(n: 8)
+	args.src.skip_u32?(n: 8)
 
 	this.padding = args.src.read_u32le?()
 	if this.padding < 14 {
@@ -161,7 +161,7 @@
 	// We've already read 20 bytes from the BITMAPINFOHEADER: size (4), width
 	// (4), height (4), planes (2), bpp (2), compression (4). Skip the rest of
 	// the version 3 BITMAPINFOHEADER (whose total size is 40).
-	args.src.skip32?(n: 40 - 20)
+	args.src.skip_u32?(n: 40 - 20)
 
 	if bitmap_info_len >= 108 {
 		this.mask_r = args.src.read_u32le?()
@@ -181,7 +181,7 @@
 
 		// Skip the rest of the BITMAPINFOHEADER. We've already read (40 + (4 *
 		// 4)) bytes.
-		args.src.skip32?(n: bitmap_info_len - 56)
+		args.src.skip_u32?(n: bitmap_info_len - 56)
 	}
 
 	if compression <> 0 {
@@ -252,7 +252,7 @@
 		return base."@end of data"
 	}
 
-	args.src.skip32?(n: this.padding)
+	args.src.skip_u32?(n: this.padding)
 
 	if (this.width > 0) and (this.height > 0) {
 		this.dst_x = 0
@@ -419,7 +419,7 @@
 }
 
 pri func decoder.skip_frame?(src: base.io_reader) {
-	args.src.skip32?(n: this.padding)
+	args.src.skip_u32?(n: this.padding)
 	args.src.skip?(n: this.bytes_total)
 
 	this.call_sequence = 3
diff --git a/std/deflate/decode_huffman_fast.wuffs b/std/deflate/decode_huffman_fast.wuffs
index 53c046a..b57cb9f 100644
--- a/std/deflate/decode_huffman_fast.wuffs
+++ b/std/deflate/decode_huffman_fast.wuffs
@@ -75,10 +75,10 @@
 		if n_bits < 15 {
 			assert n_bits >= 0  // TODO: this shouldn't be necessary.
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			assert n_bits >= 15
 		} else {
@@ -114,10 +114,10 @@
 			if n_bits < 15 {
 				assert n_bits >= 0  // TODO: this shouldn't be necessary.
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				assert n_bits >= 15
 			} else {
@@ -172,10 +172,10 @@
 			if n_bits < 15 {
 				assert n_bits >= 0  // TODO: this shouldn't be necessary.
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				assert n_bits >= 15
 			} else {
@@ -199,10 +199,10 @@
 		if n_bits < 15 {
 			assert n_bits >= 0  // TODO: this shouldn't be necessary.
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			assert n_bits >= 15
 		} else {
@@ -224,10 +224,10 @@
 			if n_bits < 15 {
 				assert n_bits >= 0  // TODO: this shouldn't be necessary.
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				assert n_bits >= 15
 			} else {
@@ -268,10 +268,10 @@
 			assert n_bits < 15 via "a < b: a < c; c <= b"(c: table_entry_n_bits)
 			assert n_bits >= 0  // TODO: this shouldn't be necessary.
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			bits |= args.src.peek_u8_as_u32() << n_bits
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			n_bits += 8
 			assert table_entry_n_bits <= n_bits via "a <= b: a <= c; c <= b"(c: 16)
 			assert n_bits >= table_entry_n_bits via "a >= b: b <= a"()
diff --git a/std/gif/decode_config.wuffs b/std/gif/decode_config.wuffs
index 0061d00..aac04d8 100644
--- a/std/gif/decode_config.wuffs
+++ b/std/gif/decode_config.wuffs
@@ -215,7 +215,7 @@
 		chunk_length = args.src.peek_u8_as_u64()
 		if chunk_length <= 0 {
 			// Consume the '\x00' that means a zero-length block.
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			break
 		}
 
@@ -225,7 +225,7 @@
 			// metadata passed to the caller.
 			chunk_length += 1
 		} else {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		}
 		this.metadata_io_position = args.src.position() ~sat+ chunk_length
 
@@ -364,7 +364,7 @@
 	// Skip the optional Local Color Table, 3 bytes (RGB) per entry.
 	flags = args.src.read_u8?()
 	if (flags & 0x80) <> 0 {
-		args.src.skip32?(n: (3 as base.u32) << (1 + (flags & 0x07)))
+		args.src.skip_u32?(n: (3 as base.u32) << (1 + (flags & 0x07)))
 	}
 
 	// Process the LZW literal width.
@@ -479,7 +479,7 @@
 	flags = args.src.read_u8?()
 	background_color_index = args.src.read_u8?()
 	// Ignore the Pixel Aspect Ratio byte.
-	args.src.skip32?(n: 1)
+	args.src.skip_u32?(n: 1)
 
 	// Read the optional Global Color Table.
 	i = 0
@@ -561,7 +561,7 @@
 		if block_size == 0 {
 			return ok
 		}
-		args.src.skip32?(n: block_size as base.u32)
+		args.src.skip_u32?(n: block_size as base.u32)
 	} endwhile
 }
 
@@ -591,7 +591,7 @@
 	//
 	// Other extensions include XMP metadata.
 	if block_size <> 11 {
-		args.src.skip32?(n: block_size as base.u32)
+		args.src.skip_u32?(n: block_size as base.u32)
 		break.goto_done
 	}
 	is_animexts = true
@@ -613,12 +613,12 @@
 		// count.
 		block_size = args.src.read_u8?()
 		if block_size <> 3 {
-			args.src.skip32?(n: block_size as base.u32)
+			args.src.skip_u32?(n: block_size as base.u32)
 			break.goto_done
 		}
 		c = args.src.read_u8?()
 		if c <> 0x01 {
-			args.src.skip32?(n: 2)
+			args.src.skip_u32?(n: 2)
 			break.goto_done
 		}
 		this.num_loops = args.src.read_u16le_as_u32?()
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 235a167..4b049cc 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -254,7 +254,7 @@
 		chunk_length = args.src.peek_u8_as_u64()
 		if chunk_length <= 0 {
 			// Consume the '\x00' that means a zero-length block.
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			break
 		}
 
@@ -264,7 +264,7 @@
 			// metadata passed to the caller.
 			chunk_length += 1
 		} else {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		}
 		this.metadata_io_position = args.src.position() ~sat+ chunk_length
 
@@ -423,7 +423,7 @@
 	// Skip the optional Local Color Table, 3 bytes (RGB) per entry.
 	flags = args.src.read_u8?()
 	if (flags & 0x80) <> 0 {
-		args.src.skip32?(n: (3 as base.u32) << (1 + (flags & 0x07)))
+		args.src.skip_u32?(n: (3 as base.u32) << (1 + (flags & 0x07)))
 	}
 
 	// Process the LZW literal width.
@@ -554,7 +554,7 @@
 	flags = args.src.read_u8?()
 	background_color_index = args.src.read_u8?()
 	// Ignore the Pixel Aspect Ratio byte.
-	args.src.skip32?(n: 1)
+	args.src.skip_u32?(n: 1)
 
 	// Read the optional Global Color Table.
 	i = 0
@@ -636,7 +636,7 @@
 		if block_size == 0 {
 			return ok
 		}
-		args.src.skip32?(n: block_size as base.u32)
+		args.src.skip_u32?(n: block_size as base.u32)
 	} endwhile
 }
 
@@ -666,7 +666,7 @@
 	//
 	// Other extensions include XMP metadata.
 	if block_size <> 11 {
-		args.src.skip32?(n: block_size as base.u32)
+		args.src.skip_u32?(n: block_size as base.u32)
 		break.goto_done
 	}
 	is_animexts = true
@@ -688,12 +688,12 @@
 		// count.
 		block_size = args.src.read_u8?()
 		if block_size <> 3 {
-			args.src.skip32?(n: block_size as base.u32)
+			args.src.skip_u32?(n: block_size as base.u32)
 			break.goto_done
 		}
 		c = args.src.read_u8?()
 		if c <> 0x01 {
-			args.src.skip32?(n: 2)
+			args.src.skip_u32?(n: 2)
 			break.goto_done
 		}
 		this.num_loops = args.src.read_u16le_as_u32?()
@@ -966,7 +966,7 @@
 				break
 			}
 			block_size = args.src.peek_u8_as_u64()
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		} endwhile
 
 		while.inner true {
@@ -993,7 +993,7 @@
 
 				// Skip any trailing blocks.
 				if need_block_size or (block_size > 0) {
-					args.src.skip32?(n: block_size as base.u32)
+					args.src.skip_u32?(n: block_size as base.u32)
 					this.skip_blocks?(src: args.src)
 				}
 
diff --git a/std/gzip/decode_gzip.wuffs b/std/gzip/decode_gzip.wuffs
index df4f90d..e8e5ce1 100644
--- a/std/gzip/decode_gzip.wuffs
+++ b/std/gzip/decode_gzip.wuffs
@@ -71,12 +71,12 @@
 	}
 	flags = args.src.read_u8?()
 	// TODO: API for returning the header's MTIME field.
-	args.src.skip32?(n: 6)
+	args.src.skip_u32?(n: 6)
 
 	// Handle FEXTRA.
 	if (flags & 0x04) <> 0 {
 		xlen = args.src.read_u16le?()
-		args.src.skip32?(n: xlen as base.u32)
+		args.src.skip_u32?(n: xlen as base.u32)
 	}
 
 	// Handle FNAME.
@@ -105,7 +105,7 @@
 
 	// Handle FHCRC.
 	if (flags & 0x02) <> 0 {
-		args.src.skip32?(n: 2)
+		args.src.skip_u32?(n: 2)
 	}
 
 	// Reserved flags bits must be zero.
diff --git a/std/json/decode_json.wuffs b/std/json/decode_json.wuffs
index f3b9d7e..1782182 100644
--- a/std/json/decode_json.wuffs
+++ b/std/json/decode_json.wuffs
@@ -160,7 +160,7 @@
 			if class <> CLASS_WHITESPACE {
 				break.ws
 			}
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 
 			if whitespace_length >= 0xFFFE {
 				args.dst.write_simple_token_fast!(
@@ -207,7 +207,7 @@
 				value_minor: 0x40_0013,
 				continued: 1,
 				length: 1)
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 
 			while.string_loop_outer true {
 				if args.dst.available() <= 0 {
@@ -249,7 +249,7 @@
 							LUT_CHARS[0xFF & (c4 >> 24)]) {
 							break
 						}
-						args.src.skip32_fast!(actual: 4, worst_case: 4)
+						args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 						if string_length > (0xFFFB - 4) {
 							args.dst.write_simple_token_fast!(
 								value_major: 0,
@@ -266,7 +266,7 @@
 					char = LUT_CHARS[c]
 
 					if char == 0x00 {  // Non-special ASCII.
-						args.src.skip32_fast!(actual: 1, worst_case: 1)
+						args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 						if string_length >= 0xFFFB {
 							args.dst.write_simple_token_fast!(
 								value_major: 0,
@@ -316,7 +316,7 @@
 						c = (args.src.peek_u16le() >> 8) as base.u8
 						backslash = LUT_BACKSLASHES[c]
 						if (backslash & 0x80) <> 0 {
-							args.src.skip32_fast!(actual: 2, worst_case: 2)
+							args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 							args.dst.write_simple_token_fast!(
 								value_major: 0,
 								value_minor: 0x60_0000 | ((backslash & 0x7F) as base.u32),
@@ -326,7 +326,7 @@
 
 						} else if backslash <> 0 {
 							if this.quirks[LUT_QUIRKY_BACKSLASHES_QUIRKS[backslash & 7]] {
-								args.src.skip32_fast!(actual: 2, worst_case: 2)
+								args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
 									value_minor: 0x60_0000 | (LUT_QUIRKY_BACKSLASHES_CHARS[backslash & 7] as base.u32),
@@ -370,7 +370,7 @@
 
 							} else if (uni4_value < 0xD800) or (0xDFFF < uni4_value) {
 								// Not a Unicode surrogate. We're good.
-								args.src.skip32_fast!(actual: 6, worst_case: 6)
+								args.src.skip_u32_fast!(actual: 6, worst_case: 6)
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
 									value_minor: 0x60_0000 | uni4_value,
@@ -391,7 +391,7 @@
 								if args.src.available() < 12 {
 									if args.src.is_closed() {
 										if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
-											args.src.skip32_fast!(actual: 6, worst_case: 6)
+											args.src.skip_u32_fast!(actual: 6, worst_case: 6)
 											args.dst.write_simple_token_fast!(
 												value_major: 0,
 												value_minor: 0x60_FFFD,
@@ -442,7 +442,7 @@
 									// Emit a single token for the surrogate
 									// pair.
 									uni4_value -= 0xDC00
-									args.src.skip32_fast!(actual: 12, worst_case: 12)
+									args.src.skip_u32_fast!(actual: 12, worst_case: 12)
 									args.dst.write_simple_token_fast!(
 										value_major: 0,
 										value_minor: 0x60_0000 | uni4_high_surrogate | uni4_value,
@@ -456,7 +456,7 @@
 								if args.src.available() < 6 {
 									return "#internal error: inconsistent I/O"
 								}
-								args.src.skip32_fast!(actual: 6, worst_case: 6)
+								args.src.skip_u32_fast!(actual: 6, worst_case: 6)
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
 									value_minor: 0x60_FFFD,
@@ -514,7 +514,7 @@
 							} else if (uni8_value < 0xD800) or (
 								(0xDFFF < uni8_value) and (uni8_value <= 0x10_FFFF)) {
 								// Not a Unicode surrogate. We're good.
-								args.src.skip32_fast!(actual: 10, worst_case: 10)
+								args.src.skip_u32_fast!(actual: 10, worst_case: 10)
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
 									value_minor: 0x60_0000 | (uni8_value & 0x1F_FFFF),
@@ -522,7 +522,7 @@
 									length: 10)
 								continue.string_loop_outer
 							} else if this.quirks[QUIRK_REPLACE_INVALID_UNICODE - QUIRKS_BASE] {
-								args.src.skip32_fast!(actual: 10, worst_case: 10)
+								args.src.skip_u32_fast!(actual: 10, worst_case: 10)
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
 									value_minor: 0x60_FFFD,
@@ -563,7 +563,7 @@
 									// digits "34".
 									break
 								}
-								args.src.skip32_fast!(actual: 4, worst_case: 4)
+								args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 								backslash_x_length += 4
 							} endwhile
 
@@ -601,7 +601,7 @@
 										value_minor: 0x60_FFFD,
 										continued: 1,
 										length: 1)
-									args.src.skip32_fast!(actual: 1, worst_case: 1)
+									args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 									continue.string_loop_outer
 								}
 								return "#bad UTF-8"
@@ -615,7 +615,7 @@
 						if (multi_byte_utf8 & 0xC000) == 0x8000 {
 							multi_byte_utf8 = (0x00_07C0 & (multi_byte_utf8 ~mod<< 6)) |
 								(0x00_003F & (multi_byte_utf8 >> 8))
-							args.src.skip32_fast!(actual: 2, worst_case: 2)
+							args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 							if string_length >= 0xFFF8 {
 								args.dst.write_simple_token_fast!(
 									value_major: 0,
@@ -649,7 +649,7 @@
 										value_minor: 0x60_FFFD,
 										continued: 1,
 										length: 1)
-									args.src.skip32_fast!(actual: 1, worst_case: 1)
+									args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 									continue.string_loop_outer
 								}
 								return "#bad UTF-8"
@@ -667,7 +667,7 @@
 							if (0x07FF < multi_byte_utf8) and
 								((multi_byte_utf8 < 0xD800) or (0xDFFF < multi_byte_utf8)) {
 
-								args.src.skip32_fast!(actual: 3, worst_case: 3)
+								args.src.skip_u32_fast!(actual: 3, worst_case: 3)
 								if string_length >= 0xFFF8 {
 									args.dst.write_simple_token_fast!(
 										value_major: 0,
@@ -702,7 +702,7 @@
 										value_minor: 0x60_FFFD,
 										continued: 1,
 										length: 1)
-									args.src.skip32_fast!(actual: 1, worst_case: 1)
+									args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 									continue.string_loop_outer
 								}
 								return "#bad UTF-8"
@@ -719,7 +719,7 @@
 								(0x00_0FC0 & (multi_byte_utf8 >> 10)) |
 								(0x00_003F & (multi_byte_utf8 >> 24))
 							if (0xFFFF < multi_byte_utf8) and (multi_byte_utf8 <= 0x10_FFFF) {
-								args.src.skip32_fast!(actual: 4, worst_case: 4)
+								args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 								if string_length >= 0xFFF8 {
 									args.dst.write_simple_token_fast!(
 										value_major: 0,
@@ -753,7 +753,7 @@
 								value_minor: 0x60_0000 | ((char & 0x7F) as base.u32),
 								continued: 1,
 								length: 1)
-							args.src.skip32_fast!(actual: 1, worst_case: 1)
+							args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 							continue.string_loop_outer
 						}
 						return "#bad C0 control code"
@@ -764,7 +764,7 @@
 							value_minor: 0x60_FFFD,
 							continued: 1,
 							length: 1)
-						args.src.skip32_fast!(actual: 1, worst_case: 1)
+						args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 						continue.string_loop_outer
 					}
 					return "#bad UTF-8"
@@ -784,7 +784,7 @@
 					yield? base."$short write"
 					continue
 				}
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				args.dst.write_simple_token_fast!(
 					value_major: 0,
 					value_minor: 0x40_0013,
@@ -804,7 +804,7 @@
 			// -------- END   parse strings.
 
 		} else if class == CLASS_COMMA {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			// The ',' is filler.
 			args.dst.write_simple_token_fast!(
 				value_major: 0,
@@ -829,7 +829,7 @@
 			continue.outer
 
 		} else if class == CLASS_COLON {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			// The ':' is filler.
 			args.dst.write_simple_token_fast!(
 				value_major: 0,
@@ -906,7 +906,7 @@
 			this.stack[stack_byte] |= (1 as base.u32) << stack_bit
 			depth += 1
 
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			args.dst.write_simple_token_fast!(
 				value_major: 0,
 				value_minor: vminor,
@@ -917,7 +917,7 @@
 			continue.outer
 
 		} else if class == CLASS_CLOSE_CURLY_BRACE {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			if depth <= 1 {
 				args.dst.write_simple_token_fast!(
 					value_major: 0,
@@ -967,7 +967,7 @@
 			this.stack[stack_byte] &= 0xFFFF_FFFF ^ ((1 as base.u32) << stack_bit)
 			depth += 1
 
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			args.dst.write_simple_token_fast!(
 				value_major: 0,
 				value_minor: vminor,
@@ -978,7 +978,7 @@
 			continue.outer
 
 		} else if class == CLASS_CLOSE_SQUARE_BRACKET {
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			if depth <= 1 {
 				args.dst.write_simple_token_fast!(
 					value_major: 0,
@@ -1022,7 +1022,7 @@
 				if args.src.available() < 5 {
 					return "#internal error: inconsistent I/O"
 				}
-				args.src.skip32_fast!(actual: 5, worst_case: 5)
+				args.src.skip_u32_fast!(actual: 5, worst_case: 5)
 				break.goto_parsed_a_leaf_value
 			} else if match == 1 {
 				yield? base."$short read"
@@ -1040,7 +1040,7 @@
 				if args.src.available() < 4 {
 					return "#internal error: inconsistent I/O"
 				}
-				args.src.skip32_fast!(actual: 4, worst_case: 4)
+				args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 				break.goto_parsed_a_leaf_value
 			} else if match == 1 {
 				yield? base."$short read"
@@ -1058,7 +1058,7 @@
 				if args.src.available() < 4 {
 					return "#internal error: inconsistent I/O"
 				}
-				args.src.skip32_fast!(actual: 4, worst_case: 4)
+				args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 				break.goto_parsed_a_leaf_value
 			} else if match == 1 {
 				yield? base."$short read"
@@ -1119,7 +1119,7 @@
 		assert n <= 1
 	} else {
 		n += 1
-		args.src.skip32_fast!(actual: 1, worst_case: 1)
+		args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 
 		// Peek.
 		if args.src.available() <= 0 {
@@ -1138,7 +1138,7 @@
 	// Scan the opening digits.
 	if c == '0' {
 		n += 1
-		args.src.skip32_fast!(actual: 1, worst_case: 1)
+		args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		assert n <= 99
 	} else {
 		n = this.decode_digits!(src: args.src, n: n)
@@ -1167,7 +1167,7 @@
 			break.goto_done
 		}
 		n += 1
-		args.src.skip32_fast!(actual: 1, worst_case: 1)
+		args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		floating_point = 0x80
 
 		n = this.decode_digits!(src: args.src, n: n)
@@ -1197,7 +1197,7 @@
 		break.goto_done
 	}
 	n += 1
-	args.src.skip32_fast!(actual: 1, worst_case: 1)
+	args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 	floating_point = 0x80
 	assert n <= 99
 
@@ -1220,7 +1220,7 @@
 			break.goto_done
 		}
 		n += 1
-		args.src.skip32_fast!(actual: 1, worst_case: 1)
+		args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 		assert n <= 99
 	}
 
@@ -1263,7 +1263,7 @@
 			break
 		}
 		n += 1
-		args.src.skip32_fast!(actual: 1, worst_case: 1)
+		args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 	} endwhile
 	if n == args.n {
 		n |= 0x100
@@ -1295,7 +1295,7 @@
 		c = args.src.peek_u8()
 		if (c == 0x1E) and this.allow_leading_ars {
 			this.allow_leading_ars = false
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			args.dst.write_simple_token_fast!(
 				value_major: 0, value_minor: 0, continued: 0, length: 1)
 			continue
@@ -1310,7 +1310,7 @@
 			u = args.src.peek_u24le_as_u32()
 			if u == 0xBF_BBEF {
 				this.allow_leading_ubom = false
-				args.src.skip32_fast!(actual: 3, worst_case: 3)
+				args.src.skip_u32_fast!(actual: 3, worst_case: 3)
 				args.dst.write_simple_token_fast!(
 					value_major: 0, value_minor: 0, continued: 0, length: 3)
 				continue
@@ -1341,7 +1341,7 @@
 	c2 = args.src.peek_u16le()
 
 	if (c2 == '/*'le) and this.quirks[QUIRK_ALLOW_COMMENT_BLOCK - QUIRKS_BASE] {
-		args.src.skip32_fast!(actual: 2, worst_case: 2)
+		args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 		length = 2
 
 		while.comment_block true {
@@ -1372,7 +1372,7 @@
 
 				c2 = args.src.peek_u16le()
 				if c2 == '*/'le {
-					args.src.skip32_fast!(actual: 2, worst_case: 2)
+					args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 					args.dst.write_simple_token_fast!(
 						value_major: 0,
 						value_minor: 0x2,
@@ -1381,7 +1381,7 @@
 					return ok
 				}
 
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				if length >= 0xFFFD {
 					args.dst.write_simple_token_fast!(
 						value_major: 0,
@@ -1396,7 +1396,7 @@
 		} endwhile.comment_block
 
 	} else if (c2 == '//'le) and this.quirks[QUIRK_ALLOW_COMMENT_LINE - QUIRKS_BASE] {
-		args.src.skip32_fast!(actual: 2, worst_case: 2)
+		args.src.skip_u32_fast!(actual: 2, worst_case: 2)
 		length = 2
 
 		while.comment_line true {
@@ -1427,7 +1427,7 @@
 
 				c = args.src.peek_u8()
 				if c == '\n' {
-					args.src.skip32_fast!(actual: 1, worst_case: 1)
+					args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 					args.dst.write_simple_token_fast!(
 						value_major: 0,
 						value_minor: 0x1,
@@ -1436,7 +1436,7 @@
 					return ok
 				}
 
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				if length >= 0xFFFD {
 					args.dst.write_simple_token_fast!(
 						value_major: 0,
@@ -1482,7 +1482,7 @@
 						value_minor: 0xA0_0020,
 						continued: 0,
 						length: 8)
-					args.src.skip32_fast!(actual: 8, worst_case: 8)
+					args.src.skip_u32_fast!(actual: 8, worst_case: 8)
 					return ok
 				}
 			} else if not args.src.is_closed() {
@@ -1494,7 +1494,7 @@
 				value_minor: 0xA0_0020,
 				continued: 0,
 				length: 3)
-			args.src.skip32_fast!(actual: 3, worst_case: 3)
+			args.src.skip_u32_fast!(actual: 3, worst_case: 3)
 			return ok
 
 		} else if (c4 | 0x20_2020) == 'nan'le {
@@ -1503,7 +1503,7 @@
 				value_minor: 0xA0_0080,
 				continued: 0,
 				length: 3)
-			args.src.skip32_fast!(actual: 3, worst_case: 3)
+			args.src.skip_u32_fast!(actual: 3, worst_case: 3)
 			return ok
 		} else if (c4 & 0xFF) == '+' {
 			neg = 0
@@ -1530,7 +1530,7 @@
 						value_minor: 0xA0_0000 | ((0x20 as base.u32) >> neg),
 						continued: 0,
 						length: 9)
-					args.src.skip32_fast!(actual: 9, worst_case: 9)
+					args.src.skip_u32_fast!(actual: 9, worst_case: 9)
 					return ok
 				}
 			} else if not args.src.is_closed() {
@@ -1542,7 +1542,7 @@
 				value_minor: 0xA0_0000 | ((0x20 as base.u32) >> neg),
 				continued: 0,
 				length: 4)
-			args.src.skip32_fast!(actual: 4, worst_case: 4)
+			args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 			return ok
 
 		} else if (c4 | 0x20_2020) == 'nan'le {
@@ -1551,7 +1551,7 @@
 				value_minor: 0xA0_0000 | ((0x80 as base.u32) >> neg),
 				continued: 0,
 				length: 4)
-			args.src.skip32_fast!(actual: 4, worst_case: 4)
+			args.src.skip_u32_fast!(actual: 4, worst_case: 4)
 			return ok
 		}
 
@@ -1597,7 +1597,7 @@
 				return "#bad input"
 			}
 
-			args.src.skip32_fast!(actual: 1, worst_case: 1)
+			args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 			if (whitespace_length >= 0xFFFE) or (c == '\n') {
 				args.dst.write_simple_token_fast!(
 					value_major: 0, value_minor: 0, continued: 0, length: whitespace_length + 1)
diff --git a/std/lzw/decode_lzw.wuffs b/std/lzw/decode_lzw.wuffs
index fd73cf1..59a34c1 100644
--- a/std/lzw/decode_lzw.wuffs
+++ b/std/lzw/decode_lzw.wuffs
@@ -162,7 +162,7 @@
 				// Read 4 bytes, using the "Variant 4" technique of
 				// https://fgiesen.wordpress.com/2018/02/20/reading-bits-in-far-too-many-ways-part-2/
 				bits |= args.src.peek_u32le() ~mod<< n_bits
-				args.src.skip32_fast!(actual: (31 - n_bits) >> 3, worst_case: 3)
+				args.src.skip_u32_fast!(actual: (31 - n_bits) >> 3, worst_case: 3)
 				n_bits |= 24
 				assert width <= n_bits via "a <= b: a <= c; c <= b"(c: 12)
 				assert n_bits >= width via "a >= b: b <= a"()
@@ -171,7 +171,7 @@
 				break
 			} else {
 				bits |= args.src.peek_u8_as_u32() << n_bits
-				args.src.skip32_fast!(actual: 1, worst_case: 1)
+				args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				n_bits += 8
 				if n_bits >= width {
 					// No-op.
@@ -180,7 +180,7 @@
 					break
 				} else {
 					bits |= args.src.peek_u8_as_u32() << n_bits
-					args.src.skip32_fast!(actual: 1, worst_case: 1)
+					args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 					n_bits += 8
 					assert width <= n_bits via "a <= b: a <= c; c <= b"(c: 12)
 					assert n_bits >= width via "a >= b: b <= a"()
diff --git a/std/wbmp/decode_wbmp.wuffs b/std/wbmp/decode_wbmp.wuffs
index b0be49c..2b2d8fe 100644
--- a/std/wbmp/decode_wbmp.wuffs
+++ b/std/wbmp/decode_wbmp.wuffs
@@ -198,7 +198,7 @@
 						}
 					} endwhile
 					c = args.src.peek_u8()
-					args.src.skip32_fast!(actual: 1, worst_case: 1)
+					args.src.skip_u32_fast!(actual: 1, worst_case: 1)
 				}
 				if (c & 0x80) == 0 {
 					src[0] = 0x00