New in Seaside 3.0
Seaside 3.0 is the current stable version, also see the announcement.
The monolithic Seaside package has been split into several independent modules. We expect this to have several advantages:
- Ports to existing and future platforms should be easier. The new platform layer is called Grease and independent of Seaside.
- It allows for smaller Seaside installations. For example you can have Seaside without the tests or without Kom and use Swazoo 2 instead.
- Hardened environments can run without any development tools like the toolbar, halos, inspector, walkback and friends. This reduces the chance that setup flaws result in users being able to exploit the application.
Internally Seaside now uses its own method for string conversion (
#seasideString) instead of a very brittle and confusing combination of
#displayString. We also introduced a
GRObject class for objects that should receive
#initialize upon creation. This should not affect users.
Seaside now has first class objects (
WALocale) instead of
Strings. This should leave most users unaffected because they can get away using
Strings just the same as for
WAUrl. Except one place though and that is
WAFile >> #contentType which now returns an instance of
WARequestContextprovides a lot of functionality that earlier
WASessiondid provide. It also provides new functionality that earlier was not available at all.
#session, and (new)
#requestContexthave been implemented on
GRObject, which means they are accessible from any Seaside object. Note that they will signal a
WARequestContextNotFounderror if there is no current request context available.
- Moved rendering and redirecting methods from
WARequestContext- The code entry paths for request handlers changed so that they all expect a
WARequestContextinstead of a
WASessionwas changed so that its
#responseForContext:method sets a value for
WACurrentRequestContext. All methods from then on in your application can access the request context through that process variable by calling
self requestContextfrom most Seaside objects.
- Mostly rewritten configuration system (with tests!)
WACacheremoves the need for
WAExpiringHandlerand should give much more flexibility in caching policies
- The Render Loop was refactored to remove
WARenderLoopand re-implement the two continuations to prevent entering each one twice and hopefully make the flow clearer. There is now one continuation for the action phase and one for the render phase.
- Rewritten exception handling
- Generation of continuation and session keys is roughly 30 times faster (on Squeak).
- Session keys are now 96 bit, continuation keys 48 bit.
- Filters for
Scriptaculouspackage have been moved to a new
- Together with this change some of the class prefixes changed, such as
SUScriptare now called
- Seaside features now an officially supported integration of JQuery and JQuery-UI.
- The server adapter infrastructure on Squeak has been reworked. This allows the Kom and Swazoo 2 adapter to share code.
- Support for Exupery.
- Configuration attributes now have comments as tooltip.
- Down level-revealed Conditional Comments with
WACollectionAttributeand refactored libraries to use the new configuration attribute.
- fixed a nasty bug when backtracking an
- Added a convenience method
WAResponse. A session can now tell a response to cacheForever. This would only apply to that individual response. (Ramon Leon).
- The usual round of small bug fixes.
- Configurable root decorations.
- Better eCompletion support.
WARequestHandlers can be decorated and are on a request processing stack.
WASubmitButtonas a synonym to
#text:, what is much more consistent.
Collectionof instances of
WARequestCookieinstead of a
WACookiesupports many more features.
- The session cookie key is now
- The mime type and character set are configured in the application instead of the session.
- Support for non-ASII URLs (and parameters).
WARequest>>fieldscontains both GET and POST fields (important for action url of <form>s)
- Remote address now part of
WARequest, you don’t need to access the native request anymore.
- Experimental upload streaming on Squeak and Kom.
- Lightweight mime document class that implementors can use.
- Dialogs should no longer produce invalid HTML.
WARequest>>urlnow returns a
- Callbacks are no longer executed while traversing the component tree. This means that components and decorations no longer have the opportunity to affect the execution of components and decorations below them on the tree.
#processChildCallbacks:no longer exist and are not called.
- Tons of new tests.
- Sessions no longer (re-)register themselves with the Application. This may change some weird edge-case behaviour if users were expecting to be able to render their components after unregistering a session. This should not be possible as the session is unavailable by the time the render request arrives.
- The session cookie value is no longer added by the Application to the GET parameters in the incoming request. This means that the incoming request reflects the actual parameters passed in by the user.
- New ANSI based valuable protocol.
/seasidehas been removed from the URL
Note that some of these improvements have been backported to Seaside 2.8.