- Fixed forward compatibility with PHP 7.1. It was really only unittests failing though; see https://bugs.php.net/bug.php?id=73217 (@thekid)
- Added version compatibility with XP 8 - @thekid
- Fixed
module.xpbeing treated as class with XP language - @thekid
- Added version compatibility with XP 7 - @thekid
- Adjusted test code after xp-framework/rfc#297 was implemented (@thekid)
- Adopted semantic versioning. See xp-framework/rfc#300 - @thekid
- Implemented "compile" subcommand for new xp-framework/rfc#303 runners (@thekid)
- Heads up: Removed support for extension methods at runtime. They no longer exist in XP7 as per xp-framework/rfc#298 (@thekid)
- Fix code to use
nameof()instead of the deprecatedgetClassName()method from lang.Generic. See xp-framework/core#120 (@thekid)
- Replaced deprecated ensure() with a finally statement, creating forward compatibility with XP 6.9.0. See xp-framework/core#111 (@thekid)
- Heads up: Changed minimum XP version to run the XP compiler to XP 6.5.0, and with it the minimum PHP version to PHP 5.5 (@thekid)
- Normalized types when checking for extension methods so all variants
of api doc
@paramtags, parameter type syntax and dotted as well as PHP fully qualified and unqualified parameter names work. (@thekid)
- Rewrote code to use
literal()instead ofxp::reflect(). See xp-framework/rfc#298 (@thekid)
- Implemented power operator
**in PHP syntax - @thekid
- Merged PR #43: Add support for
::classresolution - @thekid - Allowed dereferencing of constant arrays and strings - @thekid
- Changed ARM blocks to use try / finally in PHP 5.5+ - @thekid
- Changed code to emit native
finallystatement in PHP 5.5+ - @thekid - Merged PR #40: support for generators / yield - @thekid
- Changed default emitter to "php5.5" - @thekid
- Merged PR #46: Add function type syntax - @thekid
- Merged PR #45: Make lambda capturing explicit when using PHP - @thekid
- Merged PR #44: Implement short array and map syntax in PHP - @thekid
- Merged PR #41: Fix capturing of local variables in lambdas - @thekid
- Fixed forward compatibility with XP 6.6.0 - @thekid
- Replaced String classes used in test suite as "string" is reserved as type name in PHP7. (@thekid)
- Rewrote tests verifying exceptions are raised for argument type mismatches to work in both PHP 5.x and PHP 7.X. (@thekid)
- Fixed sscanf() incompatibilities - HHVM doesn't support
%*for not assigning variables. Worked around by supplying dummy variables. (@thekid) - Added a native importer which doesn't verify extensions. HHVM does not group functions into extensions like PHP does. (@thekid)
- Added new PHP 5.4 the default emitter, which emits
new T().method()as(new T())->method()instead of wrapping it in the deprecatedcreatecore functionality. (@thekid) - Removed PHP 5.2 and 5.3 emitters, using
-E php5.2or-E php5.3on the command line will produce an error! (@thekid)
- Improved performance when loading supported syntaxes by deferring parser and lexer instantiation until when first needed. (@thekid)
- Adopted to newer XP versions by no longer using deprecated functionality:
. Replaced
uses()call with class loader API call . Replacedraise()with reflection-based creation statement . Changeddelete()call to useunsetlanguage construct. (@thekid)
- Made available via Composer (@thekid)
- Heads up: Changed minimum XP version to run the XP compiler to XP 6.0.0. It can still generated code to run on XP 5.X-SERIES, but will require 6.X-SERIES to run itself (@thekid)
- Added possibility to add default values to lambda parameters. See #38 - (@thekid)
- Fixed compiler choking on methods with generic return types (@thekid)
- Allowed omitting the parameter type inside method declarations. The type
will then be set to
varand will be unchecked at runtime (@thekid) - Changed syntax for lambdas from
#{ $a -> $a + 1 };to$a -> $a + 1;, after resolving the grammar conflicts the former was avoiding. The old form is still supported but will raise compile-time warnings. It will be removed in the next major release. (@thekid) - Changed PHP 5.3 emitter to emit PHP 5.3 anonymous functions for lambdas (@thekid)
- Merged pull request #37 to solve issue #36: Support "new T()", "T::const" and "T::$static" inside annotations - (@thekid)
- Added backwards compatible emitter (-E php5.2) to create non-namespaced code for use with XP 5.8 and PHP 5.2 - (@thekid)
- Changed default behaviour to creating namespaced code (compatible with XP 5.9 and PHP 5.3+) - (@thekid) http://news.planet-xp.net/article/551/2013/10/10/
- Changed "-E" command line argument to support versions:
-E namewill load xp.compiler.emit.name.Emitter,-E name60will load the class xp.compiler.emit.name.V60Emitter - (@thekid) - Changed all emit*() methods in xp.compiler.emit.Emitter to protected (@thekid)
- Changed runner to create unique class names in
xcc [-e|-w]for testing reasons - (@thekid) - Fixed anonymous instance creation to create unique class names, thus preventing "Fatal error: Cannot redeclare class ..." errors. (@thekid)
- Heads up: Changed xp.compiler.types.Types implementations to return an array of Parameter objects holding name, type and optional default value instead of just the parameters' types - (@thekid)
- Made error message more verbose when syntax cannot be determined from file referenced by command line argument - (@thekid)
- Fixed Fatal error: Class 'xp\compiler\ClassLoader' not found when using
command line argument
-cp- (@thekid)
- Fixed properties inconsistency - see pull request #35 (@thekid)
- Implemented RFC 250: Static member import syntax change (@thekid)
- Implemented RFC 274: XP Language Repository reorganization (@thekid)
- Implemented RFC 273: ChangeLog formatting - (@thekid)
- Fixed issue #32 - Fatal error during compilation (@thekid)
- Changed emitter command line argument from "-e" to "-E"! See pull request #30 - "-e" is now for command line code evaluation. - (@thekid)
- Implemented RFC 0249: Exponentiation operator - (@thekid)
- Implemented RFC 0238: xcc -e and xcc -w (command line code evaluation) - (@thekid)
- Fixed
this()core functionality not being correctly resolved - (@thekid) - Fixed fatal error in toString() of xp.compiler.types.* member classes - (@thekid)
- Fixed bug in PHP syntax with concatenation operator precedence - (@thekid)
- Fixed issue #31: Backslash in XP Language not considered a syntax error - (@thekid)
- Added command line option "-q" which will show only compilation errors - (@thekid)
- Changed tests using
foreachto use @values annotation. Requires parameterized unittest feature (RFC 0267) and thus XP 5.9.1 - (@thekid) - Converted the code base to namespaces - (@thekid)
- Implemented RFC 0252: Fluent interface compact syntax - (@thekid)
- Implemented RFC 0241: Compact method syntax - (@thekid)
- Implemented RFC 0240: Compact assignment syntax - (@thekid)
- Fixed issue #25: Resolving abstract enum members fails - (@thekid)
- Fixed various errors resulting from the conversion of the code base to namespaces. Most typical: catch (Throwable $e) not catching any- thing, because the name "Throwable" is not present in this namespace. - (@thekid)
- Fixed issue #24: Fatal error with PHP 5.3.0 - (@thekid)
- Fixed PHP 5.3 namespaces fully qualified class names - (@thekid)
- Changed TypeReflection to determine enum member type correctly See pull request #23 - (@thekid)
- Implemented the navigation operator
?.- see pull request #13 - (@thekid)
- Gave the GitHub repository's homepage a makeover, adding installation, usage and contribution overviews and a small sourcecode example. See https://github.com/xp-framework/xp-language - (@thekid)
- Changed code no longer to use xp::$registry but instead the flattened version. This bumps the minimum XP Framework version to XP 5.9.0. See also xp-framework/xp-framework#270 - (@thekid)
- Version now detached from framework - XP compiler v1.9.0 will be the correct version for XP Framework v5.9.0 - (@thekid)
- Implemented RFC 0260: XP 5.9 as default branch - (@thekid)
- Work around uniqid() no longer generating unique ids. See xp-framework/xp-framework#260 - (@thekid)
- Added Travis-CI configuration and setup commit hook accordingly http://news.planet-xp.net/article/520/2013/05/05/ - (@thekid)
- Added support for "self" keyword in parameters and return types - (@thekid)
- Implemented RFC 0218: Parameter annotations http://news.planet-xp.net/article/480/2012/09/30/ - (@thekid)
- Refrain from resolving constants. Fixes issue #20 "the hard way" - the optimization is removed all the way - (@thekid)
- Splitted compiler.ini and reorganize into src/test/resources
See xp-framework/xp-framework#160 - (@thekid)
- Fixed indexers and operators inheritance - (@thekid)
- Added Maven pom - (@mrosoiu)
- Added tests for hex addition oddities http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/#numbers See also PHP Bug #61095 and PHP Bug #61095 - (@thekid)
- Added support for hexadecimal escape sequences
\x hex-digit hex-digitopt hex-digitopt hex-digitopt- (@thekid) - Added support for exponent and octal number notation - (@thekid)
- RFC 0218: Added syntactical support for annotations with target - (@thekid)
- Fixed interface methods check. The following was disallowed but shouldn't public interface Test { void testIt(); } - (@thekid)
- Fixed extension methods - (@thekid)
- Refactored so that uses() will be emitted once at the top of the file and include all dependencies merged together. - (@thekid)
- Added logic to exclude bootstrap classes from being listed in uses(), they are globally available. Increases generated code's loading performance. - (@thekid)
- Fixed arrays of array, map and generic types not being supported - (@thekid)
- Added field annotations - (@mrosoiu)
- Fixed weird bug with compiled types being overwritten - (@thekid)
- Migrated repository to github.com (for the records) - (@thekid, @iigorr, @kiesel, @invadersmustdie)
- Changed XP language to depend on 5.8.0 - (@thekid)
- Implemented RFC 0052 - Make XP its own (compiled) language - (@thekid)
- Fixed chaining after function calls - (@thekid)
- Fix assignments to assignments ($i= $j= 0; e.g.) being parsed in incorrect order - (@thekid)
- Changed map syntax to also support keys without quotes - (@thekid)
- Improved performance in self / parent lookup - (@thekid)
- Implemented auto-properties: public int id { get; set; } Equivalent of declaring a member variable and using an assignment inside set { } to $value and and a return statement with the member inside get { } - (@thekid)
- Implemented dynamic instance creation - (@thekid)
- Implemented dynamic member access - (@thekid)
- Added "-v" command line option for verbose output - (@thekid)
- Implemented ARM blocks in XP language, supported by lang.Closeable interface in framework. http://news.planet-xp.net/article/397/2010/12/31/ - (@thekid)
- Implemented operator overloading - Works only inside XP language! - (@thekid)
- Added |, &, ^, << and >> operators as well as their assignments - (@thekid)
- Implemented class constants Class constants are limited to numbers, booleans and strings but provide a cheap way of extracting magic constants from business logic. If you require more flexibility, use static fields - (@thekid)
- Enabled creation of package classes (see RFC 0037) via "package class" - (@thekid)
- Implemented unchecked casts (EXPR as TYPE?) Good for: return $a instanceof self && ($a as self?).compareTo(...). Now it wouldn`t make sense to cast-check $a at runtime because it can NEVER be anything else than of type "self" after the && (we checked it right before) - but the compiler cannot know that:) - (@thekid)
- Removed last OEL leftovers - emitter and tests - (@thekid)
- Fixed type calculation in chains like $class.getMethods()[0].getName(); - (@thekid)
- Implemented with statement - e.g. with ($child= $n.addChild(new Node()) { ... } - (@thekid)
- Changed runner to ext with non-zero exitcode if any of the compilation tasks fail (e.g. xcc src/A.xp src/B.xp - if A.xp fails, the entire run is marked as failed). Can be used for chaining xcc [files] && echo "OK", also useful in makefiles which will stop after failure - (@thekid)
- Implement lambdas - (@thekid)
- Defaulted emitter to "source" To compile w/ oel, use `xcc -e oel [target [target [...]]] - (@thekid)
- Implemented or-equal (|=), and-equal(&=), xor-equal (^=) and div-equal (/=) - (@thekid)
- Created own nodes for true, false and null, refactored numbers into: . NumberNode |- NaturalNode | - IntegerNode | - HexNode |- DecimalNode - (@thekid)
- Implemented try ... finally (without catch) - (@thekid)
- First shot: Added PHP grammar for XP classes - 5.3+ w/o alternative syntax - (@thekid)
- Changed syntax for maps from "{ key => value }" to "[ key : value ]" Inspired by http://groovy.codehaus.org/Collections#Collections-Maps - (@thekid)
- Used "." as object operator instead of "->" - (@thekid)
- Changed foreach syntax from foreach ([expression] as [assignment]) to foreach ([assignment] in [expression]) - (@thekid)
- Implemented varargs, annotations, anonymous instance creaton, properties, indexers, properties (via __get and __set), ?: shorthand - (@thekid)
- Implemented class literal - (@thekid)
- Implemented "import native" and "import static" - (@thekid)
- Made it possible to pass either: . XP source file (.xp) . PHP source file with XP class (.class.php) . Fully qualified class name - (@thekid)
- Added optimizations for: . Concatenating two constant values . Adding two constant values . Subtracting two constant values . Multiplying two constant values . Dividing two constant values - (@thekid)
- Implemented $array->length - (@thekid)
- Added support for generic syntax - (@thekid)
- Added support for finally - (@thekid)
- Added initial implementation of map literals (require a prefix "map") - (@thekid)
- Initial release: Prototype and proof of concept - (@thekid)