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

# 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.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.6/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.
