Ceylon 1.3.3 is now available
Ceylon 1.3.3 is a significant minor release of
the Ceylon language, with over 200 issues closed. This
release introduces the restricted
annotation, allowing more
sophisticated access control, and else case
in switch
statements, features full support for npm scopes and
Maven classifiers, allows static
members of interfaces,
and freely allows constructor and method overloading in
Ceylon code marked native("jvm")
.
A major goal of this release was to enable improvements to Vert.x's Ceylon language APIs.
This is the last release of Ceylon 1.3. The next release of Ceylon will be 1.4.0, after migration of the project to the Eclipse Foundation.
IDE Changes
Ceylon IDE 1.3.3 for IntelliJ and Eclipse support the most recent releases of the Eclipse and IntelliJ platforms, and Ceylon IDE for Eclipse now features an upgraded icon set optimized for high-density displays.
Ceylon IDE for Eclipse now requires Eclipse Oxygen.
SDK Changes
The Ceylon SDK features the new module ceylon.toml, along with a number of bugfixes and improvements.
Compatibility
This release of Ceylon has been tested with a wide variety of Java libraries and frameworks, including:
- Vert.x,
- Spring Boot,
- WildFly and WildFly Swarm,
- Hibernate (JPA),
- RESTEasy (JAXB and JAX-RS),
- Weld (CDI) and Guice,
- Eclipse Equinox, Apache Karaf, and Apache Felix (OSGi),
- Spark,
- JavaFX,
- RxJava
- Vaadin
- LWJGL
- JOGL (OpenGL), and
- Android.
Example code demonstrating the use of these frameworks is available.
Migration
For the JVM, this release is backwards-compatible with all previous releases of Ceylon since 1.2.0.
For JavaScript, this release is backwards-compatible only with releases since 1.2.2.
Ceylon 1.3.3 is backward-compatible with Ceylon 1.3.2, and so it's not necessary to recompile or change dependencies. However, upgrading to version 1.3.3 of any Ceylon platform module is recommended.
About Ceylon
Ceylon is a modern, modular, statically typed programming language for the Java and JavaScript virtual machines. The language features a flexible and very readable syntax, a unique and uncommonly elegant static type system, a powerful module architecture, and excellent tooling, including an awesome IDE supporting both IntelliJ IDEA and the Eclipse platform.
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 command line toolset including compilers for Java and JavaScript, a documentation compiler, a test runner, a WAR archive packager, a "fat" JAR packager, and support for executing modular programs on the JVM and Node.js,
- a powerful module architecture for code organization, dependency management, and module isolation at runtime, which also supports interoperation with OSGi, Jigsaw, Maven, and npm, and
- the language module, our minimal, cross-platform, foundation-level API.
Available separately:
- updated versions of the platform modules that comprise the Ceylon SDK,
- a plugin for the
ceylon
command that supports compilation and execution for the Dart VM, - a plugin packager for WildFly Swarm,
- a plugin code formatter,
- two full-featured integrated development environments: for Eclipse and IntelliJ IDEA, and
- a plugin for Visual Studio Code.
Language
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 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
null
of 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,
- fully-reified generic types, on both the JVM and JavaScript virtual machines, and a unique typesafe metamodel.
More information about these language features may be found in the feature list and quick introduction.
Community
The Ceylon community site, https://ceylon-lang.org, includes documentation, and information about getting involved.
You can follow @ceylonlang on Twitter.
Source code
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.
Issues
Bugs and suggestions may be reported in GitHub's issue tracker.
Acknowledgement
As always, we're deeply grateful to the community volunteers who contributed a substantial part of the current Ceylon codebase, working in their own spare time. The following people have contributed to Ceylon:
Gavin King, Stéphane Épardaud, Tako Schotanus, Tom Bentley, David Festal, Enrique Zamudio, Bastien Jansen, Emmanuel Bernard, Aleš Justin, Tomáš Hradec, James Cobb, Ross Tate, Max Rydahl Andersen, Mladen Turk, Lucas Werkmeister, Roland Tepp, Diego Coronel, Matej Lazar, John Vasileff, Toby Crawley, Julien Viet, Loic Rouchon, Stephane Gallès, Ivo Kasiuk, Corbin Uselton, Paco Soberón, Michael Musgrove, Daniel Rochetti, Henning Burdack, Luke deGruchy, Rohit Mohan, Griffin DeJohn, Casey Dahlin, Gilles Duboscq, Tomasz Krakowiak, Alexander Altman, Alexander Zolotko, Alex Szczuczko, Andrés G. Aragoneses, Anh Nhan Nguyen, Brice Dutheil, Carlos Augusto Mar, Charles Gould, Chris Gregory, klinger, Martin Voelkle, Mr. Arkansas, Paŭlo Ebermann, Vorlent, Akber Choudhry, Renato Athaydes, Flavio Oliveri, Michael Brackx, Brent Douglas, Lukas Eder, Markus Rydh, Julien Ponge, Pete Muir, Nicolas Leroux, Brett Cannon, Geoffrey De Smet, Guillaume Lours, Gunnar Morling, Jeff Parsons, Jesse Sightler, Oleg Kulikov, Raimund Klein, Sergej Koščejev, Chris Marshall, Simon Thum, Maia Kozheva, Shelby, Aslak Knutsen, Fabien Meurisse, Sjur Bakka, Xavier Coulon, Ari Kast, Dan Allen, Deniz Türkoglu, F. Meurisse, Jean-Charles Roger, Johannes Lehmann, allentc, Nikolay Tsankov, Chris Horne, Gabriel Mirea, Georg Ragaller, Harald Wellmann, Oliver Gondža, Stephen Crawley, Byron Clark, Francisco Reverbel, Jonas Berlin, Luke Hutchison, Nikita Ostroumov, Santiago Rodriguez, Sean Flanigan, Schalk W. Cronjé, Colin Bartolome, Arsenii A., Jordi Sola.