2016-11-22



Ceylon 1.3.1 is a significant minor release of
the Ceylon language, with over 140 issues closed. This
is the first release of Ceylon which supports interoperation
with Java 8 lambdas and streams, with RxJava, and
with Spring Boot. This release also introduces support
for static members.

This release of Ceylon has been tested with a wide variety
of Java libraries and frameworks, including:

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,

RxJava

JOGL (OpenGL), and

Android.

Example code demonstrating the use of these frameworks is
available.

Compared to previous releases of Ceylon, the use of Java
frameworks based on reflection is now much more transparent,
and integration with multi-module Maven-based platforms and
frameworks is now much easier to configure.

The Ceylon tour has been extensively updated, especially
the sections addressing interoperation with native
Java and JavaScript,
and with the module system.

Changes

Enhancements to the language and command-line distribution
include:

static members in Ceylon classes

interoperation with Java 8 lambdas—ability to pass
Ceylon functions to Java SAM types

local import statements

support for spread operators * and *. with
java.lang.Iterable and Java arrays

literal tuples in cases of a switch

small Characters

new Maven interop mode --fully-export-maven-dependencies
for projects depending on multi-module platforms like
Spring Boot

support for POM-only Maven artifacts

new Java EE-friendly compiler mode, making it
easy to use Java frameworks that depend on reflective
direct access to fields

ability to pass Ceylon metamodel to Java methods accepting
java.lang.Class

ability to pass Ceylon strings to Java methods accepting
java.lang.CharSequence

improved treatment of null values
originating in calls to native Java

several bugfixes to relating to interop with overloaded
Java methods

new command line options: --java, --incremental, and
--include-dependencies

Naturally, the release incorporates many more bugfixes and
minor enhancements.

IDE Changes

Ceylon IDE 1.3.1 for IntelliJ and
Eclipse resolves more than
110 issues, and adds support for running and debugging
Ceylon programs on WildFly Swarm.



SDK Changes

Exactly 15 issues affecting the Ceylon SDK have been
fixed, and the new platform modules ceylon.interop.spring
and ceylon.interop.persistence were introduced. New 1.3.1
releases of the platform modules are available in Herd.

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 the previous two releases (1.2.2 and 1.3.0).

Ceylon 1.3.1 is backward-compatible with Ceylon 1.3.0, and
so it's not necessary to recompile or change dependencies.
However, upgrading to version 1.3.1 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é.

Show more