Releases: phalcon/cphalcon
Releases · phalcon/cphalcon
Version 1.2.2 Stable
- Phalcon\Mvc\Model\Query\Builder may now use both integer and string placeholders (#701)
- Fixed invalid memory reads when GC is on (#469, #927)
- Phalcon\Flash\Session::getMessage('key') returns now an empty array if the key is not found (#908, #920)
- Fixed bugs in Phalcon\Escaper (#917)
- Fixed memory leaks for PHP < 5.4 (#910, #914, #916)
- Fixed memory access violations (#911, #918, #927, #928)
- Memory allocation optimizations (#912)
Version 1.2.1 Stable
- Reduced overall memory usage (#834, #891, #893)
- Faster internal array and string manipulation (#830, #833, #837)
- Fixed PHP 5.5 compilation on Windows
- Dispatching parameters now can be modified in 'beforeExecuteRoute' events
- 'beforeException' events can now handle exceptions occurred when executing actions (#140)
- Added Phalcon\Dispatcher::getHandlerClass and Phalcon\Dispatch::getActionMethod
- Phalcon\Form\Element* classes now implement Phalcon\Form\ElementInterface
- Phalcon\Config\Adapter\Ini correctly handles empty sections and INI files without any sections (#829, #837)
- Phalcon\Http\Request fully supports file arrays (#884, #888)
- Added support for various padding schemes (PKCS7, ANSI X.923, ISO 10126, ISO/IEC 7816-4, zero padding, space padding) to Phalcon\Crypt (#864, #887)
- Added getKey(), getError(), isUploadedFile() methods to Phalcon\Http\Request\File (#878, #888)
- Dot-delimited directives in INI-files are now prsed correctly (#872)
- Fixed memory leaks in cache backends (#860)
- Fixed various memory corruption issues (#849, #852, #858, #860, #861)
- Fixed broken Phalcon\Http\Response::setFileToSend() method (#831, #832)
- Phalcon\Http\Response::setFileToSend() can now show the file in the browser instead of offering to download it (#853)
- Added Phalcon\Adapter\Config\Json class to read JSON configs (#844)
- Added FirePHP Log Adapter and Formatter (#845)
- Faster Phalcon\Config implementation (#837)
- Phalcon\Config now support numeric properties as well (#837)
- Database dialects now support BOOLEAN data type (#816)
- Phalcon\Mvc\Application::handle() now checks whether the class exists before include()'ing its file (#812, #818)
Version 1.2.0 Stable
- Now 'compiledPath' option accept a closure to dynamically create the compilation path in Volt
- Volt now supports user extensions, these can be used to extend better Volt
- Now Phalcon\Mvc\Url provides an internal separation for uris for static resources and uris to rewrite resources
- Added Mvc\Model\Criteria::inWhere to append an IN expression to the criteria
- Added Mvc\Model\Criteria::notInWhere to append a NOT IN expression to the criteria
- Added Mvc\Model\Criteria::notBetweenWhere to append a NOT BETWEEN expression to the criteria
- Added Mvc\Model\Criteria::betweenWhere to append a BETWEEN expression to the criteria
- Phalcon\Tag::image accepts a second parameter to allow external URLs
- Added Phalcon\Mvc\View\Simple as an alternative view component, this only have a single level of rendering and works better with Volt's inheritance
- Better escaping of reserved words in internal PHQL generation
- Added Phalcon\Http\Request::getJsonRawBody() to return the request body as a decoded JSON
- Added Phalcon\Http\Request::getHeaders()
- Support for many to many relations in the ORM
- Added Phalcon\Assets\Filters\Jsmin to provide on-the-fly javascript minification
- Added Phalcon\Assets\Filters\Cssmin to provide on-the-fly CSS minification
- Support for real nested transactions in Phalcon\Db using database savepoints
- Support for create/list/drop views in Phalcon\Db
- Added event application:viewRender to Phalcon\Mvc\Application allowing the developer to call the $view->render method as he/she needs
- Added option to disable literals in PHQL statements, this highly reduces the possibility
to be attacked using SQL injections - Now you can pass an array of variables with virtual local scope in Phalcon\Mvc\View::partial()
- Syntax CAST(expr AS datatype) is now supported by PHQL
- Support for CONVERT(expr USING charset) in PHQL
- Support for {% include "hello" with [var1, var2] %}
- Phalcon\Mvc\Collection::find receives a parameter 'fields' to specify a list of fields
- Added Phalcon\Forms\Element\Email and Phalcon\Tag::emailField
- Support to define arrays using curly braces in Volt {'a': 'b', 'c': 'd'} in Volt
- Support to make multiple assigments in a single set in Volt {% set a = b, c = d %} in Volt
- Volt now support 'if'/'else' blocks with empty bodies
- Support for 'cascade' action in addition to 'restrict' in Virtual Foreign Keys (ORM)
- Added missing Phalcon\Http\Request\File::getType()
- Phalcon\Tag is not abstract anymore allowing to create instances of it
- Phalcon\Tag is now registered as 'tag' in Phalcon\DI\FactoryDefault
- In a handler in Phalcon\Mvc\Micro returns an object that implements Phalcon\Http\ResponseInterface the response is automatically send()
- Phalcon\Mvc\View now have a chaineable API
- Phalcon\Mvc\Micro now can optionally receive the DI in its constructor
- Now if a method receives an incorrect number of parameters an exception BadMethodCallException is thrown instead of a warning
- Phalcon\Mvc\Model/Phalcon\Mvc\Collection now checks for a method 'onConstruct' allowing the developer to execute initialization stuff every time a model/collection instance is created
- Phalcon\Mvc\Model/Phalcon\Mvc\Collection now checks for a method 'afterFetch' allowing the developer to execute initialization stuff every time a model/collection instance is created
in a findFirst/find operation is created - Added Phalcon\Mvc\Collection::summatory easing the generation of this type of aggregation
- Support for boolean literals in PHQL
- Support for complex expressions in GROUP BY clauses in PHQL
- Now PHQL exceptions include the PHQL statement itself
- Aliases for namespaces are now supported in PHQL
- Acl\Memory was rewritted to make it simpler and faster, you may regenerate your serialized ACLs
- Support for assigment operators +=, -=, *=, /= in Volt
- Support for Profile-Guided optimization installation scripts (See blog)
- Added Phalcon\Annotations\Adapter\Xcache to store annotations in Xcache
- Added Phalcon\Mvc\Model\Metadata\Xcache to store models meta-data in Xcache
- Added
- Now if a controller implements 'initialize' it only is called if 'beforeExecuteRoute' is not stopped
- Listeners implementing 'beforeExecuteRoute'/'afterExecuteRoute' are executed first than the ones implemented as methods in the controller/task
Version 1.1.0 Stable
- Improvements to the query builder allowing to define bound parameters in the "where" methods
- Added Mvc\Model\Query\Builder::inWhere to append an IN expression to the query
- Added Mvc\Model\Query\Builder::notInWhere to append a NOT IN expression to the query
- Added Mvc\Model\Query\Builder::betweenWhere to append a BETWEEN expression to the query
- Now Phalcon\Session\Bag injects automatically the default DI if one hasn't beed manually assigned
- Added Phalcon\Forms\Manager to reference forms and retrieve them from any part of the application
- If an element in Phalcon\Forms doesn't have a label defined now returns the element's name as label
- Now if a validator in Phalcon\Validator has defined the option 'cancelOnFail' => true the validation
will be aborted if the validator fails - Added Phalcon\Validation\Validator\Between to check a value between a range of two values
- Added Phalcon\Validation\Validator\Confirmation to check that a value match its confirmation value (another attribute in the data to validate)
- Phalcon\Forms\Form now extends from Phalcon\DI\Injectable allowing developers to use application services in the form initialization
- Now calls to Phalcon\Mvc\Router can be chained
- Phalcon\Mvc\Router::getRewriteUri is now public
- Added Phalcon\Mvc\Router\Route::beforeMatch to implement arbitrary conditions to unmatch a matched route
- Phalcon\Mvc\Model can be now set up to throw an exception when the saving process fails
- Added Phalcon\Assets component to manage CSS/Javascripts resources in an application
- Added Phalcon\Annotations\Collection::getAll to return all the annotations in a collection that matches a name
- Added Phalcon\Crypt component to provide encryption facilities to phalcon applications
- Now Phalcon\Http\Request: get, getQuery y getPost returns the respective superglobals in case of no parameters
- Now Phalcon\Mvc\Router supports simple/regex hostname restrictions
- Added support for filtering/sanitizing in Phalcon\Validation
- Added events beforeValidation/afterValidation to Phalcon\Validation and Phalcon\Forms\Form
- Added ability to register user-options in Phalcon\Forms\Form elements
- Fixed Phalcon\Mvc\Micro\Collections to register a controllers in Phalcon\Mvc\Micro
- Added Phalcon\Tag::dateField and Phalcon\Tag::numericField
- Added Phalcon\Forms\Element\Date and Phalcon\Forms\Element\Numeric
- Added Phalcon\Cache\Frontend\Json to cache data as JSON
- Added Phalcon\Tag::tagHtml and Phalcon\Tag::tagHtmlClose to generate any kind of HTML tags
- Phalcon\Http\Response\Cookies is now fixed
- Added support for automatic crypting of cookies in Phalcon\Http\Response\Cookies
- Phalcon\DI\FactoryDefault now provides the 'crypt' service
- Volt's paths are now automatically normalized to realpaths
- Fixed bug in convert_encoding in Volt
- Added Phalcon\Filter\UserFilterInterface to be used in custom filters
- Added support for filters in Phalcon\Forms\Form elements
- Added maximum recursion depth exceeded control in Phalcon\Kernel
- Performance: Now Phalcon makes use of interned strings if PHP 5.4 to reduce memory usage
- Performance: Implemented cache of visibility for all intern properties in 5.3/5.4 increasing performance
- Performance: All hash keys are now pre-calculated in compilation time to read/write internal properties faster
- Performance: Now all functions are static allowing the compiler to inline functions or remove those that aren't used by the framework
- Performance: Now Phalcon provides specific optimizations when the extension is compiled for NTS modules
- Performance: Implemented function to fetch parameters from the VM stack with minimum overhead
- Performance: Implemented a global PHQL parser cache to avoid that a same statement be parsed more than one time
- Performance: Events by priority are now disabled by default. A user must explicitly define that Phalcon\Events\Manager must use a PriorityQueue instead of a FIFF (First In-First Fired)
- !! Phalcon\CLI\Router API have been changed. Check the manual to update your bootstrap
Version 1.0.1 Stable
- Paths aren't correctly normalized in Phalcon\Mvc\Model\MetaData\Files
- Added extra class prefix to schema.table in Phalcon\Mvc\Model\MetaData to avoid multiple-database collisions
- Now Phalcon\Mvc\Router ignores numeric paths in controller, namespace, module and action, avoiding that those will be passed to the dispatcher
- Added Phalcon\Forms\Form::remove to remove an element from the form and Phalcon\Forms\Form::has to check if a form has an element
Version 1.0.0 Stable
- Added Phalcon\Mvc\Router::setUriSource to set if the URI source must be $_GET['_url'] or $_SERVER['REQUEST_URI']
- Added a white-list parameter to Phalcon\Mvc\Model::save(), Phalcon\Mvc\Model::create() and
Phalcon\Mvc\Model::update() to avoid possible mass-assigment attacks - Added leftJoin/rightJoin to QueryBuilder
- Fixed bug with missing blocks in multiple inheritance in Volt
- Support for ternary operator in Volt
- Support for 'forelse' in Volt
- Added support for loop variable context in Volt
- Added whitespace control delimiters {%- -%} and {{- -}} to Volt
- Suport for 'in' and 'not in' operators in Volt
- Added Phalcon\Mvc\Model::assign to assign an array of values to a model instance
- Added Phalcon\Mvc\Model::refresh to refresh the state of a model
- Added Phalcon\Logger\Adapter::setLogLevel to filter messages with greater or less priority
- Removed constructor from Phalcon\Cache\BackendInterface
- Added Phalcon\Cache\Multiple, this backend writes to several backends, and reads data according to the order in which backends were registered.
- Now a model can use a separate connection to read and another to write, this makes horizontal sharding easy
- Now, a model could implement a method selectReadConnection to dynamically return the correct database according to the current query conditions
- Added Phalcon\Cache\Backend\Memory to cache data in the current request
- Added Phalcon\Validation, this component allows the validate a set of data based on pre-defined rules
- Added Phalcon\Forms, this component acts as a forms builder binding request data to entities, aiding in the validation of data, helping in the errors/messages generated in the validation process
- Phalcon\Db is now case-folding independent
- Phalcon\Mvc\Model uses column names keeping the case-folding as they were defined
- Added Phalcon\Mvc\Router::notFound to define the paths the router must use if any route is matched
- Improved \Phalcon\Mvc\Router\Annotations to work better with controllers in namespaces and modules
- A model can be marked to keep record snapshots allowing to check what fields have been changed
- The _source and _schema properties have been moved from Phalcon\Mvc\Model to Phalcon\Mvc\Model\Manager. This allow set source/schema in the model initializer
- Added Phalcon\Session\Bag::remove to remove an specific variable from a session bag
- Added support for complex expressions in PHQL ORDER BY clause
- Added support for complex expressions in PHQL GROUP BY clause
- Added support for $_SERVER['REQUEST_URI'] if $_GET['_url'] is not available in Phalcon\Mvc\Router
- Added an option to set up specific models with dynamic update instead of all-fields update, every field is checked if it was changed to dynamically create a UPDATE SQL column only with those fields that changed
- Added a minimalist client for the Beanstalk queue server
Version 0.9.0 Stable
- Support for reusable records. A relation can be marked to cache queried records in memory to speedup getting related records
- Added 'elseif' statement to Volt
- Changed static key in Volt's 'cache' to any valid expression
- Added Phalcon\Logger\Adapter\Syslog and Phalcon\Logger\Adapter\Stream to Phalcon\Logger
- Added Phalcon\Logger\Multiple to send logs to multiples adapters
- Added formatters abstraction to Phalcon\Logger, now including: Phalcon\Logger\Formatter\Line, Phalcon\Logger\Formatter\Json and Phalcon\Logger\Formatter\Syslog
- Added Phalcon\Annotations\Adapter\Files to Phalcon\Annotations, this adapter stores annotations in PHP files
- Added Phalcon\Annotations, a general purpose component to read annotations from docblocks
- Phalcon\Mvc\Model now supports saving related records using magic methods with a unique call to 'save'
- Adding autoescaping option to Phalcon\Tag
- Added andWhere/orWhere to Phalcon\Mvc\Model\Criteria
- Added passing an HTTP body to the Phalcon\Http\Response's constructor
- Phalcon\Mvc\View is now able to pass variables to the views using magic methods
- Support for slice with filter and built-in syntax in Volt
- Added magic methods in the ORM to find/findFirst by a single field
- Improved XSS protection in Phalcon\Tag
- Implemented queuing events with priorities in Phalcon\Events
- Implemented collecting of returned responses in Phalcon\Events
- Added toArray method to Phalcon\Mvc\Model\Resultset classes
- Added hydration modes to Phalcon\Mvc\Model\Resultset (HYDRATE_RECORDS, HYDRATE_ARRAYS, HYDRATE_OBJECTS)
Version 0.8.0 Stable
- Improved Phalcon\Escaper, this component provides contextual escaping of different kinds of texts (CSS, Javascript, URL, HTML Attributes etc)
- Added serialization of Mvc\Collection instances
- Added Phalcon\Mvc\View::setLayout to change the layout instead of looking for a controller with the same name as the latest controller dispatched
- Now is possible to pass an option called 'options' to any of the Phalcon\Db\Adapter\Pdo adapters to set extra
PDO options in the connection - Removed filtering of keys from Phalcon\Cache\Backend\File
- Support for creating groups of routes using Phalcon\Router\Route\Group
- Added Phalcon\Mvc\Micro middleware events
- Implemented virtual scopes in Phalcon\Mvc\View
- Added support for behaviors in the ORM including: Phalcon\Mvc\Model\Behavior\Timestampable and Phalcon\Mvc\Model\Behavior\SoftDelete
- Improved serialization of Mvc\Model instances and complex resultsets
- Added an option to change the layouts directory and partials directory in Phalcon\Mvc\View
- Added an option to disable an specific level of rendering in Phalcon\Mvc\View
- Added Phalcon\Mvc\Model::setup to globally enable/disable specific features in the ORM
- Added Phalcon\Db::setup to globally enable/disable specific features in the database component
- Added Phalcon\Mvc\Model\Resultset::delete to delete every complete object returned in a resultset using a transaction
- Added Phalcon\Mvc\Model\Resultset::update to update every complete object returned in a resultset using a transaction
- Added support for converters in Phalcon\Mvc\Router
- Added Phalcon\Mvc\View::getRender to return contents of a template into a string
- Added methods to support HTTP method PATCH
- Now Phalcon\Mvc\Model uses the last part of a namespaced class name as source name
- Phalcon\DI now implements ArrayAccess to get/set services
- Phalcon\Mvc\Micro now implements ArrayAccess to get services from the related services container
- Improved building of complex service definitions in the DI
- Added toArray method to Phalcon\Mvc\Model instances
- Added autoescape mode in Volt
- Removed unnecessary intermediate zvals when retrieving array items reducing overall memory comsumption
- Removed unnecessary intermediate zvals when retrieving object members reducing overall memory comsumption
- Removed PH_CHECK constant making simpler calling functions and methods internally
- Added Phalcon\Text::increment, Phalcon\Text::random, Phalcon\Text::lower, Phalcon\Text::upper, Phalcon\Text::startsWith, Phalcon\Text::endsWith
- Added Phalcon\Config::merge to merge recursively a configuration with another one
- Added Phalcon\Config::toArray method to recursively convert an object to an array
- Improved Volt runtime error/syntax error messages including always line and file
- Added Phalcon\Security providing a set of functions to improve the security in Phalcon applications like bcrypt password hashing and CSRF protection
- Added Phalcon\Mvc\View\Engine\Volt\Compiler::addFunction to register user functions
- Added Phalcon\Mvc\View\Engine\Volt\Compiler::addFilter to register user filters
- Added Phalcon\Mvc\Model\Relation as class for model relationships
- Added '[' and ']' as delimiters to escape PHQL reserverd words
- Reduced memory usage in PHQL parser/tokenizer
- Added support for aliasing of model relationships in Phalcon\Mvc\Model
- Relationships in Models are now case insensitive to be compliant with the PHP standard
- Looking for a relationship in the models manager now performs a search in O(1) order
- Added "cache" statement in Volt to cache view fragments
- Added "do" statement to Volt to execute an expression without printing its evaluated value
- Added "include" statement to Volt to perform a statical include of other views in compiling time
- Added an internal method cache to speed up overall execution
- Reduced memory allocation when reading/writing properties from objects
- Added missing Phalcon\Mvc\Collection::getMessages() and Phalcon\Mvc\Collection::appendMessage
- Added Phalcon\Config::get method to obtain a value from the configuration object setting a default value
- Added an optional default value to Phalcon\Session\Adapter::get if this method returns a null value
- Added OO methods to Phalcon\Session\Bag::get
- Added an optional default value to Phalcon\Session\Bag::get if this method returns a null value
- Added multiple inheritance and two-way replacement of blocks in Volt
- Added evaluation of "tests" to Volt
- Added support to call methods and read properties in sub-objects in Volt
- Volt now checks if a variable name is a registered service and injects it to the views
- The "For" statement in Volt now supports get the current key and add an optional if evaluation
- Added support to read PHP constants in Volt
- Added "prefix" option to Volt, allowing prefixing the resulting compiled paths
- Now registerAutoloader in module definitions receives the services container (DI) as first parameter
- Fixed skipAttributes methods in Phalcon\Mvc\Model
- Fixed use of muliples databases in the ORM
- Fixed use of a common events manager databases in the ORM
- Now Phalcon\Mvc\Router can be configured to remove extra slashes passed in the URI
- In Phalcon\Mvc\Router the default route is '/' when none is giving
Version 0.7.0 Stable
- Now the namespace can be set in a path of the route and it will passed automatically to the dispatcher
- Implementing URL generation based on routes without regular expressions
- Now is possible register a template engine in Phalcon\Mvc\View with an anonymous function
- Passing 'compileAlways' => true as option for Volt makes that the templates will be always compiled instead of checking if they have changes
- Now Phalcon\Cache\Backend adapters return false in the "exists" method if the cache has expired
- Fixed bug in Phalcon\Db\Result\Pdo::seek when using bind parameters
- Implemented a fast way to retrieve object's members without adding a memory frame
- Now Phalcon\Mvc\Dispatcher checks for methods beforeExecuteRoute and afterExecuteRoute in the controller handler
- Added phalcon_start_with to check if a zval string starts with other string avoiding substrs in PHP userland
- Added interfaces to most classes helping the developer to easily create component replacements and add new adapters/classes
- Implemented interfaces on their own components
- Implemented event propagation, event cancelation and ability to stop events in EventsManager
- Added Phalcon\Dispatcher::getDefaultNamespace
- Added a $merge parameter to every Phalcon\Loader strategy to merge current values with a new array
- Implemented registering services as "always shared"
- Now Phalcon\Mvc\Model::save, Phalcon\Mvc\Model::create, Phalcon\Mvc\Model::update receives an array to assign the model's attributes from it
- Support for UTF-8/UTF-16 characters on 32 bit platforms for PHQL/Volt parsers
- Support for custom schemas in PHQL
- Now is possible pass bound parameters to Phalcon\DB::fetchOne and Phalcon\Db::fetchAll
- Implemented independent column map for models and a full escaping system for columns/tables/schemas according to the database system conventions
- Added a $merge parameter to Phalcon\Mvc\Application::registerModules to merge new modules with current ones
- Phalcon\Mvc\Application now allows registering a module using an anonymous function
- Added Phalcon\Mvc\Model\Query\Builder aiding in the creation of PHQL queries using an OO interface
- Support for COUNT(DISTINCT x) syntax in PHQL
- Allowing user-defined messages in most Phalcon\Mvc\Model\Validators
- Now Phalcon\Mvc\Model\Validator\StringLength uses mb_strlen when it is available
- Allowed pass a URI manually to Phalcon\Mvc\Micro::handle()
- Fixed missing json_encode filter in Volt
- Moving cache implementation from Phalcon\Mvc\Model to Phalcon\Mvc\Model\Query, this allows caching both simple and complex resultsets
- Added Phalcon\Paginator\Adapter\QueryBuilder to use a PHQL Query Builder as source of data
- Added adapter for Oracle databases in Phalcon\Db
Version 0.6.1 Stable
0.6.1
- Fixed bug in Phalcon\Mvc\Micro's not-found handler
- Fixed bug reading named-parameters with quantifiers in Phalcon\Mvc\Router
- Now named-routes are processed without use regular expressions
- Now $this->view->disable() disables the auto-rendering mode completely
- Added Phalcon\Mvc\View::enable that re-enables the auto-rendering mode
- Added Phalcon\Cache\Backend::stop() to stop the cache without store anything into the backend
- Fixed bug in Phalcon\Mvc\View that saves an empty cached content when using a cache
- Implemented Phalcon\Db::FETCH_OBJ to return objects instead of arrays
- Added functions version, version_id, date and time to Volt
- PHQL OFFSET complete implementation
- Fixed bug in Phalcon\Mvc\Collection::find and Phalcon\Mvc\Collection::findFirst
- Removing unnecessary duplications in zval PHALCON_GET_FOREACH_VALUE
- Merging PHALCON_INIT_NVAR into PHALCON_GET_FOREACH_KEY
- Added HTML/XHTML document type support in Phalcon\Tag
- Added "exists" method to every backend in Phalcon\Cache\Backend
- Now is required pass true as parameter to Phalcon\Http\Request::getClientAddress if the user want to check the client address in the $_SERVER['HTTP_X_FORWARDED_FOR'] header
- Removed unnecessary duplication of function names when calling function and methods
- Now Phalcon can call functions from the PHP userspace without use call_user_func_array/call_user_func increasing performance
- Added beforeException event triggered from Phalcon\Dispatcher before launch an exception allowing injecting code before launch a real exception modifing the behavior of the component
- Now is possible attach listeners directly to specific events in Phalcon\Event\Managers
- Added Phalcon\Http\Request::get and Phalcon\Http\Request::has to read/check values from $_REQUEST
- Added Phalcon\Cache\Backend\Mongo that uses a MongoDB collection as backend
- Added options (compiled path, compiled separator, stat) for Volt
- Concatenation on the same variable is now faster by using realloc instead of zval duplication
- Some internal macros like PHALCON_INIT_VAR now produce fewer C-code making the extension lighter
- Removed initialization of the memory stack frame when isn't needed
- Inlining of scope locating functions to make read/write on objects faster
- Array joins are now faster because a zval needle isn't needed anymore
- Implemented fast copy/ctor to return_value reducing the overall memory usage
- Added Phalcon\Tag::friendlyTitle to create friendly titles
- Added a new C-based template engine highly coupled with Phalcon called Volt
- Registered Phalcon\Mvc\Model\Transaction\Manager in Phalcon\DI\FactoryDefault as 'transactionManager'
- Added Phalcon\Escaper to add contextual escaping of different kinds of texts
- Registered Phalcon\Escaper in Phalcon\DI\FactoryDefault as 'escaper'
- Phalcon\Tag now caches resolved services such as 'url' and 'dispatcher' making the view generation faster
- Added support to the OFFSET clause in PHQL
- Optimized Phalcon\Mvc\Model\Metadata to use fewer memory when using a high number of tables
- Changed the use of strpos by phalcon_memnstr to search for strings into other strings reducing unnecessary zval allocations
- Added faster camelize/uncamelize functions
- Now a model can implement the method metaData to return the model meta-data insteaf of leave Phalcon do it automatically
- Phalcon\Mvc\Model::skipAttributes allows setting a group of attributes that must be skipped from the INSERT/UPDATE SQL generation
- Added Phalcon\Mvc\Collection to manage non-structured data models, for example: MongoDB