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:

Current progress for M6

Loading…

Detail

Loading…
Loading…
Loading…
Loading…

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 (object declaration)
  • member methods with blocks (no higher-order methods)
  • member simple attributes
  • member attribute getters/setters
  • member anonymous classes (object declaration)
  • locals
  • nested methods (closures)
  • nested getters/setters
  • nested anonymous classes
  • nested classes
  • type inference with value and function
  • inheritance (satisfies and extends)
  • abstract classes
  • formal members
  • 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[] and T?
  • imports
  • initialization/declaration section rules [TODO: check this against latest spec]
  • definite assignment/initialization rules
  • definite return rules
  • methods/attributes with named arguments
  • shared members + 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
  • Character and String
  • numeric types
  • sequences
  • Comparison
  • Entry
  • Range
  • process

Modularity:

  • module and package descriptors
  • car archives
  • local repositories
  • module versioning
  • module runtime

Notes:

  1. Without support for try (x) or if (satisfies U V).
  2. Excluding set operators, and operators that depend on Gettable/Callable. Furthermore, numeric widening with arithmetic operators and user-defined numeric types is not supported.
  3. 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 (of clause)
  • 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 Callable instances
  • outer instance references (outer)
  • set operators (|, &, ^, ~)

Misc:

  • "lazy" semantics for sequenced parameters

Modules:

  • ceylon.math platform module (arbitary precsision decimals/integers and common floating point functions)
  • ceylon.file platform module (access to hierarchical filesystems)
  • ceylon.process platform 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, assert and if comprehensions

Modularity:

  • Maven and aether

Modules:

  • ceylon.net platform module
  • ceylon.json platform module (JSON parser)
  • ceylon.collection platform 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 late annotation
  • fat arrow notation => for single-expression functions and getters

Generics:

  • reified generics
  • defaulted type parameters

Expressions:

  • Tuples
  • lengthwise range operator (start:length and ranged[start:length])
  • Binary and hexadecimal integer literals
  • verbatim strings
  • {Element*} abbreviation for Iterable<Element>

Misc:

  • dynamic blocks for interop with native JavaScript

Modules:

  • compose() and curry() functions in language module
  • ceylon.time platform module (date/time types)
  • ceylon.net.httpd package (HTTP server)

Milestone 6 (Ceylon 1.0)

Annotations, metamodel, and serialization.

Declarations:

  • annotations

Statements:

  • try with resources

Expressions:

  • metamodel references

Misc:

  • annotation constraints
  • serialization

Modularity

  • repository replicator

Modules:

  • ceylon.language.model language metamodel
  • ceylon.local platform module (basic support for localization)
  • ceylon.format platform module (text formatting for numbers and dates/times)
  • ceylon.transaction platform module (support for distributed transaction processing)