Backwards Compatibility

This is a maintenance and bugfix release which is very much backwards compatible to 3.1.1. Robots will just keep working, but there are a few changes to some functions. See below for details.

If you are using the paid FSA, Concurrency, OpenText or Deduplicator plugin, please upgrade it to the latest version and obtain a valid license. The old versions of these plugins will not work with 3.4.0 because of changes to the API. The upside: you will get all the latest bugfixes to those plugins as well. 

New in this release

New features in Xill language

We've added some new constructs to the language to make life easier:
  • File.move()
  • Date.isBefore()
  • Date.isAfter()
  • Date.fromTimestamp()

We also added a completely new plugin: the Properties Plugin Package to support using the Xill Project Convention

And we added a new option to the XURL plugin for enabling and disabling redirects (301, 302)

Check the help in Xill IDE for more information

New features in Xill IDE

Besides bugfixes and some minor improvements we added some new amazing features to the Xill IDE:
  • You can now print your Xill Robots using the shortcut Ctrl+Shift+P. Watch out: it will print the current bot immediately on the standard printer.
  • The project manager can now show any file in the project folders. You can activate this feature by clicking the new Show all files button just right of the (+) button in the Project pane. 
  • The editor is now able to open and edit almost any text file. This comes in handy when editing project related files such as JSON, Markdown or properties files. Please be careful when opening binaries, that is probably not a good thing to do in an auto-saving text editor.

See the change log below for the many improvements we made.

Why we skipped versions 3.2 and 3.3

Starting from this new release we switched from gradle to Maven for creating our builds. Also we integrated all core repositories into one. Some plugins had lower version numbers than others, so we decided to skip version number 3.2 and 3.3 and move all of them to version 3.4 to preserve ordering.

Upgrading from Xill IDE 3.1

If you are upgrading from the previous major release (3.1.x) then be advised that you may have to change your robots to work with Xill IDE 3.4. The changes are rather minor, but may affect specific parts of your code:

Medium impact

  • System.exec() now returns a string including the EOL characters, instead of a list of lines, this should simplify some robots
  • String.allMatches(), String.regex(), String.replace() and String.matches() now specify the timeout in milliseconds instead of seconds, so please add a factor 1000 if you are using these timeouts
Please note that this version of Xill is only compatible with the latest versions of the plugins mentioned above, please upgrade your plugin if you are using Concurrency, Deduplicator or FSA 

Low impact

  • Error messages in the Web plugin were revised, so if you are basing any error handling code on them, that code might have to change
  • nanosecond, microsecond and era stats were removed from the Date.diff() results, because they were either meaningless on most systems or not applicable to any Xill use cases
  • A bug fix changes the behaviour of Collection.sort() with the onKeys flag, so it no longer sorts lists inadvertently
  • modulo (%-operator) by 0 now returns NaN instead of throwing a divide by zero error
  • Assert constructs now properly escape the strings they print

Known Issues

We do our best to fix all issues you report, however, sometimes we are dependent on third-party libraries or on Java and those issues are hard or impossible to fix. That is why we list them here to help you find a workaround before the issue becomes a problem.
  • When using the latest version of Concurrency (1.0.3), then you cannot pass date objects (or anything other than an ATOMIC, LIST or OBJECT) to the next stage using Concurrency.push(). You will need to serialize everything you want to pass to a string.
  • Under exceptional circumstances (especially on very fast machines) after starting Xill IDE the editor might fail to show code highlighting. In this case we recommend closing and re-opening the affected tab to resolve the problem.
  • On very fast machines some dialogs might pop up as blank. This seems to be related to race conditions in our use of JavaFX.
  • Under OS X and Linux Java 8 can sometimes return very strange time offsets (based on physical location instead of timezone), for example Amsterdam might have an offset of +00:19:32 instead of +01:00:00. If you run into problems because of this, please add the following line to your app/Xill IDE.cfg file under the [JVMOptions] header: 

    (Replace +2 by the respective offset of your timezone)

  • On a Mac, some keyboard-shortcuts may not work, because they are used to type special characters
  • When using MariaDB, multiple queries may lead to a crash in the special case that one query (except the first) raises a constraint violation
  • When using MariaDB, a query-result with zero results will cause an error when iterating over it
  • When using MariaDB in an external bot using callbot() an exception may be thrown
  • The constructs Math.floor(), Math.ceiling() and Math.round() do not work with numbers larger than 9223372036854775807 or smaller than -9223372036854775808 while other Math constructs do not have this limitation

Change Logs


    • Send selected xill script to standard printer by pressing Ctrl+Shift+P [CTC-1645][CTC-1752]
    • New option enableRedirect on constructs of XURL plugin [CTC-1710][CTC-1753]
    • Add an overview of all active plugins in the settings about section [CTC-1667]
    • Add an archetype for xill plugins [CTC-1284]
    • Make non-robot files visible in the Xill IDE project pane [CTC-1652]
    • Make non-robot files editable in Xill IDE [CTC-1617]
    • Add File.move() construct [CTC-1643]
    • Add Date.isBefore() and Date.isAfter() constructs [CTC-1672]
    • Add Date.fromTimestamp() construct [CTC-1616]
    • Add Properties plugin package [CTC-1663]
    • Add "new folder" and "new file" options to project pane context menu [CTC-1739]


    • Removed easter egg [CTC-1708]
    • Show the full path to the document on mouse-over on tabs in Xill IDE [CTC-1669]
    • MySQL no longer has to be installed manually [CTC-1676]
    • Remove paging from the Xill IDE Console [CTC-1593]
    • Add py, xill, xillt extensions to the mimetype library [CTC-1626]
    • Move cookies in XURL responses to a separate field [CTC-1687]
    • Split the "New project" menu option into "New project..." and "New project from existing sources..." [CTC-1691]
    • System.exec() outputs one string including EOL charactedrs, instead of a list of lines [CTC-1466]
    • Warn user when uploading .xill file with illegal name [CTC-1723]
    • Add whitelisted filetypes which can be edited without warning: "xill", "txt", "properties", "html", "htm", "css", "xslt", "xml", "json", "js", "md", "cfg", "ini", "bat", "sh", "sbot" [CTC-1755]
    • Remove non-functional infor (i) button above help pane [CTC-1379]


    • Corrected documentation on query construct on JDBC plugin [CTC-1690]
    • Error handling on getting next element in ResultSet is only visible in console [CTC-1685]
    • Callbot displays unspecific error: "Exception in Robot" [CTC-1646]
    • Expression is already closed with nested list [CTC-1679]
    • Clicking on link in settings panel crashes IDE in Linux [CTC-1704]
    • Exiftool plugin will scan the path variable for executable [CTC-1585]
    • Robot Freezes when hitting cancel on auto-save dialog [CTC-1636]
    • Change timeouts to milliseconds for all regex related constructs [CTC-1629]
    • now creates all required folders [CTC-1532]
    • Allow custom character sets in Stream.write [CTC-1628]
    • Display a descriptive error when a concurrent modification occurs [CTC-1650]
    • File exists dialog does not overwrite file [CTC-1647]
    • Enable change of casing in robot name [CTC-1444]
    • Collection.sort() onKeys parameter is now ignored for lists [CTC-1700]
    • Hotkey input fields can contain illegal keywords [CTC-1696]
    • Divide by zero java error for modulo [CTC-1147]
    • OutOfMemoryError when trying to preview large XML-files [CTC-1267]
    • Add resolution parameter to Web.screenshot() [CTC-1043]
    • Display of after new install [CTC-1713]
    • Certain exceptions are logged twice [CTC-1699]
    • Clicking open containing folder crashes Linux [CTC-1698]
    • Alert windows do not automatically get scaled in linux, which causes text to disappear [CTC-1742]
    • Error messages for errors in (transitive) includes [CTC-1514]
    • Auto-save does not work for non-robot files [CTC-1754]
    • HttpResponseException on upload of large project [CTC-1751]
    • Expression is evaluated even after an exception happens [CTC-1721]
    • String.absoluteUrl does not allow reusing protocol [CTC-1792]
    • MySQL Error: The server time zone value 'W. Europe Daylight Time' is unrecognized or represents more than one time zone. [CTC-1796]
    • XURL login via cookie authentication fails [CTC-1804]
    • Console does not autoscroll to latest entry [CTC-1794]