# 1.3.4 (2014-10-28)

- Fix improper access to `\Phalcon\Debug::$_charset` (#2840)
- Fix segfault in Phalconwhen an invalid parameter is passed as conditions
- Fix segfault when MongoClient does not return a valid collection in Phalcon
- Fix possible memory corruption when phalcon_concat_self does not properly separate values

# 1.3.3 (2014-09-23)

- Fix segmentation fault in zim_Phalcon_Http_Request_getBasicAuth (#2819)
- Fix memory corruption on unclean shutdown (#2829)

# 1.3.2 (2015-05-05)

- fix inverted test in Model/setSnapshotData() (issue #2466)
- Updated Phalcon::touch comment
- Fixed use columns as referenced columns in mysql createTable() referenceΓÇª
- #2414 - Removed check for DBG in session/adapter
- Updated `Model::__set`
- #1989 Supported : TYPE
- Updated Phalcon::groupBy
- Validation, setDefaultMessages fix
- Fix pagination nativeArray test-unit failed
- Add Phalcon
- Add Phalcon
- #1803 Bug join alias
- Fix valid function for the first call
- Acl bug
- #2402 issue
- Ignore ΓÇ£valueΓÇ¥ attribute in TextArea.
- #2394 Add Phalcon
- Relative namespace
- #2386
- Fixing a typo
- #2375 Add check messages is object in Phalcon::appendMessΓÇª
- Update affected rows for selects.
- #2196: Declare missing functions
- Fix broken condition
- Add Phalcon
- Fix offsetUnset
- Changing ΓÇ£file_existsΓÇ¥ function for ΓÇ£is_fileΓÇ¥.
- Fix bug about updated property for Phalcon*
- #2291 Middlewares do not stop operation when before event triggered in Micro as documented http://docs.ΓÇª
- #1608 about Phalcon
- #2019 and added tests
- model: added methods arg infos
- #2319 In `Model::_postSaveRelatedRecords` add check whether value is object
- #2321: Fixed the null value for position
- #2313 about Phalcon
- #2229 (cast and convert not working)
- Add method Phalcon::addFilter
- Add Phalconand Phalcon
- Add class Phalcon
- Add class Phalcon
- ::XHTML5 was returning empty string
- #2278 add Phalcon::CRITICAL
- Tag, add title separator to append/prepend title
- #2250 Updated Phalcon::select
- #2270 updated phalcon_camelize
- Add namespace support for view
- #2259 Updated ::crop
- #2262 `\Phalcon\Logger\Formatter\Json` Wrong number of parameters
- #2244 add judge conditions in `Phalcon\Mvc\Model\Manager::getRelationRecords`
- Removed final keyword from Model constructor
- #2111 ΓÇô replacing bindParam to bindValue to avoid unexpected reference changes
- #2002 Tag::linkTo() to allow the addition of query string parameters
- Added `allowEmpty` option to *
- Use phalcon_camelize for namespace Add ::setId Fixed #1932 PhalconΓÇª
- #2111 ΓÇô replacing bindParam to bindValue to avoid unexpected reference changes
- Fix wrong issent() call on non Response objects
- #2236 - in mysql tinyint(1) is not boolean itΓÇÖs an int between 0 and 127
- Add ::setId
- Fix BUG *
- Travis fast-finish builds
- #2157 and added tests
- #2196 Declared missing functions
- Add `allowEmpty` option to *
- #2002 Tag::linkTo() to allow the addition of query string parameters
- #2018 add method ::nextRowset
- Use phalcon_camelize for namespace
- #1932 Phalconextend SplFileInfo

# 1.3.1 (2014-03-25)

- Fixed segfault in Phalcon::resolve when string class does not exist (#2205)
- Moved global zvals to RINIT/RSHUTDOWN to improve stability on Windows TS builds
- Moved pre-allocated frames to RINIT/RSHUTDOWN to improve stability on Windows TS builds
- Fixed segfault when replacing Phalconadapter by PHP userland adapter
- Fixed zval invalid indirection in Phalconhash
- Fixed segfault when passing an invalid number of arguments to Phalcon::parseDocBlock
- Private and Protected properties werenΓÇÖt unmangled in Phalcon
- First character of controller name was removed when isExactHandler flag is on

# 1.3.0 (2014-03-19)

- Make the source code compatible with PHP 5.6-dev and PHP 5.7-dev (#1762)
- Code cleanup: get rid of compiler warnings, dead code elimination, code deduplication, use static code analysers to eliminate possible bugs (#801, #802, #810, #825, #827, #838, #849, #942, #968, #1001, #1093, #1169, #1214, #1223, #1224, #1375, #1430, #1787, #1794, #1828)
- Fixed various memory leaks (#469, #860, #910, #914, #916, #1031, #1067, #1249, #1273, #1291, #1309, #1345, #1455, #1470, #1700)
- Fixed memory access violations / segmentation faults / etc (#469, #849, #851, #852, #858, #860, #861, #895, #911, #918, #927, #928, #1000, #1077, #1112, #1113, #1131, #1149, #1173, #1272, #1284, #1302, #1340, #1343, #1368, #1369, #1371, #1376, #1379, #1392, #1451, #1466, #1485, #1494, #1501, #1504, #1509, #1567, #1607, #1983, #1006)
- Fixed PHP notices, warnings and other incompatibilities (#894, #1222, #1315, #1413, #1427, #1428, #1529, #1988, #1998)
- Fixed inheritance chain for Phalcon, Phalcon, Phalcon(#1770)
- Major source code optimizations (#1785, #1972, #2003)
- Control Phalcon behavior via INI settings (#1796)
- Security fixes:
  - Hardening fixes (#1044)
  - Interface validation (#1043, #1048)
  - Thorough data validation in `__wakeup()` (#1043, #1634, #1635)
  - Fixed XSS vulnerabilities (#1216, #1190)
  - Phalcon::checkHash() allows to restrict the length of the password to avoid attacks like https://www.djangoproject.com/weblog/2013/sep/15/security/ (#1261)
  - Fixed crash while rendering elementΓÇÖs label (#1210)
  - Prevent MongoDB Request Injection Attacks (#1265)
  - Do not allow to override superglobals in views (#1617)
- Phalcon Kernel:
  - 32 and 64 bit hashes can be computed on the same CPU architecture (#817)
  - Reduced overall memory usage (#834, #891, #893)
  - Memory allocation optimizations (#912, #1220, #1987)
  - Faster internal array and string manipulation (#822, #823, #830, #833, #837, #890, #1972)
  - Camelize does not ignore the last character of a string anymore (#1436)
  - Fixed bug in phalcon_fix_path() (#1601)
  - Use native counterparts for memory_get_usage(), gettype(), json_encode(), json_decode(), session_XXX(), header(), headers_sent(), debug_backtrace(), lcfirst(), ob_XXX(), array_unshift(), array_values(), array_keys(), htmlentities() (#836, #847, #936, #945, #1099)
  - Hash functions tailored for object handlers (#842)
  - Optimization of calls to userland functions and methods (#843, #954)
  - Read/modify/update optimization on properties (#848)
  - Added support for self/parent/static scopes in static properties (#943)
  - Scope lookup optimizations (#948)
  - Do not restore memory frames from kernel functions (#960, #976)
  - Diagnostic messages when Phalcon is compiled in dev mode (#1009, #1054, #1097)
  - Return Value Optimization (#1046, #1047, #1075)
  - Fixed locale issue (#1095)
  - Added support for interned strings (PHP 5.4+)
  - Static property fetch/update optimization (#1293)
  - Fix misleading diagnostics on exception (#1297)
  - Use preallocated permanent zvals instead of null, true, false, 0 and 1 (#1302)
  - Bug fix in phalcon_fix_path() (#1591)
  - Persistent function cache for Phalcon methods (#1825)
  - Function call optimization (#1846)
  - Use Native Reflection API (#1957)
- Phalcon:
  - Fixed broken ACL inheritance (#905)
  - Bug fix when ACL allowed access to forbidden resources (#1303)
  - Fixed bug with ACL * wildcard (#1409)
  - Fixed bug with numeric resources (#1513)
  - Phalconnow implements Phalcon(#1852)
- Phalcon:
  - Fixed getProperty() bug in AnnotationsAdapter (#996)
  - Phalconoptimizations (#1141)
  - Fixed parsing of annotations containing / (#1480)
  - Phalconnow implements Phalcon(#1852)
  - Annotation parser optimization (#1957)
- Phalcon:
  - Fixed bugs when minifier produced no output at all (#811, #821)
  - Fixed joining issue (#951)
  - Added support for UTF-8 characters in jsmin
  - Fixed chaining of CSS/JS filters (#1198)
  - Phalconand JsMin implement Phalcon(#1539)
  - Added Phalcon::setTargetLocal() (#1532)
- Phalcon:
  - Added Libmemcached cache backend (#913)
  - Added support for APCu 4.0.2+ (#1234)
  - Implemented Phalcon::queryKeys() (#1093)
  - Bug fixes in Phalcon(#1406)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalcon64 optimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations (#1093)
  - Phalconoptimizations and bug fixes (#1093)
  - Added increment() and decrement() methods (#1374)
  - Added flush() method (#1352)
  - Phalconnow implements Phalcon(#1852)
  - Ability to disable key tracking for Memcache/Libmemcached backends (#1550)
- Phalcon:
  - Faster Phalconimplementation using object handlers (#837, #1277)
  - Phalconnow support numeric properties as well (#837)
  - Implemented Phalcon::offsetUnset() (#732)
  - Phalconcorrectly handles empty sections and INI files without any sections (#829, #837)
  - Added Phalconclass to read JSON configs (#844)
  - Phalcon::merge now works with derived classes (#1024)
  - Dot-delimited directives in INI-files are now prsed correctly (#872)
  - Support for PHP arrays as config files (#1439)
- Phalcon:
  - Added support for various padding schemes (PKCS7, ANSI X.923, ISO 10126, ISO/IEC 7816-4, zero padding, space padding) to Phalcon(#864, #887)
  - Reduced peak memory usage (#1237)
  - encryptBase64() and decryptBase64() can optionally use RFC 4648 flavor of BASE64 (#1353, #1919)
- Phalcon:
  - Added support for DECIMAL scale (#940)
  - Fixed invalid sequence names for PostgreSQL (#1022)
  - Added support for MySQL DOUBLE type (#1128)
  - Database dialects now support BOOLEAN data type (#816)
  - Added support for POINT type in MySQL (#1536)
  - Fixed issue with RawValue(ΓÇÿdefaultΓÇÖ) on composite primary key (#1534)
  - Added support for AUTO_INCREMENT columns to addColumn() (MySQL, SQLite) and modifyColumn() (MySQL) (#1695)
  - Phalcon::getColumnDefinition() now returns INT instead of INT(0) (#1695)
  - Added support for the following fetch modes from PDO: FETCH_LAZY, FETCH_BOUND, FETCH_COLUMN, FETCH_CLASS, FETCH_INTO, FETCH_FUNC, FETCH_NAMED, FETCH_KEY_PAIR (#1642)
  - Added support for the following fetch mode modifiers from PDO: FETCH_GROUP, FETCH_UNIQUE, FETCH_CLASSTYPE, FETCH_SERIALIZE, FETCH_PROPS_LATE (#1642)
  - Phalconoptimizations (#1693)
  - Phalconoptimizations (#1693)
  - Phalconoptimizations (#1693)
  - Phalconoptimizations (#1693)
  - Phalconoptimizations (#1693)
  - Phalconoptimizations (#1693)
  - Phalconnow implements Phalcon(#1852)
  - Phalconnow implements Phalcon(#1852)
- Phalcon:
  - Added support for UTF-8 to (#1099)
  - Phalcon::uri now supports both http and https (#987)
  - Fixed array to string conversion notice (#1103)
  - Add support for xdebug.file_link_format (#1401)
- Phalcon:
  - Phalconoptimizations (#1014) with workarounds for NuSphere DBG (#1714)
  - Added Phalcon::isResolved() method (#1242)
  - Make sure that ΓÇÿpersistentΓÇÖ is resolved only when accessed for the first time (#1637)
  - Faster DI implementation by using object handlers (#1473)
  - Changes to Phalcon(#2034)
    - removed setShared() method because it is a shorthand for set($name, $definition, true);
    - removed attempt() method because it is a shorthand for `has()` + `set()`
    - renamed setRaw() to setService() because getRaw() is actually getService() + $service->getDefinition()
    - setRaw() is now an alias for setService() but it will spit E_DEPRECATED
    - removed `getRaw()` because it is `getService()` + `$service->getDefinition()`
    - modified `setService($name, $raw_definition)` to `setService($raw_definition)` because service name can be retrieved from the definition
- Phalcon:
  - Dispatching parameters now can be modified in ΓÇÿbeforeExecuteRouteΓÇÖ events
  - ΓÇÿbeforeExceptionΓÇÖ events can now handle exceptions occurred when executing actions (#140)
  - Added Phalcon::getHandlerClass and Phalcon::getActionMethod
  - Implemented afterInitialize event (#782)
  - Phalconoptimizations (#782)
  - Added getPreviousControllerName(), getPreviousActionName() (#1462)
  - If an event handler throws an exception, call dispatch:beforeException and break the dispatch loop (#1763)
  - Phalcon::_handleException() is invoked regardless whether the event manager is present (#1953)
- Phalcon:
  - Phalcon::addFilter() incorrectly prepends NULL as the first element (#1019)
- Phalcon:
  - Fixed bugs in Phalcon(#917)
  - Phalconoptimizations (#1015)
  - Fix phalcon_escape_multi() to generate valid UTF-8 (#1681)
- Phalcon:
  - Added support for weak references (#663)
  - Bug fix in Phalcon::attach() (#1331, #1337)
- Phalcon:
  - Phalcon::getMessage(ΓÇÿkeyΓÇÖ) returns now an empty array if the key is not found (#908, #920)
  - Phalcon::getMessages() incorrectly removed all messages (#1575)
  - Implemented Phalcon::isset() (#1342)
- Phalcon:
  - Phalcon* classes now implement Phalcon
  - Added support for HTML attributes to Phalcon::label() (#1029)
  - Phalcon::getMessages() does not generate a fatal error if the form is valid (#1349)
  - Improvements to Phalcon::add() (#1386)
  - Added Phalconclass (#1646)
  - Phalcon::hasMessagesFor() returns boolean (#1764)
  - Iterators for Phalconimplemented via Zend API (#1765)
  - Phalcon::count() implemented via Zend API (#1765)
  - Phalconoptimizations (#1765)
  - Phalconnow implements Phalcon(#1852)
  - Fixed Phalcon::addOption() (#1955)
- Phalcon:
  - Phalconcan be used without sessions (#875)
  - Phalcondoes not ignore expire time (#897)
  - Phalconfully supports file arrays (#884, #888)
  - Phalconoptimizations (#889)
  - Added getKey(), getError(), isUploadedFile() methods to Phalcon(#878, #888)
  - Fixed regression in ::getRawBody() (#1091)
  - Bug fix in Phalcon::getQuery() (#1226)
  - Fixed broken Phalcon::setFileToSend() method (#831, #832)
  - Redirects use status descriptions from RFC 2616 (#1175)
  - Phalcon::setFileToSend() can now show the file in the browser instead of offering to download it (#853)
  - Added Phalcon::toArray() (#1008)
  - getJsonRawBody() may return an associative array (#1241)
  - Added getURI(), getBasicAuth(), getDigestAuth() methods to Phalcon(#1250)
  - Added getPut()/hasPut() methods to Phalcon(#680, #1403)
  - Implemented Phalcon::getRealType (#1442, #1444)
  - External URLs are now automatically detected by Phalcon::redirect() (#1182)
  - Fixed error in Phalcon::send() when no headers were set (#2047)
- Phalcon:
  - Added Phalcon, Phalcon, Phalcon(#902, #1025, #1030, #1041, #1050, #1063, #1076, #1081, #1114, #1120, #1158, #1195, #1206, #1214, #1370)
- Phalcon:
  - Added FirePHP Log Adapter and Formatter (#845, #1333, #1483)
  - Implemented Phalcon::isTransaction() (#1238)
  - Fixed a bug preventing the EMERGENCY log type from being displayed correctly (#1498)
  - Added Phalcon::getPath() (#1495, #1508)
  - Phalconoptimizations (#1716)
  - Phalcon::setLogLevel() is honored by transactions (#1716)
  - Phalcon::commit() now clears the queue (#1742)
  - Phalconnow implements Phalcon(#1852)
  - Phalconnow implements Phalcon(#1852)
  - Phalconand Phalconare now PSR-3 compliant (#1873, #1888)
  - Added Phalcon::critical() method (#1888)
  - For PHP 5.3.9+ when phalcon.register_psr3_classes php.ini option is set, Phalconimplements Psr(#1888)
  - When phalcon.register_psr3_classes php.ini option is set, Phalconand derived classes throw Psr instead of Phalconwhen the arguments are not valid (#1888)
- Phalcon:
  - Added support for route names in Phalcon(#1868)
  - Phalcon::handle() now checks whether the class exists before include()ΓÇÖing its file (#812, #818)
  - Phalcon::fromInput() now sets _modelName (#866, #873)
  - Phalconmay now use both integer and string placeholders (#701)
  - Mvc() is filterable now (#885)
  - Fixed hasManyToMany relation implementation (#938)
  - Fixed regular expression in (#1243)
  - Phalcon::hasOne/hasMany/belongsTo/hasManyToMany/addBehavior() are now public methods (#1166)
  - Added Phalcon::toArray() method (#1506)
  - Phalcon::getOption() returns NULL if the option does not exist (#1530)
  - Bug with a custom Events Manager in Phalcon(#1314)
  - Phalcon::__construct() does not ignore joins anymore (#1327)
  - Fixed HAVING handling in Phalcon(#1396)
  - Micro Collections return Phalcon(#1130)
  - Phalcon::get() can append query params (#723, #877)
  - Regular Expression Optimization for Phalcon(#977)
  - PHQL: added placeholders support to LIMIT (#1023)
  - Added Phalcon::getDefautXXX() methods (#1087)
  - Allow HAVING without GROUP BY in query builder (#1115)
  - mvc/model/query.c optimizations (#1129, #1132)
  - Added support for array(limit, offset) as a ΓÇÿlimitΓÇÖ constructor key in Query Builder (#1208)
  - Added support for ΓÇÿconditionsΓÇÖ in Phalcon::__construct() (#1236)
  - Added Phalcon::isDisabled(), Phalcon::getRenderLevel(), Phalcon::getDisabledLevels() (#907, #1320)
  - Added Phalcon::getCurrentRenderLevel() (#907, #1326)
  - Bug fix in Phalcon::toArray() (#1377)
  - Bug fixes in Volt compiler (#1387)
  - Volt compiler optimizations (#1729)
  - Phalconoptimizations (#1414)
  - Allow to set dirs without trailing slashes in Phalcon(#406, #1440)
  - Phalcon::getOption() returns null if option does not exists (#1531)
  - Added Phalcon::selectWriteConnection() (#1519)
  - Added Phalcon::convert()/getConverters() (#1555, #1572)
  - Added Phalcon::getGroup() (#1682)
  - Added Phalcon::getName() and setName() (#1682)
  - Faster Phalcon(#1606)
  - Optimized Phalcon(#1682)
  - Bug fix: no arguments were passed to beforeMatch handler in Phalcon(#1556)
  - Added diagnostics when a validator returns false but does not call appendMessage() (#1664)
  - Fixed handling of numeric namespaces/modules/controllers/actions (#1688)
  - Added Phalcon::exists() and Phalcon()::getRegisteredEngines() (#1707)
  - Volt: fixed bug in email_filed() (#1723)
  - Fixed deprecation warnings in Phalcon::save() and Phalcon::delete() (#1783)
  - Phalconnow implements Phalcon(#1852)
  - Phalconnow implements Phalcon(#1852)
  - Phalconnow implements Phalcon(#1852)
  - Phalconnow implements Phalcon(#1852)
  - Phalcon::getOption()/getOptions()/isSetOption() methods are now public (#1904)
  - Phalcon::findFirst() now works when phqlLiterals is false (#886)
  - Fixed notices when phalcon.orm.column_renaming is 0 (#1801)
  - Implemented reset() for metadata adapters other than memory (#1934)
  - Relaxed the requirement for the route to start with a slash (#1938)
  - Phalcon: merge slashes when the route prefix ends and the route pattern starts with a slash (#1938)
  - Phalcon::fromInput() now works with column maps (#1903)
- Phalcon:
  - Phalconreturns correct results even when page number is incorrect (#1654)
  - Optimized Phalcon(#1632)
  - setCurrentPage() returns $this for all adapters (#1633)
  - Optimized Phalcon(#1653)
- Phalcon:
  - Fixed bug in Phalcon::read() (#1348, #1612)
  - Bug fixes in beanstalkd protocol implementation (#1650)
  - Optimizations (#1621)
  - Added peekDelayed() and peekburied() to Phalcon(#1650)
  - Added kick(), bury(), release(), touch() to Phalcon(#1650)
- Phalcon(#1209, #1935)
- Phalcon:
  - Phalconinherits from Phalcon, not from
  - Added Phalcon::computeHmac() (#1347)
  - Bug fixes (#1347)
  - Constant-time string comparison in Phalcon::checkHash() to prevent timing attacks (#1755)
  - Phalcon::checkHash() now correctly handles non-bcrypt hashes (#1912)
  - Support all hashes supported by crypt() in Phalcon::hash() (#1971)
  - Phalcon::getSaltBytes() dies not require OpenSSL anymore (#1971)
- Phalcon:
  - Fix Phalcon::remove() (#1637)
  - Add remove() to Phalcon(#1917)
  - Phalcon::get() may optionally remove the data from session (#1358)
  - Phalconoptimizations (#1624)
  - `Phalcon\Session\Adapter::__destruct` now calls session_write_close() (#1624)
  - Phalconis compatible with SessionHandlerInterface (#1108)
  - Phalconnow implements Phalcon(#1852)
  - `Phalcon\Session\Bag::__get` now returns by reference (unlike get()) (#1895)
  - Phalconimplements ArrayAccess, Countable, IteratorAggregate interfaces (#1917)
  - Phalconimplements ArrayAccess, Countable, IteratorAggregate interfaces (#1917)
  - Optimized Phalconusing object handlers (#1917)
- Phalcon:
  - Fixed bugs (#903)
  - Fixed radio button generation (#947)
  - Fixed inconsistent behavior of setAutoescape() (#1263)
  - Added missing HTML5 input types (#824, #1323)
  - Added Phalcon::setTitleSeparator() (#1365)
  - Added support for (#1422)
  - Fixed inconsistency in Tag::stylesheetLink/javascriptInclude w.r.t. local URLs (#1486)
- Phalcon:
  - Optimized Phalcon, Phalconby using object handlers (#1668)
  - Phalcon::query() now replaces placeholders even if the string is not found in the language content (#2044)
- Phalcon:
  - Added support for error codes (#1171)
  - Bug fixes (#1399)
  - Optimized Phalconby using native iterators (#1657)
  - Optimized Phalconby using object handlers (#1765)
  - Phalconnow implements Phalcon(#1852)
- Psr:
  - when phalcon.register_psr3_classes php.ini option is set, Psr, Psr, Psr, Psr, Psr, Psr, Psr(PHP 5.4+), Psr(PHP 5.4+) are registered as internal interfaces/classes/traits by Phalcon (#1888)
- Unit tests:
  - Travis CI imporvements (#819, #846, #949)
  - Use markTestSkipped() instead of echo (#862)
  - Do not run APC tests under CLI when apc.enable_cli is 0 (#1449)
  - Added new tests (#865, #1256, #1260, #1339, #1560, #1563)
  - Skip database tests when the DBMS is not available (#970)
  - Support for optional RVO (#1147)
  - Added support for test coverage visualization (#1307, #1361)
  - Bug fixes in tests (#1313, #1334, #1335, #1449, #1467)
- Documentation bug fixes (#1069, #1070, #1072, #1145, #1146, #1205, #1372, #1397, #1521, #1523, #1586, lots of them)
- Refactored, improved and optimized build script (#1218)
- Other bug fixes (#1051, #1131, #1040, #1275, #1392, #1396, #1399, #1425, #1426ΓÇª)

# 1.2.6 (2014-01-26)

- Phalcon::checkHash() now correctly handles non-bcrypt hashes (#1912)

# 1.2.5 (2014-01-13)

- `Phalcon\Http\Cookie::__toString` will not throw exceptions (#1427)
- `Phalcon\Http\Cookie::__toString` will return a string value (#1428)
- Camelize does not ignore the last character of a string anymore (#1436)
- APC tests do not run under CLI when apc.enable_cli is 0 (#1449)
- Phalcon::uri now supports both http and https (#987)
- Fixed inconsistency in Tag::stylesheetLink/javascriptInclude w.r.t. local URLs (#1486)
- Fixed bug in Phalcon::read() (#1348, #1612)
- Phalcon::getMessages() incorrectly removed all messages (#1575)
- Fixed bug in phalcon_fix_path() (#1601)
- Added Phalcon::toArray() method (#1506)
- Added support for POINT type in MySQL (#1536)
- Phalcon::getOption() returns NULL if the option does not exist (#1530)
- Fixed parsing of annotations containing / (#1480)
- Make sure that ΓÇÿpersistentΓÇÖ is resolved only when accessed for the first time (#1637)
- Fix Phalcon::remove() (#1637)
- Bug fixes in beanstalkd protocol implementation
- Phalconreturns correct results even when page number is incorrect (#1654)
- Bug fix: no arguments were passed to beforeMatch handler in Phalcon(#1556)
- Phalcon::setLogLevel() is honored by transactions (#1716)
- Bug fixes in Phalcon::describeColumns() (#1562)
- `Phalcon\Session\Adapter::__destruct` now calls session_write_close() (#1624)
- Volt: fixed bug in email_filed() (#1723)
- Fixed PHP Notices in Phalcon::onUncaughtException() (#1683)
- Phalcon::commit() clears the queue (#1748)
- Constant-time string comparison in Phalcon::checkHash() (#1755)
- Fix phalcon_escape_multi() to generate valid UTF-8 (#1681)

# 1.2.4 (2013-10-23)

- Fixed broken ACL inheritance (#905)
- Fixed crash while rendering elementΓÇÖs label (#1210)
- Fixed XSS vulnerabilities (#1216, #1190)
- Added support for APCu 4.0.2+ (#1234)
- Fixed chaining of CSS/JS filters (#1198)
- Fixed notices and warnings with complex PHQL queries (#1222)
- Memory allocation optimizations (#1220)
- Fixed regular expression in (#1243)
- Documentation bug fixes
- Phalcon::hasOne/hasMany/belongsTo/hasManyToMany/addBehavior() are now public methods (#1166)
- Added support for MySQL DOUBLE type (#1128)
- Added support for UTF-8 characters in jsmin
- Added support for UTF-8 to (#1099)
- Fixed regression in ::getRawBody() (#1091)
- Implemented ::queryKeys() (#1093)
- Redirects use status descriptions from RFC 2616 (#1175)
- ::merge now works with derived classes (#1024)
- ::checkHash() allows to restrict the length of the password to avoid attacks like https://www.djangoproject.com/weblog/2013/sep/15/security/
- `Phalcon\Config` can now be cloned (#1277)
- `Phalcon\Mvc\Query\Builder::__construct` ignores joins (#1327)
- Bug with a custom Events Manager in Phalcon(#1314)
- Micro Collections return Phalcon(#1130)
- ::getMessages() does not generate a fatal error if the form is valid (#1349)
- Fixed memory leaks (#1345)
- Fixed invalid memory reads/writes across the code (#1340)
- Fixed HAVING handling in Phalcon(#1396)
- Bug fixes in {Adapter,Formatter}(#1333)
- Bug fixes in Phalcon(#1406)
- `Phalcon\Forms\Element::__toString` does not throw exceptions anymore (#1413)
- Other bug fixes (#947, #1131, #1040, #1275, #1392, #1396, #1399, backported patches from 1.3.0 etc)

# 1.2.3 (2013-08-16)

- Security fixes (#1144)

# 1.2.2 (2013-08-06)

- Phalconmay now use both integer and string placeholders (#701)
- Fixed invalid memory reads when GC is on (#469, #927)
- Phalcon::getMessage(ΓÇÿkeyΓÇÖ) returns now an empty array if the key is not found (#908, #920)
- Fixed bugs in Phalcon(#917)
- Fixed memory leaks for PHP < 5.4 (#910, #914, #916)
- Fixed memory access violations (#911, #918, #927, #928)
- Memory allocation optimizations (#912)

# 1.2.1 (2013-07-25)

- 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::getHandlerClass and Phalcon::getActionMethod
- Phalcon* classes now implement Phalcon
- Phalconcorrectly handles empty sections and INI files without any sections (#829, #837)
- Phalconfully 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(#864, #887)
- Added getKey(), getError(), isUploadedFile() methods to Phalcon(#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::setFileToSend() method (#831, #832)
- Phalcon::setFileToSend() can now show the file in the browser instead of offering to download it (#853)
- Added Phalconclass to read JSON configs (#844)
- Added FirePHP Log Adapter and Formatter (#845)
- Faster Phalconimplementation (#837)
- Phalconnow support numeric properties as well (#837)
- Database dialects now support BOOLEAN data type (#816)
- Phalcon::handle() now checks whether the class exists before include()ΓÇÖing its file (#812, #818)

# 1.2.0 (2013-07-10)

- 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 Phalconprovides an internal separation for uris for static resources and uris to rewrite resources
- Added Mvc::inWhere to append an IN expression to the criteria
- Added Mvc::notInWhere to append a NOT IN expression to the criteria
- Added Mvc::notBetweenWhere to append a NOT BETWEEN expression to the criteria
- Added Mvc::betweenWhere to append a BETWEEN expression to the criteria
- Phalcon::image accepts a second parameter to allow external URLs
- Added Phalconas 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::getJsonRawBody() to return the request body as a decoded JSON
- Added Phalcon::getHeaders()
- Support for many to many relations in the ORM
- Added Phalconto provide on-the-fly javascript minification
- Added Phalconto provide on-the-fly CSS minification
- Support for real nested transactions in Phalconusing database savepoints
- Support for create/list/drop views in Phalcon
- Added event application:viewRender to Phalconallowing 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::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::find receives a parameter ΓÇÿfieldsΓÇÖ to specify a list of fields
- Added Phalconand Phalcon::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::getType()
- Phalconis not abstract anymore allowing to create instances of it
- Phalconis now registered as ΓÇÿtagΓÇÖ in Phalcon
- In a handler in Phalconreturns an object that implements Phalconthe response is automatically send()
- Phalconnow have a chaineable API
- Phalconnow 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/Phalconnow checks for a method ΓÇÿonConstructΓÇÖ allowing the developer to execute initialization stuff every time a model/collection instance is created
- Phalcon/Phalconnow 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::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
- Aclwas rewritten 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 Phalconto store annotations in Xcache
- Added Phalconto 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

# 1.1.0 (2013-05-08)

- Improvements to the query builder allowing to define bound parameters in the ΓÇ£whereΓÇ¥ methods
- Added Mvc::inWhere to append an IN expression to the query
- Added Mvc::notInWhere to append a NOT IN expression to the query
- Added Mvc::betweenWhere to append a BETWEEN expression to the query
- Now Phalconinjects automatically the default DI if one hasnΓÇÖt beed manually assigned
- Added Phalconto reference forms and retrieve them from any part of the application
- If an element in PhalcondoesnΓÇÖt have a label defined now returns the elementΓÇÖs name as label
- Now if a validator in Phalconhas defined the option ΓÇÿcancelOnFailΓÇÖ => true the validation will be aborted if the validator fails
- Added Phalconto check a value between a range of two values
- Added Phalconto check that a value match its confirmation value (another attribute in the data to validate)
- Phalconnow extends from Phalconallowing developers to use application services in the form initialization
- Now calls to Phalconcan be chained
- Phalcon::getRewriteUri is now public
- Added Phalcon::beforeMatch to implement arbitrary conditions to unmatch a matched route
- Phalconcan be now set up to throw an exception when the saving process fails
- Added Phalconcomponent to manage CSS/Javascripts resources in an application
- Added Phalcon::getAll to return all the annotations in a collection that matches a name
- Added Phalconcomponent to provide encryption facilities to phalcon applications
- Now Phalcon: get, getQuery y getPost returns the respective superglobals in case of no parameters
- Now Phalconsupports simple/regex hostname restrictions
- Added support for filtering/sanitizing in Phalcon
- Added events beforeValidation/afterValidation to Phalconand Phalcon
- Added ability to register user-options in Phalconelements
- Fixed Phalconto register a controllers in Phalcon
- Added Phalcon::dateField and Phalcon::numericField
- Added Phalconand Phalcon
- Added Phalconto cache data as JSON
- Added Phalcon::tagHtml and Phalcon::tagHtmlClose to generate any kind of HTML tags
- Phalconis now fixed
- Added support for automatic crypting of cookies in Phalcon
- Phalconnow provides the ΓÇÿcryptΓÇÖ service
- VoltΓÇÖs paths are now automatically normalized to realpaths
- Fixed bug in convert_encoding in Volt
- Added Phalconto be used in custom filters
- Added support for filters in Phalconelements
- Added maximum recursion depth exceeded control in Phalcon
- 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 Phalconmust use a PriorityQueue instead of a FIFF (First In-First Fired)
- !! PhalconAPI have been changed. Check the manual to update your bootstrap

# 1.0.1 (2013-04-08)

- Paths arenΓÇÖt correctly normalized in Phalcon
- Added extra class prefix to schema.table in Phalconto avoid multiple-database collisions
- Now Phalconignores numeric paths in controller, namespace, module and action, avoiding that those will be passed to the dispatcher
- Added Phalcon::remove to remove an element from the form and Phalcon::has to check if a form has an element

# 1.0.0 (2013-03-22)

- Added Phalcon::setUriSource to set if the URI source must be $_GET[ΓÇÖ_urlΓÇÖ] or $_SERVER[ΓÇÿREQUEST_URIΓÇÖ]
- Added a white-list parameter to Phalcon::save(), Phalcon::create() and Phalcon::update() to avoid possible mass-assigment attacks
- Added leftJoin/rightJoin to QueryBuilder

# 1.0.0b1

- 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
- Support for ΓÇÿinΓÇÖ and ΓÇÿnot inΓÇÖ operators in Volt
- Added Phalcon::assign to assign an array of values to a model instance
- Added Phalcon::refresh to refresh the state of a model
- Added Phalcon::setLogLevel to filter messages with greater or less priority
- Removed constructor from Phalcon
- Added Phalcon, 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 Phalconto cache data in the current request
- Added Phalcon, this component allows the validate a set of data based on pre-defined rules
- Added Phalcon, 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
- Phalconis now case-folding independent
- Phalconuses column names keeping the case-folding as they were defined
- Added Phalcon::notFound to define the paths the router must use if any route is matched
- Improved 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 Phalconto Phalcon. This allow set source/schema in the model initializer
- Added Phalcon::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
- 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

# 0.9.0b2

- 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 Phalconand Phalconto Phalcon
- Added Phalconto send logs to multiples adapters
- Added formatters abstraction to Phalcon, now including: Phalcon, Phalconand Phalcon
- Added Phalconto Phalcon, this adapter stores annotations in PHP files

# 0.9.0b1

- Added Phalcon, a general purpose component to read annotations from docblocks
- Phalconnow supports saving related records using magic methods with a unique call to ΓÇÿsaveΓÇÖ
- Adding autoescaping option to Phalcon
- Added andWhere/orWhere to Phalcon
- Added passing an HTTP body to the PhalconΓÇÖs constructor
- Phalconis 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
- Implemented queuing events with priorities in Phalcon
- Implemented collecting of returned responses in Phalcon
- Added toArray method to Phalconclasses
- Added hydration modes to Phalcon(HYDRATE_RECORDS, HYDRATE_ARRAYS, HYDRATE_OBJECTS)

# 0.8.0b1

- Improved Phalcon, this component provides contextual escaping of different kinds of texts (CSS, Javascript, URL, HTML Attributes etc)
- Added serialization of Mvcinstances
- Added Phalcon::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 Phalconadapters to set extra PDO options in the connection
- Removed filtering of keys from Phalcon
- Support for creating groups of routes using Phalcon
- Added Phalconmiddleware events
- Implemented virtual scopes in Phalcon

# 0.8.0a2

- Added support for behaviors in the ORM including: Phalconand Phalcon
- Improved serialization of Mvcinstances and complex resultsets
- Added an option to change the layouts directory and partials directory in Phalcon
- Added an option to disable an specific level of rendering in Phalcon
- Added Phalcon::setup to globally enable/disable specific features in the ORM
- Added Phalcon::setup to globally enable/disable specific features in the database component
- Added Phalcon::delete to delete every complete object returned in a resultset using a transaction
- Added Phalcon::update to update every complete object returned in a resultset using a transaction
- Added support for converters in Phalcon
- Added Phalcon::getRender to return contents of a template into a string
- Added methods to support HTTP method PATCH
- Now Phalconuses the last part of a namespaced class name as source name
- Phalconnow implements ArrayAccess to get/set services
- Phalconnow implements ArrayAccess to get services from the related services container
- Improved building of complex service definitions in the DI
- Added toArray method to Phalconinstances
- Added autoescape mode in Volt

# 0.8.0a1

- 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::increment, Phalcon::random, Phalcon::lower, Phalcon::upper, Phalcon::startsWith, Phalcon::endsWith
- Added Phalcon::merge to merge recursively a configuration with another one
- Added Phalcon::toArray method to recursively convert an object to an array
- Improved Volt runtime error/syntax error messages including always line and file
- Added Phalconproviding a set of functions to improve the security in Phalcon applications like bcrypt password hashing and CSRF protection
- Added Phalcon::addFunction to register user functions
- Added Phalcon::addFilter to register user filters
- Added Phalconas 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
- 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::getMessages() and Phalcon::appendMessage
- Added Phalcon::get method to obtain a value from the configuration object setting a default value
- Added an optional default value to Phalcon::get if this method returns a null value
- Added OO methods to Phalcon::get
- Added an optional default value to Phalcon::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
- Fixed use of muliples databases in the ORM
- Fixed use of a common events manager databases in the ORM
- Now Phalconcan be configured to remove extra slashes passed in the URI
- In Phalconthe default route is ΓÇÿ/ΓÇÖ when none is giving

# 0.7.0 (2012-12-04)

- 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 Phalconwith 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 Phalconadapters return false in the ΓÇ£existsΓÇ¥ method if the cache has expired
- Fixed bug in Phalcon::seek when using bind parameters

# 0.7.0b1

- Implemented a fast way to retrieve objectΓÇÖs members without adding a memory frame
- Now Phalconchecks 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::getDefaultNamespace
- Added a $merge parameter to every Phalconstrategy to merge current values with a new array
- Implemented registering services as ΓÇ£always sharedΓÇ¥
- Now Phalcon::save, Phalcon::create, Phalcon::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::fetchOne and Phalcon::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::registerModules to merge new modules with current ones
- Phalconnow allows registering a module using an anonymous function
- Added Phalconaiding 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
- Now Phalconuses mb_strlen when it is available
- Allowed pass a URI manually to Phalcon::handle()
- Fixed missing json_encode filter in Volt
- Moving cache implementation from Phalconto Phalcon, this allows caching both simple and complex resultsets
- Added Phalconto use a PHQL Query Builder as source of data
- Added adapter for Oracle databases in Phalcon

# 0.6.1 (2012-11-15)

- Fixed bug in PhalconΓÇÖs not-found handler
- Fixed bug reading named-parameters with quantifiers in Phalcon
- Now named-routes are processed without use regular expressions
- Now $this->view->disable() disables the auto-rendering mode completely
- Added Phalcon::enable that re-enables the auto-rendering mode
- Added Phalcon::stop() to stop the cache without store anything into the backend
- Fixed bug in Phalconthat saves an empty cached content when using a cache
- Implemented Phalcon::FETCH_OBJ to return objects instead of arrays

# 0.6.0

- Added functions version, version_id, date and time to Volt
- PHQL OFFSET complete implementation
- Fixed bug in Phalcon::find and Phalcon::findFirst

# 0.6.0b1

- 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
- Added ΓÇ£existsΓÇ¥ method to every backend in Phalcon
- Now is required pass true as parameter to Phalcon::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 Phalconbefore 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
- Added Phalcon::get and Phalcon::has to read/check values from $_REQUEST
- Added Phalconthat uses a MongoDB collection as backend
- Added options (compiled path, compiled separator, stat) for Volt

# 0.6.0a1

- 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::friendlyTitle to create friendly titles
- Added a new C-based template engine highly coupled with Phalcon called Volt
- Registered Phalconin Phalconas ΓÇÿtransactionManagerΓÇÖ
- Added Phalconto add contextual escaping of different kinds of texts
- Registered Phalconin Phalconas ΓÇÿescaperΓÇÖ
- Phalconnow caches resolved services such as ΓÇÿurlΓÇÖ and ΓÇÿdispatcherΓÇÖ making the view generation faster
- Added support to the OFFSET clause in PHQL
- Optimized Phalconto 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::skipAttributes allows setting a group of attributes that must be skipped from the INSERT/UPDATE SQL generation
- Added Phalconto manage non-structured data models, for example: MongoDB

# 0.5.2

- Fixed bug in Phalcon::_exists making PHQL inserts fail
- Fixed bug passing extra parameters to Phalconmagic methods

# 0.5.1

- Fixed bug in Phalconproducing that pathFound event wasnΓÇÖt triggered
- Added throwing exception in Phalconwhen trying to write in a read only file
- Now Phalconreplaces _ by DIRECTORY_SEPARATOR in most strategies
- Fixed bug in Phalcon::seek that doesnΓÇÖt allow to paginate results in Phalcon
- Fixed bug in Phalconthat doesnΓÇÖt throws an exception when an infinite forward is produced
- PDO error mode was changed to PDO::ERRMODE_EXCEPTION producing exceptions instead of silent error messages
- Fixed wrong precedence in PHQL operators
- Fixed bug that makes that the correct value for SERIAL columns wasnΓÇÖt filled for PostgreSQL
- Added an extra parameter ΓÇ£dataΓÇ¥ to an event triggering in Phalconallowing getting more information about certain event
- Added an extra parameter to Phalcon::query and Phalcon::execute to bind parameters by their data type
- Added recognition of the related sequence for PostgreSQL when inserting data into tables with SERIAL columns Phalcon
- Phalcon*::describeColumns try to find the best bind param type for every column
- Added bindType to Phalconto know what its best bind param to cast according to its data type
- Added getDefaultValue() to Phalcon* in order the best value to insert in an auto-increment or serial column
- Added bindTypes param to Phalcon::find and Phalcon::findFirst
- Due to the new agressive type-casting when binding parameters, PhalconisnΓÇÖt capable anymore of generate reliable automatic keys for the cache
- Fixed bug that makes actions and events implemented in a parent class innaccessibles for Phalcon
- Now Phalcon::camelize checks for underscores and dashes
- Added Phalcon::getRelated to return related relation models on namespaced models

# 0.5.0

- Added Phalconcomponents to create CLI applications
- Added SQLite support

# 0.5.0a4

- Removed support for Twig and Mustache
- Added PhalconQL (PHQL), a high level query language directly engaged with the Phalconcomponent
- Multiples refactorings removing unused code
- Added support to match routes on a determined individual or a set of HTTP methods
- Added support for named parameters without requiring a regular expression in Phalcon
- Added Phalconto encapsulate the information of a route
- Added Phalconto create applications in a micro-framework style
- Added Phalconthat has the Phalcon Components registered as Default

# 0.5.0a3

- Added Phalconas dependency injector container
- Added Phalconas events management component
- Removed Phalcon
- Phalconmoved to Phalcon
- Phalconmoved to Phalcon
- Phalcon::forward now only accepts an array parameter
- Dispatcher events has been removed (beforeDispatch and afterDispatch) in favor of the new EventsManager component
- Controller look up based on controllersDir has been removed in favor of autoloaders
- Phalconmoved to Phalcon
- Phalconmoved to Phalcon
- Phalconmoved to Phalcon
- Removed Phalcon
- ModelsManager look up based on modelsDir has been removed in favor of autoloaders
- Phalcon::describeColumns return an array of Phalcon
- Removed Phalcon
- Most ΓÇ£FactoriesΓÇ¥ and ΓÇ£SingletonsΓÇ¥ implementations were removed
- Phalconadapters must be instantiated directly

# 0.5.0a2

- Removed memory leaks when reading class constants
- Replaced the database native adapters by PDO

# 0.5.0a1

- Classes are now registered as PHP namespaces.
- Improved stability running Phalcon with PHP versions lower or equal than 5.3.3
- Thousand of unnecessary intermediate variables were removed improving stability
- Phalcon now performs a reduced number of copy-on-write checks
- Added class modifiers like Abstract or Final to Phalcon classes
- Fixed memory leaks generated when throwing internal exceptions
- Removed deprecated experimental function and method calls

# 0.4.4

- Fixed problem with Phalcon_Session functions not registered

# 0.4.3

- Fixed problem with partials, that removed any output previously generated
- Added Phalcon_Session::destroy
- Fixed memory leaks generated when throwing internal exceptions

# 0.4.2

- Added support for PostgreSQL database
- Phalcon_View is now fully integrated with Phalcon_Cache
- Dropped unnecessary registration of arguments for exception classes
- Dropped unnecessary zval copy-on-write checks
- Fixed double registration of Phalcon_Config in MODULE_MINIT
- Fixed method definition of __destruct adding ZEND_ACC_DTOR
- Fixed bug in Phalcon_Model_Query making that the component does not apply quoting properly
- Fixed segmentation fault in Phalcon_Loader
- Fixed memory leaks generated when retreiving some static properties
- Replaced PHPΓÇÖs str_replace for a slightly faster once
- Improved stability working with static properties in multi-threaded web servers
- Fixed bug in integration between Phalcon_Db and Phalcon_Logger

# 0.4.1

- Complex concatenations are now made without a lot of intermediate zvals improving the overall memory usage
- Improved throwing of simple exceptions with a unique string parameter
- Added Phalcon_Dispatcher::setParam to change a routing parameter
- Added Phalcon_Request::redirect to make HTTP redirections from controllers
- Phalcon_Model_* is now completely decoupled from Phalcon_Controller_Front
- Phalcon_Model_Base::_createSQLSelectMulti and Phalcon_Model_Base::_createSQLSelectOne has been joined into a single method
- Added Phalcon_Db::bindParams in order to avoid SQL injections
- Added ΓÇ£bindΓÇ¥ parameter to Phalcon_Model_Base::find, Phalcon_Model_Base::findFirst, Phalcon_Model_Base::count, Phalcon_Model_Base::sum, etc. to avoid SQL injections
- The database adapter Phalcon_Db_Adapter_Mysql was moved from mysql extension to mysqli
- Added Phalcon_Db_Result_Mysql to encapsulate the resultset functionality. Those methods were before in Phalcon_Db.
- Fixed bug rebuilding symbol table in Phalcon_View_Engine_Php::render
- Added Phalcon_View::pick to choose a view to show different than last-controller/last-action
- Now is possible to define routes with a shortened syntax in Regex
- Phalcon is now using Compare-and-Swap to reduce the number of writes to cache adapters like files or APC, also avoiding the unnecesary register of shutdown functions

# 0.4.0

- Fixed possible segmentation fault when releasing memory of zval strings that has constant values
- Fixed bug avoiding that auto-globals will jit-initialized inside Phalcon on some old versions of PHP
- Moved zval separation to phalcon_array_update_*
- Moved zval separation to phalcon_array_append_*
- Moved zval constructor to phalcon_array_update_*
- Implemented functions to avoid use arrays of zvals parameters for static and method calls
- Removed error reporting silence from the extension
- Removed thousands of unnecessary referencing/deferencing vars when calling functions/methods
- Moved multi-dimensional array updates to fewer complex functions
- Moved access to static properties to a function that controls possible invalid access to non existent properties
- Fixed memory leaks in Phalcon_Cache and Phalcon_Transaction_Manager
- Added virtual foreign keys to Phalcon_Model (ORM)
- Implemented the possibility to serialize Phalcon_Model_Resultset objects
- Implemented the possibility to access Phalcon_Model_Resultset as an array of objects
- Added Phalcon_Cache_Backend_Apc, Phalcon_Cache_Backend_Memcache, Phalcon_Cache_Frontend_None and Phalcon_Cache_Frontend_Data
- Added Phalcon_Request::hasPost and Phalcon_Request::hasQuery
- Added parameter ΓÇ£persistentΓÇ¥ to Phalcon_Db allowing creating persistent connections
- Added alphanum to Phalcon_Filter to filter strings allowing filtering only alpha-numeric characters
- Refactored Phalcon_Tag::select and Phalcon_Tag::selectStatic, now uses the same code in Phalcon_Tag_Select
- Added Phalcon_Tag::checkField helper to create input[type=ΓÇ£checkboxΓÇ¥] tags
- Added Phalcon_View::getParams to recover extra params sent to the request
- Sometimes when Phalcon throws an internal exception or E_ERROR the memory stack is not properly cleaned producing an unstable state, this situation was fixed
- Phalcon_View was refactored to allow other templating engines like Mustache or Twig
- Added Phalcon_Translate for multi-lingual translation messages based on adapters
- Added calculation functions to Phalcon_Model: count, sum, average, minimum and maximum
- Dispatcher exceptions now throws a HTTP 404 Not found status
- Added Phalcon_Router_Regex to define routes based on regular expressions
- Renamed Phalcon_Request::getBestQualityCharset() to Phalcon_Request::getBestCharset()
- Added Phalcon_Request::getBestLanguage()

# 0.3.5

- Most of throw exception process has been rewrriten to use fewer instructions
- Super global initialization is now slightly fast
- Fixed bug in Phalcon_Db::close
- Added logging capabilities to Phalcon_Db
- Added Phalcon_Model_Metadata::getIdentityField allowing to know the identity (auto_increment) field
- Added DDL and DML methods to Phalcon_Db
- Added Phalcon_Db_Column to describe table columns
- Added Phalcon_Db_Index to describe table indexes
- Added Phalcon_Db_Reference to describe table references (foreign keys)

# 0.3.4

- Fixed wrong implementation in Phalcon_Tag::javascriptInclude
- Added Phalcon_Cache_Frontend_Output
- Renamed Phalcon_Db_Mysql to Phalcon_Db_Adapter_Mysql
- Renamed Phalcon_Cache_Adapter_File to Phalcon_Cache_Frontend_File
- Added Phalcon_Request::setRawHeader
- Added Phalcon_Paginator_Adapter_Array
- Fixed bugs in model paginator
- Added Phalcon_Tag::hiddenField
- Added Phalcon_Tag::fileField
- Added Phalcon_Loader to autoload classes based on some conventions
- Added Phalcon_Db_Profiler to profile database operations and determine posible bottlenecks
- Added methods to query table metadata: Phalcon_Db::describeTable, Phalcon_Db::describeIndexes and Phalcon_Db::describeReferences
- Fixed segmentation fault in Phalcon_Db::tableExists
- Fixed memory leak in Phalcon_Paginator
- Adding Zend Thread Safety (ZTS) support to Phalcon Memory Manager

# 0.3.3

- Added Phalcon_Tag::setDefault as an alias for Phalcon_Tag::displayTo
- Added Phalcon_View::setVar as an alias for Phalcon_View::setParamToView
- Added ACL managment with in-memory lists
- Fixed segfaults on methods with array optional parameters
- Fixed segfaults on some isset
- Added built-in model attributes validators
- Added Phalcon_ACL to manage access lists
- Added missing Phalcon_Tag::passwordField

# 0.3.2

- Fixed separation of super globals by mistake causing segmentation faults
- Support for compilation on Visual C++ 6.0
- Fixed segmentation faults when required parameters are not given for most methods

# 0.3.1

- Phalcon garbage collector incrementally releases memory allocated after the end of a particular execution trace reducing memory fragmentation.

# 0.3.0

- Refactored many code patterns as C macros, the total base code was reduced by about 8000 lines of code less.
- Most function calls was rewriten to avoid any string length counting by avoiding potential use of strlen. Functions and methods names have fixed string lengths improving general performance. This improvement was also implemented for static string concatenation.
- We have implemented some kind of Register Allocation to take advantage of processor registers. However, compiler will choose best register allocations when it compiles the extension.
- Support for PHP 5.4. A number of issues when running Phalcon under PHP 5.4 were identified and corrected.
- In some cases memory was copied without need when updating internal arrays, them were fixed.
- A function cache was included to avoid potential function lookups on internal HashTables. This cache stores internal pointers to functions low level code improving performance.

# 0.2.6

- Fixed segfault when reading _SESSION superglobal when no session_start has been made
- Added Phalcon_Cache with adapter File
- Added method Phalcon_Model_Manager::getHasOneRecords