Jaxer Release Notes

Jaxer Release Notes

Release 1.0.2:

  • Add onsslcerterror support to the Jaxer Sandbox, to support working with SSL connections that may not have proper certificates. This was already implemented for Jaxer.XHR.
  • Add Jaxer.Util.createObject to support creating objects from their constructor names and an arbitrary (not known in advance) number of parameters. Also enhanced Jaxer.Util.findInGlobalContext to support namespaced names.
  • Add Jaxer.Util.DOM.insertHTML to allow injection of any HTML content in the DOM. It is the HTML equivalent of Jaxer.load, and the programmatic equivalent of the <jaxer:include> element (but with a bit more control).
  • Support addEventListener for the serverload event, and even for onload (controllable through Jaxer.Config.ONLOAD_ENABLED and per-request via Jaxer.onloadEnabled). Similarly for the afterprocesscallbacks event. (JXR-91)
  • Build into Jaxer Core (i.e. Mozilla) support for __noSuchMethod__ on the anonymous global object. It works exactly the same as, e.g., window.__noSuchMethod__ and allows dealing with previously-undefined tokens. (https://bugzilla.mozilla.org/show_bug.cgi?id=466239)
  • Fixed several issues with Jaxer.DB.ResultSet that occur when there are no rows (no data). These arise in particular when trying to serialize (to JSON) a resultset with no rows.
  • Corrected an inconsistency in the API for Jaxer.DB.ResultSet. The result is that the singleRow, firstRow, and finalRow properties now return the row as an object with column-named properties rather than as an Array. Note that this may break code that was relying on these (inconsistent) APIs!

Release 1.0.1:

  • Great simplified how developers can build Jaxer from source on their own
  • Jaxer Community Edition vs Jaxer Pro (same code, different licensing and support)
  • Fix bug in most of the Util.DOM methods that insert script tags: discrepancy between how they were documented (correct) and the params they take (wrong).
  • Correct and improve when and how the type attribute of emitted script elements is used (JXR-338)
  • Add new JaxerManager command line options to restrict the local network interface on which it is listening: webinterfacelocalip and commandinterfacelocalip (JXR-395)
  • Added an onlocationchange event handler to Jaxer.Sandbox to detect, and optionally cancel, the location (URL) of the Sandbox's content from being changed
  • Fixes to serviceDispatcher and rpcDispatcher: interpret the findFile() method's first argument as a true (native OS) path on disk; do not allow a path part of ".." (so you cannot go above the service root); restrict looking for the .js file at or above the service root.

Release 1.0.0:

Much has been added and improved in Jaxer 1.0 — too much to capture in these release notes.

For more information on what has changed, and for guidelines on migrating applications based on the Jaxer beta (0.9.x) APIs to Jaxer 1.0 APIs, please refer to http://www.aptana.com/docs/index.php/Migrating_from_Jaxer_beta.

Release 0.9.7:

  • Added informative error messages to DB.MySQL, using whatever information MySQL gave about the error (JXR-153)
  • Added a removeAll() method to the Jaxer.Container prototype so you can now clear out your session, sessionPage, page, or application containers (JXR-166)
  • Addressed threading issues in JaxerManager running on some operating systems (JXR-176)
  • Added a Jaxer.Util.isEmptyObject(obj) to determine whether an object has no (enumerable) properties
  • createDB (and hence also Jaxer.DB.createDB) now returns a connection object (JXR-168)
  • Improvements to scriptdoc (and hence to content assist and help docs)
  • Use the latest recommended optimization options from Mozilla (http://mxr.mozilla.org/mozilla/source/tools/tinderbox-configs/firefox/win32/mozconfig)
  • Fixed GTK issue that caused a problem when using the canvas element on some operating systems (JXR-102)

Release 0.9.6:

  • We now allow the value of the proxy attribute on a function to be anything that is equivalent to true or false, not just specifically true or false, when deciding whether to proxy it. (JXR-156)
  • Fixed an important bug where we did not mark the document as having been touched by Jaxer when the only changes to it were done by an externally-src'ed JavaScript file (JXR-162)
  • Improve the performance when loading in externally-src'ed JavaScript scripts by using new Core-level functionality to detect when functions are created, for later tagging with the script tag's runat value (JXR-111)
  • Allow for Unicode path for the log file (JXR-110)
  • Check more robustly whether a connection from the web server to Jaxer has succeeded. This allows restarting Jaxer independently of the web server, which previously only worked correctly on Windows. Note that this required a protocol change, so the web server and JaxerManager/Jaxer need to be using this same new protocol (JXR-160)
  • Fix issues related to running on 64bit Linux versions, such as Ubuntu 64bit (JXR-158 and others)
  • Fixed bug in the default local_jaxer/configRoutes.js and added a warning if we encounter a non-function item in the Config.routes array
  • Fixed Jaxer.DB.lastInsertRowIdand related (JXR-167)
  • Fix some Linux build issues

Release 0.9.5:

  • Updated Mozilla base to same as Firefox3 beta 3 ("FF3b3"), which introduces numerous improvements. Made changes to Jaxer for compatibility
  • Added the ability to compile scripts into bytecode, and execute compilde bytecode
  • Changed the callback environment such that callbacks use the regular (window) global object
  • Created the autoload attribute on script blocks to automatically load a library JS file into both regular page requests and callbacks in that page. Added Jaxer.Config.RELOAD_AUTOLOADS_EVERY_PAGE_REQUEST for easier development/debugging cycles
  • We no longer inline externally-sourced scripts that run on the server, for a much better intuitive server-side experience
  • By default, Jaxer now does not embed clientFramework inline in all outgoing pages, instead it embeds an externally-sourced script tag. In Studio we continue to use the inlined clientFramework
  • Clean up the way we do callbacks, in particular making sure that a page will only ever call its own callbacks, even if another page has identical callbacks
  • Changed the (character) socket code to be compatible with FF3b3 (JXR-140, JXR-143, and others)
  • For Mac OSX, added MySQL support, and allow starting and stopping Jaxer and Apache independently of the main Start All button
  • Added Jaxer.Util.Stopwatch functionality for timing
  • Allow multiple prepared statement parameters to not be wrapped in an Array (JXR-99)
  • Now we can build and run on Solaris!
  • For Windows, add MSVC runtime DLLs that are needed for Jaxer built with MSVC 2005.
  • Added more static methods to Jaxer.File and Jaxer.Dir, and fixed Jaxer.File.chmod
  • Fixed bug in prepared statement support for MySQL
  • JaxerManager can now read settings from a cfg file (JXR-107)
  • Improvements (mainly robustness and monitoring) to Jaxer startup scripts, JaxerManager, and interprocess communications
  • Fixed mod_jaxer to be compatible with gzipped contents
  • Enhancements to Jaxer.request
  • Minor JS and scriptdoc bug fixes
  • File I/O unit tests now use tmp folder
  • Fixed issue when running within Studio on Vista SP1 when you're not an administrator. For some reason it was having a problem with the length of the log file path. We now use different build flags when building JaxerManager (JXR-101)

Release 0.9.4:

  • Added support for MySQL on Linux (JXR-48)
  • Document Jaxer.Request.FileInfo to better explain how to work with uploaded files (JXR-79)
  • Added the implementation and version properties to the MySQL and SQLite connections' APIs (JXR-45 and JXR-46)
  • Added extra information about ports to StartServers.bat and StartJaxer.bat (Windows) (JXR-30)
  • Explicitly check for the loading of the required Jaxer prefs file (JXR-47)
  • Fixed some API docs (JXR-63, JXR-77)
  • Add content-type-based filter setting for Jaxer handling of requests (JXR-76)
  • Try to use same or similar failure codes for MySQL as SQLite in MYSQL COM interfaces (JXR-57)
  • Ignore invalid command line args instead of crashing JaxerManager (JXR-56)
  • Fix and improve some issues related to starting up new Jaxer processes automatically (JXR-70)
  • Decode incoming data as UTF-8 (JXR-38)

Release 0.9.3:

  • Removed a scriptdoc tag that is not yet supported and that prevented some API documentation from being generated.
  • Fixed Linux build system problem that prevented inclusion of API documentation in the Linux release package.
  • Added the isOpen property and the test() method to the APIs for Jaxer.DB.MySQL.Connection and Jaxer.DB.SQLite.Connection.
  • Changed the release notes from text to html.
  • Resolved the MOZILLA_FIVE_HOME issue on Linux (JXR-60).
  • Significant speed improvement: we were scanning the entire global context at the end of page processing to look for global functions with a runat property, to catch those not picked up in script block parsing. We now added a setter to the Function prototype to automatically register any functions that have runat properties set, so we can just refer to this registry.
  • Added Jaxer.Dir.grep(path, options) and Jaxer.Dir.map(path, options, fn) for easier walking/processing of folder hierarchies.
  • Modified the jQuery tests to skip tests with exceptions and display them as skipped in the results. This increased the number of tests passed from 538 to 581, leaving 42 tests still to fix.
  • JXR-52: Do not check content type if page extension is already configured for Jaxer filter, just pass it to Jaxer. This allows processing of more document types by Jaxer (e.g. XHTML) but some issues, such as JXR-53 and JXR-54, remain.
  • JXR-51: Do not use a type attribute on script blocks that Jaxer generates and emits, nor on ones created by the developer that have a runat of server-only and that are sent to the client because they contain proxies. This allows using advanced type attributes on the server without sending them to clients (like IE) that don't support them.

Release 0.9.2:

  • Switch to static builds of Jaxer/Mozilla and clean up some previously-built pieces that are not needed. This reduces load time and decreases Jaxer release size.
  • Enable integration with COM system on Windows builds
  • Fix bug that would cause crashes when protocol dumping was turned on, and make protocol dumping more robust (flush when needed)
  • Improved performance by not firing unnecessary events from Jaxer Core into the Jaxer framework
  • Added parameter validation for database connections (JXR-37)
  • Significant progress towards Linux builds (now they work on some distros)
  • Make tellJaxerManager cross-platform
  • Add support for including 3rd-party libraries when running Jaxer unit tests (to see whether those libraries break Jaxer)
  • Added the Google Gears database resultset API to Jaxer.DB.ResultSet, and fix Jaxer.DB.ResultSet.prototype.toHTML() (JXR-39 and JXR-40)
  • Add to the Jaxer DB API two synonymous properties: lastInsertId and lastInsertRowId. These work for both dynamic connections (ones the developer creates and manages) as well as the Jaxer.DB managed connections, and for both SQLite and MySQL.
  • When XMLHttpRequests are used server-side, call onreadystatechange after calling send() and getting the response. This allows supporting Ajax libraries that rely on this event.
  • More robustness for jaxermanager on non-Windows platforms, and for Jaxer's (Mozilla's) registration process on all platforms.
  • Enabled Mozilla's sql and canvas libraries; fix the gfx module's initialization for canvas off-screen surface; enable ODBC
  • Fix JXR-41: when you try to use a File object with a directory's path or a Dir object with a file's path, throw an error.

Release 0.9.1:

  • Build in more Mozilla extensions that could be useful on the server, such as webservices SOA support and WebDAV.
  • Improved error handling and reporting in XMLHttpRequests, especially when returning XML documents
  • Removed some cross-site XHR issues that prevented making certain SOAP and other remote requests server-side.
  • Allow for SSL requests by handling certificates and allowing storage (in the temp folder) of profile data
  • When you use SendOptions.contentType in XMLHttpRequests, the value will be used to set the Content-Type header even if there is no content (e.g. in a GET request) - important for AJAX .NET callbacks.
  • Allow setting any Mozilla preference by adding it to Config.MOZ_PREFS in config.js, e.g. to enable HTTP proxying if your network requires it.
  • Don't rely on the Referer being present as a header during callbacks (thereby supporting some really old browsers).
  • Eliminate silent failures due to not having the right error message file. We now include en-US.jar.
  • Any premature exits/failures of the framework before page processing is complete will result in a 500 Server error being returned to the browser, instead of the partially-processed server content that could occasionally have been returned to the browser previously.
  • Trap errors in URL parsing during construction of Jaxer.request, so they lead to request errors rather than fatal errors.
  • Fixed link to the embedded API documentation, and make some scriptdoc corrections. Properly show "advanced" items when clicking on the item in the tree, and show "static" items as static.
  • Changed default JaxerManager ports to IANA-approved 4327 and 4328.
  • Eliminated a possible initialization race condition in which two Jaxer processes could have tried to initialize some Mozilla filesystem data at the same time.
  • Some cleanups and improvements to JaxerManager Command Line Interface (CLI). See http://www.aptana.com/node/194 for details.

Release 0.9.0: