On this Page
- Unreleased
- v7.0.01 (2026-07-31)
- v7.0.00 (2026-07-30)
- v6.4.01 (2026-06-03)
- v6.2.00 (2026-05-04)
- v6.1.00 (2026-04-19)
- v6.0.00 (2026-04-16)
- v5.0.00 (2025-11-04)
- v4.1.00 (2025-09-29)
- v4.0.01 (2025-08-08)
- v4.0.00 (2025-07-29)
- v3.3.05 (2025-04-03)
- v3.3.04 (2025-02-13)
- v3.3.03 (2024-08-29)
- v3.3.02 (2024-08-09)
- v3.3.01 (2024-08-09)
- v3.3.00 (2024-02-04)
- v3.2.00 (2024-02-01)
- v3.1.02 (2024-01-18)
- v3.1.01 (2024-01-17)
- v3.1.00 (2024-01-17)
- v3.0.00 (2023-12-14)
- v2.1.00 (beta) (2023)
- See Also
Jawk 7.0.01
-
Home
- Reference
Behavior Changes by Version
This page lists the user-visible behavior changes in each version of Jawk: changes to how AWK programs parse, execute, and produce output, plus CLI changes and breaking changes for Java embedders. Releases that only contain internal refactoring, performance work, build, or documentation changes are omitted. For the complete change lists, see the GitHub releases[1].
Unreleased
No user-visible behavior changes recorded yet.
v7.0.01[2] (2026-07-31)
printoutputs numeric-looking strings verbatim, as POSIX requires:print "0100"now prints0100(previously100), and input-derived values such as$1keep their original text.OFMTapplies only when printing actual non-integral numbers, andCONVFMTgoverns number-to-string conversion everywhere else (#529[3]).- Range patterns (
begpat, endpat) evaluate their conditions lazily: the end condition is not evaluated until the range has started, so conditions with side effects behave as in gawk and One True Awk (#115[4]). print (a), (b)parses correctly: a single parenthesized expression followed by a comma continues the output list, a parenthesized group beforeinis a membership key, and((i, j) in array)is accepted as an expression (#535[5]).
v7.0.00[6] (2026-07-30)
- The full set of gawk language extensions is now enabled by default:
BEGINFILE/ENDFILEspecial rules, thenextfilestatement, theERRNOandARGINDspecial variables,@include,@namespace, typed regexp literals (@/re/), indirect function calls (@f()), and gawk-compatible runtime array/scalar typing diagnostics. - All gawk built-in functions are now implemented:
asort(),asorti(),typeof(),isarray(),mkbool(),gensub(),patsplit(),strtonum(),systime(),mktime(),strftime(),bindtextdomain(),dcgettext(),dcngettext(), plusSYMTAB,FUNCTAB, andPROCINFO["sorted_in"]-controlled array traversal. As a consequence, these names are reserved by default and can no longer be used as variables (see Compatibility[7]). - The new strict
--posixmode disables all gawk extensions when you want the standard and nothing else. - The CLI handles
--and the-operand per POSIX, and passes unknown options through to the AWK script inARGVonce the program text has been supplied, which makes#!interpreter scripts work as in gawk.
v6.4.01[8] (2026-06-03)
- Input-derived values (fields,
getlineresults,split()pieces) now follow POSIX “numeric string” (strnum) semantics: they compare numerically when both operands are numeric, and as strings otherwise, matching gawk and One True Awk.
v6.2.00[9] (2026-05-04)
- New persistent memory support: the
--persist <file>CLI option (or theJAWK_PERSISTENT_MEMORYenvironment variable) saves user-defined global variables to a file and restores them on the next run, in the spirit of gawk's persistent memory feature.
v6.1.00[10] (2026-04-19)
- gawk-style arrays of arrays (
a[i][j]) are now supported. - New
--posixCLI option.
v6.0.00[11] (2026-04-16)
- Breaking change for Java embedders: the project moved to jawk.io[12], with new Maven coordinates and the
io.jawkpackage (previouslyorg.metricshub.jawk), and the Java API was overhauled (AwkSinkfor customized output,InputSourcefor structured input, and a purely behavioralAwkSettings). - Fixed
printargument list parsing (argument continuation detection).
v5.0.00[13] (2025-11-04)
- Java embedding API changes only (
AssocArraybecame a realjava.util.Map, refined extension metadata APIs); no changes to AWK script behavior.
v4.1.00[14] (2025-09-29)
- Removed the deprecated Jawk-specific language extensions: the
_INTEGER,_DOUBLE, and_STRINGtypecast keywords (and the-yCLI flag), and the_sleepand_dumpkeywords (and the-xCLI flag). - Removed the logging framework: Jawk no longer emits SLF4J messages; runtime warnings go to standard error.
- Environment variables with non-numeric values no longer trigger spurious
NumberFormatExceptionlog messages.
v4.0.01[15] (2025-08-08)
- Fixed field splitting with a regex
FSproducing leading or trailing separators, and a tokenizer regression, raising One True Awk test-suite compatibility from 94.2% to 97.8%.
v4.0.00[16] (2025-07-29)
A large conformance release aligning Jawk with One True Awk[17]:
- Statements and control flow:
getlinewithout an lvalue,exitcode handling, early-exit logic, pattern negation, range (condition pair) evaluation, post-increment/decrement on uninitialized variables and on$fields, newlines inforloops, and^=(power assignment). - Fields and records: dynamic field numbers (
$(expr)),NFtracking,FSparsing on empty lines,split()return count and whitespace-regex handling, andSUBSEPhandling. - Output: ternary expressions inside
print,printargument handling, pipe output handling and flushing, andORSflushing. - Values and arrays: numeric string validation via
BigDecimal, numeric detection when printing fields, array iteration in insertion order, array deletion with numeric keys, and array comparison. rand()produces a deterministic sequence for a givensrand()seed.
v3.3.05[18] (2025-04-03)
- Java embedders only: packages renamed from
org.sentrysoftware.jawktoorg.metricshub.jawk; no changes to AWK script behavior.
v3.3.04[19] (2025-02-13)
- Fixed
sub()with dollar references, andsub()/gsub()with&references in the replacement string.
v3.3.03[20] (2024-08-29)
- Fixed
gsub()on array elements. - Removed the spurious SLF4J connection message from standard output.
v3.3.02[21] (2024-08-09)
- Fixed operator associativity: most operations are left-associative, exponentiation (
^) is right-associative.
v3.3.01[22] (2024-08-09)
substr()no longer fails on out-of-range arguments.- Output redirection (
>) is supported withinprintstatements. - Fixed the argument order in extension function calls.
v3.3.00[23] (2024-02-04)
- Fixed the evaluation order in string concatenation and in function argument lists.
v3.2.00[24] (2024-02-01)
exit NNreturns the proper exit code fromBEGINand main rules.- Full support for the
ORSspecial variable. - Full support for range patterns (
/start/, /end/). NRis updated even when the program has no main rule.
v3.1.02[25] (2024-01-18)
!xon an uninitialized variable now correctly evaluates to true.
v3.1.01[26] (2024-01-17)
- Fixed escaping in regexp constants, notably octal sequences.
- Improved syntax error messages.
v3.1.00[27] (2024-01-17)
- Newlines are allowed after
&&,||,?,:, and,. - Unary plus (
+a) is supported. - Fixed precedence of ternary and concatenation expressions; parsing and lexing follow gawk precedence rules for all operators.
- Fixed parsing of escape sequences in regular expression constants.
- Jawk runs on Java 8 and later.
v3.0.00[28] (2023-12-14)
printf()andsprintf()use the Printf4J[29] library for C-style formatting.- Java embedders: packages renamed from
org.jawktoorg.sentrysoftware.jawk; the library is licensed under LGPL and released on Maven Central.
v2.1.00 (beta)[30] (2023)
- Octal (
"\033") and hexadecimal ("\x1B") escape sequences are supported in strings.
See Also
behavior
changes
releases
versions
migration
awk
jawk
awk
Links:
- [1] https://github.com/jawkio/jawk/releases
- [2] https://github.com/jawkio/jawk/releases/tag/v7.0.01
- [3] https://github.com/jawkio/jawk/issues/529
- [4] https://github.com/jawkio/jawk/issues/115
- [5] https://github.com/jawkio/jawk/issues/535
- [6] https://github.com/jawkio/jawk/releases/tag/v7.0.00
- [7] compatibility.html
- [8] https://github.com/jawkio/jawk/releases/tag/v6.4.01
- [9] https://github.com/jawkio/jawk/releases/tag/v6.2.00
- [10] https://github.com/jawkio/jawk/releases/tag/v6.1.00
- [11] https://github.com/jawkio/jawk/releases/tag/v6.0.00
- [12] https://jawk.io
- [13] https://github.com/jawkio/jawk/releases/tag/v5.0.00
- [14] https://github.com/jawkio/jawk/releases/tag/v4.1.00
- [15] https://github.com/jawkio/jawk/releases/tag/v4.0.01
- [16] https://github.com/jawkio/jawk/releases/tag/v4.0.00
- [17] https://github.com/onetrueawk/awk
- [18] https://github.com/jawkio/jawk/releases/tag/v3.3.05
- [19] https://github.com/jawkio/jawk/releases/tag/v3.3.04
- [20] https://github.com/jawkio/jawk/releases/tag/v3.3.03
- [21] https://github.com/jawkio/jawk/releases/tag/v3.3.02
- [22] https://github.com/jawkio/jawk/releases/tag/v3.3.01
- [23] https://github.com/jawkio/jawk/releases/tag/v3.3.00
- [24] https://github.com/jawkio/jawk/releases/tag/v3.2.00
- [25] https://github.com/jawkio/jawk/releases/tag/v3.1.02
- [26] https://github.com/jawkio/jawk/releases/tag/v3.1.01
- [27] https://github.com/jawkio/jawk/releases/tag/v3.1.00
- [28] https://github.com/jawkio/jawk/releases/tag/v3.0.00
- [29] https://github.com/metricshub/printf4j
- [30] https://github.com/jawkio/jawk/releases/tag/v2.1.00-SNAPSHOT7
Search Results for {{siteSearch | truncate:'50'}}
{{resultArray.length}}
Searching...
No results.
