- you can now iterate
- support for Java 9 and Jigsaw modules,
- improved experimental support for type functions on the JVM,
- reduced run-time dependencies for your Ceylon program,
- better compatibility with previous and future Ceylon releases.
Note that for the JVM backend, this release is backwards-compatible with the previous major release (
1.2.0), which means you can use modules compiled with
1.2.0 on a
1.2.1 distribution out of the box. This is not as easy the other way around if you want to run modules compiled for
1.2.1 on a
1.2.0 distribution, which is why we recommend you upgrade to
1.2.0 are not compatible. We recommend you upgrade your distribution to
1.2.1 and recompile your modules.
Ceylon enables the development of cross-platform modules that execute portably in both virtual machine environments. Alternatively, a Ceylon module may target one or the other platform, in which case it may interoperate with native code written for that platform.
In the Box
This release includes:
- a complete language specification that defines the syntax and semantics of Ceylon in language accessible to the professional developer,
- a powerful module architecture for code organization, dependency management, and module isolation at runtime,
- the language module, our minimal, cross-platform foundation of the Ceylon SDK, and
- a full-featured Eclipse-based integrated development environment.
Ceylon is a highly understandable object-oriented language with static typing. The language features:
- an emphasis upon readability and a strong bias toward omission or elimination of potentially-harmful or potentially-ambiguous constructs and toward the highly-disciplined use of static types,
- an extremely powerful and uncommonly elegant type system combining subtype and parametric polymorphism with:
- first-class union and intersection types,
- both declaration-site and use-site variance, and
- the use of principal types for local type inference and flow-sensitive typing,
- a unique treatment of function and tuple types, enabling powerful abstractions, along with the most elegant approach to
nullof any modern language,
- first-class constructs for defining modules and dependencies between modules,
- a very flexible syntax including comprehensions and support for expressing tree-like structures,
Ceylon IDE now features the following improvements, along with many bugfixes and a number of performance enhancements:
- improved documentation hover,
- better UI responsiveness,
- support running on Java 9.
A number of important subsystems have been abstracted and rewritten in Ceylon, to support the ongoing development of the new IntelliJ-based IDE for Ceylon.
This release introduces several new platform modules:
ceylon.numericis a cross-platform module containing math operations for
Float. In time, it will replace parts of the JVM-only
ceylon.decimalis a JVM-only module (but soon to be cross-platform) containing arbitrary-length decimal support. In time, it will replace parts of the JVM-only
ceylon.wholeis a cross-platform module containing arbitrary length integer support. In time, it will replace parts of the JVM-only
ceylon.randomis a cross-platform module containing random number generators. In time, it will replace parts of the JVM-only
Along with several API enhancements and bugfixes, including:
- Many new features for
ceylon.test, the Ceylon Test Suite.
- Performance improvement of the
You can try Ceylon using the Web IDE, featuring syntax highlighting, interactive error reporting, autocompletion, online documentation, and persistence and code sharing via Gist.
The Web IDE serves a dual purpose as a standard example demonstrating the use of Ceylon for web application development and deployment to the [OpenShift] cloud platform.
The source code for Ceylon, its specification, and its website is freely available from GitHub.
Information about Ceylon's open source licenses is available here.
Bugs and suggestions may be reported in GitHub's issue tracker.
Migrating From Ceylon 1.2.0
Migration from Ceylon 1.2.0 is easy. To recompile a module for 1.2.1:
- First, ensure that its dependencies have also been recompiled.
- If it imports a Ceylon SDK platform module, upgrade the version number specified by the module
- If it was compiled against Ceylon
1.2.0you should still be able to use it in