Change Log

20170723 Fix: :x:$":foo" --> :foo (was :undefined, now inverse of $:foo)
20170718 Plotter: "settext" now also affects titles and keys. (lib/plot*.kg)
20170717 Added "cframe" and "cgrid" functions to plotter. (lib/
20170707 Added "enum" function; see lib/
20170707 Moved "sqr" function to
20170705 Added "setzspace" function to 3D plotter. See code. (lib/
20170705 Unrolled postscript loops in 2D/3D plotter output. (lib/plot*.kg)
20170705 Changed auto-scaling algorithm in 2D plotter. (lib/
20170701 Changing ".e" now reduces precision of math functions. (Use w/ care!)
20170629 Added simple 3D plotting library (lib/
20170624 Fix: ln(x) undefined for ~x>0, not x<0 (lib/
20170618 Fix: adding an existing element to a dict would unbalance the stack.
20170525 Disabled ]i in safe version of interpreter. Thanks, unknown hacker!
20170209 Added frequency table update function (
20170204 Upgrade to S9core Mk III.
20161212 Added Dave Long's line editor. Thanks!
20161124 Fix: prime@5 returned 0. Thanks again, Pranomostro!
20161123 Fix: missing "}" could result in core dump. Thanks, Pranomostro!
20160925 Fix: ]i command could core-dump if KLONGPATH was not set.
20160922 Fix: "ln" function was undocumented.
20160724 Upgrade to S9core Mk II.
20160720 Absolute/relative files no longer require suffix; try: ]l./test
20160719 Added KLONGOPTS environment variable.
20160712 CHANGE: Reshape semantics are now K-like; use x:^,/y for old behavior.
20160708 Added some set-theoretic operators (lib/
20160626 Fixed GC leaks in Enum (!x) and Transpose (+x). Thanks, Pranomostro!
20160607 "x2.qf" now uses bisection, slow but always converges (lib/
20160606 Fix: "exp" returned wrong result for small negative x (lib/
20160606 Added bisection root finding method (lib/
20160601 Added nregf fun (regula falsi with limtited precision), lib/
20160601 Fixed description of :# (Split) in klong-ref.txt.
20160507 Added "scplot2" function to lib/
20160505 Added "barplot" and "scplot" (scatter) to lib/
20160427 Fixed description of a few functions in lib/
20160427 Added "cdf" function (alias of "phi") to lib/
20160423 Fix: "barplot" function generated bad EPS (lib/
20160422 Fix: k-combinations kc(0;x) should be 1 (lib/
20160419 Fixed two unresolved references in lib/
20160417 Added new and more comprehensive statistics package (lib/
20160417 Added setgrid(spacing) to plotter (lib/
20160409 Fix: k-combinations kc(0;x) --> 0 in lib/ (was an error).
20160406 Added the "gcd" and "lcm" functions to lib/
20160403 Added the Beta distribution functions (pdf,cdf) to lib/
20160403 Added the regularized/incomplete Beta functions to lib/
20160321 Replaced secant by regf in lib/
20160321 Added regula falsi root finding method (lib/
20160305 Fix: chi2.pdf(1;0) --> 0 (lib/
20160303 Fix: aplot (lib/ generated faulty EPS.
20160302 Added key0..key4 functions for labelling curves (lib/
20160302 Added -u command line option to disable memory limit.
20160302 Placed labels outside of grid in function plotter. Thanks, MJK!
20160301 Added "setline" function for setting line patterns (lib/
20160228 Added t distribution PDF and CDF to lib/
20160224 Fixed description of "rcp" in lib/
20160220 Added chi-square quantile function to lib/
20160219 Added chi-square PDF and CDF to lib/
20160218 Added upper and lower incomplete gamma functions to lib/
20160215 Now renaming local variables, implementing 2/3-hearted static scoping.
20160215 The .module system function now expects a symbol argument (or 0).
20160215 Changed .module syntax in all modules in lib/.
20160214 Re-arranged some definitions in modules to reflect new scoping.
20160214 Changed signature of "secant" function to secant(fn;x0;xn).
20160213 Changed scoping ("module" now closes over internal vars); see docs!
20160212 Added incomplete gamma function ("gamp") to
20160211 Added "gamma" and "beta" functions to
20160209 Added "sin" and "cos" to
20160208 Moved "exp" and "rnd" to; added "ln" function.
20160204 Added setres (set resolution) function to plotter (lib/
20160127 Added multi-character reject to S9core reader (fixing [:sym] bug).
20160127 Included quantile function (qf; inverse CDF) in lib/
20160126 Fix: line numbers in messages were off by one.
20160124 .l and -l no longer print the library path (but ]l still does).
20160124 Fix: .l function did not work any longer after 20160116 fix.
20160124 Fixed potential GC leaks in some functions (Dstack access after pop).
20160123 Added function trace when kg is started with the -d (debug) option.
20160123 Added various functionality to curve plotter (lib/
20160118 Fix: -r option had become a synonym for -t. Oops.
20160117 Feature req: system command execution (.sys function).
20160116 Feature req: added transcript file (-t file, ]t file).
20160116 Fix: symbols could turn undefined after keyboard interrupt.
20160107 S9core: using LL suffix instead of cast in s9core.h. No cigar in C89.
20160107 S9core: added cast to INT_SEG_LIMIT, b/c there's no long long in C89.
20160103 Fix: qdict function (lib) replaced :#10 by :#1 in strings.
20151227 Fix: f'[a] tried to evaluate "a" as a variable.
20151221 .l can now load programs from absolute paths (./ or /).
20151220 Fix: hashes could be miscalculated when growing dictionaries.
20151219 CHANGE: dict lookup D?x returns a value on success, else :undefined.
20151219 Added .rs (Read String) function for parsing compound data.
20151218 CHANGE: D,x updates dictionary D. To get the old behavior: (,D),x
20151218 CHANGE: .l now returns the value of the last expr in the file.
20151218 Fix: local files would load even without "." in KLONGPATH.
20151218 Fix: line counter was sometimes off when loading files.
20151217 Added -r command line option: like -e, but does not print result.
20151216 Added the .comment system function (block comments).
20151216 Fix: symbols did not work as dictionary keys.
20151210 Made ]i list first element of KLONGPATH by default.
20151209 Dictionaries are always updated in situ now.
20151209 Fix: non-decimal numbers were not parsed correctly.
20151208 Fix: with intervals [x..y] where x>0 computed wrong curves.
20151206 Added context (monadic/dyadic) check for adverbs.
20151205 Moved differences to K to a separate document (klong-vs-k.txt).
20151202 Reference manual: added section about differences to K.
20151202 Fix: applied some small (but critical) fixes to the reference manual.
20151202 Fix: dictionaries could crash due to negative hash values.
20151202 Fix: interpreter crash after finding an adverb without verb.
20151201 Fix: Range semantics (use *'= for old behavior). Thanks again, Hakan!
20151201 "x", "y", and "z" are now ordinary variables at top level.
20151130 A+A::B should use value of B in left A. Thanks, Hakan Kjellerstrand!
20151128 Fix: -e option did not report argument too long.
20151126 Fix: TAB prompt broke rlwrap. Thanks, Hakan Kjellerstrand!
20151125 Fix: []:_A should return [A], not A.
20151124 Added .a (Arguments) variable (holding command line args).
20151124 Added file I/O functions; see I/O CHANNELS in klong-ref.txt.
20151123 Added KLONGPATH environment variable; moved Klong programs to lib/.
20151122 Fix: Size was called Count in documentation.
20151122 Added -e expr (evaluate expression) command line option.
20151122 Fixed a GC leak in Over/Neutral.
20151121 a::1%0;a no longer reports "a" as "undefined" (true but not helpful).
20151121 Allowed function definitions to span multiple lines.
20151121 Applied some minor fixes to the documentation.
20151120 Fix: "x", "y", "z" should have been read-only. Thanks, Steve Graham!
20151119 Fix: _1 and &[1] could crash kg. Thanks, Alexander Shendi!
20151119 Fix: getline() appears to be reserved by POSIX. (Also by Alexander)
20151119 Clarified a few points in the documentation. Thanks, Bobby Jack!
20151119 Fix: [:""] (a list containing a comment) is now equal to [].