Skip to content

Releases: kolkov/uawk

v0.2.3

15 Mar 11:08
97c7d56

Choose a tag to compare

Changed

  • Updated coregex to v0.12.8 (from v0.10.6) — 22 releases with major improvements
  • Updated golang.org/x/sys to v0.42.0 (from v0.40.0)
  • Fixed staticcheck QF1012: replaced WriteString(Sprintf) with Fprintf

Key coregex improvements (v0.10.7 → v0.12.8)

Area Highlight
Anchored patterns FindAll 600x faster
UseAnchoredLiteral 32-133x speedup
Prefix fast path 319-552x speedup
UseMultilineReverseSuffix 3.5-5.7x speedup
Cross-product literals 14x speedup (regexdna)
PikeVM 1.68x faster than stdlib, sparse-dispatch for dot patterns
New APIs Streaming ReplaceAll, DFA-first FindSubmatchAt
Bug fixes Non-greedy quantifiers, word boundary, BoundedBacktracker spans

Full Changelog: v0.2.2...v0.2.3

v0.2.2

14 Jan 11:06
626d24c

Choose a tag to compare

Changed

  • Updated coregex to v0.10.6
    • v0.10.4: Thread-safety fix with sync.Pool for concurrent Regexp usage
    • v0.10.5: CompositeSearcher backtracking fix for overlapping patterns (\w+[0-9]+)
    • v0.10.6: CompositeSequenceDFA (25x faster overlapping char classes, 300 MB/s)
    • v0.10.6: FindAllIndexCompact API for near-zero allocations

Full Changelog: v0.2.1...v0.2.2

uawk v0.2.2 (2026-01-14T11:06:49Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.2.2

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.2.1

12 Jan 20:07
43b48d1

Choose a tag to compare

Performance

  • Lazy ENVIRON loading for 40-60% faster VM creation
    • os.Environ() syscall deferred until first ENVIRON access
    • Most AWK programs don't use ENVIRON, now they pay zero overhead

Benchmark Results

Metric Before After Improvement
VM creation (no ENVIRON) 87μs 38μs -56%
Memory allocation 63KB 36KB -43%
Allocations 150 25 -83%

Real-world benchmarks (awkbench 1MB):

  • wordcount: -17%
  • groupby: -21%
  • filter: -25%

Installation

go install github.com/kolkov/uawk/cmd/uawk@v0.2.1

Full Changelog: v0.2.0...v0.2.1

uawk v0.2.1 (2026-01-12T20:08:10Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

⚡ Performance


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.2.1

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.2.0

12 Jan 13:16
6233d06

Choose a tag to compare

uawk v0.2.0 - Parallel Execution

High-performance AWK interpreter for Go!

All 16/16 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

What's New

Added

  • Parallel execution with -j N flag for concurrent multi-file processing
    • Automatic detection of parallel-safe programs
    • Worker pool processes files concurrently with output ordering preserved
    • -dp flag to check if program can be parallelized

Performance

  • Specialized global array opcodes eliminate scope switch overhead
    • wordcount: 281ms → 271ms (7% improvement, now beats GoAWK)
  • email benchmark: 181ms → 32ms (5.7x faster, was broken before)

Fixed

  • CompositeSearcher backtracking bug for overlapping patterns
    • Patterns like [a-z.]+\.com now match correctly

Changed

  • Updated coregex to v0.10.3

Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.2.0

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Parallel processing (4 workers):
uawk -j 4 '{ sum += $1 } END { print sum }' *.log

# Performance mode:
uawk --no-posix '/pattern/ { print }' file.txt

Full Changelog: v0.1.6...v0.2.0

v0.1.6

12 Jan 13:10

Choose a tag to compare

uawk v0.1.6 - VM Performance V2

High-performance AWK interpreter for Go!

15/16 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

What's New

Added

  • --posix / --no-posix CLI flags for regex mode selection
  • POSIXRegex option in uawk.Config for library usage
  • RegexConfig and VMConfig for fine-grained control

Performance

  • VM Performance V2: Type specialization, opcode fusion, stack optimization
    • Static type inference for numeric operations
    • Peephole optimizer for instruction fusion
    • Optimized stack operations (PeekPop, ReplaceTop)
  • --no-posix mode disables leftmost-longest matching for faster regex
  • Up to 12% improvement on some patterns in fast mode

Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.6

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Performance mode (faster regex):
uawk --no-posix '/pattern/ { print }' file.txt

Full Changelog: v0.1.5...v0.1.6

v0.1.5

06 Jan 23:00
19e6919

Choose a tag to compare

uawk v0.1.5 (2026-01-06T22:59:27Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.5

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.1.4

06 Jan 21:12
2c9c268

Choose a tag to compare

uawk v0.1.4 (2026-01-06T21:11:29Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.4

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.1.3

06 Jan 11:13

Choose a tag to compare

uawk v0.1.3 (2026-01-06T11:12:54Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.3

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.1.2

05 Jan 01:17

Choose a tag to compare

uawk v0.1.2 (2026-01-05T01:16:32Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.2

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues

v0.1.1

04 Jan 23:10

Choose a tag to compare

uawk v0.1.1 (2026-01-04T23:10:20Z)

High-performance AWK interpreter for Go!

8/8 benchmarks faster than GoAWK. Powered by coregex (3-3000x faster regex).

Changelog

🎨 Other


Installation:

# Using go install (recommended):
go install github.com/kolkov/uawk/cmd/uawk@v0.1.1

# Or download binary for your platform above

Quick Start:

# Print first column:
uawk '{ print $1 }' file.txt

# Sum numbers:
uawk '{ sum += $1 } END { print sum }' numbers.txt

# Filter lines:
uawk '/pattern/ { print }' file.txt

Documentation: https://github.com/kolkov/uawk#readme

Report Issues: https://github.com/kolkov/uawk/issues