FLOW3 1.0.0 alpha2
Release Notes for FLOW3 1.0.0 alpha2
This document contains information about FLOW3 version 1.0.0 alpha2 which was released on July 1, 2009.
notice - Note
The file monitor has been improved and stabilized, now supporting monitoring of whole directories. This resolves a few issues which resulted in caches not being flushed automatically after PHP code had been changed. Related to code caching, we introduced a new locking mechanism which assures that no other requests than the current initiate the (re-) building of code caches (which certainly would lead to unexpected results).
Another working field has been validation. Besides improving the validation mechanism in general, FLOW3 now allows for easier display of validation errors in a view and provides some nice view helper for beautifully rendered error messages.
Some gremlins have also been zapped in the persistence department which caused some trouble while persisting blogs and posts in our blog example.
The package manager now allows for activation and deactivation of packages and the kickstarter has some initial support for generating packages, controllers and models.
Besides some new view helpers, Fluid introduced an intuitive expression language which allow for comparisons in boolean arguments such as conditions.
For a full list of new features and improvements please see our Changelog below.
On June 30th 2009 PHP 5.3 final has been released. This event marks an important spot for us since FLOW3 requires PHP 5.3 and now will more likely be used in production soon.
Again, as an alpha release, FLOW3 1.0.0-alpha2 is naturally not recommended for production use. Be warned: It's a bit slow, eats more memory than is perhaps healthy and has not yet undergone a full security review. However these issues will be addressed in the upcoming alpha releases and we're confident that FLOW3 1.0.0 final will be a rock solid framework which performs well in production environments.
FLOW3 1.0.0 alpha 3 is scheduled for 1st of August 2009. Besides our work on TYPO3 5.0 our main field of interest is writing a good FLOW3 tutorial and generally stabilize the existing features.
We want to hear your opinions! What's your experience with this release? What went well, what didn't? What features are you missing? Join our discussions in the mailing list, IRC channel and twitter ... Check out http://flow.typo3.org/get-involved/ for ways to get involved and get in touch. Get into the FLOW3! - Your FLOW3 Core Team
FLOW3 1.0.0-alpha2.tgz 50c22f3a586a7e9bea8abb21acf81495 FLOW3 1.0.0-alpha2.bz2 767366b52fa114871aabe5b206cdbdf4 FLOW3 1.0.0-alpha2.zip 48d9c7bd5e2a1e585dd449b8961e85e2
Most of the possible breaking changes are internal, caches should be cleared automatically. If you run into strange errors while using an existing database, try with an empty one. Although there were no changes to the internal way of storing data, something might have been broken which now breaks because of a fix...
For user-visible changes see the "Important Changes" part of the ChangeLog below.
-[ IMPORTANT CHANGES ]-------------------------------------------------- [ !!! ] FLOW3: Renamed the "Packages.yaml" configuration file to "Package.yaml" - you'll need to rename your own files if you used them. Also changed the structure of Packages configuration: a single package is no longer indexed with package key. [ !!! ] FLOW3: New conventions for naming of Domain Models and Repositories in place, resolves #3507 [ !!! ] FLOW3: Raised the minimum required PHP version to 5.3.0RC2 because earlier versions caused segfaults while trying to run FLOW3's tests. [ !!! ] Fluid (ViewHelpers): Removed <f:exp.equals> ViewHelper. Please use the new expression language now. THIS WILL BREAK YOUR TEMPLATE. -[ FLOW3 ]-------------------------------------------------------------- [+FEAT] FLOW3 (Core): Implemented a basic locking mechanism which locks the whole site while code caches are cleared. It's basically working but currently not customizable. Try it out by changing some code somewhere and then run two requests (in dev context) almost simultaneously. The Lock Manager is invoked on file changes through the Signal Slot mechanism. Resolves #3581 [+FEAT] FLOW3 (Core): the "flow3" script now supports listing of available and active packages [+FEAT] FLOW3 (Core): FLOW3 will now check and cache its own revision. If the revision changes (due to an upgrade or update from Subversion), all registered caches are flushed automatically. This prevents PHP errors due to non backwards compatible cache structures in newer versions of FLOW3. Resolves #3649 [~FIX ] FLOW3 (Core): FLOW3's index.php now checks if the PHP version supports namespaces before including the FLOW3 bootstrap. For PHP versions below 5.3.0RC2 an error message will be displayed. Resolves #3568 [~FIX ] FLOW3 (Core): Adjusted the file permissions set by the setfilepermissions.sh script. Now conflicts between command line and web user should be solved. If you experience file permission errors, please run this script. Note: You need to specify the command line user and web server group (previously it was webserver user and webserver group). Resolves #3569 [ TASK] FLOW3 (Core): Moved the F3\FLOW3\FLOW3 class into its own sub package "Core". The class is now called "Bootstrap". [~FIX ] FLOW3: Removed the RewriteBase declaration in the default .htaccess file, because for most setups the it will work better without. If you experience problems with your setup, you'll need to enable RewriteBase and specify the path to your Public directory. [ TASK] FLOW3 (Core): The ./flow3 script now assumes Development to be the default context. Please use -p or --production for switching into production context. [ TASK] FLOW3 (Core): Commented out the SetEnv declaration in the .htaccess file. FLOW3 runs in Production context by default anyway and if the environment is set in the .htaccess file by default, any environment set in a virtual host wouldn't have any effect. [-API ] FLOW3 (Core): Removed the \F3\FLOW3\FLOW3::VERSION constant. Please use the Package Manager's API to retrieve the version of the FLOW3 package. [+FEAT] FLOW3 (AOP): AOP proxies now support classes implementing an interface declaring a __construct() signature. Resolves #3650 [~FIX ] FLOW3 (AOP): removed spurious invisible whitespace character from proxy class template, refs #3487 [~FIX ] FLOW3 (AOP): getMethodArgument() on JoinPoint no longer throws an exception if a NULL value is found in the requested property [ TASK] FLOW3 (AOP): added FLOW3_AOP_Proxy_hasProperty() to AOP proxies, resolves #3487 [+FEAT] FLOW3 (Configuration): YAML configuration source can be written back and the YAMLSource implements the WritableSource interface [~FIX ] FLOW3 (Configuration): Subroute placeholders are now ignored if the package they refer to is not active, fixes #3537 [~FIX ] FLOW3 (Error): FLOW3's exception handler now unlocks the site if it previously has been locked by the same request. Resolves #3733 [+FEAT] FLOW3 (Monitor): The File Monitor now supports monitoring of directories. Once a directory is monitored, any change of files or directories within the directory (recursively) will emit a respective signal. Resolves #3736 [~FIX ] FLOW3 (Monitor): Deleted and newly created files are now properly detected by the File Monitor after monitoring of whole directories has been introduced. Resolves #3240 [ TASK] FLOW3 (Monitor): Improved the File Monitor's signals. Now a collective signal is sent containing a list of all files which changed instead of emitting a signal on each single change detection. [+FEAT] FLOW3 (MVC): The arguments validator now behaves like the generic object validator and creates an ArgumentError with information about the erroneous argument [+FEAT] FLOW3 (MVC): Implemented a generic error action for the ActionController with automatic forwarding to the referrer action and with storage of errors in the request. Resolves #3790 [~FIX ] FLOW3 (MVC): Moved mapping of UUIDs to objects into ArgumentsValidator, fixes #3726 [~FIX ] FLOW3 (MVC): Arguments are reset on each call to processRequest, fixes #3795 [+FEAT] FLOW3 (Package): packages can now be activated and deactivated. Their current state is saved in a special "PackageStates.yaml" configuration file. Resolves #3639 [+FEAT] FLOW3 (Package): the ManagerController now can list available and active packages [-CONF] FLOW3 (Package): Removed the "state" tag from the Package.xml files and the related code. Resolves #3559 [ TASK] FLOW3 (Package): added RNG schema for Package.xml files, fixes #702 [~FIX ] FLOW3 (Persistence): The LazyLoadingProxy now marks activated properties as clean upon activation, resolves #3451 [~FIX ] FLOW3 (Persistence): Dirty checking and activation of lazy loading work as intended now, fixes #3806 [~CONF] FLOW3 (Security): Cleaned up the authentication provider configuration syntax [~FIX ] FLOW3 (Security): The encrypted password is not written to the visible input fields of the login form anymore. [~FIX ] FLOW3 (SignalSlot): Added a check within the Signal Slot dispatcher which now throws a meaningful exception if a given slot class does not exist. Resolves #3730 [+FEAT] FLOW3 (Utility): The Files::readDirectoryRecursively() function now supports an optional $suffix parameter which allows for filtering the list of files by a given extension. [-API ] FLOW3 (Utility): removed randomizeArrayOrder(), use native shuffle() function instead, fixes #3735 [~FIX ] FLOW3 (Validation): ValidatorResolver can now parse validator arguments containing round brackets, commas, equal signs, fixes #3275. The option values must be quoted for this to work (either single or double quotes will do). [~FIX ] FLOW3 (Validation): ValidatorResolver now accepts namespaced class names in validator annotations. This enables custom validator classes and fixes #3801 -[ TESTING ]------------------------------------------------------------ [~FIX ] Testing: Tests are run in random order again, fixes #3734 -[ TYPO3CR ]------------------------------------------------------------ [+FEAT] TYPO3CR (FLOW3 Persistence):?We now abort persisting objects on reference errors in finalizeObjectProxyNodes(), resolves #3133 [+FEAT] TYPO3CR (Import/Export): jcr:xmltext structures are now exported in document view as required by JSR-283, refs #2537 [~FIX ] TYPO3CR (FLOW3 Persistence): getUUIDByObject() in persistence backend now returns NULL if no UUID is found, fixes #3486 [~FIX ] TYPO3CR (FLOW3 Persistence):?non-persistable properties of an entity which are not marked as transient no longer cause a fatal error but are skipped, fixes #3485 [~FIX ] TYPO3CR (FLOW3 Persistence): When persisting objects the actual type of property values is now checked against the expected type, fixes #3478 [~FIX ] TYPO3CR (FLOW3 Persistence): getUUIDByObject() in persistence backend now returns NULL if no UUID is found, fixes #3486 [~FIX ] TYPO3CR (FLOW3 Persistence): non-persistable properties of an entity which are not marked as transient no longer cause a fatal error but are skipped, fixes #3485 -[ FLUID ]-------------------------------------------------------------- [+FEAT] Fluid (Core): Implemented a simple Expression Language which is used for boolean ViewHelper arguments. The language supports statements of the form "XX Comparator YY", where Comparator is one of ==, %, >, >=, <, <= and XX/YY are an Object Accessor, an array, a ViewHelper or a number (NO string!). This expression language can be used always inside all boolean arguments of ViewHelpers. (fixes #3298) [+FEAT] Fluid (ViewHelpers): Added a new AliasViewHelper, resolves #3592 [+FEAT] Fluid (ViewHelpers): Implemented a resource URI view helper, resolves #3791 [+FEAT] Fluid (ViewHelpers): Added tag attributes for disabled, maxlength, readonly and size to the TextboxViewHelper for text input fields, refs #3792 [+FEAT] Fluid (ViewHelpers): A basic errors view helper (f:form.errors) to display form errors, resolves #3802 [~FIX ] Fluid (Core): Set controller context only if not null. This needs to be done for rendering contexts without a controller context (e.g. in a service) [~FIX ] Fluid (DocBookGenerator): Adjusted DocbookGenerator to make it more easily backportable [~FIX ] Fluid (Core): Fixed XML Schema generation -[ Kickstart ]----------------------------------------------------------- [+FEAT] Kickstart: The kickstarter now supports kickstarting a new package which essentially creates a new package, activates it and creates a standard controller and view. Just run ./flow3 kickstart package MyPackage to try it out. [+FEAT] Kickstart: The kickstarter can generate basic entity models from a list of fields. Use the "flow3" script for kickstarting them. [+FEAT] Kickstart: Type normalization and basic global / local class detection and namespace prefixing [+FEAT] Kickstart: Added view helpers for inflection on model names, field names, etc. [~FIX ] Kickstart: Initialization of fields in generated model classes removed