Jekyll2021-05-09T06:59:52+00:00https://jolie.github.io/news/news/feed.xmlJolie Programming Language NewsNews from the Jolie programming language team.Jolie 1.10.1 released2021-05-09T00:00:00+00:002021-05-09T00:00:00+00:00https://jolie.github.io/news/news/2021/05/09/jolie-1-10-1-released<p>Jolie 1.10.1 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<h1 id="changelog">Changelog</h1>
<ul>
<li>New <code class="language-plaintext highlighter-rouge">getRealServiceDirectory</code> operation of the <code class="language-plaintext highlighter-rouge">File</code> service, which is used in the new <code class="language-plaintext highlighter-rouge">@jolie/languageserver</code> npm package.</li>
<li>Bug fixes for the handling of faults in the default <code class="language-plaintext highlighter-rouge">main</code> scope.</li>
</ul>Fabrizio MontesiJolie 1.10.1 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.10.0 released2021-05-06T00:00:00+00:002021-05-06T00:00:00+00:00https://jolie.github.io/news/news/2021/05/06/jolie-1-10-released<p>Jolie 1.10.0 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<h1 id="changelog">Changelog</h1>
<ul>
<li><strong>New module system.</strong> Jolie now offers a <a href="https://docs.jolie-lang.org/v1.10.x/language-tools-and-standard-library/basics/modules.html">module system</a>, inspired by Python’s <code class="language-plaintext highlighter-rouge">from .. import ..</code> mechanism. The general principle is to keep keeps things simple and provide (often automatic) facilities to avoid namespace pollution.</li>
<li><strong>New service block.</strong> Services are now syntactically manifest thanks to a new <code class="language-plaintext highlighter-rouge">service</code> construct. Services can take parameters, either programmatically or from externally-provided files.</li>
<li><strong>New foreign service syntax.</strong> Foreign services (services implemented in Java or JavaScript instead of Jolie) are now implemented by hiding the implementation technology from embedders, allowing for more reusable code (changing how a service is implemented does not alter the orchestrator that loads it through embedding).</li>
<li><strong>Message ids.</strong> Message ids in Jolie now adopt a snowflake-like mechanism for their network-wide tracking.</li>
<li><strong>Maven Central.</strong> The Jolie libraries for developing Java Services and Jolie code analysis tools are now available on Maven Central (look for the group id <code class="language-plaintext highlighter-rouge">org.jolie-lang</code>).</li>
<li><strong>Semantics improvements.</strong> Arithmetic operators are now commutative under implicit type casts (<a href="https://github.com/jolie/jolie/issues/232">https://github.com/jolie/jolie/issues/232</a>). A concurrency bug of the <code class="language-plaintext highlighter-rouge">for .. in ..</code> construct has been fixed.</li>
<li><strong>HTTP.</strong> The <code class="language-plaintext highlighter-rouge">http</code> protocol now allows for arbitrary header read/write.</li>
<li><strong>Bug fixes.</strong> Numerous bug fixes to HTTP, fault management, and Java services.</li>
<li><strong>Code of Conduct.</strong> Jolie has joined the <a href="https://www.contributor-covenant.org/version/1/4/code-of-conduct.html">Contributor Covenant Code of Conduct</a>.</li>
</ul>Fabrizio MontesiJolie 1.10.0 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.9.1 released2020-06-04T00:00:00+00:002020-06-04T00:00:00+00:00https://jolie.github.io/news/news/2020/06/04/jolie-191-released<p>Jolie 1.9.1 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<h2 id="support-for-shebang-in-scripts">Support for shebang in scripts</h2>
<p>You can now use Jolie as a scripting language in Linux and macOS.</p>
<pre><code class="language-jolie">#!/usr/bin/env jolie
include "console.iol"
main {
println@Console( "Hello, Jolie!" )()
}
</code></pre>
<h2 id="windows-fixes">Windows fixes</h2>
<p>There are numerous fixes to the Jolie interpreter and installer to deal with paths in Windows, which resolve a few situations found with Jolie 1.9.0.</p>
<h2 id="other-changes">Other changes</h2>
<ul>
<li>Fix to the behaviour of fault handlers, which in some situations prevented escape from the current fault management scope from within a fault handler.</li>
<li>Improved parsing error messages for types that use the new syntax without the <code class="language-plaintext highlighter-rouge">.</code> prefix.</li>
<li>Better error management of invalid paths in all OSs.</li>
</ul>Fabrizio MontesiJolie 1.9.1 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.9.0 released2020-04-16T00:00:00+00:002020-04-16T00:00:00+00:00https://jolie.github.io/news/news/2020/04/16/jolie-190-released<p>Jolie 1.9.0 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<h2 id="documenting-apis">Documenting APIs</h2>
<p>The <code class="language-plaintext highlighter-rouge">joliedoc</code> tool has received some major improvements, including support for new documentation tokens, forward and backward documentation primitives, and a facelift to the documents that it generates. Check it out <a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/documenting-api">here</a>.</p>
<h2 id="configuration-with-json-files">Configuration with JSON files</h2>
<p>The <code class="language-plaintext highlighter-rouge">auto</code> self-configuring location now supports reading from JSON files (<a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/locations#json-file">doc</a>).</p>
<p>This is useful, for example, in the development of Docker images (<a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/containerization/docker">doc</a>).</p>
<h2 id="jolie-and-rest">Jolie and REST</h2>
<p>This release includes new tools to automatise some common practices in the development of Jolie REST services.</p>
<p>Jolier is a new tool to aid in the exposure of a Jolie API following the REST style (<a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/rest/jolier">doc</a>).</p>
<p>Also, Jolie now comes with two tools to integrate with <a href="https://swagger.io/specification/">OpenAPI</a>:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">jolie2openapi</code> produces an OpenAPI definition from a Jolie interface (<a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/rest/jolie2openapi">doc</a>);</li>
<li><code class="language-plaintext highlighter-rouge">openapi2jolie</code> produces a Jolie interface from an OpenAPI definition (<a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/rest/openapi2jolie">doc</a>).</li>
</ul>
<h2 id="tracing">Tracing</h2>
<p>In preparation for a debugger, the tracing system of the interpreter has been improved.</p>
<p>You can now also visualise the execution trace of a service using a <a href="https://jolielang.gitbook.io/docs/language-tools-and-standard-library/tracing">new jolietraceviewer tool</a>.</p>
<h2 id="build-system">Build system</h2>
<p>The build system used to compile Jolie has been ported to Maven.</p>
<h2 id="support-for-java-11">Support for Java 11+</h2>
<p>Jolie is now compatible with Java 11 and beyond without requiring special configurations.</p>
<h2 id="other-changes">Other changes</h2>
<ul>
<li>The HTTP protocol now supports OPTIONS requests and CORS.</li>
<li>Infinite alias loops are now detected at runtime and throw a fault.</li>
<li>Secure protocols (like HTTPS) now use TLSv1.2 by default.</li>
<li>A lot of small fixes and code optimisations.</li>
</ul>Fabrizio MontesiJolie 1.9.0 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.8.2 released2019-08-06T00:00:00+00:002019-08-06T00:00:00+00:00https://jolie.github.io/news/news/2019/08/06/jolie-182-released<p>Jolie 1.8.2 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<p>This release introduces support for Windows to the Jolie Visual Studio Code extension: <a href="https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie">https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie</a></p>Fabrizio MontesiJolie 1.8.2 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.8.1 released2019-07-11T00:00:00+00:002019-07-11T00:00:00+00:00https://jolie.github.io/news/news/2019/07/11/jolie-181-released<p>Jolie 1.8.1 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<p>This is the first stable release that supports our new official Visual Studio Code extension for Jolie: <a href="https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie">https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie</a></p>
<h1 id="changelog">Changelog</h1>
<ul>
<li>The biggest change is the introduction of a new <code class="language-plaintext highlighter-rouge">Inspector</code> service to the standard library. This service provides code inspection operations for analysing Jolie source code, which is used in the implementation of the Language Server Protocol used in the new Visual Studio Code extension for Jolie.</li>
<li>Improvements and bugfixes for the <code class="language-plaintext highlighter-rouge">jsonrpc</code> protocol.</li>
<li>Bugfixes for the redirection feature.</li>
<li>Field <code class="language-plaintext highlighter-rouge">end</code> in <code class="language-plaintext highlighter-rouge">substring@StringUtils</code> is now optional (defaults to the length of the string).</li>
</ul>Fabrizio MontesiJolie 1.8.1 has been released. Get it from https://jolie-lang.org/downloads.html.Visual Studio Code gains support for Jolie2019-07-11T00:00:00+00:002019-07-11T00:00:00+00:00https://jolie.github.io/news/news/2019/07/11/vscode-jolie<p>The Jolie team has released the first version of the Visual Studio Code extension for Jolie, called <code class="language-plaintext highlighter-rouge">vscode-jolie</code>. Get it directly from Visual Studio Code or by visiting <a href="https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie">https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie</a>.</p>
<p>The extension is pretty recent, so expect a lot of fixes and new features in the future. Here are a few cool things that work already:</p>
<ul>
<li>
<p>Syntax highlighting.</p>
</li>
<li>
<p>Completion:</p>
</li>
</ul>
<p><img src="https://jolie.github.io/news/assets/vscode-jolie/feature-completion.gif" alt="Completion" /></p>
<ul>
<li>Hover:</li>
</ul>
<p><img src="https://jolie.github.io/news/assets/vscode-jolie/feature-hover.gif" alt="Hover" /></p>
<p>Enjoy!</p>Fabrizio MontesiThe Jolie team has released the first version of the Visual Studio Code extension for Jolie, called vscode-jolie. Get it directly from Visual Studio Code or by visiting https://marketplace.visualstudio.com/items?itemName=jolie.vscode-jolie.Jolie 1.8.0 released2019-05-20T00:00:00+00:002019-05-20T00:00:00+00:00https://jolie.github.io/news/news/2019/05/20/jolie-180-release<p>Jolie 1.8.0 has been released. Get it from <a href="https://jolie-lang.org/downloads.html">https://jolie-lang.org/downloads.html</a>.</p>
<p>This is a pretty big release, containing many aesthetic and useful improvements. Read up for the full changelog.</p>
<p>All changes are backwards-compatible, no need to worry about your existing Jolie code.</p>
<h1 id="changelog">Changelog</h1>
<h3 id="bye-bye-semicolons">Bye bye semicolons</h3>
<p>Ending statements with semicolons in sequential compositions is no longer necessary.</p>
<p>Before:</p>
<pre><code class="language-jolie">msg = "Hello, world!";
println@Console( msg )();
// etc.
</code></pre>
<p>After:</p>
<pre><code class="language-jolie">msg = "Hello, world!"
println@Console( msg )()
// etc.
</code></pre>
<h3 id="simplified-type-syntax">Simplified type syntax</h3>
<p>When defining data types, dots in front of subnodes are now optional.
Defining the type of node values is now optional, with <code class="language-plaintext highlighter-rouge">void</code> being the default.</p>
<p>Before:</p>
<pre><code class="language-jolie">type Team:void {
.name:string
.member[1,10]:void {
.name:string
.age:int
}
}
</code></pre>
<p>After:</p>
<pre><code class="language-jolie">type Team {
name:string
member[1,10] {
name:string
age:int
}
}
</code></pre>
<h3 id="improved-tree-literals">Improved tree literals</h3>
<p>Tree literals have been improved: they now support nested trees, deep copy operations, and aliasing.
Dots (to prefix subnodes) and commas (to separate nodes) are now optional.
You can still use paths inside of tree literals to point to deeply-nested nodes.</p>
<p>For example, you can now rewrite this</p>
<pre><code class="language-jolie">config.username = "jolie"
config.server.uri = "https://jolie-lang.org/"
config.resource = "/news"
config.protocol.name = "https"
config.protocol.version = "TLSv1.3"
</code></pre>
<p>into</p>
<pre><code class="language-jolie">config << {
username = "jolie"
server.uri = "https://jolie-lang.org/"
resource = "/news"
protocol << {
name = "https"
version = "TLSv1.3"
}
}
</code></pre>
<h3 id="casing-in-ports">Casing in ports</h3>
<p>The nodes <code class="language-plaintext highlighter-rouge">Location</code>, <code class="language-plaintext highlighter-rouge">Protocol</code>, and <code class="language-plaintext highlighter-rouge">Interfaces</code> in communication ports can also be spelled <code class="language-plaintext highlighter-rouge">location</code>, <code class="language-plaintext highlighter-rouge">protocol</code>, and <code class="language-plaintext highlighter-rouge">interfaces</code> now, respectively, to be consistent with the rest of the language.</p>
<p>Before:</p>
<pre><code class="language-jolie">outputPort SomeServer {
Location: "socket://localhost:8080"
Protocol: sodep
Interfaces: MyInterface1, MyInterface2
}
</code></pre>
<p>After:</p>
<pre><code class="language-jolie">outputPort SomeServer {
location: "socket://localhost:8080"
protocol: sodep
interfaces: MyInterface1, MyInterface2
}
</code></pre>
<h3 id="other-changes">Other changes</h3>
<ul>
<li>A new <code class="language-plaintext highlighter-rouge">--responseTimeout</code> command line parameter to set a global timeout for all solicit-response invocations (see <code class="language-plaintext highlighter-rouge">jolie --help</code>).</li>
<li>Pretty printing values now prints Jolie types, instead of their Java type correspondent.</li>
<li>Bugfix for equality check of choice types.</li>
<li>Various resource leak fixes: LGTM.com now detects no issues.</li>
<li>Bugfix in querystring generation, now there are no more trailing ampersands.</li>
<li>Fixed an NPE when type checking courier processes.</li>
<li>The standard library service for sending e-mails now supports multiple attachments.</li>
<li>Standard library:
<ul>
<li>New operation: <code class="language-plaintext highlighter-rouge">getVersion@Runtime</code></li>
<li><code class="language-plaintext highlighter-rouge">md5@MessageDigest</code> can now take byte arrays as input.</li>
</ul>
</li>
</ul>Fabrizio MontesiJolie 1.8.0 has been released. Get it from https://jolie-lang.org/downloads.html.Jolie 1.7.1 released - Microservices 2019 edition2019-02-19T15:53:00+00:002019-02-19T15:53:00+00:00https://jolie.github.io/news/news/2019/02/19/jolie-171-released-microservices-2019Jolie 1.7.1 has been released! Go get it from our <a href="http://jolie-lang.org/downloads.html">download page</a>.<br /><br />This release celebrates the 2nd International Conference on Microservices (in Dortmund), which has started today! If you are not there, you will be able to check out slides and presentations at the end of the conference at the website <a href="https://conf-micro.services/">https://conf-micro.services/</a><br /><br /><a href="https://conf-micro.services/"><img alt="https://conf-micro.services" height="185" src="https://www.conf-micro.services//assets/images/site-header.png" width="640" /></a><br /><br /><span style="font-size: x-large;">Changelog (from Jolie 1.7.0)</span><br /><ul><li>Support for the NDJSON format.</li><li>list@File now supports recursive directory visits natively.</li><li>Improvements to the ZipUtils library.</li><li>Bug fixes for XML/XSD support of choice types. </li></ul>Fabrizio MontesiJolie 1.7.1 has been released! Go get it from our download page.This release celebrates the 2nd International Conference on Microservices (in Dortmund), which has started today! If you are not there, you will be able to check out slides and presentations at the end of the conference at the website https://conf-micro.services/Changelog (from Jolie 1.7.0)Support for the NDJSON format.list@File now supports recursive directory visits natively.Improvements to the ZipUtils library.Bug fixes for XML/XSD support of choice types.Jolie 1.7.0 released2018-08-21T06:56:00+00:002018-08-21T06:56:00+00:00https://jolie.github.io/news/news/2018/08/21/jolie-170-releasedJolie 1.7.0 has been released! Go get it from our <a href="http://jolie-lang.org/downloads.html">download page</a>.<br /><br /><span style="font-size: x-large;">Changelog (from Jolie 1.6.4)</span><br /><ul><li>Support for Java 9, 10, 11.</li><li>New feature: SNI (Server Name Indication) support for SSL/TLS (https, soaps, etc.). This is supported automatically, no need to add any protocol configuration.</li></ul>Fabrizio MontesiJolie 1.7.0 has been released! Go get it from our download page.Changelog (from Jolie 1.6.4)Support for Java 9, 10, 11.New feature: SNI (Server Name Indication) support for SSL/TLS (https, soaps, etc.). This is supported automatically, no need to add any protocol configuration.