JSUS Change Log

 

Version 1.17.12:

2017.11.29: Added new backend server for static "whom" pages to the JSITE server. This is part of the process of providing a per user social networking facility.

 

Version 1.17.09:

2017.08.15: Extended the fd() function with an optional second argument. This works like a dup2 function in C/C++ and is used primarily to redirect the the standard I/O files elsewhere, such as a pipe or socket. The FD of the first argument is duplicated to the specified second argument value (after closing any file referenced by the second argument). Both arguments must be positive, integers and the first must point to an already opened file.

2016.12.27: Added an additional argument value (0) to the version() function, to detect the endian state of the underlying hardware. A string is returned with just the letter "E" in upper case (big-endian) or lower case (little-endian).

2016.12.21: Added support for an <article> HTML block after the source code in any target file. This allows program documentation to be included within the source file, to be displayed on request by the JC (or other programs). The block is removed from the file during compilation.

2016.11.14: Disallowed loading of C libraries when running SUID root.

2016.11.07: Simplified and improved security of JSUS command line specification of source file. Clarified error messages for invalid option(s) on command line.

2016.11.03: Built new versions for both X64 and ARM64.

2016.11.02: Upgraded JSUS to Position Independent Executable (PIE) for better security.

2016.10.29: Created ARM64 executable from common sources.

 

Version 1.16.4:

2016.04.01: Added pre-computed Sec-WebSocket-Accept header to WS_ACCEPT variable in the environment created for WSX programs.

2016.03.29: Added essential support for WebSocket (WSX) line protocol to get() and put() functions. These function now auto-detect successful handshake and enter WSX data frame mode, where get() internally handles the peer's PING, PONG and CLOSE messages, while put() automatically frames simple output strings. Handles non-fragmented messages up to 64K. If more is required, the full protocol can be implemented using getb() and putb().

 

Version 1.16.3:

2016.03.07: Improved random number generation in rand() with increased bits and higher level of security.

2016.02.29: Added an AES encryption and decryption function.

2016.02.28: Added a cryptographic hash() function for MD5, SHA1 and SHA2.

2016.02.22: Added two functions to convert back and forth between strings stored in UCS, UTF-8, etc. and Base64. They are backwards compatible with the btoa() and atob() functions defined for HTML-5.

2016.02.15: Modified daemon() function to send output directed to stdout or stderr to the system log facility (user.info and user.err, respectively). May be overridden with the debug option (-d).

2016.01.31: Internal release of CGI and web socket (WSX) program support. User programs, in any language, must be stored in site.bin or whom.bin folders within the home directory. These programs are executed by jsite upstream proxy servers, with the credentials of the owner and group of the home directory. For security, these folders should not be world-readable.

2015.12.16: Added jsite support for local user "whom pages", in any user's private home directory. Simply add HTML content into /home/user/whom. Then access that content using http://example.com/~user in the web browser. Directory may added, deleted or modified at any time, without restarting jsite.

2015.11.25: Added jsite support for HTTPS connections. Simply add the certificate and private key files: /home/example.com/site.crt and site.key.

2015.11.02: Initial, internal release of the jsite web site manager. Automagically configures the nginx web server to deliver static HTML content, with no local system administration required. Simply create a user for example.com and the folder /home/example.com/site for the HTML content. Then start or restart jsite. Content may be added or modified at any time, but only by members of the example.com user group.

2015.10.12: Added the jsss utility to create a secure temporary storage structure and shared memory environment for JavaScript programs run by root. Mainly for our own utility and server programs.

2015.09.20: Deprecated fold() function. To be replaced with a new key() function which folds only Latin character sets (used by more than two-thirds of the global population). Other characters must first be transliterated, using nationally standardized conversion procedures. Existing fold() will be removed first quarter 2017.

2015.09.12: Added integer file descriptors throughout JSUS, in addition to the existing path name identifiers. Added the fd() function to extract an existing file's descriptor. Provided mainly to support passing of opened files to child processes.

 

Version 1.15.8:

2015.08.17: The lowest level get() logic is modified to allow reading from zero length /proc files. A specified max read length of zero now reads up to 64K.

2015.07.21: Added the ETC program configuration database facility. This is intended for a new Linux system distribution currently under development and is not yet fully released.

2015.07.13: Added the getText message translation database facility. This is intended for a new Linux system distribution currently under development and is not yet fully released.

2015.07.10: The run() function is modified to capture stderr as well as stdout, when a buffer size is specified.

2015.07.10: Modified fish() to return a null, for a dangling symlink, without any error code. Unlike a true "not found", the file status information is still valid and ftype() correctly returns "link". If a path to a symlink is successfully resolved, to an existing object, ftype() returns the type of that object.

2015.07.10: Added tilde expansion for all paths passed to JSUS functions. If any path begins with "~/", the tilde is replaced with the user's home directory. A single tilde is not replaced, but the same effect can be achieved with fish('~/').

 

Version 1.15.6:

2015.06.23: Initial general public release. Earlier releases, starting in 2010, were mainly for internal developer use.

 

See also: