HTTPS clone URL
Subversion checkout URL
The major new features in FW/1 3.5.0 are:
- Subsystems 2.0. A new, more streamlined way to add subsystems to an existing FW/1 application has been added. Thank you to Steven Neiland for the inspiration and guiding principles! Read about Subsystems 2.0 and how they differ from the older approach (which is still supported). The examples have been reworked to use Subsystems 2.0 so you can see how it works in practice.
- An Alternative Application Structure is now supported that allows you to create FW/1 applications that do not require
Application.cfcextends the FW/1 component. Read about the Alternative Application Structure. Some of the examples have been updated to use this approach so you can see how it works in practice.
- Clojure integration. If you have Leiningen installed (Clojure's build tool) then it is very easy to write services and/or controllers in Clojure and have FW/1 automatically integrate those into your CFML application. Read about mixing CFML & Clojure for more details. An example of Clojure integration is provided in the repository (you'll need Leiningen installed for that example to run).
- ForgeBox / CommandBox support. FW/1 now has a
box.jsonfile and is hosted on ForgeBox so it can be easily installed via CommandBox.
In addition to the major features, the following enhancements have been added:
queryStringto be a struct, like
isFrameworkReloadRequest()is now public in case an application needs to take action when the framework is reloaded.
getSubsystemSectionAndItem()added to supplement
getFullyQualifiedAction()(the latter omits the subsystem if it is empty).
- The WireBox adapter now supports custom binders.
- The conventions used for various folder names can now be overridden in the framework configuration.
And the following bugs have been fixed:
- 377 - AOP/1 now allows a single interceptor to be applied to multiple objects.
renderData()could kill sessions (this was backported to 3.1.1).
336 - account for
expandPath()returning the wrong directory on ACF11 when the path has a trailing
Finally, FW/1 includes experimental support for Lucee Language, so if you are running a prerelease build of Lucee Server that has Lucee Language support enabled, you can write controllers and views etc in
.lucee files and FW/1 will use them.
Changes since RC 1:
- Fix layout display issue when using non-default subsystem delimiter #376 @dfair98
- Fix subsystem model management behavior (regression from 3.1) #378
- Fix subsystem delimiter edge case (regression from 3.1) #379
- Expose Clojure integration example conditionally (as app and as subsystem) #380
- Add internal trace type #381 @ryanguill
- Fix AOP/1 issue with multiple interceptors #382 ( #377 ) @dbudde
Changes since Beta 2:
- Fixed concurrent modification exception in edge case DI/1 setter analysis #375
- Improved debugging of DI/1 metadata failures (by adding more information to exceptions) #374
view()(and layout) handling with Subsystems 2.0 #373
isFrameworkReloadRequest()is now public #372
- Clojure integration should ignore editor temporary files #371
- Subsystem bean factory handling more consistent #370
- Updated examples that use Alternative Application Structure
Changes since Beta 1:
- Examples of Alternative Application Structure should work in more installations / configurations (
- Dotted CFC path deduction tweaked to fix an edge case bug
liberalplurals option (so
librariesis treated as the plural of
library, for example)
setLayout()did not respect (new) subsystems #368
- Ignore absolute / root-relative
serverscope caching option
- More flexible namespace-to-bean name mapping #366
- Improved null handling in conversion functions
Changes since Alpha 2:
- Resolved per-application mapping issue with Alternative Application Structure in FW/1
- Resolved edge case dotted path detection in DI/1
- Figured out
Changes since Alpha 1:
- Improves CFML / Clojure interop when
- Improves backward compatibility of legacy subsystem auto-detection.
The first "feature complete" prerelease build of FW/1 3.5.0 focuses on integration and includes:
- Support for controllers and services to be written in CFML, Clojure, or Lucee
- Support for views and layouts to be written in CFML or Lucee
- Configurable folder names to set your own conventions (for controllers, layouts, subsystems, and views)
- Support for Application.cfc to use FW/1 without extending
- A new, cleaner, more consistent set of conventions for adding subsystems to an existing application
For a full list of changes, see https://github.com/framework-one/fw1/issues?q=is%3Aissue+milestone%3A3.5+is%3Aclosed
This should solve any problems with cross-origin headers or some session-based bugs when using REST APIs powered by
The downside is that if you output any debugging code, it will be part of the response (as it was in 3.0) and potentially break your REST call.
FW/1 3.1.0 "gold" release.
Changes since RC 3: None.
Full list of changes since 3.0:
Pull Requests Merged: https://github.com/framework-one/fw1/pulls?q=is%3Apr+is%3Aclosed+milestone%3A3.1