Skip to content

Releases: ballerina-platform/ballerina-lang

Ballerina 0.89 Released!

30 Jun 14:55
Compare
Choose a tag to compare
Pre-release

What’s new in Ballerina 0.89

Ballerina Runtime improvements

  • Introduction of ‘var’ keyword for declaration of assignment statements
  • Add support for 'continue' statement within ‘while’ loop
  • Redesign of ‘service’ declaration with protocol binding
  • New log API for logging messages within ballerina programs
  • New Date time API for manipulating date/time within ballerina programs
  • Add support for service interceptors
  • Improve HTTP transport performance and connection handling

Ballerina Composer improvements.

  • Language Server implementation. - With this you would get context aware suggestions in source view.
  • New service configuration UI.
  • Diagram export ( Currently support svg export. )
  • Transform Statement
    • Custom tool palette for transform which filters functions that can be used for mapping.
    • Support drawing nested function invocations for mappings.
    • UX improvements in the transform view.
    • Listing inscope variables and arguments to be used in the mappings.
  • Docerina Integration. - Will allow you to view API docs of packages from the composer.
  • New Undo/Redo Implementation - With this implementation undo/redo will work across design and source view.

Getting started
You can download the Ballerina distributions, try samples, and read the documentation at http://ballerinalang.org.

Ballerina 0.88 Released!

12 Jun 08:21
Compare
Choose a tag to compare
Pre-release

What’s new in Ballerina 0.88

Ballerina Language improvements

  • Blob type, a new value type, has been introduced in this release. Blob represents a sequence of bytes. It is similar to the string type which represents a sequence of characters.

  • Type cast and conversion expressions. Ballerina now clearly separates the type conversions from casts. Type casting allows you to look at a value as being of a different type than it’s original type. Type conversion transforms the value so that it can be interpreted as belonging to another type. There are safe and unsafe casts and conversions. For unsafe casts and conversions, Ballerina compiler will enforce you to use multi-return cast and conversion expression.

  • Improved XML type, now having the capability of representing a sequence of zero or more XML items where a single XML item can be an element, a text item, a comment or a processing instruction.

  • Transaction improvements - Support for the committed block is added, which get executed if the transaction is successfully committed. Both the aborted and committed blocks are optional with this release.

  • Ballerina function and action overloading has been removed from this release.

  • Fork-Join improvements. Now join and timeout blocks receives a map of any type array from the workers within fork-join block. Workers can send multiple values to the join/timeout block and within those blocks, user can identify which return values are received from which workers by using the returned map.

Built-in APIs

  • Datatable API redesign - The new API provides the ability to access the data in the result datatable in a more convenient way using the struct and type conversion support in Ballerina. Each data row of the datatable can be represented by a struct where the struct fields are matched with the column names/types in the datatable.This will eliminate the use of functions in the datatables package.

  • File API - Introduced built-in functions to perform basic file operations. They are available in the ballerina.lang.files package.

  • XML API - A new set of built-in functions have been introduced to the existing ballerina.lang.xmls package to support the improved XML type.

Ballerina Runtime improvements

  • Compiler and bytecode interpreter - with this release, Ballerina source files get compiled into platform-neutral Ballerina bytecodes and the new bytecode interpreter executes them. This is an internal change and it does not affect how you run and build services and main programs.

  • HTTP resource dispatching logic - with this release, HTTP resource dispatching searches for the most specific match when there is more than one candidate for a given request URI. Plus, query-parameters are not used to uniquely identify resources. These changes are done according to JAX-RS specification. In addition to that, service dispatching now supports default values for service, resource, path-param and query-param. Lastly, improved error messages related to dispatching to be concise and precise.

Ballerina Composer improvements.

  • Preserving existing formatting while editing a bal file. When editing a source file, white-spaces are preserved with the content and will not be altered during modifications in design view and when switching between source and design view.

  • Fork/Join support - From this release onwards, Ballerina Composer will provide users, the capability to add fork/ join statement.

  • Transaction support - With this release we introduce users, the capability of designing the transactions via the ballerina composer

  • Else If blocks - Now you can dynamically add else if blocks from design view. Else block is also made optional and can be added if needed.

  • Now you can search in the tool palette for constructs, functions, connectors and connector actions by typing in the search box. This will filter the constructs that can then be added to the diagram

  • Re-deploy option in launcher - allows to redeploy a already running ballerina program without having to stop and start again after making changes in the program.

  • Annotation Design - From this release onwards, users will be provided with an enhanced and interactive annotation design view to add, delete and edit the annotations.

  • Composer comes with a new package exploring functionality. Now the program directory will be used instead of a single .bal file to resolve functions, connectors etc. With this feature, users can explore other packages in the program directory and use them.

  • Transform statement now can use all the variables that are defined in the parent scope for mapping. Multiple input and output variables can also be used for the mapping. You can drag functions from tool palette to the transform statement and input variables and output variables can be mapped as function arguments and returns as the mapping. Structs with inner structs (complex types) can also be used for the mapping.

