Radical 0.6 was released, including improvments in many fields including
speed and documentation.
It may be downloaded from:
http://idanso.dyndns.org/radical
= Version 0.6
- Major speed boost.
Key sections of the code were profiled and optimized as much as possible
to reduce the length of the request processing cycle
GServer was dumped in favour of MTServer, it’s way of operation is more
scaleable, keeping a pool of worker threads competing on a
Mutex instead of creating thread for each request.
An additional move was porting Radical::HTTP::Table and
Radical::HTTP::Response to a C extension.
This was combined with a hybrid version of MTServer, part in C and part in
Ruby(the C code used a dirty trick with static variables to avoid using
Mutex).
The result was an additional improvement in speed and scalability. for
details look at docsrc/bookmark.rdoc
- More documentation
Generated using RDOC
- Improvements to configuration
Each handler may be assigned a different cache manager
Static content and Dynamic content(scripts) may now sit on different paths
- Improvements to the DB API
Database pools may be identified not only by pre-configured name but also by
Radical::DB::Database struct
Radical::DB::DBPoll#transaction method provides block-based and less
error-prone approach then get and put
Radical::DB::DBProxy allows accessing the same DBPoll without specifying
it’s name.
- Modifications to the cache API
The valid? method was dropped, it is now the duty of get do find out if
the request is valid.
get method now must accept a response object as the second parameter
See Radical::Cache::BaseCacheManager
- Improvements to the template subsystem
Templates may contain methods, these will become part of the object
singleton methods(In other words, each template can define it’s own
interface).
Templates are no longer accepting hashes as a parameter, instead they accept
a list of parameters that are passed to the template init method.
A new syntax has been added - <templateName|methodName> - This
generates a
method whose name is methodName, calling it will add another template,
templateName into this position. The generated method will pass the
parameters to the template.
- Semi-Functional security manager
The security manager provides an interface for interaction of threads
running at $SAFE=4 to communicate with the rest of the system, including
requesting templates and translations.
Radical::Handlers::SafeRubyScriptHandler already employs this facility, that
in the future will be extended so Radical will be suitable for multi-user
enviroments
- Minor enhancements and bug fixes
- MemoryCacheManager added
- ApacheConnector didn’t pass GET queries - FIXED
- translation engine caching was broken - FIXED
- <**>(template inclusion) no longer broken
- MIME::Types for Ruby was intergrated