Quick Nav
- Release 1.0.0
- Release 1.0.0.B3
- Release 1.0.0.B2
- Release 1.0.0.B1
- Release 0.9.9
- Release 0.9.8
- Release 0.9.7
- Release 0.9.6
- Release 0.9.5
See Also
Ejscript Change Log
This change log chronicles the features and fixes in each Ejscript release.
Ejscript 1.0.0 Beta Release
This is a beta release for Ejscript 1.0. This includes a full JavaScript language, virtual machine, optional stand-alone compiler, disassembler, documentation generator and embeddable web server. Ejscript extends the basic JavaScript language and includes a comprehensive MVC web framework with suport for Ajax controls, jQuery, SQL databases and database migrations.Changes in 1.0.0
Fixes
- Number.power
- TextStream.read when last line has no line terminator
- Module loading when module filenames have a "."
- Http with credentials
- Web page reload when using System.cmd for command execution
- Optimize make install and make package when used with svn
- Path.find was not handling nested directories correctly
- XML node update issues
- Number.toString() for typed variable declarations
Changes in 1.0.0 Beta 3
Fixes
- Dependency checking when building
- Iteration in for statements inside Constructors
- Strict equality testing with null and undefined
Changes in 1.0.0 Beta 2
Major New Features
- Versioned modules. Added versions to module and require language directives. Loader will load required versions and intelligently load the most recent qualifying module.
- Support side-by-side loading of multiple versions of the same module.
- Support Web Workers. The Worker class can be used to create new interpreter instances in dedicated worker threads..
- New unit test suite manager (utest). Expanded unit tests.
Minor Features
- Module files have checksums. Loading stale modules will thow an error
- Optimize code generation
- Added eval() function
- Auto rebuild application if a new Ejscript version is installed
- Auto rebuild App.mod if App.src changes
Fixes
- Fix library and module search paths and module resolution
- Improved ECMA standard compliance
- Error.stack property
- Hybrid type slot binding
- configure --disable-all
- JSON serialization and deserialization issues
- Http.upload with non-simple paths
- Remove namespace decorations from JSON strings
- Building with ./configure --static
- Path + String operations. Now casts Path to String
- Building ./configure --disable-db
- Compiling with ejsweb compile all. Was missing views. Thanks Damien.
- Optimize memory footprint.
- Partial support execution from ROM (not all features operational).
- Fix some parser asserts
API Changes
- Added Path.find
- Modified Path.remove to remove empty directories
- Removed Path.removeDir to remove directories
- Added Path.removeAll to remove directories with contents
- Added find() in ejs.sys
- Change property Record.numRows to method Record.getNumRows()
- Change property Record.columnNames to method Record.getColumnNames()
- Change property Record.db to method Record.getDb()
- Change property Record.keyName to method Record.getKeyName()
- Change property Record.tableName to method Record.getTableName()
Changes in 1.0.0 Beta 1
Major New Features
- File Upload
- Faster Generational Garbage Collector
- Optimized memory footprint
- Multi-threaded support. Multiple interpreters can execute in their own thread.
- Shared master interpreter across multiples thread.
- Enhanced Http class supporting forms, file upload, HTTP chunking and SSL.
- Socket class.
- Cygwin platform support.
Minor Features
- Enhanced namespace language support
- Fully relative URLs to support running behind a reverse proxy
- Ability to import the Ejscript runtime and snapshot for each application
- Webserver updates
- Add EjsPath for setting module search path in Appweb.conf
- Add --search to ejsweb for setting module search path
- Added memory redline callback handling and Memory exceptions
- Optimized memory usage, reduced footprint
- Enhanced module search path controls.
- New unit test framework "utest".
Fixes
- SSL protocol support for the Http class
- Support for unchecked checkboxes
- Module search path handling
- Nested try/catch inside functions
- Use of iterations inside finally blocks
- TextStream dropping bytes
- File upload
- Chunked transfer encoding for input and output
- FileUploadSize
- Http.secure property
- GC issue for collecting frames
- Ejsweb error reporting
- Issue with using default args before a rest arg
- Call expressions split over multiple lines
- JSON encoding
- SQL quoting
- Compiler warning fixes
- Fixed regular expression doc
- Fixed readLines on windows and other platforms
- Fixed TextStream reader
- Fixed File.size for open files
API Changes
- Modified Native APIs
- mprStart. Removed flags parameter
- Http and Socket classes have new methods and signatures
- Record class supports hasOne, hasMany. The find and findAll methods have new and better defined options
- Fixed Stream.read() API definition. Offsets are now by default 0.
Changes in 0.9.9
Major Features
- VxWorks support
- Windows CE support
- Cross compilation support
- Enhanced File I/O and Path support
- Add support for ECMA-262 prototype based inheritance
- Improve compliance with ECMA libraries
- Enhance web MVC framework. Database ORM now supports associations.
- Enhance web dynamic table control. Now supports column sorting and dynamic data updates.
Minor Features
- Added ejs -f -s switches for compatibility with SpiderMonkey shell
- Added App.outputStream, errorStream, inputStream
- Added input(), output() global methods
- Enhanced print() to serialize objects
- Added stable, dev and default branches to Mercurial repository
- Windows CE port
- Support for MAC 10.4 and MAC PPC targets
- Support for OpenWrt platform
- Simplified build output with make TRACE=1 verbose option
- Added literal getters and setters
- Optimize blocks by adding hoisting of block scope objects
- Improved web framework app style sheet theme support
- Added generation of src/App.es for web frameworks
- Enhanced jQuery support for Ajax dynamic table updating
- Support degraded opertion if client's browser disables client-side JavaScript
Fixes
- Fixed "while(assignmentExpression)"
- Fixed toString and toJSON overriding
- Fixed several interpreter VM issues
- Fixed stack pop for typeof op code
- Fixed slot generation when using configure --shared
- Fixed select() event handling on Vxworks
- Fixed searching for ejs.mod in release tree with product installed
- Fixed several byte ordering issues in module files
- Fixed module search when running inside the VS debugger
- Fixed support for Debian Lenny
- Fixed Path comparison operations
- Fixed shared builds not being able to build samples or run ejsweb in some cases
- Fixed mixed type operations with strings and numerics
- Fixed web framework belongsTo, hasMany and hasOne relationships
- Fixed VM byte code comparison operations with null and casting rules
- Fixed VM property lookup to unbound private members
- Fixed some compiler parsing and code analysis issues
- Fixed return/break inside catch blocks
- Fixed closure creation
- Fixed a garbage collection bug
- Fixed HTTP form encoding. Support flattening nested objects
- Fixed JSON encoding and parsing. Add quotes in all cases
- Fixed compiler code generated for block-less if/then clauses. Was not clearing eval stack correctly
- Fixed cast of String to Boolean for empty strings
- Fixed XMLHttp open method setting uri
- Fixed namespace qualified property access
- Fixed property name clashes for views and database records with user defined properties
- Fixed Http.response to be able to be called multiple times
- Fixed checkboxes when unchecked. Was not defining params value
- Fixed XML parsing for CDATA
- Fixed JSON some parsing cases
- Fixed HTTP client when receiving HTTP 100 intermediate responses
API Changes
- App.exe renamed to App.exeDir
- print() serializes objects instead of toString
- Major refactor for: File, Path and FileSystem.
- Native C API refactoring for: MprFile, MprPath, MprFileSystem.
-
- Modified Native APIs
- mprErrorPrintf => mprPrintfError
- mprStaticErrorPrintf => mprStaticPrintfError
- mprAllocStrcat => mprStrcat. Removed delimiter.
- mprReallocStrcat now returns string
- mprAllocSprintf => mprAsprintf and now returns string
- mprAllocVsprintf => mprVasprintf and now returns string
- mprAllocStrcpy => removed
- mprSprintf now returns string and not length
- mprVsprintf now returns string and not length
- mprCreateStaticSpinLock => mprInitSpinLock
- mprAllocObject => mprAllocWithDestructor
- mprAllocObjectZeroed => mprAllocWithDestructorZeroed
- mprAllocMemcpy removed
- mprEscapeCmd, mprUrlEncode, mprUrlDecode, mprEscapeHtml all buffers and return strings
- mprGetAppPath, mprGetAppDir return string
- Most of mprFile APIs are renamed to mprPath
- MprFileSystem, MprFile, MprFileInfo refactored.
- MprFileInfo => MprPath
- Mpr.fileService => Mpr.fileSystem
- mprAccess => mprPathExists
- mprDelete and mprDeleteDir => mprDeletePath
- mprGetBaseName => mprGetPathBase
- mprGetDirName => mprGetPathDir
- mprGetExtension => mprGetPathExtension
- mprGetParentDir => mprGetPathParent
- mprGetDirList => mprGetPathFiles
- mprGetFileInfo => mprGetPathInfo
- mprGetAbsFile => mprGetAbsPath
- mprGetRelFile => mprGetRelPath
- mprCleanFilename => mprNormalizePath
- mprMakeTempFileName => mprGetTempPath
- mprGetFileDelimiter => mprGetPathSeparator
Changes in 0.9.8
Major Features
Minor Features
- Added Cross compilation byte ordering control. New ejsc switches --cross and --endian.
- Fix source code tabbing.
- Added error code to Error class.
- Documentation updates.
Fixes
- Fixed ejsweb migrations.
- Fixed ejsweb to be smarter when creating the web server command string. Now works for installed builds and from a debug tree..
- Fixed poor error message from ejsweb when if fails to run the web server
- Fixed 64 bit MD5 encodings.
- Fixed rendering empty ejs web pages.
- Fixed date unit tests.
- Fixed source distributions for windows. Was missing some VC project files and buildConfig.h.
- Fixed crash when loading custom native modules into the web framework
- Made ejsPath per interpreter
- Modified ejsCreate() API to take a search path argument
- Fixed parsing paths with ".."
Changes in 0.9.7
Major Features
- Added CGI gateway program (ejscgi).
- Added Appweb web server for local and proxied hosting.
- Added Apache reverse proxy support.
- Added Appweb in-memory module.
- Added model validations.
- Added database migrations.
- Added controller life-cycle filter hooks.
- Enhanced ejsweb generator. Added migration, model and scaffold generation. Also migrate application and running in-built web server.
- Added native JSON support.
- Added flash[] inter-action storage.
- Added jQuery support for Ajax and effects.
- Enhanced user controls.
- Added async form and async link support.
Minor Features
- Simplified building for cross-compilation.
- Documentation updates.
- Uninstall on MAC OS X.
- Improved ECMA-262 compliance: Added Function.apply() and Function.call().
- More documentation for the Web Framework.
- Added input view control for smart rendering based on data type.
- Added improved style sheets and themes for use by framework generator.
- Enhanced configure program to intelligently search for dependent components and packages.
- Added block-less function declarations. Can define functions without {} and return. The body is just a simple expression.
- Optimized ejsweb command to directly run pre-compiled byte code.
Fixes
- Renamed compiler from ec to ejsc.
- Renamed web generator from egen to ejsweb.
- Installation and removal fixes.
- Fixed cross compilation build system.
- Fixed setting of LD_LIBRARY_PATH when building cross.
- Fixed Mips compilation switches.
- Fixed System.run. Now uses inbuilt MprCmd instead of popen.
- Fixed native JSON encoding of null, undefined and \\.
- Several VM evaluation fixes.
- Fixed session encoding.
- Fixed cross-request preservation of flash[].
- Fixed textarea control.
- Fixed SQLite datatype mapping.
- Fixed serialize/deserialize. Fixed backquoting and embedded quotes.
- Moved modules to /usr/lib/ejs/modules and binaries to /usr/local/bin.
- Fixed compiler bug not warning when accessing instance properties from static code.
- Fixed property lookup to use all open namespaces in all blocks.
Changes in 0.9.6
Major Features
- Improved ECMA-262 compatibility.
- Added language compliance controls. Added --lang switches to the configure, ejs, and ec programs. Added "use lang" pragma directive for scripts.
- Extensive updates to the documentation. Especially in language and web framework guides.
Minor Features
- Added typeof operator.
- Added Number and Boolean function constructors.
- Added typeOf() global function for easily determing the type of an object.
- Made ejs support -f switch for compatibility with Mozilla test suites.
Fixes
- Fixed Reflect().typeName not returning correct results.
- Fixed String(number) constructor pattern. Updated doc.
- Fixed parser with typeof operator as the first input token.
- Cleanup error reporting in compiler.
- Fixed prefix and postfix operators on literals. Now warns appropriately.
- Fixed the "in" operator when searching in arrays or instance objects.
Changes in 0.9.5
Major Features
- Garbage collector changed to a non-compacting, generational mark and sweep with pooled object allocations.
- New hierarchical virtual memory allocator offering arena and slab memory allocation services.
- VM Byte codes optimized for direct access and early binding.
- Object memory layout optimized and compacted.
- Class library extended with enhancements for Date, Regular expressions and other types.
- SQLite API.
- Ejscript web framework for "rails" style server side JavaScripting.
- Simple reflection API.
- More unit tests.
- Interfaces including interfaces with bodies.
- Streams classes including TextStream, BinaryStream.
- Enhanced Http. Now supports SSL, authentication, chunked transfers and post data.
Minor Features
- Enhanced and debugged ByteArray class.
- Master interpreter and clone interpreter support.
- XMLHttp class.
- More documentation.
Fixes
- Improve error reporting for ec.
- Fixes for stack trace reporting on exceptions.
- Fixed garbage collection bug for array elements in some cases.
- Fixed some compiler crashes on illegal programs.
- Fixed some code generation issues.
Changes in 0.9.3
Major Features
- Major performance work for memory and CPU utilization.
- Extended Date, Array and String classes.
- Improved documentation.
- Extended suite of unit tests including load, benchmark and valgrind tests.
Minor Features
- Added open, close, read, write file I/O convenience routines. These wrap the more comprehensive File class capabilities.
- Completed the installation and removal packaging for major operating systems.
Fixes
- Continued push to drive quality higher using a continuous integration build farm.
Changes in 0.9.2
Major Features
- Added web ESP (rails-like) framework.
- Added SQLite support.
- Added RegExp regular expression class.
- Added Http client class.
- Added the with statement.
- Lots of bug fixes.
Minor Features
- Updated MPR portable runtime layer.
Fixes
- Too many to count.
Changes in 0.9.1
Major Features
- First-cut product documentation.
- Object, Array, String methods.
- ByteArray.
- ejs.io namespace including: File, BinaryStream, TextStream, IStream.
- Updated ejsmod to support namespaces as packages.
- Extended unit test suite.
- Lots of bug fixes.
Minor Features
- Increased unit test coverage.
Fixes
- Too many to count.
Changes in 0.9.0
Major Features
- Supporting catch (var: type).
- Supporting cast, to, instanceof, in with binary expressions.
- Namespaces including "use namespace" and "use default namespaces".
- Packages are removed in deference to namespaces.
- Added module blocks and "use module".
- Added iterator support for for/in, for each.
- New ejsmod program replaces old bun program. Handles listing, slot and doc generation.
- Ejsmod generates documentation based on javadoc style comments.
- Enhanced assembler listings.
- Improved code generation.
- Completed support for block scope.
- Closures and bound method capture.
- System library documentation.
- Object, Array and String library methods implemented.
- Support class settings.
- E4X support.
- ECMA compliance mode.
- Implemented type checking on function calls in the VM relieving native types of the burden.
- Added parameter type checking and type coercion on function calls.
- Implemented rest args (...rest).
Minor Features
- Increased unit test coverage.
- Code cleanup and refactoring.