Ballerina 0.86

17 Apr 03:45
Compare
Choose a tag to compare
Ballerina 0.86 Pre-release
Pre-release

We are pleased to announce the 0.86 release of Ballerina.

This release contains following improvements.

  • Ability to use null literal and perform null checks in Ballerina
  • Remove long and double data types from Ballerina type system.
  • Now int data type in Ballerina is a 64-bit two's complement integer and the float data type is a double-precision 64-bit IEEE 754 floating point.
  • Default value support in Struct definitions
  • Concurrent consumer support in JMS Server connector.

Getting started

You can download the Ballerina distributions, try samples, and read the documentation at http://ballerinalang.org.

Thanks,
Ballerina Team

Ballerina 0.85

31 Mar 09:04
Compare
Choose a tag to compare
Ballerina 0.85 Pre-release
Pre-release

We are pleased to announce the 0.85 release of Ballerina.

This release contains following improvements.

  • Array of arrays support
  • Any type support
  • Ability to define Ballerina Annotations
  • Annotation attachment syntax change
  • Improve Ballerina Map semantics

More details on the improvements and bug fixes can be found on below location.

https://github.com/ballerinalang/ballerina/milestone-0.85

Getting started

You can download the Ballerina distributions, try samples, and read the documentation at http://ballerinalang.org.

Thanks,
Ballerina Team

Ballerina 0.84

30 Mar 09:22
Compare
Choose a tag to compare
Ballerina 0.84 Pre-release
Pre-release

We are pleased to announce the 0.84 release of Ballerina.

This release fixes the following issues.

https://github.com/ballerinalang/ballerina/issues_v0.84

Getting started

You can download the Ballerina distributions, try samples, and read the documentation at http://ballerinalang.org.

Thanks,
Ballerina Team

Ballerina 0.8.1

24 Feb 17:23
Compare
Choose a tag to compare
Ballerina 0.8.1 Pre-release
Pre-release

We are pleased to announce the 0.8.1 release of Ballerina Runtime. This release includes the following bug fixes.

https://github.com/ballerinalang/ballerina/milestone/6?closed=1

How to get Ballerina

You can download the ballerina 0.8.1 distribution from [1] or build from the source as mentioned in [2].

[1] https://github.com/ballerinalang/ballerina/tree/v0.8.1
[2] https://github.com/ballerinalang/ballerina#build-from-the-source

Open issues and reporting bugs

You can find the known issues in the following link and report any bugs in the same link: Known Issues

https://github.com/ballerinalang/ballerina/issues

How to contribute to ballerina

You can contribute to the ballerina development by forking the github repository and sending your pull requests to https://github.com/ballerinalang/ballerina

Ballerina Release Candidate 2

20 Feb 16:16
Compare
Choose a tag to compare
Pre-release
v0.8.0-RC2

[maven-release-plugin] copy for tag v0.8.0-RC2

Ballerina 0.8.0

20 Feb 18:23
Compare
Choose a tag to compare
Ballerina 0.8.0 Pre-release
Pre-release

Ballerina is a general purpose, concurrent, and strongly typed programming language with both textual and graphical representations. It is designed to make it easier to write programs that integrate with data sources, services, and network-connected APIs of all kinds. It is optimized primarily for such programs - while it can be use to program anything, it is not recommended to use Ballerina if a significant portion of the program is not related to integrating with data sources, services, or network-connected APIs.

Ballerina has been inspired by Java, Go, and other languages, but it has a concurrency model built around a sequence diagram metaphor.

Features

  • Complete language runtime with native data types for xml, json and datatable
  • Type system which supports implicit/explicit casting
  • Packaging system for building and running source code in a modularized way
  • Task delegation with workers and fork-join
  • Data integration support for connect with heterogeneous data sources
  • Native connectors for HTTP/S, WebSocket, JMS, File, HTTP/2

Fixed issues

This release fixes the following issues
https://github.com/ballerinalang/ballerina/issues?q=is%3Aissue+is%3Aclosed

