{"id":16145614,"url":"https://github.com/falsepattern/jfunge","last_synced_at":"2025-04-06T20:24:03.826Z","repository":{"id":61546808,"uuid":"499893821","full_name":"FalsePattern/JFunge","owner":"FalsePattern","description":"A standard-conforming Funge-98 interpreter.","archived":false,"fork":false,"pushed_at":"2023-02-12T23:48:40.000Z","size":379,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-13T02:28:38.083Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FalsePattern.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-06-04T17:30:39.000Z","updated_at":"2022-10-16T11:40:55.000Z","dependencies_parsed_at":"2023-01-30T17:00:46.969Z","dependency_job_id":null,"html_url":"https://github.com/FalsePattern/JFunge","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FalsePattern%2FJFunge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FalsePattern%2FJFunge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FalsePattern%2FJFunge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FalsePattern%2FJFunge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FalsePattern","download_url":"https://codeload.github.com/FalsePattern/JFunge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247544786,"owners_count":20956055,"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":[],"created_at":"2024-10-10T00:16:59.821Z","updated_at":"2025-04-06T20:24:03.797Z","avatar_url":"https://github.com/FalsePattern.png","language":"Java","readme":"# JFunge\n\nA standard-conforming Funge-98 interpreter.\n\n### Usage\n```\nusage: jfunge [--env] [-f \u003cfile\u003e | --help | --license | --version]  [-i \u003cfile\u003e]\n       [--maxiter \u003citerations\u003e] [-o \u003cfile\u003e] [--perl] [--sock] [--syscall] [-t]\n       [--trefunge]\nJFunge, a Funge98 interpeter for java.\n    --env                    Allows the interpreter to access the environment\n                             variables of the host system.\n -f,--file \u003cfile\u003e            The file to load into the interpreter at the origin\n                             on startup.\n    --help                   Displays this help page\n -i,--readperm \u003cfile\u003e        Enables read access to the specified file or\n                             directory (i instruction). Specify / to allow read\n                             access to every file on the system (dangerous). Can\n                             specify multiple files/folders.\n    --license                Prints the license of the program.\n    --maxiter \u003citerations\u003e   The maximum number of iterations the program can\n                             run for. Anything less than 1 will run until the\n                             program terminates by itself. Default is unlimited.\n -o,--writeperm \u003cfile\u003e       Enables write access to the specified file or\n                             directory (o instruction). Specify / to allow write\n                             access to every file on the system (dangerous). Can\n                             specify multiple files/folders.\n    --perl                   Enable the PERL fingerprint. This requires the\n                             working directory of the interpreter to be\n                             writable, and is also an arbitrary code execution\n                             risk.\n    --sock                   Enable the SOCK and SCKE fingerprints. This allows\n                             the program to open a socket and listen for\n                             connections, as well as connect to external hosts.\n                             This is a very dangerous permission to grant, it\n                             can potentially allow remote code execution.\n    --syscall                Enables the syscall feature (= instruction). This\n                             is a very dangerous permission to grant, it can\n                             call any arbitrary program on your system.\n -t,--concurrent             Enables the Concurrent Funge extension (t\n                             instruction). Buggy programs can potentially\n                             forkbomb the interpreter.\n    --trefunge               Enable 3D (Trefunge) mode. By default, the\n                             interpreter emulates 2D Befunge for compatibility.\n    --version                Prints the current program version, along with the\n                             handprint and version given by befunge's y\n                             instruction.\n```\n\n### Compatibility\n\nThe interpreter's handprint is `0x74708578` (\"JFUN\")\n\nThe version number given to befunge is `major * 256 * 256 + minor * 256 + patch`, where major, minor, patch are the 3\nprimary version numbers in the standard semver format.\n\nThe interpreter supports the following Funge-98 specification extensions:\n- The entire Befunge base syntax (tested against Mycology and Mycorand)\n- Buffered IO\n- File IO with `i` and `o`\n- System calls with `=` (paradigm 1, `system()`-like)\n- Concurrency (pseudo-multithreading) with `t`\n- Optional Trefunge mode (experimental)\n\nAdditionally, the following fingerprints are currently supported (more to come):\n- [3DSP](https://rcfunge98.com/rcsfingers.html#3DSP)\n- [BASE](https://rcfunge98.com/rcsfingers.html#BASE)\n- [CPLI](https://rcfunge98.com/rcsfingers.html#CPLI)\n- [DATE](https://rcfunge98.com/rcsfingers.html#DATE)\n- [DIRF](https://rcfunge98.com/rcsfingers.html#DIRF)\n- [EVAR](https://rcfunge98.com/rcsfingers.html#EVAR)\n- [FING](https://rcfunge98.com/rcsfingers.html#FING)\n- [FIXP](https://rcfunge98.com/rcsfingers.html#FIXP)\n- [FPDP](https://rcfunge98.com/rcsfingers.html#FPDP)\n- [FPSP](https://rcfunge98.com/rcsfingers.html#FPSP)\n- [HRTI](./docs/catseye/library/HRTI.markdown)\n- [INDV](https://rcfunge98.com/rcsfingers.html#INDV)\n- [JSTR](https://web.archive.org/web/20070525220700/http://www.jess2.net:80/code/funge/myexts.txt)\n- [MODE](./docs/catseye/library/MODE.markdown)\n- [MODU](./docs/catseye/library/MODU.markdown)\n- [NULL](./docs/catseye/library/NULL.markdown)\n- [ORTH](./docs/catseye/library/ORTH.markdown)\n- [PERL](./docs/catseye/library/PERL.markdown) (Disabled by default, needs command line flag)\n- [REFC](./docs/catseye/library/REFC.markdown)\n- [ROMA](./docs/catseye/library/ROMA.markdown)\n- [SOCK](https://rcfunge98.com/rcsfingers.html#SOCK)\n- [SCKE](https://www.rcfunge98.com/rcfunge2_manual.html#SCKE)\n- [STRN](https://rcfunge98.com/rcsfingers.html#STRN)\n- [TOYS](./docs/catseye/library/TOYS.markdown)\n- [TURT](./docs/catseye/library/TURT.markdown) (Broken, disabled in source code, will be fixed in the future)\n\n### Version Release Checklist\n- Update the version number inside the [pom](./pom.xml)\n- Update the version string and FUNGE_VERSION inside [Globals](./src/main/java/com/falsepattern/jfunge/Globals.java)\n- Create a new git tag with the same version number, and push it to master\n- Never push tags outside master!\n\n### References\n\n- [Esolang wiki article of Funge-98](https://esolangs.org/wiki/Funge-98)\n- [Official funge98 language specification](./docs/catseye/doc/funge98.markdown)\n- [Mycology Befunge-98 test suite](https://github.com/Deewiant/Mycology)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalsepattern%2Fjfunge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffalsepattern%2Fjfunge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffalsepattern%2Fjfunge/lists"}