MCPcopy Index your code
hub / github.com/QuiltMC/chasm

github.com/QuiltMC/chasm @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
759 symbols 2,267 edges 124 files 200 documented · 26%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

NOTE: This project is still in its early development. There's guaranteed bugs and missing functionality.

Chasm - Collision Handling ASM

What is Chasm?

Chasm is a Java bytecode transformation tool. In its base functionality, it's similar to ASM. However, ASM is intended for single programs transforming some bytecode, whereas the goal of Chasm is to allow multiple users to transform the same code. This is useful in modding Java based games, where multiple mods might want to change the same code.

Why use Chasm?

There are other options for transforming bytecode. Two popular ones are Mixins and access-wideners. While they both perform well in their respective tasks, they are both limiting: Access wideners do one thing only and Mixin tries its best to be safe, preventing many useful transformations like changing control flow.

Chasm aims to provide the full power of ASM without restrictions. This means that using Chasm directly might be tricky, but the goal of Chasm is to allow reimplementing Mixin and access wideners on top of Chasm.

This greatly simplifies the toolchain, since only one bytecode transformation library needs to be applied. Additionally, if Mixin and AW are insufficient, people can implement another "frontend" for Chasm without requiring special toolchain support.

Extension points exported contracts — how you extend this code

Context (Interface)
The context needed for chasm to function: information about classes (superclass, type, etc) cacheable [4 implementers]
chasm/src/main/java/org/quiltmc/chasm/api/util/Context.java
Resolver (Interface)
A helper for resolving which node chassembly references refer to. [2 implementers]
chassembly/src/main/java/org/quiltmc/chasm/lang/api/eval/Resolver.java
Transformer (Interface)
Bulk-instantiates Transformations of classes. Transformers also provide a String ID for use [3 implementers]
chasm/src/main/java/org/quiltmc/chasm/api/Transformer.java
Evaluator (Interface)
Helper for evaluating (reducing) nodes. [1 implementers]
chassembly/src/main/java/org/quiltmc/chasm/lang/api/eval/Evaluator.java
Transformation (Interface)
A Transformation of a #getTarget() target using specified #getSources() sources. [2 implementers]
chasm/src/main/java/org/quiltmc/chasm/api/Transformation.java
EmptyInterface (Interface)
(no doc)
chasm/src/testData/java/empty/EmptyInterface.java
AnnotationVisitorFactory (Interface)
(no doc)
chasm/src/main/java/org/quiltmc/chasm/internal/tree/reader/AnnotationNodeReader.java

Core symbols most depended-on inside this repo

put
called by 199
chasm/src/main/java/org/quiltmc/chasm/internal/tree/LazyMap.java
getValue
called by 142
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/ValueNode.java
literal
called by 116
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/Ast.java
add
called by 103
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/ListNode.java
getAsString
called by 75
chasm/src/main/java/org/quiltmc/chasm/internal/util/NodeUtils.java
map
called by 60
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/Ast.java
build
called by 57
chassembly/src/main/java/org/quiltmc/chasm/lang/api/eval/Evaluator.java
put
called by 56
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/MapNode.java

Shape

Method 629
Class 114
Interface 9
Enum 7

Languages

Java100%

Modules by API surface

chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/ChasmMethodVisitor.java42 symbols
chasm/src/test/java/org/quiltmc/chasm/TransformerSorterTests.java25 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/util/NodeUtils.java23 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/metadata/PathMetadata.java21 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/BinaryNode.java19 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/Ast.java19 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/TransformationSorter.java19 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/internal/render/Renderer.java18 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/ChasmClassVisitor.java18 symbols
chasm/src/main/java/org/quiltmc/chasm/internal/asm/visitor/LocalInterpreter.java17 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/internal/eval/EvaluatorImpl.java16 symbols
chassembly/src/main/java/org/quiltmc/chasm/lang/api/ast/UnaryNode.java16 symbols

For agents

$ claude mcp add chasm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact