Progress Report
May 1, 2012: Prudence 2.0-dev1
The most significant changes in 2.0 have been in packaging and distribution. No longer are there "flavors": instead, language support is installed via modules managed by Sincerity. The directory structure has also changed. Additionally, JavaScript is now the default language used for application bootstrapping/configuration.
- Implicit resources: new feature (multilingual dispatch mechanisms)
- Merged /web/dynamic/, /web/static/, /resources/ into /mapped/
- API: removed filter and filterBase
- Prudence JavaScript Library: new!
- Bootstrapping, logging, service/daemon: removed! We now using Sincerity instead
- Distribution: moved to the Three Crickets Repository
- Version control: switched from Subversion to git
- Build: we now use Ivy to download dependencies required for compiling the Java source code
- Prudence Manual: heavily restructured for all the above
Aug 21, 2011: Prudence 1.1.1 (revision 1064)
- Distribution: archives now preserve executable permission in Unix-like systems (including OS X) (issue #9)
- Distribution: archives now include a root directory (issue #10)
- Distribution: an informative readme.txt is now included, with instructions on installation and troubleshooting (issue #11)
- Distribution: make sure all text files are in Windows-friendly format (CR-LF line ending)
- Distribution: cleaner packaging of jQuery, now also including the license
- Stickstick: fixed for newer versions of WebKit browsers (Safari, Chrome) via upgrading jQuery
- Dependency bumps: Restlet 2.0.9, H2 1.3.156, MongoDB Driver 2.6.5, Hazelcast 1.9.3.4, JRuby 1.6.3, Groovy 1.8.1, jQuery 1.6.2, jQuery UI 1.8.16
Jun 30, 2011: Prudence 1.1 (revision 1048)
Official release (identical to RC13).
Jun 22, 2011: Prudence 1.1-RC13 (revision 1048)
- New API: conversation.headers
- Improvement to cache chaining: backtracking
- Dependency bumps: Scripturian R301, Restlet 2.0.8, H2 1.3.156, MongoDB Driver 2.6.3, Hazelcast 1.9.3.1, Clojure 1.2.1, JRuby 1.6.2, Quercus 4.0.18
Jun 3, 2011: Prudence 1.1-RC12 (revision 1037)
- HTTP client: fixed hanging threads, due to Restlet bug with following redirects (you must now follow them manually)
- Windows: fix service installation to use correct directories (reported by Maurizio Ferreira)
- API change: document.markExecuted accpets a boolean to enable/disable the flag
- Debug page: include all application attributes
- New Restlet utility: an "Injector" filter lets you insert values in the the request attributes (conversation.locals in Prudence)
- Dependency bumps: Scripturian R299, MongoDB Driver 2.6.1
May 16, 2011: Prudence 1.1-RC11 (revision 1022)
- Cache backend: major improvements in tolerance of backend failure, and smart logging of problems
- HTTP client: default socket timeout set to 10 seconds (was infinity by default!)
- API enhancement: document.task and document.distributedTask now support optional entry points (can improve performance)
- Logging: tasks and handlers now log for Prudence, not Restlet
May 11, 2011: Prudence 1.1-RC10 (revision 1007)
- Fixed UnifyMinifyFilter regression: would always regenerate all.min.js/all.min.css (issue #2)
- Fixed NPE with DelegatedStatusService for empty representations
- Fixed HTML documentation to properly support UTF8 (issue #4)
- Scripturian: fixed rare dependency loop exception
- JVM 5: rebuilt Apache Commonds Daemon from source
- New fileUploadBasePath application setting
- Dependency bumps: Hazelcast 1.9.3, Scripturian R294
May 6, 2011: Prudence 1.1-RC9 (revision 996)
- Major bug fix! Breakage for Internet Explorer due to incompatible DEFLATE implementation (issue #1)
- Windows: run.bat now automatically picks up jars in /libraries/
- UnifyMinifyFilter: return 404 for non-existing directories
- New "Management and Monitoring" section in Prudence Manual
- Include Firewall Friendly Agent in all distributions (used for remote JMX connections behind firewalls)
- Dependency bumps: Groovy 1.8.0, JRuby 1.6.1, Apache Commons (Codec 1.5, File Upload 1.2.2, IO 2.0.1, Pool 1.5.6), Hazelcast 1.9.2.3, Apache HTTP Client 4.1.1, Jackson 1.8.0, mim4j 0.6.1, MySQL Connector 5.1.16, Scripturian R292
Apr 27, 2011: Prudence 1.1-RC8 (revision 984)
- Fixed a problem with pass-through resources to /commons/: the first application to use it would take over the execution context
- Windows: fixed run.bat for running in console mode from directory paths that have spaces in them
- Made sure configuration scripts used the same cached compiled classes as the the other execution contexts (reduces some file waste)
- Dependency bumps: Restlet 2.0.7, Scripturian R286
Apr 25, 2011: Prudence 1.1-RC7 (revision 979)
- Friendlier DocumentNotFoundException (problem reported by Daniel LaLiberte)
- The /common/ directory is now zip-aware, just like /applications/
- New application settings: resourcesPathThrough and dynamicWebPassThrough
- New APIs: some more Restlet sugar in PrudenceRouter (filterBase has been made to work like filter)
- API change: application.task can now run tasks in other applications (also making it closer in signature to application.distributedTask)
- JavaScript flavor: now supporting JavaScript 1.7 (this had to be explicitly enabled for Rhino in Scripturian)
- Debian build: worked out some upgrade kinks due to the addition of the /common/ directory (reported by Daniel LaLiberte)
- Improvements to Routing Section in Prudence Manual (thanks to Beth Marston)
- Dependency bumps: Scripturian R284
Apr 19, 2011: Prudence 1.1-RC6 (revision 969)
- New APIs: document.executeOnce, document.markExecuted
- Dependency bumps: Scripturian R282
Apr 14, 2011: Prudence 1.1-RC5 (revision 966)
- New feature: /common/ directory for sharing libraries, fragments, tasks, handlers and static files among applications
- Fixed regression in SourceCodeResource
- Removed MongoDB Rhino driver from distribution (will be included in Savory instead)
- Dependency bumps: JRuby 1.6.0, Scripturian R281, H2 1.3.154, MongoDB Java 2.5.3
Apr 1, 2011: Prudence 1.1-RC4 (revision 940)
- Fixed encoding errors in serializing cache entries (caused a java.io.UTFDataFormatException in Hazelcast cache backend)
Apr 1, 2011: Prudence 1.1-RC3 (revision 934)
- Prudence Manual brought up to date (new "Prudence Clusters" chapter)
- New handler: scriptlet plugins, with scriptletPlugins configuration service
- Default to Hazelcast cache backend
- Better handling of startup task errors
- Improvements to build script for documentation generation
- Dependency bumps: Scripturian R267, Restlet 2.0.6, Jackson 1.7.4
Mar 26, 2011: Prudence 1.1-RC2 (revision 916)
Bugs fixed:
- NPE in ResolvingTemplate when used outside of applications (for example, in tasks)
- Clojure flavor: code was commented out by mistake
- Windows: run.bat script was not enumerating the jars
New features:
- New API: application.distributedTask
- New API: application.distributedGlobals
- New API: conversation.disposition
- New API: document.context (for /tasks/)
- /resources/: can now return binary data (as byte arrays)
- /tasks/: improved exception handling
- /tasks/: can now be sent an arbitrary context (accessible via document.context), even via crontab
- /tasks/: can now be called over Hazelcast
- Comment scriptlets, via <%# ... %> (via Scripturian)
- Dependency bumps: Hazelcast 1.9.2.2, H2 1.3.153, Scripturian R261, MongoDB driver 2.5.2, Commons Daemon 1.0.5
Mar 5, 2011: Prudence 1.1-RC1 (revision 886)
Bugs fixed:
- Concurrency bugs: DelegatedHandler (used by filters and cache key pattern handlers)
- document.internal does now follow same capturing route exposed externally
- {dn} variable is truncated in cache key patterns for relative paths
- conversation.stop logs an error
- conversation.internal can be wrong for some captured requests
New features:
- "/libraries/javascript/" automatically added to library path (with equivalents for other languages)
- Support for multiple library locations (also improved performance for access to libraries)
- Delegated filters can now capture, allowing for some very powerful filters
- New API: application.sharedGlobals (with matching predefinedSharedGlobals in the configuration scripts)
- New router APIs: reattach, capture with/without query
- Settings: a single minimumTimeBetweenValidityChecks replaces all variants
- Concurrency improvements: DelegatedResource, GeneratedTextResource, Fallback, FallbackRouter
- Dependency bumps: Restlet 2.0.5, Jython 2.5.2
- Rhino: higher optimization level
- Restlet utilities: support for overriding default Resolvers (allows supporting new template variables; currently we're not using this)
Many parts of the routing, attribute setup, and configuration script code have been rewritten. One consequence is that the new recommended best practice is to always standardize on using a beginning slash for all internal URIs (router.capture, document.execute, document.include, document.internal). The Prudence Manual and all example applications have been updated accordingly.
Jan 22, 2011: Prudence 1.0 (revision 801)
Official release (identical to RC9).
Jan 7, 2011: Prudence 1.0-RC9 (revision 801)
- Support common /libraries/ location for all applications
- Automatically execute "startup/" task on startup
- Beefed-up DelegatedHandler
- Fixes to MongoDB cache backend
- Upgrade to Velocity 1.7 syntax
Dec 11, 2010: Prudence 1.0-RC8 (revision 789)
- New cache backend: MongoDB (works great!)
- New API: PrudenceRouter.captureAndHide (sugar)
- Changes to /tasks/ files are now picked up on-the-fly
- Easy access to "application" service from configuration scripts
- Cleaner logger hierarchy
- Fixes to backslash escaping (Scripturian)
Nov 20, 2010: Prudence 1.0-RC7 (revision 774)
- Replaced Grizzly with Jetty as the default connector
- Improvements to logging, plus fix to application.getSubLogger
- Improvements to run.sh: no longer requires manual configuration of jar list, even in JVM 1.5
- Support returned representations in DELETE
- Fixes to Stickstick: location of H2 database
Nov 8, 2010: Prudence 1.0-RC6 (revision 757)
- Latest versions of many dependencies: Grizzly, Groovy, Hazelcast, Apache HTTP Client, Jackson, JRuby, JUnit, Jython, log4j, Quercus, Restlet, SLF4J, Velocity
- Fix regression with SQLAlchemy (seems to be due to new Jython)
- Fix JavaDoc to use Oracle URLs (goodbye, Sun!)
Nov 5, 2010: Prudence 1.0-RC5 (revision 754)
- Fixed problem with using document.external: would seem to corrupt other Prudence API.
- Restlet 2.0.2.
Oct 27, 2010: Prudence 1.0-RC4 (revision 751)
- Make sure not to attach hidden /applications/ directories.
- Fixed dependency validation for /resources/.
- Fixed run.sh script to better deal with spaces in paths.
Sep 24, 2010: Prudence 1.0-RC3 (revision 746)
- Fixed Apache Commons Daemon support for OpenSolaris.
Sep 22, 2010: Prudence 1.0-RC2 (revision 742)
- Fixed /bin/ scripts for BSD systems, such as Darwin (OS X).
- Can now be started as a daemon (we've added Apache Commons Daemon with full support in code and scripts).
- We've created an Ubuntu repository for Prudence.
- Improvements to the build script (we've added VPP to generate /bin/ scripts).
Sep 12, 2010: Prudence 1.0-RC1 (revision 712)
Our first public named release, after more than a year of incubation and many previews.
Our main work until RC2 will be to collect feedback and bug reports, and further improve documentation.