Generate source code & bytecode from an abstract representation. Bytecode generation framework.
Kores is a framework which provide to developers a way to construct bytecode and source from a common structure.
Kores is now using GitLab Packages to distribute its binary files instead of jitpack.io (because jitpack still not support all JDK versions and sometimes jitpack.yml
simply do not work).
Then configure your build.gradle
as the following:
repositories {
mavenCentral()
maven {
url "https://gitlab.com/api/v4/projects/28895078/packages/maven"
}
maven {
url "https://gitlab.com/api/v4/projects/28894889/packages/maven"
}
}
dependencies {
implementation "com.koresframework:kores:4.2.1.base" // Replace the version with the latest or a preferred one
}
This is only needed because GitHub still not support unauthenticated artifact access.
CodeAPI 2 (old name):
All my projects is already updated.
CodeAPI 3 (old name):
All my projects have a Kores 4 beta version.
Kores 4 (beta):
In the beginning of Kores, performance was one of the priorities, but when I finished version 2, I noticed that the performance never was a problem, I always try to improve performance by looking the performance results (using JMH), the biggest performance problem is not with the project, but with JVM itself: classloading takes too much time.
Note for contributors: Performance improvement pull request will be always strictly analyzed, some optimizations that I thought about doing, was not needed because JVM was able to solve the problems in the 3rd-4th time execution of the code.
In Kores 4, some interfaces was changed to concrete final classes (design decision…) to maintain consistency.
The main difference between Kores 4 and older versions is that Kores 4 is written with JVM in mind, in older versions, you have the free to put whathever in anywhere, example, a println
method invocation in class
body or outside of the class, in Kores 4 it is not possible.
Coming soon
BytecodeWriter
SourceWriter
BytecodeReader
Kores-Base
systems (may be interdependent):
Structure (aka base
)
Builder
Factory
Conversion
Inspection (only inspect
package)
Generator
Validator
Misc
utility classes
, modify.visit package
, helper
classes, type inference, etc…