zkl Downloads

To get started using zkl, all you need is the zkl binary and documentation. The binary is self contained and will run the documentation examples.


Downloads: Documentation (PDFs)


Software License: The zlib/libpng License, http://www.opensource.org/licenses/zlib-license.php. This license only covers the software I've written, anything consumed or produced by these tools is yours. This is a OSI approved open license.


Downloads: zkl Source Code

  • zkl_vm_src.zip: Source code for the zkl VM (which is zkl). ANSI C (C99) + "//" comments + inline. Project files for Microsoft Visual C 14 (Win10) and a Makefile for Linux/FreeBSD/PC-BSD/clang
    • v1.14.7; 2020-02-02; 82 files (652,203 bytes)

  • zkl_tests.zip: The test suites (8,700+ tests). It takes under 1 minute to run these tests on my Intel i7 4 core desktop Linux machine, about 1 minute on for Windows 10 running in a VM on the same machine.
    • 2020-02-02; 58 source files (309K bytes)

  • zkl_scripts.zip: The scripts (all eight of them!)
    • hexDump: Print the contents of a file in hex and ascii, ala Debug.
    • find: A "sorta like" Unix find, for when Windows search drives you nuts.
    • manifest: The program I use to back up and/or create the package zip files.
          See "manifest" in this package for an example.
      This package was created with: zkl manifest --zip Scripts/manifest
          Not documented.
    • hash: Print the message hash (MD5 or others) of one or more files. Also can use SHA-256 (if you have zklMsgHash).
    • sinebar: Useful for machinists doing precision work with gage blocks.
      Calculates the gage blocks need to make a stack, a sine bar stack or two stacks of the same height.
    • Uses an 81 piece inch gage block set.
    • zgrep: A combo find + fgrep for non unix machines (it does work on unix just fine but is redundant).

  • iso8601.zkl:  Code for working with the ISO 8601 time standard.
    • (2011-09-01, 20kb). Put this in ?/ZKL/Src/Time/. If you use this a lot or are annoyed by the load time, you can pre-compile: "zkl -c Src/Time/iso8601 -O Src"
    • Documentation: zklISO8601.pdf (8 pages, 192kb)

Downloads: Extension Libraries

Source code is ANSI C (C99) + "//" comments or C++. You can compile the Windows code with Microsoft's Visual C++ Express Edition, which is free from http://www.microsoft.com/express/download/. The code also compiles on Linux, FreeBSD & PC-BSD with clang (GCC has issues).

  • BigNum: Glue for infinite precision integer libraries MPIR (http://mpir.org/, Windows) or GMP (http://gmplib.org/, Linux). MPIR is a fork of GMP that is source compatible.
    • Example:
      zkl: var BigNum=Import("zklBigNum")
      zkl: fcn fact(n) { return(n and n*self.fcn(n - 1) or 1); }
      zkl: fact(BigNum(42)).toString(10,3,",")     // 42! pretty printed
      1,405,006,117,752,879,898,543,142,606,244,511,569,936,384,000,000,000
      zkl: fact(BigNum(42)) : "%,d".fmt(_)   // same thing
      zkl: "%,d".fmt(fact(BigNum(42)))      // same thing
    • zkl_dll_bignum_src.zip: Source (MSVC14, Linux/FreeBSD/PC-BSD/Win10)
      • 2017-07-01; 10 files (38kB bytes)
  • Curl: A very small/simple front end to cURL (https://curl.haxx.se/). The only functionality is to load a URL (of the very many types that cURL supports).
    • Example:
      zkl: var ZC=Import("zklCurl")
      zkl: var data=ZC().get("https://www.google.com")
      L(Data(46,290),794,0)  // (text, bytes of header, bytes post body)
    • zkl_dll_curl_src.zip: Source (Linux/FreeBSD/PC-BSD/SWin10)
      •  (2017-12-01; 9 files, 12kb bytes).

  • EditLine: A very minimal front end to libEdit, a line editor (like GNU read line). Unix/Linux/FreeBSD only (Windows CMD has this functionality). Get this if you use zkl on Linix/FreeBSD, it gives you command line editing. Includes saving history across sessions.


  • GSL: A front end to libGSL, the GNU Scientific Library (https://www.gnu.org/software/gsl). GSL does complex, vector (real and complex) and matrix (real) math and linear algebra.
    • Example:
      var GSL=Import("zklGSL");
      var xs=GSL.VectorFromData(0,1, 2, 3, 4, 5, 6,   7,  8, 9,  10);
      var ys=GSL.VectorFromData(1,6,17,34,57,86,121,162,209,262,321);
      var v=GSL.polyFit(xs,ys,2);
    • v.format()
      1.00,2.00,3.00  # == 1 + 2x + 3x2
    • GSL.Helpers.polyString(v)
      1 + 2x + 3x^2
    • GSL.Helpers.polyEval(v,xs).format();
      1.00,6.00,17.00,34.00,57.00,86.00,121.00,162.00,209.00,262.00,321.00
    • zkl_dll_GSL_src.zip: Source (Linux/PC-BSD)
      • 2017-07-01; 8 files (28kB bytes)
  • MsgHash: Calculate message/digest hashes: SHA-256, SHA-1, RIPEMD-160 and base64/32 codec plus keyed-hash message authentication code (HMAC).
    • Example:
      var MsgHash = Import("zklMsgHash");
      MsgHash.SHA256("message")

      ab530a13e45914982b79f9b7e3fba994cfd1f3fb22f71cea1afbf02b460c6d1d
  • testDll: A small test dll to see if you can compile and run a zkl dll/shared library extension.
  • zeelib: A zlib (gzip) interface (zlib home page). The interface is a streaming one (file like), you can use it to stream compressed data between threads (among many other things). Refer to Appendix B in the manual. Also includes a program that compresses files into a zip file (which I use to create these downloadable zip files).
    • Example:
      C:\ZKL>zkl
      zkl: var gz = Import("zeelib").Compressor(True)
      zkl:
      var f = File("text.gz","wb");
      zkl: f.write(gz.write("This is a test").close().drain())
      32
      zkl: f.close()
      zkl: ^C
      C:\ZKL>gzip -d < text.gz
      This is a test
    • zkl_dll_zeelib_src.zip:Source (MSVC 14, Linux/FreeBSD/PC-BSD/Win10)
      • 2017-06-01; 14 files (40kb bytes)
     
All rights reserved