freshcrate
Skin:/
Home > Uncategorized > jeo-maven-plugin

jeo-maven-plugin

This Maven plugin converts Java Bytecode binary files to EOLANG programs that use the "opcode" atom

Why this rank:Recent releaseStrong adoptionHealthy release cadence

Description

This Maven plugin converts Java Bytecode binary files to EOLANG programs that use the "opcode" atom

README

jeo-maven-plugin

logo

Maven Central Javadoc License Hits-of-Code Lines of code codecov

jeo-maven-plugin is a Maven plugin dedicated to disassembling Java bytecode. The process involves translating the Java bytecode into the EO programming language. The plugin also provides the ability to assemble EO back into Java bytecode.

How to use

You need at least Maven 3.1+ and Java 11+ to run the plugin. (Actually, the plugin requires Java 8+, but since the main dependency eo requires Java 11, we are obligated to use it as well.)

The plugin can convert compiled .class files into EO by using the disassemble goal. The assemble goal can convert EO back into bytecode. The default phase for the plugin is process-classes.

To optimize Java bytecode, you need to use both goals in the following order:

  • disassemble creates EO files in the target/generated-sources directory.
  • Apply your optimizations to the EO files in the target/generated-sources directory.
  • assemble scans the target/generated-sources directory for EO files and converts them back to Java bytecode.

More details about plugin usage can be found in our Maven site.

Invoke the plugin from the command line

You can run the plugin directly from the command line using the following commands:

mvn jeo:disassemble

or

mvn jeo:assemble

Invoke the plugin from the Maven lifecycle

You can run the plugin from the Maven lifecycle by adding the following configuration to your pom.xml file:

<build>
  <plugins>
    <plugin>
      <groupId>org.eolang</groupId>
      <artifactId>jeo-maven-plugin</artifactId>
      <version>0.15.1</version>
      <executions>
        <execution>
          <id>bytecode-to-eo</id>
          <phase>process-classes</phase>
          <goals>
            <goal>disassemble</goal>
          </goals>
        </execution>
        <execution>
          <id>eo-to-bytecode</id>
          <phase>process-classes</phase>
          <goals>
            <goal>assemble</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Exclude debug information

In order to exclude debug information in the generated EO files, you can set the short option.

<configuration>
  <mode>short</mode>
</configuration>

This option will exclude line numbers and local variable names, together with their corresponding labels. The default mode is debug.

Disable bytecode verification

Each time the plugin converts EO back to bytecode, it verifies it. If the verification fails, the build also fails. You can disable this verification by setting the skipVerification parameter to true:

<configuration>
  <skipVerification>true</skipVerification>
</configuration>

At times, it might be beneficial to generate intentionally flawed bytecode.

Enable XMIR Verification

After generating XMIR or before the assemble goal, you might need to check its correctness. We do it by using objectionary/lints repository. By default, the plugin does not run lints. To enable them, you need to set xmirVerification to true:

<configuration>
  <xmirVerification>true</xmirVerification>
</configuration>

Extend Logging Output

You can extend the logging output of the plugin by setting the debug parameter to true:

<configuration>
  <debug>true</debug>
</configuration>

This will enable more detailed logging output, which can be useful for debugging purposes.

Without the debug parameter:

1/3 WithoutPackage.xmir (9Kb) disassembled in 1s

With the debug parameter:

1/3 .../WithoutPackage.class disassembled to .../WithoutPackage.xmir (9Kb) in 1s

Run Without a POM File

You can run the plugin in a project that does not contain a pom.xml file. For example, to disassemble compiled classes, use:

mvn org.eolang:jeo-maven-plugin:0.15.1:disassemble \
  -Djeo.disassemble.sourcesDir=input \
  -Djeo.disassemble.outputDir=xmir

The full list of available parameters is documented in DisassembleMojo.java.

Similarly, you can run the assemble goal:

mvn org.eolang:jeo-maven-plugin:0.15.1:assemble \
    -Djeo.assemble.sourcesDir=xmir \
    -Djeo.assemble.outputDir=output

(Again, the full list of available parameters is documented in AssembleMojo.java.) Note that the parameters for assembling use the jeo.assemble prefix, while the parameters for disassembling use the jeo.disassemble prefix.

Notation

jeo-maven-plugin relies on the formal notation when producing XMIR files and parsing them back into bytecode.

Ordering

All the components in the generated XMIR files are sorted according to the JVM specification. It means that classes, fields, methods, and attributes have the same order in EO, PHI notation, and XMIR files as in the JVM specification.

Disassembling Example

The plugin can transform Java bytecode into EO and back. Usually, the plugin transforms each bytecode class file into a separate EO file, maintaining a one-to-one relationship. If the Java class has the name Application.class, the EO file will have the name Application.xmir.

For example, consider the following Java class:

package org.eolang.jeo;