Open issues and reporting bugs

You can find the known issues in the following link and report any bugs in the same link.
https://github.com/wso2/ballerina/issues

How to contribute to ballerina

You can contribute to the ballerina development by forking the github repository and sending your pull requests to https://github.com/wso2/ballerina

Ballerina Release Candidate (RC) 1

19 Feb 23:55
Compare
Choose a tag to compare
Pre-release

Ballerina RC1 released

This release includes bug fixes in addition to the features released with Alpha.

Main features

  • Packaging model
  • Non-blocking support
  • Worker
  • Fork-Join
  • TypeMapper
  • Native java code loading
  • Try/Catch/Exceptions

How to get Ballerina

You can download the ballerina 0.8 RC1 distribution[1] or build from the source as mentioned in [2].

[1] https://github.com/ballerinalang/ballerina/releases/tag/v0.8.0-RC1
[2] https://github.com/ballerinalang/ballerina#build-from-the-source

Open issues and reporting bugs

You can find the known issues in the following link and report any bugs in the same link: Known Issues

How to contribute to ballerina

You can contribute to the ballerina development by forking the github repository and sending your pull requests to https://github.com/ballerinalang/ballerina

Ballerina 0.8.0 ALPHA

17 Feb 06:50
Compare
Choose a tag to compare
Ballerina 0.8.0 ALPHA Pre-release
Pre-release

Main features of this release

Ballerina Commands Revamped

Commands used to run ballerina programs has been revamped with the newly added functionalities.

Usage:
  ballerina [command] [options]

Available Commands:
  run      run ballerina main/service programs
  build    create ballerina program archives

Flags:
  --help, -h    for more information

Use "ballerina help [command]" for more information about a command.

e.g.

ballerina run main test.bal (run a single file test.bal which has a main method)
ballerina run service org/wso2 (start services in org.wso2 package)

ballerina build main test/foo (This is the package with main function)
ballerina build service test/foo test/bar (These are the packages with services)

Support for Ballerina package and Ballerina program with mutiple files

Ballerina functions, services and connectors can be distributed across different files and functions can be imported from same or different packages.

Worker support

Ballerina can spawn a new worker to invoke parallel tasks and let them run while main execution flow (default worker) work on it’s on tasks and get the result whenever required.

Fork-Join support

If there are more than one parallel task to be executed for the same message, ballerina can spawn multiple workers and join them in a more controlled fashion. Join condition allows users to join either all, selected or one of the selected workers within a given time period.

Data Integration

New ballerina type called ‘datatable’ is introduced to represent the database result set. A native connector called SQLConnector is introduced to interact with SQL databases. ‘select’, ‘update’, ‘call’ actions are available to perform operation against databases. Set of native functions are available in ballerina.lang.datatables package to perform operation with datatable type.

Built-in Ballerina Constructs Support

Supports for built in Functions, Connectors, Structs and TypeMappers written in ballerina. Constructs can be written with ballerina and can be packed with the ballerina runtime environment (bre) by default. All the constructs are loaded on demand.

JMS Server Connector

JMS is a well known API for sending and receiving messages between enterprise systems. This connector provides support for listening to a queue or topic in JNDI based JMS providers such as WSO2 Message broker, Apache ActiveMQ broker, etc.

JMS Client Connector

The JMS Client Connector gives the ability to send/publish JMS messages to a destination queue/topic in a JMS provider who supports JNDI such as WSO2 Message broker, Apache ActiveMQ broker, etc.

Websocket Server Connector

WebSocket is a protocol which provides full-duplex, persistent communication channels over a single TCP connection. With Ballerina WebSocket Server connector any WebSocket client can connect and send and receive WebSocket data in a asynchronous manner.

HTTP2 Server Connector

HTTP/2 Server connector provides developers to expose their HTTP apis with both HTTP/1 and HTTP/2 clients. With multiplexing support, users can send multiple requests over a single TCP Connection.

File Server Connector

File server connector provides a way to access different type of file systems in a uniform way. It supports reading files from different file systems such as local file system, FTP, SFTP, etc.

Native Utility Functions Renamed

Package names of some of the native functions have been changed as following.

  • message -> messages
  • array -> arrays
  • json -> jsonutils
  • xml -> xmlutils
  • exception -> exceptions
  • datatable -> datatables
  • map -> maps
  • typeconvertor -> typemappers
  • string -> strings
  • util -> utils
  • system (not changed)