Ceylon roadmap
Ceylon code is released and available on GitHub.
Milestone 5 of Ceylon has been released and we are working on milestone 6 at the moment. Because quality is important to us, we won't release work until we think it's usable. Therefore, we can't give you dates on each milestone.
However, our roadmap is quite well-defined:
- Ceylon 1.0
- Milestone 1
- Milestone 2
- Milestone 3
- Milestone 4
- Milestone 5 (latest release)
- Milestone 6
Current progress for M6
Detail
Milestone 1 DONE
Milestone 1 has been released.
Expressions, basic procedural code, basic object orientation, basic generics including variance, validation of definite assignment/initialization and definite return, exceptions, modularity.
Declarations:
- toplevel classes
- toplevel interfaces (except concrete members)
- toplevel methods (no higher-order or first-class functions)
- toplevel simple attributes
- toplevel attribute getters
- toplevel anonymous classes (
objectdeclaration) - member methods with blocks (no higher-order methods)
- member simple attributes
- member attribute getters/setters
- member anonymous classes (
objectdeclaration) - locals
- nested methods (closures)
- nested getters/setters
- nested anonymous classes
- nested classes
- type inference with
valueandfunction - inheritance (
satisfiesandextends) -
abstractclasses -
formalmembers - method / attribute refinement (
default,actual)
Statements:
- expression statements
- specification statements
- control structures excluding
switch/case1 if (exists ... )if (nonempty ... )if (is ...)
Generics:
- generic types
- generic methods
- covariance / contravariance (
in/out) [TODO: extra tests] - upper bounds
- type argument inference [TODO: compiler ignores inferred type arguments]
Expressions:
- literals (except single-quoted literals)
- string templates (interpolation)
- self references (
this,super) - attribute evaluation/assignment
- operators 2
- parenthesized expressions
- positional method invocation3
- named-argument method invocation (no object/method/getter args)3
- instantiation3
- sequence instantiation
{ x, z, y} - invocations with type arguments
- assignment
Misc:
- union types
A|B - intersection types
A&B - type name abbreviations
T[]andT? - imports
- initialization/declaration section rules [TODO: check this against latest spec]
- definite assignment/initialization rules
- definite return rules
- methods/attributes with named arguments
-
sharedmembers + visibility rules - local capture [TODO: test and bugfix capture of forward declared locals]
- erasure of
Anything/Object/Nothing/Equality/IdentifiableObject - optimization of locals in class initializer
- sequenced (varargs) parameters
- optimization of primitives with auto(un)boxing
- defaulted parameters [TODO: bugfixes]
Types:
Boolean-
CharacterandString - numeric types
- sequences
ComparisonEntryRangeprocess
Modularity:
- module and package descriptors
-
cararchives - local repositories
- module versioning
- module runtime
Notes:
- Without support for
try (x)orif (satisfies U V). - Excluding set operators, and operators that depend
on
Gettable/Callable. Furthermore, numeric widening with arithmetic operators and user-defined numeric types is not supported. - Excluding defaulted arguments and
Callable.
Milestone 2 DONE
Milestone 2 has been released.
Numeric type optimization, Java interop, switch/case,
higher-order methods, types with enumerated cases,
remote repositories.
Declarations:
- cases (
ofclause) - higher-order methods
- methods with specifiers
- defaulted parameters
Generics:
- enumerated bounds
Statements:
switch/case
Expressions:
- method references
Misc:
- optimization of primitive operators
- Java interoperability
- exhaustive case lists
Types:
-
Collection,List,Map,Set - Remove
Equality,Slots,Natural
Modularity:
- remote repositores
modules.ceylon-lang.org
Milestone 3 DONE
Milestone 3 has been released.
Mixin inheritance, anonymous functions, comprehensions, file IO.
Integration of JavaScript compiler:
- compilation to JavaScript is a compiler switch
Declarations:
- concrete interface members
- new syntax for attribute initialization parameters
- multiple parameter lists
- nested interfaces
- self types
- shortcut syntax for formal member refinement
Expressions:
- object/method/getter args in named argument lists
- anonymous functions (
(Type x) result(x)) - comprehensions (
for (x in xs) if (select(x)) collect(x)) - indirect invocations of
Callableinstances - outer instance references (
outer) - set operators (
|,&,^,~)
Misc:
- "lazy" semantics for sequenced parameters
Modules:
-
ceylon.mathplatform module (arbitary precsision decimals/integers and common floating point functions) -
ceylon.fileplatform module (access to hierarchical filesystems) -
ceylon.processplatform module (operating system processes)
Milestone 4 DONE
Milestone 4 has been released.
Member classes and type families, type aliases.
Declarations:
- member class refinement / type families
- class and interface aliases
- union and intersection aliases (
alias) - new syntax for package and module descriptors
- fix "object builder" syntax
Statements:
assert
Expressions:
- Condition lists in
if,while,assertandifcomprehensions
Modularity:
- Maven and aether
Modules:
-
ceylon.netplatform module -
ceylon.jsonplatform module (JSON parser) -
ceylon.collectionplatform module (collection implementations organized into mutable array-based collections, mutable hashtable-based collections and immutable linked-list based collections)
Tools:
- Pluggable tools,
git-style (ceylonc->ceylon compile)
Interoperability
- Better support for optional types in Java
- Map the JDK into Jigsaw-compatible module lists
Milestone 5 DONE
Tuples, reified generics, dynamic blocks, various syntax changes, HTTP server, dates and times.
Declarations:
- the
lateannotation - fat arrow notation
=>for single-expression functions and getters
Generics:
- reified generics
- defaulted type parameters
Expressions:
- Tuples
- lengthwise range operator (
start:lengthandranged[start:length]) - Binary and hexadecimal integer literals
- verbatim strings
-
{Element*}abbreviation forIterable<Element>
Misc:
-
dynamicblocks for interop with native JavaScript
Modules:
-
compose()andcurry()functions in language module -
ceylon.timeplatform module (date/time types) -
ceylon.net.httpdpackage (HTTP server)
Milestone 6 (Ceylon 1.0)
Annotations, metamodel, and serialization.
Declarations:
- annotations
Statements:
-
trywith resources
Expressions:
- metamodel references
Misc:
- annotation constraints
- serialization
Modularity
- repository replicator
Modules:
-
ceylon.language.modellanguage metamodel -
ceylon.localplatform module (basic support for localization) -
ceylon.formatplatform module (text formatting for numbers and dates/times) -
ceylon.transactionplatform module (support for distributed transaction processing)