On this Page
- Unreleased
- v7.1.01 (2026-08-25)
- v7.1.00 (2026-08-20)
- 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.1.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.1.01[2] (2026-08-25)
- A number compared against a string is now converted with the AWK number-to-string rule: a value exactly equal to an integer renders as that integer, anything else through
CONVFMT. Previously the comparison used Java'sObject.toString(), so291was compared as"291.0"and104152956928as"1.04152956928E11", and a computed integer stopped comparing equal to its own digits.x = "2" * 3; x == "6"andx ~ /^[0-9]+$/were false and are now true; this affects~,!~,==,!=,<,<=,>and>=whenever one operand is a number and the other a string. Comparisons also honour aCONVFMTassigned by the script, which they did not before. Arithmetic on numeric literals only, and every other conversion of the same value —print, concatenation,length(),sprintf,substr(),index(),match(),gsub(),split()and array subscripts — were already correct and are unchanged (#603[3]). - The JSR 223
ScriptEngineFactorynow reports the version of the Jawk that is running, the same onejawk -Vprints, resolved from the jar metadata (unknownwhen Jawk runs from a plain class directory). PreviouslygetEngineVersion(), andgetParameter(ScriptEngine.ENGINE_VERSION)with it, returned the hard-coded string3.3.06-SNAPSHOT, frozen at the 3.x line and eleven releases behind, so hosts that logged or version-gated on it saw a Jawk that had long stopped shipping (#598[4], #599[5]). - The JSR 223
ScriptEngineFactorynow reportsPOSIXas the language version, naming the specification Jawk implements. PreviouslygetLanguageVersion(), andgetParameter(ScriptEngine.LANGUAGE_VERSION)with it, returned1, which corresponds to no AWK specification. Hosts that match on the literal1must match onPOSIXinstead (#598[4], #599[5]). - New
JawkVersionclass inio.jawk.util:JawkVersion.getVersion()returns the version of the running Jawk, the single source the-Vreport and the JSR 223 engine version both read (#598[4]). - Every Jawk version report now reads Jawk's own Maven descriptor before the enclosing jar's
Implementation-Version. A Jawk shaded into an application uber-jar shares that jar's manifest, so-Vpreviously printed the host application's version instead of Jawk's; it now prints Jawk's. Reports from Jawk's own jars are unchanged, as both sources agree there (#598[4]).
v7.1.00[6] (2026-08-20)
- The broken
stdinextension has been removed, along with theBlockObjectandBlockManagerextension API it relied on. ItsStdinHasInput()andStdinBlock()functions never reported a pending end of input, hanging every read loop that guarded itsStdinGetline()calls, and no other AWK implementation provides these functions: scripts read standard input through the regular input loop,getline, or the/dev/stdinspecial filename instead. Previously-l stdinloaded the extension; it is now rejected withUnknown extension 'stdin'(#592[7]). - New
-V/--versionoption: prints the Jawk version and the Java runtime that executes it, then exits with status 0. Like-h, it must be used by itself, and once the program text has been supplied it still flows to the AWK program throughARGV. Previously--versionwas rejected withUnknown parameterand exit status 1 (#590[8]). - The usage printed by
-hnow names the command Jawk was invoked as: thejawklaunchers written by the one-command installer pass their invocation name through the newJAWK_PROGRAM_NAMEenvironment variable, and without that variable the usage keeps thejava -jar <jar>form. Previouslyjawk -halways described ajava -jar jawk-standalone.jarinvocation the user never typed (#591[9]). - The
jawklauncher installed by the one-command installer now honors theJAWK_CLASSPATHenvironment variable: when set, the launcher runs the CLI with the standalone jar and the given entries on the JVM class path, so custom extension[10] jars can be loaded with-l <fully.qualified.ClassName>. Previously the launcher always usedjava -jar, which ignores every class path setting, and custom-classpath extensions required invokingjava -cp ... io.jawk.Cliby hand (#586[11]). - Jawk can now be installed as a
jawkexecutable with one command:curl -fsSL https://jawk.io/get | shon Linux/macOS,irm https://jawk.io/get.ps1 | iexon Windows. The installed launcher locates a Java Runtime Environment (Java 8 or later) at run time and runs the standalone jar, and each GitHub release now also publishes a version-lessjawk-standalone.jaralias with.sha256checksum files. Previously the versioned standalone jar had to be downloaded from the releases page by hand and invoked withjava -jar(#583[12]). - The
nextstatement is now accepted inside user-defined functions, as in gawk, mawk, and BWK awk: when the function is called from an input rule,nextabandons the current record, unwinds the active function calls, and resumes the main input loop; when the function is called from aBEGIN,END,BEGINFILE, orENDFILErule, it is a fatal error at runtime, matching gawk. Previously anynextinside a function was rejected at compile time withSemanticException: cannot next; not within any input rules. Direct uses in rules are unchanged (#580[13]). - The
--profilefunction timing report now records a user-defined function call abandoned bynextfileas exited whennextfileunwinds it, with its actual duration. Previously each such call leaked an entry on the internal function timing stack (unbounded memory growth on long profiled runs), and the abandoned calls were either missing from the report or accounted with wildly wrong durations at program exit (#557[14]). - A conditional expression whose result feeds a further operation on a literal — shapes like
(v ? v : 24) * 2,-(v ? 5 : 24), or$(v ? 1 : 2)— now evaluates correctly under the default tuple optimization. Previously the peephole literal fold merged the false branch's literal with the operation at the branches' join point, so the true branch skipped the operation, produced the false branch's folded result ((60 ? 60 : 24) * 2yielded 48), and leaked a value onto the operand stack that displaced laterprintoperands. Running with-s/--no-optimizewas unaffected (#578[15]). - The CLI now accepts POSIX attached option-arguments for the value-taking short options:
-fprog.awk,-vx=1,-F:(and the Jawk-specific-L,-K,-l) are equivalent to-f prog.awk,-v x=1,-F :, as in gawk, mawk, BWK awk, and goawk. Previously the glued form was rejected withUnknown parameter(#574[16]). - The children of
system(cmd)and of a command input pipe ("cmd" | getline) now inherit Jawk's standard input when Jawk reads the standard input of the JVM (every CLI run), as POSIX requires and as gawk, mawk, and BWK awk behave:echo hi | jawk 'BEGIN { "sort" | getline l; print l }'printshi, and terminal-aware commands such as"stty size" | getlinecan reach the controlling terminal. Previously the child's standard input was always closed, so stdin filters read nothing andsttyfailed withInappropriate ioctl for device. Output pipes (print | "cmd") are unchanged — the pipe itself remains the child's standard input — and embedded executions bound to a custom Java input stream keep the closed-stdin behavior, since a Java stream cannot be lent to another OS process (#575[17]). - An input-derived value whose text is a number surrounded by blanks — a record like
" 12 ", agetline varresult read from padded input, asplit()piece under a non-default separator — is now recognized as a POSIX numeric string, so$0 == 12is true for the record" 12 ", as in gawk. Previously the blanks forced a string comparison. Text with internal blanks (" 1 2 "), trailing non-numeric text (" 12x "), or nothing but blanks is still not numeric, and string constants such asx = " 12 "still compare as strings (#571[18]). - A redirected
getlinenow sets exactly the variables gawk documents for each form:getline < fileandcmd | getlineset$0andNFonly, andgetline var < fileandcmd | getline varsetvaronly. Previously every redirected form also advancedNR— so a side read shifted the record numbers of the whole main input — and took overFILENAME, andgetline var < fileclobbered$0while leavingNFdescribing the previous record. Note that for the pipe forms POSIX prescribes updatingNR, but gawk documents and implements leaving it alone, and Jawk follows gawk (#565[19]). getlinefrom a file that cannot be opened, or a command that cannot be spawned, now returns-1withERRNOcarrying the gawk-style description (No such file or directory,Is a directory, …), so the idiomaticwhile ((getline line < f) > 0)guard and probing for optional files work; the failed open is not cached, so a latergetlinefrom the same name retries it. Previously the underlying JavaIOExceptionaborted the whole script. A redirection name that evaluates to the empty string stays fatal, with gawk's message (expression for<' redirection has null string value`) instead of the Java exception (#566[20]).- A
getlinethat reads nothing now leaves its target untouched, as POSIX requires: at end of input (return0) or on error (return-1),getline < fileandcmd | getlineno longer replace$0with the empty string and resetNFto 0, and thevarforms — the redirected ones and the plaingetline varat the end of the main input — no longer assign the empty string to the variable. As in gawk 4.0 and later, the subscript of an array target and the index of a field target are still evaluated on that path (sogetline a[++c] < fadvancesc, and the reference creates the array element), only the assignment is skipped (#569[21]). getlineinto a field —getline $n < file,cmd | getline $n, and the plaingetline $n— now stores the record into that field, extendingNFand rebuilding$0like any field assignment. Previously the field number was never emitted, so any of these forms corrupted the interpreter's operand stack and crashed the script as soon as a record was read (#570[22]).- On Windows, the filename
/dev/nullnow designates the platform's null device (NUL) in redirections, ingetline, and as an input operand, as gawk's Windows port does:print > "/dev/null"discards its output and creates no file,getline < "/dev/null"reports end of input (0),close("/dev/null")succeeds, andawk '{ ... }' /dev/nullreads an empty input file. Previously the name was opened as a relative path: where adevdirectory happened to exist on the current drive, a redirection created and truncateddev\nulland kept the output that was meant to be discarded, and where it did not, the redirection was a fatal error andgetlineaborted the script. Only the name is translated, soclose()still takes the spelling the script used, and the native Windows spellingNULneeds no translation — it is now accepted as an operand too, which the per-file input loop ofBEGINFILE/ENDFILEused to report as a missing file. On POSIX platforms nothing changes:/dev/nullis the device already (#567[23]). - The gawk special filenames
/dev/stdout,/dev/stderr,/dev/stdinand their/dev/fd/1,/dev/fd/2,/dev/fd/0spellings are now recognized in redirections and ingetline, and route to the streams the process already holds open:print > "/dev/stdout"writes to the standard output alongside unredirectedprint,print > "/dev/stderr"writes to the standard error alongside Jawk's own diagnostics (flushed per record), andgetline < "/dev/stdin"reads the standard input. Previously each name was opened as a regular file, so an output redirection truncated it and wrote through an independent stream: with2>log, a script writing to/dev/stderrrestarted at offset 0 of the log and clobbered what Jawk had written there (and vice versa).>and>>now behave identically on these names, since nothing is opened or truncated, andclose()flushes the redirection and reports success without ever closing the underlying stream, so the name stays usable — closing a name no redirection is open on returns-1, as in gawk. Other/dev/fd/Nnames are still opened as ordinary files, an operand naming an input file is still opened as a regular file (use-for the standard input there), and sandbox mode still rejects every redirection, the special filenames included (#556[24]). - Arithmetic on integral operands is now computed in exact 64-bit integers when the result fits:
+,-,*, an evenly-dividing/,%, unary-and+,++/--, and the corresponding compound assignments — on variables, array elements, and fields alike — keep all their digits beyond 2^53, and comparisons between two such values are exact as well. A compound assignment or++/--on an uninitialized variable, a missing array element, or a missing field starts from integer zero, so counters built that way stay exact.print 9007199254740992 + 1now prints9007199254740993(previously9007199254740992, which is also what gawk prints, as gawk computes in doubles unless run with-M). A result that overflows 64 bits still falls back to floating point (print 9223372036854775806 + 2prints9223372036854775808), and exponentiation and any operation with a fractional or string operand are unchanged. Integer results carry no negative zero: withx = 0,1/-xnow printsinf(previously-inf). Programs precompiled with an earlier version are rejected and must be recompiled, since they may carry constants folded in floating point (#537[25]). - A field updated with a compound assignment or
++/--now retains its numeric value, like a field assigned with=always did, instead of being replaced by itsCONVFMTstring, so repeated updates stay exact andprint $1shows the full value. When$0is reconstituted, numeric field values are now converted withCONVFMT, as POSIX requires and gawk does:{ $1 = 0.1 + 0.2; print }prints0.3 ...(previously0.30000000000000004 ..., the raw Java rendering of the double) (#537[25]). - Array subscripts are now converted to their string key with the
CONVFMTin effect at the moment the subscript is used, as POSIX requires and gawk does. Previously a single-dimension numeric subscript was stored as a number and converted lazily, so a laterCONVFMTchange retroactively altered existing keys:a = 12.153; test[a] = "hi"; CONVFMT = "%.0f"now keeps the key12.153when iterating withfor (i in test)(previously the key became12). The same conversion now also applies to the key of theinoperator anddelete, so after theCONVFMTchange above,(12.153 in test)is0because the lookup key converts to12. Integer subscripts within the signed 64-bit range are unaffected, and integral subscripts beyond that range now key as their exact digits like gawk:a[2^63]creates the key9223372036854775808(previously clamped to9223372036854775807). The “attempting to use an array in a scalar context” error for an array used as a subscript is now raised when the subscript is converted and reported on the line where the subscript starts (previously it was raised by the operation consuming the subscript and reported on the line of the enclosing array reference) (#547[26]). - Numeric constants with exponents (
2e3,1.5E-2,.5e+1, …) are now lexed as single numbers, as POSIX requires:print 2e3prints2000(previously the lexer stopped before the exponent, so2e3parsed as2concatenated with the uninitialized variablee3and printed2). As in gawk, ane/Enot followed by a valid exponent is not part of the number:1eis the number1followed by the variablee(#545[27]). - String-to-number conversion keeps all the digits of long numeric strings instead of stopping after 26 characters:
s = sprintf("%d", 10^26); print s + 0now prints100000000000000004764729344(previously10000000000000000905969664, a tenth of the value). Conversion now scans the leading numeric prefix rather than retrying progressively shorter prefixes, which also aligns two edge cases with gawk: number forms that only Java understands are no longer accepted ("Infinity" + 0and"0x1p4" + 0are0, previously infinity and16), while a complete signed infinity or NaN now converts, matched without regard to case ("-inf" + 0and"-INF" + 0are-inf, previously0; an unsigned"inf", or a longer word such as"-inform", remains0). Conversions that AWK already defined are unchanged, including numeric prefixes ("25fix" + 0is25), leading whitespace, and incomplete exponents ("1e" + 0is1) (#545[27]). - Numeric strings convert the same way wherever a whole number is expected, so
substr()'s length argument now accepts every AWK number form:substr("abcdefgh", 1, "1e1")yieldsabcdefgh(previouslya, because the length was parsed as an integer and silently truncated at thee). A length beyond the integer range yields the rest of the string instead of an empty one, and a padded length such as" 3"is honored (#545[27]). - An integer literal too large for a 64-bit integer is a floating-point constant, as in gawk, instead of aborting the run:
print 99999999999999999999999prints99999999999999991611392(previously the parser failed withNumberFormatException) (#545[27]). printfandsprintfare now implemented natively with POSIX AWK / gawk semantics instead of delegating to the Printf4J library, which emulated glibc'sprintf()(#528[28]):%sconverts numeric values with AWK's number-to-string rules: integral values print without a fractional part (printf "%s", iafteri++now prints1, not1.0), and non-integral values honor the script's currentCONVFMTvalue.%cprints the character for a numeric code point (printf "%c", 65printsA, previouslyAonly for literal numbers, not for numeric strings or fields), or the first character of a string value.- Dynamic precision (
%.*f) is now supported in addition to dynamic width (%*d), including negative values (negative width left-justifies, negative precision means no precision), as are gawk positional specifiers (%2$s) and the'grouping flag (%'d); mixing positional and sequential specifiers in one format string is a fatal error, as in gawk. - Out-of-range integer conversions follow gawk: negative values wrap to unsigned 64-bit for
%u/%o/%x/%X, values beyond 64 bits print the full decimal expansion for%d/%iand fall back to%gnotation for%u/%o/%x/%X. - NaN and infinities print as
nan,inf, and-inf(previously Java'sNaN/Infinity), inprint,printf, and number-to-string conversions. %e,%f, and%ground the exact binary value of the double, with halfway cases to even, like the C library used by gawk (printf "%.0f", 2.5prints2, previously3), and%gstrips trailing zeros before padding (previously only when no padding applied). The same rounding applies to number-to-string conversions throughCONVFMTandOFMT: withCONVFMT="%.3f",1.2345 ""is1.234(previously1.235, from rounding the shortest decimal representation instead of the exact binary value, which is slightly below the halfway point) (#546[29]).printfwith too few arguments is now a fatal error, as in gawk (previously the leftover specifiers were printed verbatim).- Unknown conversion specifiers (including
%n, which Printf4J turned into a newline, and invalid length modifiers such asllorhh) are printed verbatim without consuming an argument, as in gawk; theh,j,l,L,t, andzlength modifiers are each accepted at most once and ignored.
- Integral values beyond the 64-bit range are no longer saturated to 2^63-1:
print 2^100now prints the full decimal expansion1267650600228229401496703205376(previously9223372036854775807), andint()preserves such values (#528[28]). - New
JavaStringFormatAwkSinkfor Java embedders: a sink whoseprintf/sprintfuse Java's standardString.format(...)instead of AWK's formatting rules, giving scripts access to Java-only conversions such as%,dgrouping and%tYdate/time (#528[28]). - Breaking change for Java embedders:
AwkSink.printf(...)now receives the script's currentCONVFMTvalue as a parameter (betweenofmtandformat), just like it already receivedOFMT, andAwkSink.sprintf(...)now takesCONVFMTas its first parameter (sprintf(convfmt, format, values...)). Custom sinks must be updated to the new signatures; overridingsprintfstill customizes bothprintfandsprintfoutput. Theorg.metricshub:printf4jdependency has been removed; its formatting logic now lives inio.jawk.jrt.AwkPrintf(#528[28]).
v7.0.01[30] (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[31]).- 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[32]). 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[33]).
v7.0.00[34] (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[35]). - 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[36] (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[37] (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[38] (2026-04-19)
- gawk-style arrays of arrays (
a[i][j]) are now supported. - New
--posixCLI option.
v6.0.00[39] (2026-04-16)
- Breaking change for Java embedders: the project moved to jawk.io[40], 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). - The
-rCLI option, which disabled the trapping of Java'sIllegalFormatExceptioninprintfandsprintf, was removed along with the output refactoring. It is no longer recognized as an option: before the program text it is rejected as an unknown option, and after it — like any unknown option once-for-Lhas supplied the program — it ends option processing and reaches the script throughARGV, where it is taken for an input file name. (This entry was added in a later release: the removal was not recorded at the time.) - Fixed
printargument list parsing (argument continuation detection).
v5.0.00[41] (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[42] (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[43] (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[44] (2025-07-29)
A large conformance release aligning Jawk with One True Awk[45]:
- 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[46] (2025-04-03)
- Java embedders only: packages renamed from
org.sentrysoftware.jawktoorg.metricshub.jawk; no changes to AWK script behavior.
v3.3.04[47] (2025-02-13)
- Fixed
sub()with dollar references, andsub()/gsub()with&references in the replacement string.
v3.3.03[48] (2024-08-29)
- Fixed
gsub()on array elements. - Removed the spurious SLF4J connection message from standard output.
v3.3.02[49] (2024-08-09)
- Fixed operator associativity: most operations are left-associative, exponentiation (
^) is right-associative.
v3.3.01[50] (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[51] (2024-02-04)
- Fixed the evaluation order in string concatenation and in function argument lists.
v3.2.00[52] (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[53] (2024-01-18)
!xon an uninitialized variable now correctly evaluates to true.
v3.1.01[54] (2024-01-17)
- Fixed escaping in regexp constants, notably octal sequences.
- Improved syntax error messages.
v3.1.00[55] (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[56] (2023-12-14)
printf()andsprintf()use the Printf4J[57] 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)[58] (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.1.01
- [3] https://github.com/jawkio/jawk/issues/603
- [4] https://github.com/jawkio/jawk/issues/598
- [5] https://github.com/jawkio/jawk/issues/599
- [6] https://github.com/jawkio/jawk/releases/tag/v7.1.00
- [7] https://github.com/jawkio/jawk/issues/592
- [8] https://github.com/jawkio/jawk/issues/590
- [9] https://github.com/jawkio/jawk/issues/591
- [10] extensions.html
- [11] https://github.com/jawkio/jawk/issues/586
- [12] https://github.com/jawkio/jawk/issues/583
- [13] https://github.com/jawkio/jawk/issues/580
- [14] https://github.com/jawkio/jawk/issues/557
- [15] https://github.com/jawkio/jawk/issues/578
- [16] https://github.com/jawkio/jawk/issues/574
- [17] https://github.com/jawkio/jawk/issues/575
- [18] https://github.com/jawkio/jawk/issues/571
- [19] https://github.com/jawkio/jawk/issues/565
- [20] https://github.com/jawkio/jawk/issues/566
- [21] https://github.com/jawkio/jawk/issues/569
- [22] https://github.com/jawkio/jawk/issues/570
- [23] https://github.com/jawkio/jawk/issues/567
- [24] https://github.com/jawkio/jawk/issues/556
- [25] https://github.com/jawkio/jawk/issues/537
- [26] https://github.com/jawkio/jawk/issues/547
- [27] https://github.com/jawkio/jawk/issues/545
- [28] https://github.com/jawkio/jawk/issues/528
- [29] https://github.com/jawkio/jawk/issues/546
- [30] https://github.com/jawkio/jawk/releases/tag/v7.0.01
- [31] https://github.com/jawkio/jawk/issues/529
- [32] https://github.com/jawkio/jawk/issues/115
- [33] https://github.com/jawkio/jawk/issues/535
- [34] https://github.com/jawkio/jawk/releases/tag/v7.0.00
- [35] compatibility.html
- [36] https://github.com/jawkio/jawk/releases/tag/v6.4.01
- [37] https://github.com/jawkio/jawk/releases/tag/v6.2.00
- [38] https://github.com/jawkio/jawk/releases/tag/v6.1.00
- [39] https://github.com/jawkio/jawk/releases/tag/v6.0.00
- [40] https://jawk.io
- [41] https://github.com/jawkio/jawk/releases/tag/v5.0.00
- [42] https://github.com/jawkio/jawk/releases/tag/v4.1.00
- [43] https://github.com/jawkio/jawk/releases/tag/v4.0.01
- [44] https://github.com/jawkio/jawk/releases/tag/v4.0.00
- [45] https://github.com/onetrueawk/awk
- [46] https://github.com/jawkio/jawk/releases/tag/v3.3.05
- [47] https://github.com/jawkio/jawk/releases/tag/v3.3.04
- [48] https://github.com/jawkio/jawk/releases/tag/v3.3.03
- [49] https://github.com/jawkio/jawk/releases/tag/v3.3.02
- [50] https://github.com/jawkio/jawk/releases/tag/v3.3.01
- [51] https://github.com/jawkio/jawk/releases/tag/v3.3.00
- [52] https://github.com/jawkio/jawk/releases/tag/v3.2.00
- [53] https://github.com/jawkio/jawk/releases/tag/v3.1.02
- [54] https://github.com/jawkio/jawk/releases/tag/v3.1.01
- [55] https://github.com/jawkio/jawk/releases/tag/v3.1.00
- [56] https://github.com/jawkio/jawk/releases/tag/v3.0.00
- [57] https://github.com/metricshub/printf4j
- [58] https://github.com/jawkio/jawk/releases/tag/v2.1.00-SNAPSHOT7
Search Results for {{siteSearch | truncate:'50'}}
{{resultArray.length}}
Searching...
No results.
