{"id":18163849,"url":"https://github.com/louisjenkinscs/llvm-jvm","last_synced_at":"2025-06-26T21:34:30.015Z","repository":{"id":63666992,"uuid":"71675870","full_name":"LouisJenkinsCS/LLVM-JVM","owner":"LouisJenkinsCS","description":"[W.I.P] A Just-In-Time Java Virtual Machine written in Haskell","archived":false,"fork":false,"pushed_at":"2021-08-23T19:06:23.000Z","size":50154,"stargazers_count":21,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-08T20:53:13.124Z","etag":null,"topics":["bytecode","educational","haskell","interpreter","java","java-bytecode","jvm","language","monad","monadic","scala","virtual-machine"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LouisJenkinsCS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-23T01:51:58.000Z","updated_at":"2024-11-22T19:54:09.000Z","dependencies_parsed_at":"2022-11-23T14:48:39.334Z","dependency_job_id":null,"html_url":"https://github.com/LouisJenkinsCS/LLVM-JVM","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LouisJenkinsCS/LLVM-JVM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisJenkinsCS%2FLLVM-JVM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisJenkinsCS%2FLLVM-JVM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisJenkinsCS%2FLLVM-JVM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisJenkinsCS%2FLLVM-JVM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LouisJenkinsCS","download_url":"https://codeload.github.com/LouisJenkinsCS/LLVM-JVM/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisJenkinsCS%2FLLVM-JVM/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262145203,"owners_count":23265892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bytecode","educational","haskell","interpreter","java","java-bytecode","jvm","language","monad","monadic","scala","virtual-machine"],"created_at":"2024-11-02T11:06:19.967Z","updated_at":"2025-06-26T21:34:29.986Z","avatar_url":"https://github.com/LouisJenkinsCS.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LLVM-JVM\n\n**Code for Functional Bytecode Interpreter (Proof-of-Concept) has been moved here: https://github.com/LouisJenkinsCS/Functional-JVM-Bytecode-Interpreter**\n\nLLVM-JVM is an attempt at creating a Java Virtual Machine with Just-In-Time compilation\nthat uses LLVM as the backend, similar to [Azul System's](https://www.azul.com/called-new-jit-compiler-falcon/).\nThis project, however, is an educational one and likely will never be production-ready.\nThis project has been funded by Bloomsburg University's Professional Experience Grant (PEG).\n\n## Note\n\n\n**Warning:** The code is a complete and utter mess! You've been warned!\n\nLLVM-JVM uses a ripped and modified version of [MateVM](https://github.com/MateVM/MateVM)'s runtime, while\nsupplying its own frontend to LLVM. As such, everything contained in the 'MateVMRuntime'\nfolder is code that belongs to the original authors, and I do not take credit for anything\nother than the modest changes I make, if any.\n\n### Why not just fork the MateVM project?\n\nThe MateVM project has been inactive for ~5 years, and considering that I would need to\nstrip a lot of it away, such as Hoopl and Harpy, I would just take the best parts of\nthem and give proper attribution. This not only saves me considerable time, which\nis something I have very little of, but also allows me to have access to the issue-tracker\nas well as other things.\n\n## Progress\n\nNote: the criteria for progress is bars minimum, such as basic integer arithmetic and if-else statements. If it is checked it does not mean support for all of it, just that the ground work is done and can easily be extended on.\n\n- [X] Basic Arithmetic\n  - [X] Integer\n  - [ ] Float\n  - [ ] Double\n  - [ ] Long\n- [X] Basic Control Flow\n  - [X] Loops\n  - [X] Conditionals\n- [X] LLVM optimization passes\n- [X] Global Variables\n  - [X] Static Fields\n  - [ ] Instance Fields\n- [ ] Dynamic ClassLoading\n  - [ ] JIT at Runtime\n- [ ] Garbage Collection\n  - [ ] Boehms\n\n## Building\n\n**Requirements:**\n1. LLVM w/ llvm-config\n2. Haskell\n3. Java7+ (for GUI)\n\n\nTo build, run 'cabal install' and 'ghc Main.hs -o Main.exe', then 'java -jar GUI/llvm-jvm-frontend.jar'\nif you desire the GUI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouisjenkinscs%2Fllvm-jvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flouisjenkinscs%2Fllvm-jvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flouisjenkinscs%2Fllvm-jvm/lists"}