SHA sums SHA-256 sum cd94d4034ed8a20f25b351a65de912a5b5acf694cc75df2b1c5d2d5512a28130 SHA-256 sum 283eb3ac6dd8c9560e10b808adaa8a9a2a09b37e51ba5942b88449391cd70968


Compiling langur 0.10 requires the following (see installation instructions). Since we're now using Go modules, the IDE might download and install these for you automatically.

As of 0.8, it is no longer necessary to use the decNumber library and CGo wrapper, as it has been replaced with a slightly modified version of shopspring/decimal, a native Go library with arbitrary precision.

Compiling langur 0.7 or earlier also requires the following (see installation instructions).

revision history

A full revision history is included in the download.

2020-06-03 - 0.10.4 - updated date-time literals to allow other ways to specify a current date-time in a specific time zone, such as dt(US/Arizona) 2020-04-26 - 0.10.3 - removed automatic conversion of strings to arrays in group(), groupby(), and groupbyH(); use s2cp() if you need 2020-04-26 - 0.10.2 - now using Go modules - fixed/clarified error messages for execT() and execTh() - concatenate null to number acts as no-op (consistent with other operations) - standardize true/false grouping result of group() function, putting true results first This is similar to the standardization of results done in 0.9.3, but not related to passing a single argument to group(). - fixed test for third argument type in replace() function - updated group() function to accept a string, converting it to an array of code points - added groupby() function, which includes the values used to determine grouping, building an array of arrays of arrays - added groupbyH() function, which includes the values used to determine grouping as hash keys 2020-04-19 - 0.10.1 - added toDateTime() function - fixed RFC3339 timestamp to use Z for UTC time - added ISO 8601 durations to date-time literals, which are converted to integers representing nanoseconds - added date-time addition/subtraction (nanoseconds), which is easily combined with use of durations - used Round(0) on some DateTime creation routines to ensure they are stripped of "monotonic clock" settings, which could cause errors - added option to use variable for date-time interpolation format string - updated concatenate range to string/string to range to take range as code points - updated concatenate range to null to generate string - updated concatenate null to convert number (code point) to string - removed 8 byte operand from opcode package 2020-04-16 - 0.10.0 This revision makes breaking changes to parsing multi-variable declarations and assignments. - multi-variable declaration/assignment no longer uses parentheses - multi-variable assignment limited to statement context or to the test expressions of if expressions (single assignment still possible in expression context) - for loop init/increment sections parsed as multi-variable assignments, not as lists of assignments - given test expression cannot contain declarations - removed break with explicit value not using assignment operator (deprecated in 0.9.6) - removed explictly negated regex modifiers (deprecated in 0.9.4) - fixed lexing blockquotes on quoted word arrays to not require ending marker to start at beginning of line, as it is for strings

breaking changes

0.10 changes parsing multi-variable assignment in 2 ways (limited to statement context or tests of if expressions, and no longer uses parentheses).

0.10 disallows declarations in given test expressions, but no one will miss it.

0.10 removes break with value not using assignment operator (deprecated in 0.9.6).

0.10 removes using explicitly negated modifiers, as no longer necessary (deprecated in 0.9.4).

0.9.3 allows an ending block quote marker to be spaced from the beginning of the line with tabs and spaces. It also standardizes the result of group() when called with 1 argument (by truthiness) to always put true array first, then false array second.

0.9.2 returns nanoseconds, not seconds, from toNumber() when passed a date-time.

0.9 limits declaration expression context to statement or to if/given expression tests.

0.8.4 changes the default of base and hex interpolation modifiers to pad with spaces; precede the number with 0 to pad with zeroes. 0.8.4 also fixes padding counts for interpolation modifiers to include the sign, if one present.

0.8 changes the 1 part for loop (test only) to a while loop, with implicit loop variable _while.

0.8 changes the decimal implementation from a fixed 34 digit precision to an "arbitrary precision" decimal. The following changes were also made.

0.7 changes the implicit exception variable from .err to _err.

0.7 removes the use of carriage return/line feed combination for new lines in source code (deprecated since 0.6.8). Use ASCII line feed only ("Linux new line").

0.7 evaluates complex test expressions for given expressions once instead of on every case. This is both more efficient and convenient.

0.6 disallows anything but a variable to be used as a lone token in an interpolation.


Langur uses the Apache license 2.0.

The Go wrapper for decNumber and the decNumber library use an ICU license, which is included with the download.