Updat release notes to discuss non-breaking changes and the JavaScript abstraction layer
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/3071d357 Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/3071d357 Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/3071d357 Branch: refs/heads/5.4-js-rewrite Commit: 3071d357e989210d06e6779c43ff5d4dc243bbdf Parents: 2285c7e Author: Howard M. Lewis Ship <[email protected]> Authored: Mon Aug 13 11:05:52 2012 -0700 Committer: Howard M. Lewis Ship <[email protected]> Committed: Mon Aug 13 11:05:52 2012 -0700 ---------------------------------------------------------------------- 54_RELEASE_NOTES.txt | 35 ++++++++++++++++++++++++++++++++++- 1 files changed, 34 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/3071d357/54_RELEASE_NOTES.txt ---------------------------------------------------------------------- diff --git a/54_RELEASE_NOTES.txt b/54_RELEASE_NOTES.txt index fa71ea1..fc36c29 100644 --- a/54_RELEASE_NOTES.txt +++ b/54_RELEASE_NOTES.txt @@ -1,6 +1,39 @@ Scratch pad for changes destined for the 5.4 release notes page. -Breaking Features: +Non-Breaking Changes: + +A new DeprecationWarning service exists to write runtime-warnings about deprecated component parameters. + +There have been sweeping changes to the client-side support in JavaScript, including the long-awaited abstraction layer. +Tapestry is moving to the use of asynchronously-loaded modules, using the RequireJS module. Much of Tapestry's existing +JavaScript libraries are being recoded as JavaScript modules; in 5.5, the remaining JavaScript libraries will be removed. + +All of the clients-side objects available inside the T5 or Tapestry objects (in Tapestry 5.3) are considered deprecated +in Tapestry 5.4. Where possible, the implementations of such objects have been reworked to use the new support provided +by the modules. In many cases, logic that was previously supplied using client-side objects and the T5.initializers +object is now provided using the event handlers. + +The abstraction layer is a set of wrappers that encapsulate most of the differences between Prototype and jQuery (or +other, more modern JavaScript foundation libraries). By coding the the abstraction layer, it will be possible to swap +out Prototype support for jQuery. Prototype will no longer be bundled with Tapestry starting in Tapestry 5.5. + +Prior releases of Tapestry would require several moving parts to initialize client behavior: + +* A unique id, generated on the server, on a client-side element +* A JavaScript library that extended T5.initializers with a initialization function +* Creating a _spec_ to describe behavior, including URLs and the unique client element id +* Many similar client-side event handlers on specific elements (created by the initialization function) + +Although this was well-structured, it had pain points for developers, as well as some client-side performance issues. +For example, it means that components that occur many times on the page will include many similar event handler +functions. + +Tapestry 5.4 represents a shift to a more modern, lighter approach. Behavior of components is encoded into +`data-` attributes on the element, and logic shifts to a module that provides top-level event handlers on the +body object. This is an overall win: it reduces the number of event handlers, solves some timing issues related +to running initialization functions, deals with DOM updates better, and is overall more performant. + +Breaking Changes: The definition of the symbol 'tapestry.asset-path-prefix' has changed; it no longer includes the leading and trailing slashes. The default in 5.3 was "/assets/", in 5.4 it is simply "assets".