public class Application {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

with the following bytecode representation:

{
  public org.eolang.jeo.Application();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0
         1: invokespecial #1                  // Method java/lang/Object."<init>":()V
         4: return
      LineNumberTable:
        line 3: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       5     0  this   Lorg/eolang/jeo/Application;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
         3: ldc           #13                 // String Hello, World!
         5: invokevirtual #15                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
         8: return
      LineNumberTable:
        line 5: 0
        line 6: 8
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       9     0  args   [Ljava/lang/String;
}

After running the jeo:disassemble goal, the plugin will generate the following EO:

+home https://github.com/objectionary/jeo-maven-plugin
+package j$org.j$eolang.j$jeo
+spdx SPDX-License-Identifier: MIT
+version 1.0-SNAPSHOT

# No comments.
[] > j$Application
  Φ.jeo.class > @
  52 > version
  33 > access
  "org/eolang/jeo/Application" > name
  "java/lang/Object" > supername
  # No comments.
  [] > interfaces
    Φ.jeo.seq.of0 > @
  # No comments.
  [] > jm$object@init@
    Φ.jeo.method > @
    1 > access
    "<init>" > name
    "()V" > descriptor
    "" > signature
    # No comments.
    [] > exceptions
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > maxs
      Φ.jeo.maxs > @
      1 > m1
      1 > m2
    # No comments.
    [] > params
      Φ.jeo.params > @
    # No comments.
    [] > annotations
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > body
      Φ.jeo.seq.of6 > @
      # No comments.
      [] > l0
        Φ.jeo.label > @
        "L629380274" > v0
      # No comments.
      [] > ln1
        Φ.jeo.line-number > @
        7 > number
        # No comments.
        [] > l0
          Φ.jeo.label > @
          "L629380274" > v0
      # No comments.
      [] > i2
        Φ.jeo.opcode.aload > @
        0 > v0
      # No comments.
      [] > i3
        Φ.jeo.opcode.invokespecial > @
        "java/lang/Object" > v0
        "<init>" > v1
        "()V" > v2
        false > v3
      # No comments.
      [] > i4
        Φ.jeo.opcode.return > @
      # No comments.
      [] > l5
        Φ.jeo.label > @
        "L2060339391" > v0
    # No comments.
    [] > trycatchblocks
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > local-variable-table
      Φ.jeo.seq.of1 > @
      # No comments.
      [] > a0
        Φ.jeo.local-variable > @
        # No comments.
        [] > l0
          Φ.jeo.label > @
          "L629380274" > v0
        # No comments.
        [] > l1
          Φ.jeo.label > @
          "L2060339391" > v0
        "this" > name
        "Lorg/eolang/jeo/Application;" > descr
        0 > index
        "" > signature
  # No comments.
  [] > jm$main
    Φ.jeo.method > @
    9 > access
    "main" > name
    "([Ljava/lang/String;)V" > descriptor
    "" > signature
    # No comments.
    [] > exceptions
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > maxs
      Φ.jeo.maxs > @
      2 > m1
      1 > m2
    # No comments.
    [] > params
      Φ.jeo.params > @
    # No comments.
    [] > annotations
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > body
      Φ.jeo.seq.of9 > @
      # No comments.
      [] > l0
        Φ.jeo.label > @
        "L1370568011" > v0
      # No comments.
      [] > ln1
        Φ.jeo.line-number > @
        9 > number
        # No comments.
        [] > l0
          Φ.jeo.label > @
          "L1370568011" > v0
      # No comments.
      [] > i2
        Φ.jeo.opcode.getstatic > @
        "java/lang/System" > v0
        "out" > v1
        "Ljava/io/PrintStream;" > v2
      # No comments.
      [] > i3
        Φ.jeo.opcode.ldc > @
        "Hello, World!" > v0
      # No comments.
      [] > i4
        Φ.jeo.opcode.invokevirtual > @
        "java/io/PrintStream" > v0
        "println" > v1
        "(Ljava/lang/String;)V" > v2
        false > v3
      # No comments.
      [] > l5
        Φ.jeo.label > @
        "L1388035270" > v0
      # No comments.
      [] > ln6
        Φ.jeo.line-number > @
        10 > number
        # No comments.
        [] > l0
          Φ.jeo.label > @
          "L1388035270" > v0
      # No comments.
      [] > i7
        Φ.jeo.opcode.return > @
      # No comments.
      [] > l8
        Φ.jeo.label > @
        "L1795299323" > v0
    # No comments.
    [] > trycatchblocks
      Φ.jeo.seq.of0 > @
    # No comments.
    [] > local-variable-table
      Φ.jeo.seq.of1 > @
      # No comments.
      [] > a0
        Φ.jeo.local-variable > @
        # No comments.
        [] > l0
          Φ.jeo.label > @
          "L1370568011" > v0
        # No comments.
        [] > l1
          Φ.jeo.label > @
          "L1795299323" > v0
        "args" > name
        "[Ljava/lang/String;" > descr
        0 > index
        "" > signature
  "" > signature
  # No comments.
  [] > annotations
    Φ.jeo.seq.of0 > @
  # No comments.
  [] > attributes
    Φ.jeo.seq.of1 > @
    # No comments.
    [] > source-file
      Φ.jeo.source-file > @
      "Application.java" > source
      # No comments.
      [] > debug
        Φ.jeo.nullable > @
        -- > n0

As you can see, there are many EO objects that represent the Java bytecode primitives, like jeo.opcode, jeo.int, jeo.method, etc.

Full List of Jeo Objects

During disassembly, the jeo-maven-plugin creates a set of objects representing bytecode primitives. These objects provide a way to handle various aspects of Java bytecode. Below is the full list of these objects, grouped by category:


Bytecode Instructions

  • jeo.opcode.* Represents a single bytecode instruction like aload_0, iconst_0, etc.

Classes, Methods, and Fields

  • jeo.class Represents a Java class.
  • jeo.method Represents a Java method.
  • jeo.field Represents a Java field.
  • jeo.params Represents method parameters.
  • jeo.param Represents a single method parameter.
  • jeo.maxs Represents the maximum stack and local variable sizes.

Primitive Values

  • jeo.bool - Represents a boolean value.
  • jeo.char - Represents a char value.
  • jeo.byte - Represents a byte value.
  • jeo.short - Represents a short value.
  • jeo.number - Represents an integer value.
  • jeo.long - Represents a long value.
  • jeo.float - Represents a float value.
  • jeo.double - Represents a double value.
  • jeo.string - Represents a string value.
  • jeo.bytes - Represents a byte array.

Collections and Complex Types

  • jeo.nullable Represents an object that can be null.
  • jeo.type Represents a Java type.
  • jeo.seq.* Represents a sequence of objects with a specific size, like jeo.seq.of0, jeo.seq.of1, etc.

Annotations and Metadata

  • jeo.annotation Represents a Java annotation.
  • jeo.annotation-property Represents a single annotation element.
  • jeo.annotation-default-value Represents a default value of a Java interface method or annotation property.
  • jeo.inner-class Represents a Java inner class annotation property.

Local Variables and Control Flow

  • jeo.local-variable Represents a local variable entry.
  • jeo.trycatch Represents a try-catch block.

Labels, Handles, Frames

  • jeo.label Represents a Java label.
  • jeo.handle Represents a Java method handle.
  • jeo.frame Represents a stack frame.

How to Build the Plugin

To build the plugin from the source code, you need to clone the repository and run the following command:

mvn clean install -Pqulice,long

Pay attention to the qulice profile, which activates the static analysis tools. The long profile is optional and runs the full test suite, including long-running integration tests.

How to Run Benchmarks

To run the benchmarks, you need to execute the following command:

mvn clean verify -Pbenchmark

Before running the benchmarks, make sure you have the .env file in the root directory of the project. The file should contain the following environment variables:

PROFILER=/path/to/async-profiler/profiler.sh

How to Contribute

Fork the repository, make changes, then send us a pull request. We will review your changes and apply them to the master branch shortly, provided they don't violate our quality standards. To avoid frustration, before sending us your pull request, please run the full Maven build:

mvn clean install -Pqulice

Also, if you want to check the generated XMIR, you can run:

mvn clean install -Pverify

This command will check all generated XMIR using objectionary/lints. It might take significantly more time to build, but it will ensure that all transformations are correct and aligned with the XMIR specification.

You will need Maven 3.3+ and Java 11+ installed.

Release History

VersionChangesUrgencyDate
0.15.2See #1497, release log: * be539430940b93c2dc56e2d7b1ec19e24b841716 by @rultor: feat(#1497): add configurable ... * 96b5bbf6b0c975b90ab78fb3594a8a2fde6b6eba by @volodya-lombrozo: feat(#1497): Add configurable ... * d6c5d44994f365c08b2bf2ef41c89adc4e0be9fa by @volodya-lombrozo: feat(#1497): Add configurable ... * 2504e0fc86b6d13a5c01d3c25133195735d1e649 by @claude: chore(site): update jcabi-mave... * bb72f1eff90fc9ee6716280db505d1cd94a81441 by @yegor256: Merge bot PR #1490: fix(deps):... * High5/10/2026
0.15.1See #1461, release log: * 7de5a4c5b609c93c5472b860b50380e1b14e9a5e by @yegor256: Merge pull request #1465 from ... * 0c5d7c599f579b34db4d592066a5ab0ad2553f5f by @volodya-lombrozo: build(#1464): Remove 'hone' pr... * bbefacf1e3862bce7a9a9585e881fd771020ac00 by @volodya-lombrozo: feat(#1461): Simplify fully qu... * 4ae7fdf358ed0f6943dadd64d542e957ba85879a by @volodya-lombrozo: refactor(#1461): Replace strin... * b723ac1ae2711793482def3c7ebabf9066826f78 by @yegor256: Merge pull request #1459 High4/8/2026
0.15.0See #1183, release log: * ec21be2315c8ac161f8bfcd10d779aa6a8e1c191 by @volodya-lombrozo: build(#1201): Update eo-maven-... * 37b4bc276961cd55c046ad5df6b964acf466e0f4 by @volodya-lombrozo: refactor(#1420): Move class na... * 30e960b61b52e7f748ac11df25b0d1badc0d00cf by @rultor: refactor(#1421): Move class si... * f9f6da44f60ee9302f4061162feb59f923bda9c2 by @volodya-lombrozo: feat(#1421): move class signat... * c4e808503585885fa6db36d2ada2feb59ed975be by @rultor: refactor(#1422): align DirectLow11/19/2025
0.14.17See #1167, release log: * bb88ef4690ede38b3d797360f3904911bfadd763 by @rultor: fix(#1167): update jcabi-maven... * fc3e021adf7157ee8de085e6bee8c7b1738f8114 by @volodya-lombrozo: build(#1167): update jcabi-mav... * aae39c5fd4e3cda724ecfd9ee201ba05aa096614 by @renovate[bot]: chore(deps): update github art... * 7fa6b16b73a7aa3d1a623543e0de56004c8a6def by @renovate[bot]: fix(deps): update dependency o... * 6815b9cc36676a182b69bfee63b6c0efbdbedfb5 by @volodya-lombrozo: refactor(#1129): Remove uLow10/26/2025
0.14.16See #1388, release log: * 242b8d6579c42a99ffdaa16c5216734acb814a2a by @volodya-lombrozo: feat(#1388): Simplify trycatch... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/52227-3410213191)Low10/16/2025
0.14.15See #1385, release log: * efeff035a56ccbf30c141e5b8182fa8db70f97c8 by @volodya-lombrozo: feat(#1385): Make `annotations... * 2326979349f526f2dd7d97a2a39edcacabc34675 by @volodya-lombrozo: feat(#1379): Introduce prefix ... * 4019829d3988444e7a36e62c560426ec46010d47 by @rultor: chore(deps): update dependency... * 7581fb57a311e1e6e3d373c3697fb5a585fa79ae by @renovate[bot]: fix(deps): update dependency o... * 0747ad7b8483fb84e982d734d176e7a001151366 by @renovate[bot]: chore(deps): update depenLow10/15/2025
0.14.14See #1375, release log: * 8e9ab9bf3883f285859b20bebc2ce3e1d2e769dc by @rultor: fix(#1375): replace `v1` with ... * 7a2f6f89262f00fb2e361d0b4eef3e21cb4f3154 by @volodya-lombrozo: refactor(#1375): Change attrib... * 0029a0db614fa04cb7ba99e95fb727156bc64859 by @volodya-lombrozo: feat(#1373): Add MavenPath cla... * 069075cab999f569a082da3d7790836540145708 by @github-actions[bot]: chore: new version in README Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/52018-338179Low10/8/2025
0.14.13See #1366, release log: * 9f3c7bd695761ca5a5819d06d511669d28fc2d48 by @renovate[bot]: chore(deps): update dependency... * 46ba2c6c76f82376e2c4363b492b70e08c5be9c5 by @volodya-lombrozo: feat(#1366): Update XMIR gener... * c58658f0cdda7294a33932b71c5264411ff2de7f by @renovate[bot]: chore(deps): update fsfe/reuse... * 382a322928eeaf6f7a95ea65fee068c5a730e1ec by @renovate[bot]: chore(deps): update dependency... * f03baa8c6ce170e6598f3e81e35cc5b30cfa1f58 by @rultor: fix(deps): update dependencyLow10/8/2025
0.14.12See #1240, release log: * f10632003c9b36499d29e12e96c12eb5f2e4ee92 by @volodya-lombrozo: feat(#1240): Add debug logging... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51369-3333829802)Low9/25/2025
0.14.11See #1351, release log: * 951446fef7857c7c29b8a1a15114c7aed968f3ee by @volodya-lombrozo: feat(#1351): Add @JeoSubTypes ... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51355-3328000189)Low9/24/2025
0.14.10See #1348, release log: * 7bf62b467f8ae4b1e053d02af26ed4ff67b61b77 by @volodya-lombrozo: feat(#1348): Add XML represent... * dbd4eb456e6366c25bb17153aa51b47735dd49f2 by @renovate[bot]: chore(deps): update dependency... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51340-3323784191)Low9/23/2025
0.14.9See #1341, release log: * 25ecdd9bdec82a4f8dbc692cc8c2506886186e81 by @volodya-lombrozo: feat(#1337): Add instructions ... * dec6a1560431328c56790d8445685e6439bbeab7 by @volodya-lombrozo: feat(#1341): Append prefix to ... * 561e4e5ca1ff35b71bda2ba052559028c3b2d460 by @renovate[bot]: chore(deps): update dependency... * b7e97f7df5a4db31ffaaa89e37529e8d6cf1a1e7 by @renovate[bot]: fix(deps): update dependency c... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51319-Low9/22/2025
0.14.8See #1336, release log: * 047f108f38ba8edec2df578f26cf5719132ef37c by @volodya-lombrozo: feat(#1336): Add class modifie... * b7fb715a10fa687960c66aa4aaad5c0f01e5bf1b by @renovate[bot]: chore(deps): update dependency... * 7e96171b9e4eed38715ee2741d39b87186724911 by @github-actions[bot]: chore: new version in README Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51264-3306865467)Low9/18/2025
0.14.7See #1333, release log: * ecb4aba12f68487e33b06eaa357a02161cc867d9 by @volodya-lombrozo: feat(#1333): Add optional chil... * 3e7f87de634f9a62b99e686ba91ab58ff47f6b21 by @rultor: chore(deps): update dependency... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51234-3302573412)Low9/17/2025
0.14.6See #1330, release log: * 548a66c10ce77e5fa7dbd9487f8f3b89226538ca by @volodya-lombrozo: fix(#1330): Update Scala integ... * acad0ae64c14348551a7cda716caedd3ce07499c by @github-actions[bot]: chore: new version in README Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51225-3301447468)Low9/17/2025
0.14.5See #1317, release log: * 4cf823533ce8601144358c7222256fbcd7fa8b4d by @volodya-lombrozo: feat(#1326): Handle non-existe... * da9ec6e2e7d134d7af5997759d2465daaf15fc9b by @rultor: fix(#1317): correct assembling... * b59b6169406720d95c91bb8bf19342a40368c7a3 by @volodya-lombrozo: feat(#1317): Update Assembling... * 04d1aea7a5b4ee43b023eb0a6afa76cdefcf1c3e by @renovate[bot]: fix(deps): update dependency o... * 0d71d9cc243503f96bc972ed021fb8051778855b by @volodya-lombrozo: feat(#1317): Add root Low9/16/2025
0.14.4See #1297, release log: * 569efe687f81913727e0111c68586b03cab3b525 by @volodya-lombrozo: feat(#1297): disassemble/assem... * bcb74693693dd7aa3c0e93bcd6d08eb40390cf7b by @rultor: chore(deps): update dependency... * c9f79208563c3c5e38f499bc94c906e33310116f by @renovate[bot]: fix(deps): update dependency o... * e70d0dc4dba498b70ee2c4963ca9b85b8e73202f by @renovate[bot]: chore(deps): update dependency... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/51095-3282123495Low9/11/2025
0.14.3See #1302, release log: * a712cc6bb6162ac17627f799b9feba112bb6ed56 by @volodya-lombrozo: feat(#1304): disassembe/assemb... * 7537cd3c3dc44d7692d78e1554327011d2e75293 by @renovate[bot]: chore(deps): update dependency... * 509c86c85668a11d4cf1c1b2b2cf9fd7fae2c9fc by @renovate[bot]: fix(deps): update dependency o... * 3f49151d3ba509732e635fb12e3bff8fbabe9f9a by @rultor: feat(#1302): add Scala integra... * 5dd5a5f0cbfed288cd82b0c20cf77a0d17bdbbc5 by @volodya-lombrozo: feat(#1302): Add Scala inLow9/11/2025
0.14.2See #1282, release log: * 3c66ae003c7243b8e1081c688d05ed1a1bdc1151 by @volodya-lombrozo: fix(#1282): Prevent saving emp... * 5fe4ac455df364523eccbc3e72c1f8ab885e1084 by @volodya-lombrozo: chore(#1282): Disable xmir ver... * 9081c39c973505465b4045c357d7b26c63d1272b by @volodya-lombrozo: feat(#1277): Add integration t... * 75fe722f32d989ea3eb2b87dc8b655d2582bff95 by @yegor256: Merge branch 'master' of githu... * b94a12e7eac8e41e2cc7db89e8e54636d17163d9 by @yegor256: bash from env Released bLow9/9/2025
0.14.1See #1282, release log: * cba6be02fdd7f1270c5bb1fef661ab409ceb98f5 by @volodya-lombrozo: feat(#1288): Enable 'records' ... * 1114ce75fe438f560adc01b55cc02066b2ee9bba by @renovate[bot]: fix(deps): update dependency o... * 3202798c25ac4081f981e494f361310bc7ab010a by @renovate[bot]: chore(deps): update dependency... * b7a05c0e02864789756cb2c3e141b81cb0748115 by @renovate[bot]: chore(deps): update crate-ci/t... * c32715d78c3cbb4f03f1cc7ce4200ecc3c1ef970 by @volodya-lombrozo: feat(#1278): ImpleLow9/5/2025
0.14.0See #1274, release log: * 5c74040bfc34858602b7d9a4b028ced117b577ca by @volodya-lombrozo: feat(#1274): Add integration t... * 7c25727c1d2d2b804de6b216965369d767f0f5ae by @renovate[bot]: chore(deps): update crate-ci/t... * 96819f1e891427db624d30c57345b475c4cb9363 by @renovate[bot]: chore(deps): update crate-ci/t... * d4e8bf3b8e96157df7afba3fa52dd9b2306bccb9 by @volodya-lombrozo: feat(#1198): Update directives... * f7ec36baa4e8eca64c12aead81aa6d6654d015a0 by @volodya-lombrozo: refactor(#1267)Low9/1/2025
0.13.11See #1263, release log: * a9224a90c4305aae71883d272dfb990845d9c91e by @volodya-lombrozo: feat(#1263): Add support for m... * ab8398df286191bbea62f5d0cd78b44871a932f3 by @rultor: chore(deps): update dependency... * 204d80171c4e665513223ce2a25044cd374365c6 by @renovate[bot]: fix(deps): update dependency o... * 8dfbb138740be81dfc6c412a5b510414c62d3257 by @renovate[bot]: chore(deps): update dependency... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/50476-3213957176Low8/22/2025
0.13.10See #1257, release log: * 3ded82086c96ecda83c153d0998b3281dc8a26e2 by @rultor: fix(#1258): convert null signa... * 5086f0deb260d28a90b4bbf538a5bd0a2f645d05 by @rultor: chore(deps): update crate-ci/t... * 5924d856fa9cfca2eedd85031904f8f901b30c26 by @rultor: chore(deps): update actions/se... * 28a0bfaad202cde3e62d4ac3ca4c169ac3362d28 by @volodya-lombrozo: feat(#1258): Update local vari... * 78f6201fce7e88dedc78ed4ce37b2aa4000c5b08 by @volodya-lombrozo: feat(#1257): Replace Directive... * 01Low8/21/2025
0.13.9See #1251, release log: * d91037f65172596d4a835f61e4d20de0bb080f2c by @volodya-lombrozo: test(#1251): Add test for empt... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/50345-3195936099)Low8/18/2025
0.13.8See #1246, release log: * 936f6b0ff4efad89f8b9bc84b5cdbe346d306bd2 by @rultor: fix(#1246): convert null signa... * 300000d44aea8a3182d7880e8e6c7d0294d07e4d by @rultor: chore(deps): update dependency... * 2c955b70bcb3e0d07c4522d73327a8db6ca68434 by @renovate[bot]: fix(deps): update dependency o... * ed77e97de1bd866b71798622d9f1a207e010c77c by @renovate[bot]: chore(deps): update dependency... * fdf53b9a779cdee8a88d2fa9389d31593b28ad34 by @volodya-lombrozo: fix(#1246): Convert null signa... Low8/15/2025
0.13.7See #1233, release log: * 1b026413779a2f20c560669e823751206e904514 by @volodya-lombrozo: fix(#1233): Handle null values... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/50227-3187538547)Low8/14/2025
0.13.6See #1233, release log: * 591e4e871507a6c44529680cfa342a52ad16075c by @volodya-lombrozo: feat(#1239): Add support for J... * e8091364916231b4b83f34467abd583aac7adcc9 by @volodya-lombrozo: feat(#1236): Rename Signature ... * 6e15f0ab1b9ea44b2a95bcc0e6d80e65b1c8735b by @rultor: fix(#1235): add toString() met... * a094c1472e7e4cee546da71182e42d6cb9bbbd4a by @volodya-lombrozo: feat(#1235): Add toString() me... * 30451c26ba78507f32652c18dc5c547fbca1e18e by @github-actions[bot]: chore: new versiLow8/13/2025
0.13.5See #1233, release log: * 40d3eeeef6d6cd98c2e828ac4840b3e13fc2c25b by @volodya-lombrozo: feat(#1233): Add informative t... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/50227-3180139032)Low8/12/2025
0.13.4See #1225, release log: * a65f4f5f828caab39f37e1c494ee1a4e3de7d73d by @volodya-lombrozo: feat(#1227): Improve string re... * cafd12490d0929e6655dc6df3758e472800b09c3 by @volodya-lombrozo: feat(#1225): Preserve bytecode... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/50223-3178821834)Low8/12/2025
0.13.3See #1222, release log: * 137bc034f55a71c7b46d5c8d1b37bfd5db7118f1 by @renovate[bot]: chore(deps): update actions/ch... * 38cb150433e1c62c487861445ddc2bf240f5489f by @volodya-lombrozo: feat(#1222): Log input file ma... * a03be22588ba68949411e31e9b501fdc17cfb5d9 by @renovate[bot]: chore(deps): update dependency... * aa378baa6efb03fc0506e935d7d11fdfdceba9d9 by @renovate[bot]: chore(deps): update crate-ci/t... * a5e858209a9fc66fb99d33c364381b3c4dd16817 by @volodya-lombrozo: fix(#1145): RefactLow8/11/2025
0.13.2See #1215, release log: * 9db6bef2be88cb86d0b879ae9570f91d8f0a7318 by @volodya-lombrozo: feat(#1215): simplify frame op... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/49948-3164343376)Low8/7/2025
0.13.1See #1211, release log: * 109d5a6475647b5099ece5850789db3f8a86c1b7 by @volodya-lombrozo: feat(#1211): Add DirectivesFra... * b6db3eea7eb78eb5b7ecba8480903e830c7a2176 by @renovate[bot]: chore(deps): update actions/do... * a574274a4c5864197402f8ef212ee2eee5c98bcb by @rultor: fix(deps): update dependency o... * 01ca252310bd88a1af4132415a437e003ad25631 by @rultor: chore(deps): update crate-ci/t... * f3ce4b46509dbad75c0d0567b7c90e62e68ebd18 by @renovate[bot]: fix(deps): update dependency o... Low8/6/2025
0.13.0See #1205, release log: * fb00eea789834ffd5867c88f4fbfcc4a4147af69 by @volodya-lombrozo: feat(#1205): Add include/exclu... * 965567d74db6381d93a1ba8cab4f241ccbd27077 by @volodya-lombrozo: test(#1176): verify XMIR file ... * d4f77fd11a3f07bbffd550e5a513afec564afe3e by @renovate[bot]: fix(deps): update dependency o... * 42131895d3a0d227a176b4e11bbd888197cc6072 by @renovate[bot]: chore(deps): update dependency... * e88bf8d8cb55069248dcb3c1e5bca71675160c5e by @volodya-lombrozo: fix(#1175): filLow8/4/2025
0.12.0See #1191, release log: * 2a8fc89ea67458c23c99bbf9a8838b10a34caf13 by @volodya-lombrozo: refactor(#1171): Simplify rand... * 6944dba80e54b8b0a8ac050789e1fa97f7fca791 by @volodya-lombrozo: refactor(#1191): Replace label... * fd31808c3f705bfee72c3130248031f543e2e21f by @volodya-lombrozo: feat(#1172): replace base attr... * 610676dd22ba454400c963613b5361509fd737cb by @volodya-lombrozo: feat(#1126): Remove redundant ... * 97c8b5a45563f327bd471c4cf040e9c6161c237c by @rultor: fix(deps): update dLow7/21/2025
0.11.4See #1177, release log: * cce46782e5430393842675c964797d6dba061ff3 by @volodya-lombrozo: refactor(#1177): extract metho... * a096283306d8673318e3ebc045011eef075d9d42 by @volodya-lombrozo: feat(#1177): store method name... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/49467-3061329008)Low7/11/2025
0.11.3See #1163, release log: * 17af829c8740c6d7da730ab0751ff0499ee456ab by @volodya-lombrozo: feat(#1163): Use RandName for ... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/49315-3045191641)Low7/7/2025
0.11.2See #1160, release log: * 7bb6b06b877aca692c866fd75a42778a7aaf6350 by @volodya-lombrozo: feat(#1160): Add named directi... * 37bc9a531c0c9eba65afaa9509d3030647ce8361 by @github-actions[bot]: chore: new version in README Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/49312-3044474802)Low7/7/2025
0.11.1See #1156, release log: * 052c7874fafbd5bbf0d7d51c3dfe63321f83e616 by @rultor: feat(#1156): add random name g... * 4d837c765e299ae245526a01e6afe320a5013c61 by @renovate[bot]: chore(deps): update dependency... * cfe9ef0024180a2efb215aaabd9e6b282872cb25 by @volodya-lombrozo: feat(#1156): Add random name g... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/49307-3043661838)Low7/7/2025
0.11.0See #1130, release log: * d36cb30756c8deba9d73f4cb719f8cc75fa6038d by @volodya-lombrozo: refactor(#1135): Improve class... * d8700522150941a15027480d165e204a638da5fd by @renovate[bot]: fix(deps): update dependency n... * 118207b5b8bac049b4e3127415db9b3a1f57b448 by @volodya-lombrozo: feat(#1144): enable XMIR verif... * 6b4eba8817de364a73aefe58b734e448ef2a4a9d by @volodya-lombrozo: feat(#1143): Replace 'as' attr... * 84a0bcc7f4e97a2df3976400b9c2a98ac1e181ff by @renovate[bot]: chore(deps): upLow7/4/2025
0.10.0See #1076, release log: * e431f19c5f638b385ac56da7f3f06cd3fbd21d32 by @volodya-lombrozo: refactor(#1076): Rename Progra... Released by Rultor 2.0-SNAPSHOT, see [build log](https://www.rultor.com/t/48042-2827222464)Low4/24/2025
0.9.0See #1064, release log: * 77698eff7c8694fcb281aecb6214d9997d4d9e63 by @volodya-lombrozo: refactor(#1062): Simplify para... * 1c4809be105ce0b5a7b68df470ea61e631b648bf by @volodya-lombrozo: chore(#1064): Update license h... * cdb778020b9edcbc6f485d279e2813f2e5447382 by @volodya-lombrozo: feat(#1064): Add NumberedName ... * 356de3468770db12e748531b971bdf927f1869b2 by @volodya-lombrozo: feat(#1061): Update integer re... * cdd1e7d37e9f8abd205dab83f881a2cb137d78e8 by @yegor256: https where it waLow4/10/2025
0.8.3See #1051, release log: * 0b0be2be122e511b0e0b8fb6f32835e8a7cc3eaf by @volodya-lombrozo: feat(#1051): Add Together depe... * 6c4e161709568c133c1d0ea8c733ae194666a9f6 by @volodya-lombrozo: Merge branch 'master' into 105... * 8448a4a2eb06e0aaa528270a4e79bc032c5afe9b by @volodya-lombrozo: fix(#1050): Update `eo` depend... * 379ca8519172c514f266d5d6c0683f7f7caa5421 by @renovate[bot]: chore(deps): update dependency... * a8bebc8d63d4629835c72f0194323ee43dfed794 by @yegor256: cleanup Released byLow4/1/2025
0.8.2See #1044, release log: * 1c2cf37b09adcde465ff735301580a15c0d7dfb7 by @rultor: Merge branch '__rultor' * 5bf6c20b63b5b0e3d0e6163a83bcf687a3f2cdd7 by @volodya-lombrozo: chore:(#909): update LICENSE f... * 16b0e01e6133be7e5d76d0703793c0ec5e6199cd by @rultor: Merge branch '__rultor' * 7add88aacb00083c8ec7948b1c0fb4a92a77953f by @volodya-lombrozo: fix(#909): fix merge conflicts * 6fd656100df2847b5364d233837f74f5878e26bb by @volodya-lombrozo: Merge branch 'master' into 633... * b3679a4c8156959Low3/21/2025
0.8.1See #1039, release log: * eb9a413d665ea56fb6902d805057123d7170f957 by @rultor: Merge branch '__rultor' * 41bc2c541b2c0b69a9f6a401bda84b93782a86b2 by @volodya-lombrozo: fix(#543): Disable Bytecode Ve... * 585bf230aa07024e09d4f754214eea6e58bedc91 by @volodya-lombrozo: fix(#543): Enable verification... * e983df32c0e4515627478f69fbe874780f008d6d by @rultor: Merge branch '__rultor' * 0e30f22b94e9595bc8ae4bce03991532385d8807 by @volodya-lombrozo: refactor(#93): Remove unused i... * 61e911fde630Low3/18/2025
0.8.0See #1008, release log: * 488f873b37b426d6badde727ca2f84180329ef39 by @volodya-lombrozo: feat(#1017): add jmh-benchmark... * 3bd67efe6e5ead89546ea0ac82bf2160b49b9959 by @rultor: Merge branch '__rultor' * 597a53ba807dce2b7b46d4d1651b95a622741cc3 by @volodya-lombrozo: feat(#1017): remove action - w... * 6ab50500d0b5ecac429fdfb82de3ab5661988dea by @volodya-lombrozo: Merge branch 'master' of githu... * d1b6045fcd1375bd3564bbf96cf9594a4a5d93c3 by @volodya-lombrozo: chore: add 'jmh-maven-plugin'Low2/28/2025
0.7.5See #979, release log: * 729316063a8701e9aa5d7b4784a3c4e29917c05c by @volodya-lombrozo: feat(#936): remove all the cla... * 0099c410540b5c4b3d3cbd68f62c16b175844ba8 by @volodya-lombrozo: feat(#936): remove all the men... * 83116ab61b58b67e08503f98bb5de9c6a0398b2a by @volodya-lombrozo: feat(#936): remove unrolling f... * b1e6244bb4f380fd98a85fe5ddebfadf8da4303f by @volodya-lombrozo: feat(#936): remove unrolling f... * d3c30a1df724abb55f3d4281a3e99418e9294460 by @volodya-lombrozo: feat(#936)Low2/12/2025
0.7.4See #993, release log: * 66ad805fc4a6ab9f75efb13fb1ffb61486f56b90 by @volodya-lombrozo: Merge pull request #995 from v... * 83c6fce5b967838042010a4c7dae450b5704ea38 by @volodya-lombrozo: fix: add new line to yamllint.... * fdb38d8c74070c9e627b6c5ec4bf9c6be6701179 by @volodya-lombrozo: fix: maven.test.yml spaces * f3f58e90c453ea75a2b6e8a6e345e7806762e3d4 by @volodya-lombrozo: chore: add .yamlint.yaml confi... * 987f4f4b5de66722c1ab19df54839818670824f3 by @volodya-lombrozo: fix: try to fix rLow2/11/2025
0.7.3See #977, release log: * 6ba3e7a383852723a5e0df3b11a10108ac7f4bbf by @renovate[bot]: chore(deps): update dependency... * d23d68560e107ff6a1ba0704aecd4ba087bfba71 by @rultor: Merge branch '__rultor' * ae6e86a9fc490ad7054f529882e873d052bfdb46 by @volodya-lombrozo: feat(#977): fix all the code o... * 8ec28a90fe2a9f453ab0ae0368c99c6ae86bd81f by @volodya-lombrozo: feat(#977): use org.eolang.tru... * 80107768551ab5af3b52ac5806657e1879d095b5 by @renovate[bot]: chore(deps): update dependency... *Low1/29/2025
0.7.2See #967, release log: * ba6ecf90f95c450a51f1dca23a560827f537a5c8 by @renovate[bot]: fix(deps): update dependency o... * aa9c2659f4cd313cb92fdb01e6601b3ca054e49b by @renovate[bot]: chore(deps): update dependency... * 67fa748c52d839477e1a92a8fd82fb592cbd5dd8 by @volodya-lombrozo: feat(#967): fix all the code o... * 8c47881137aafb49d9a88054a8915820ae5b4bd1 by @volodya-lombrozo: feat(#967): fix the bug * 693b25a16dda5b769cf8c170d6af82684ffe3c43 by @volodya-lombrozo: feat(#967): add one more tLow1/20/2025
0.7.1See #962, release log: * 471bd9cfd1e0f70aeebb4cd1967818286a4780b2 by @rultor: Merge branch '__rultor' * 43cc3874fbdda8375d845b1c6146752197ce4a2f by @volodya-lombrozo: Update .rultor.yml Set large `... * 6f75eb6f4fc96b5651619fb76e8ac7979faff666 by @volodya-lombrozo: feat(#946): disable XMIR verif... * a584dbd592c27334c43265b0dcdcdb4db075d2fa by @volodya-lombrozo: feat(#946): add docs about 'xm... * 3c0edc03041b8e973ad6246b56b42f0cf70d0e1a by @renovate[bot]: fix(deps): update dependency o...Low1/15/2025
0.7.0See #947, release log: * 3372b25d72b689a86ec2f5ede092136d0b789787 by @volodya-lombrozo: feat(#947): fix all the code o... * 4fea22f2e605a709037225be96f796978e6f2982 by @volodya-lombrozo: feat(#947): disable bytecode v... * cb5cc1b6a814354e00d9079addddd303a6a695d3 by @volodya-lombrozo: feat(#947): add more specific ... * 7e277ed4e5e10b8aa4ef1a3fc813d9f228e521ff by @volodya-lombrozo: feat(#947): remove xmir verifi... * b48d7fc6d20dbdcea26339460f7d7008a83bbaec by @volodya-lombrozo: feat(#947)Low12/28/2024

Dependencies & License Audit

Loading dependencies...

Similar Packages

loopyA code generator for array-based code on CPUs and GPUsv2025.2
Awesome-AI-resources💻 Discover essential AI-driven tools, frameworks, and resources to enhance your development process and streamline your projects.main@2026-06-07
almideA functional programming language optimized for LLM code generation. Compiles to Rust and WebAssembly.v0.25.0
MoLi⚙️ Simplify your projects with MoLi, a fast and flexible Molang interpreter in Java, designed for easy integration and high performance.main@2026-06-06
slot-jsx-pragma🎰 Enable declarative slottable components with a custom JSX pragma for seamless React integration and enhanced performance.main@2026-06-06

More in Uncategorized

llama.cppLLM inference in C/C++
symphonySymphony turns project work into isolated, autonomous implementation runs, allowing teams to manage work instead of supervising coding agents.
modal-clientSDK libraries for Modal