Mojang/DataFixerUpper
Mojang/DataFixerUpper has 1,321 GitHub stars and 150 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 07:58 UTC. Last push 2026-10-09.
A set of utilities designed for incremental building, merging and optimization of data transformations.
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalDataFixerUpper

A set of utilities designed for incremental building, merging, and optimization of data transformations. Created for converting the game data for Minecraft: Java Edition between different versions of the game.
Gradle
First include our repository:
maven {
url "https://libraries.minecraft.net"
}
And then use this library (change (the latest version) to the latest version!):
compile 'com.mojang:datafixerupper:(the latest version)'
Maven
First include our repository:
<repository>
<id>minecraft-libraries</id>
<name>Minecraft Libraries</name>
<url>https://libraries.minecraft.net</url>
</repository>
And then use this library (change (the latest version) to the latest version!):
<dependency>
<groupId>com.mojang</groupId>
<artifactId>datafixerupper</artifactId>
<version>(the latest version)</version>
</dependency>
Usage
Core data types are Schema and DataFix. Schema is a set of type definitions specifying what data types the system is interested in and how they relate to each other. DataFix is a rewrite rule between types (see references below). DataFixerBuilder takes a list of schemas and fixes converting between those schemas, and creates an optimized converter between the types describes in those schemas. DSL is a class with building blocks used to create schemas and fixes.
Contributing
Contributions are welcome!
Most contributions will require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.
References
Optimizing functions
- Cunha, A., & Pinto, J. S. (2005). Point-free program transformation
- Lämmel, R., Visser, E., & Visser, J. (2002). The essence of strategic programming
How to handle recursive types
- Cunha, A., & Pacheco, H. (2011). Algebraic specialization of generic functions for recursive types
- Yakushev, A. R., Holdermans, S., Löh, A., & Jeuring, J. (2009, August). Generic programming with fixed points for mutually recursive datatypes
- Magalhães, J. P., & Löh, A. (2012). A formal comparison of approaches to datatype-generic programming
Optics
- Pickering, M., Gibbons, J., & Wu, N. (2017). Profunctor Optics: Modular Data Accessors
- Pacheco, H., & Cunha, A. (2010, June). Generic point-free lenses
Tying it together
- Cunha, A., Oliveira, J. N., & Visser, J. (2006, August). Type-safe two-level data transformation
- Cunha, A., & Visser, J. (2011). Transformation of structure-shy programs with application to XPath queries and strategic functions
- Pacheco, H., & Cunha, A. (2011, January). Calculating with lenses: optimising bidirectional transformations
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
560,819 starspublic-apis/public-apis
A collective list of free APIs
497,054 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
441,335 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,154 stars