---
title: "Tuleap 15.5 (fév. 2024)"
slug: "tuleap-15-5"
updated: 2026-01-23T14:28:03Z
published: 2026-01-23T14:28:03Z
canonical: "help.tuleap.com/tuleap-15-5"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://help.tuleap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tuleap 15.5 (fév. 2024)

## Execute your own code at artifact update

> *“Would it be possible that all the task I create are automatically assigned to me ?”*
> 
> *One fellow user*

> *“In my requirement, I need to compute a risk that is a product of Severity and Probability”*
> 
> *Another fellow user*

> *“Workflow is awesome and when there is a transition I would like that …”*
> 
> *As users we are more creative than as developers*

There are tons of things that would be very convenient to automate when a user story, a task, a requirement is updated. But the flip-side of the Tuleap Trackers flexibility is that developing all those features is way more work that you would expect because of the hundreds of configurations that can happen in the wild. Sometimes we are stuck between the devil and the deep blue sea: should we implement a highly specialized “Risk computation” field, well defined, easy to build but not flexible or should we implement a “3 or 4 levels field dependencies”, way more flexible but nightmarish complex to do and configure ?

### Introduce Tuleap Functions

There is another way: Tuleap Functions. Tuleap Functions are code, **your code**, that is executed on your artifacts at creation and update. If you already know [Tracker Webhooks](https://docs.tuleap.org/user-guide/integration/webhook.html#tracker), it’s similar except that Tuleap Functions remove all needs for infrastructure: no need for another server to run them 🤩.

You might be thinking “Ok, they provide some kind of crappy Domain Specific Language with even more crappy tooling around it” and you would be… wrong. **You can write Tuleap Functions in (almost) any language you love (Rust, Go, Typescript, …)** because we rely on [WebAssembly](https://webassembly.org/).

In short, WebAssembly is a platform and language independent runtime with very strong security requirements thanks to sandboxing provided by [Wasmtime](https://wasmtime.dev/).

### How does it work ?

You need to upload your Tuleap Function (a WASM module) in the new section of Tracker’s Workflow

![Access to Tuleap Function definition](https://www.tuleap.org/wp-content/uploads/2024/01/tuleap-functions-empty-fs8.png)

*New entry in Workflow configuration for Tuleap Functions*

This Function will:

- receive at each artifact update (or creation) a JSON representation of the artifact
- and is expected to output another JSON representation that corresponds to the the result of the transformation you want to apply.

For instance, let’s imagine you want to compute a Risk based on Severity and Probability (Risk = Severity x Probability). In your tracker you have:

- One select box called Severity with values from 1 to 4
- Another select box called Probability with values from 1 to 4
- A third select box called Risk with values from 1 to 16

The Tuleap Function will receive a JSON object that corresponds to the artifact

1. extract the two need values (eg. Severity = 2 & Probability = 3)
2. make the product of them
3. look for the Risk value that have a label equal to “6”
4. output a JSON object with the select box value found at step 3.

![Example of computation of risk in artifact view](https://www.tuleap.org/wp-content/uploads/2024/01/tuleap-functions-artifact-fs8.png)

*Example of Tuleap Function in action in one artifact*

Tracker administrators have a dedicated space to trace execution of Functions, to track success / failures, get input payload and produced output so they can improve their test suites.

![Example of Tuleap Function log](https://www.tuleap.org/wp-content/uploads/2024/01/tuleap-functions-log-fs8-1.png)

*Logs provide everything you need to fine tune your Function*

### Share your Functions

Starting now, the limit is your imagination (as long as your imagination executes in less than 10ms and 4MB) and we are thrilled to open a [repository dedicated to code samples](https://github.com/Enalean/tuleap-function-examples). Please share your use cases and how you solved it so other users can re-use and improve.

## Better history in Document

Document got a more usable and modern view for history of changes as well as history of access.

![New history view of Document modification follow-up](https://www.tuleap.org/wp-content/uploads/2024/01/doc-versions-fs8-1024x531.png)

*New history view of Document modification follow-up (click to enlarge)*

![](https://www.tuleap.org/wp-content/uploads/2024/01/doc-logs-fs8-1024x531.png)

New view for document access (click to enlarge)

## Subversion and EL9 platforms

EL9 stands for Enterprise Linux 9, it’s our way of describing RHEL, RockyLinux, AlmaLinux in their 9 flavor. It’s production ready since a while but there was still a blocking migration point for fellow users with EL7 deployment: Subversion behavior change between 1.7 (version of Subversion on EL7) and 1.14 (version of Subversion on EL9). To make it short, [Subversion 1.10, change the way it handles permission definitions](https://subversion.apache.org/docs/release-notes/1.10.html#authz-compatibility). Unfortunately, there is not much we can do with that, **Subversion administrators will have to review their permission scheme to ensure it’s still consistent after upgrade.**

However before doing that, there was one thing that Tuleap needed to support: let subversion administrators decide if they want default permissions (on repository root) managed by Tuleap or not. This choice is now in administrators hands in the permission screen.

![Suversion access control panel with new option to disable default permissions](https://www.tuleap.org/wp-content/uploads/2024/02/svn-fs8-1024x531.png)

Disable default permission for Subversion repositories

## Golang lib & CLI

After inital release showcased in the previous release note, Guillem Bonnefille has continued his work [go-tuleap](https://gitlab.com/csgroup-oss/go-tuleap) and [tuleap-cli](https://gitlab.com/csgroup-oss/tuleap-cli). It is now possible to attach a file to an artifact, create any element of the FRS plugin and even upload a file to a release. Even better, with the support of TUS protocol to support large files.

## Welcome PHP 8.2

You don’t see all constant gardening that is done on all development dependencies (libraries, tools, etc) because it’s transparent for the end users. Some of those updates (bump as we call them) are more significant than others, like our main backend language PHP. At upgrade, Tuleap will automatically switch to PHP 8.2, nothing to worry about.

## Bugs and requests

There were [4](https://tuleap.net/frs/release/233/release-notes#!/linked-artifacts)[8 bugs fixed and requests implemented](https://tuleap.net/frs/release/232/release-notes#!/linked-artifacts) during the 15.5 release cycle. Bugs and security fixes were already back-ported on Tuleap Enterprise builds. You will find below a detailed list of fixes. The most notable ones are in bold.

### Security

- [#35862](https://tuleap.net/plugins/tracker/?aid=35862&amp;from_aid=35497) **Content of artifacts might be readable by unauthorized users – CVE-2024-23344 – Impact Moderate (5.3)**
- [#35865](https://tuleap.net/plugins/tracker/?aid=35865&amp;from_aid=35497) Adjust SSHd crypto settings to prevent Terrapin attack / CVE-2023-48795

### Git

- [#35860](https://tuleap.net/plugins/tracker/?aid=35860&amp;from_aid=35497) Add Add syntax highlighting for .ipp and .tpp files in Git UI
- [#35841](https://tuleap.net/plugins/tracker/?aid=35841&amp;from_aid=35497) Add syntax highlighting for .hpp files in Git UI
- [#35828](https://tuleap.net/plugins/tracker/?aid=35828&amp;from_aid=35497) Crash when handling a malformed PR cross ref

### Subversion

- [#35495](https://tuleap.net/plugins/tracker/?aid=35495&amp;from_aid=35497) Do not allow suspended or deleted user in REST SVN notifications
- [#35810](https://tuleap.net/plugins/tracker/?aid=35810&amp;from_aid=35497) Removing last group member does not comment group in access files

### Full text search

- [#35872](https://tuleap.net/plugins/tracker/?aid=35872&amp;from_aid=35497) **Possible indexing issues when quickly updating the same artifact field**
- [#35864](https://tuleap.net/plugins/tracker/?aid=35864&amp;from_aid=35497) Meilisearch: 1.5.0 -> 1.6.0

### Site administration

- [#35870](https://tuleap.net/plugins/tracker/?aid=35870) SSRF siteadmin warning message must only be displayed one day
- [#35856](https://tuleap.net/plugins/tracker/?aid=35856&amp;from_aid=35497) Drop rsyslogd from container image
- [#35851](https://tuleap.net/plugins/tracker/?aid=35851&amp;from_aid=35497) SSHd process does not start in container images
- [#35846](https://tuleap.net/plugins/tracker/?aid=35846&amp;from_aid=35497) Created Gerrit temporary folder is never deleted
- [#35833](https://tuleap.net/plugins/tracker/?aid=35833&amp;from_aid=35497) Drop the `–update` option from the `tuleap import-project-xml` command
- [#35815](https://tuleap.net/plugins/tracker/?aid=35815&amp;from_aid=35497) Make sure locale needed for the internationalization are presentunder

Dans l'écosystème Tuleap, un artifact est l'unité de base pour suivre le travail. C'est un élément géré dans un "tracker", et englobe tout ce que vous pourriez traditionnellement appeler un "ticket", une "tâche", un "bug", une "exigence", etc.

Un Tracker est un outil de suivi d'un type d'information qui permet de créer, gérer et suivre un ensemble d'artifacts partageant une même nature.
