---
schema_version: "1"
id: 0a2270e55ab732496c710f82ad0d800c782676d590041860d2bff5d78ace9e30
title: Versioning Behavior in DataWeave
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.9/dataweave-versioning-behavior.md
canonical_url: https://docs.mulesoft.com/dataweave/2.9/dataweave-versioning-behavior
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 82b24fd90c3f25ff1e813132d70973fbb1c9c34a3ffc569a2e6d322744df607e
description: MuleSoft Documentation Site
release: "2.9"
latest: false
---
---
product: DataWeave
version: 2.9
---

# Versioning Behavior in DataWeave

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

New minor versions of DataWeave can introduce changes that modify the way the language behaves. You
can use DataWeave system properties that behave as _compatibility flags_ to continue using existing
scripts that depend on the previous behavior. However, each flag defines a deletion version, which
identifies the version in which the flag is no longer available and the behavior that it controls
defaults to the changed behavior.

Specifying a DataWeave language level indicates to the DataWeave runtime what compatibility flags
are available. To upgrade and maintain backward compatibility, you can set the language level of a
previous version so that the flags available on that version remain visible even if they expire in
the DataWeave version to which you upgrade. The language level defaults to the running DataWeave
version and has to be at most the same as the runtime version.

For Mule applications, the language level is determined by the application’s `minMuleVersion`
setting (see
[Feature Flags Reference](https://docs.mulesoft.com/mule-runtime/latest/feature-flagging#feature-flags-reference) in the
Mule documentation). Given the `minMuleVersion`, the language level is computed by subtracting two
major versions, as the following table shows:

<table><colgroup><col> <col></colgroup><thead><tr><th>minMuleVersion</th><th>Language Level</th></tr></thead><tbody><tr><td><div><div><p>4.9</p></div></div></td><td><div><div><p>2.9</p></div></div></td></tr><tr><td><div><div><p>4.8</p></div></div></td><td><div><div><p>2.8</p></div></div></td></tr><tr><td><div><div><p>4.7</p></div></div></td><td><div><div><p>2.7</p></div></div></td></tr><tr><td><div><div><p>4.6</p></div></div></td><td><div><div><p>2.6</p></div></div></td></tr><tr><td><div><div><p>4.5</p></div></div></td><td><div><div><p>2.5</p></div></div></td></tr><tr><td><div><div><p>4.4</p></div></div></td><td><div><div><p>2.4</p></div></div></td></tr><tr><td><div><div><p>4.3</p></div></div></td><td><div><div><p>2.3</p></div></div></td></tr></tbody></table>

Setting the Mule version configures the application to use the corresponding DataWeave language
level. This setting is independent of the DataWeave syntax version, which is set through a DataWeave
script’s `%dw` directive. For details, see
[DataWeave Header](https://docs.mulesoft.com/dataweave/2.9/dataweave-language-introduction#dw_header). For example, the
`com.mulesoft.dw.xml_reader.honourMixedContentStructure` system property is a compatibility flag for
language level 2.4, when it was introduced, and it is removed in DataWeave 2.6. In DataWeave 2.6,
the property is _visible only if_ you set the language level to 2.4 or 2.5. If you choose language
level 2.4 it defaults to the old behavior, if you choose language level 2.5 it defaults to the new
behavior.
