{"id":16375005,"url":"https://github.com/moderocky/remix","last_synced_at":"2025-10-27T15:05:40.441Z","repository":{"id":103957312,"uuid":"456641884","full_name":"Moderocky/Remix","owner":"Moderocky","description":"A process-oriented JVM language.","archived":false,"fork":false,"pushed_at":"2022-05-01T17:15:46.000Z","size":155,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-09T00:06:43.281Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Moderocky.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-07T19:11:52.000Z","updated_at":"2023-05-29T07:36:58.000Z","dependencies_parsed_at":"2023-11-23T13:00:20.869Z","dependency_job_id":null,"html_url":"https://github.com/Moderocky/Remix","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Moderocky/Remix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moderocky%2FRemix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moderocky%2FRemix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moderocky%2FRemix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moderocky%2FRemix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Moderocky","download_url":"https://codeload.github.com/Moderocky/Remix/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moderocky%2FRemix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000745,"owners_count":26082879,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11T03:19:05.514Z","updated_at":"2025-10-09T00:08:51.952Z","avatar_url":"https://github.com/Moderocky.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"RMX\n=====\n\n### Opus #16\n\nA lightweight JVM language designed for frameworks and small-scale serverside applications.\n\n## Description\n\nRMX (Remix) is a JVM language, but is designed to have minimal interaction with other JVM languages or resources.\nIt is designed for writing command-line or background programs that handle data. As a JVM language, Remix programs can\nbe deployed on any Java-supporting machine or operating system and can be run through Java's packaging tools.\n\n## Core Features\n\nBelow are details for some of the language's most important features.\nThis is not an exhaustive list.\n\n### 1. Safety\n\nUnlike in other languages, errors are not failure conditions for a Remix program.\nThe program is designed to continue past an undetected error where possible, although programs can opt to halt at\ncritical error points.\n\nRemix does not feature a `null` empty value.\nAll Remix objects act like Java primitives and can be allocated in a memory-zero 'default' state. This prevents\nnull-pointer exceptions from ever occurring and allows programs to continue even in an unexpected error state.\n\n```rmx\nhouse house {}\nsystem.Print {\n    house.GetName\n}\n```\n\nRemix has no global state.\nThere is no equivalent for the `static` modifier in Remix. All runnable code exists in objects, which removes a common\ncause for memory leaks and allows more adaptable design.\n\n### 2. Fluidity\n\nThe RMX code-style is fluid, giving developers the freedom to adopt any structure or style.\nInside an instruction area (e.g. a function body) all statements map directly to bytecode operations.\n\nThis allows advanced developers to write more efficient code that would be unachievable in other JVM languages.\n\n```rmx\nsystem dup.Print { \"hello\" }.Print {\"there\" }\nexit {\n    number x { 100 }\n    x + 10\n}\n\nif var = true {\n}\nvar if = true {\n}\nvar = true if {\n}\n```\n\nPlease note this is not available for all branches: the `while` branch uses the keyword as a head marker.\n\n### 3. Configuration\n\nAll RMX operators are backed by special operator functions (using the `oper` keyword.)\nThese operators can be overwritten with type-specific versions.\nBinary operators can have multiple overloaded versions for specific arguments.\n\n| Symbol   | Function               | Description                            |\n|----------|------------------------|----------------------------------------|\n| `+`      | `Add object object`    | Defines the addition behaviour.        |\n| `-`      | `Sub object object`    | Defines the subtraction behaviour.     |\n| `*`      | `Mul object object`    | Defines the multiplication behaviour.  |\n| `/`      | `Div object object`    | Defines the division behaviour.        |\n| `=`      | `Equals object object` | Defines the equality relation.         |\n| `\u003c\u003c`     | `Push object object`   | Defines the push (l-shift) relation.   |\n| `\u003e\u003e`     | `Pull object object`   | Defines the pull (r-shift) relation.   |\n| `\u0026`      | `And object object`    | Defines the and relation.              |\n| `\u0026#124;` | `Or object object`     | Defines the or relation.               |\n| `?`      | `Bool`                 | Defines the zero-value of this object. |\n\n### 4. Storage\n\nRMX programs are designed to be easy to store and load. All objects can be converted to a binary format for easy saving\nand resuming of a program state.\nThis is useful for applications that need to recover data and resume their progress once restarted.\n\n### 5. Power\n\nDevelopers have access to low-level tools that are inaccessible in other JVM languages.\n\nThese are designed to allow advanced developers to write more efficient code by reducing the need for variable\nassignments, repeat evaluation, etc.\n\nAt the compiler stage:\n\n| Operation | Description                                                                    | Example         |\n|-----------|--------------------------------------------------------------------------------|-----------------|\n| Duplicate | Copy the previous stack value. (Useful for duplicating arguments.)             | `dup`           |\n| Pop       | Discard the previous stack value. (Useful for discarding unwanted results.)    | `pop`           |\n| Swap      | Swap the order of the previous two values. (Useful for re-ordering arguments.) | `swap`          |\n\nAt the virtual machine stage:\n\n| Operation  | Description                                                          | Example          |\n|------------|----------------------------------------------------------------------|------------------|\n| Allocation | Directly allocate zero-instance objects, skipping their constructor. | `alloc integer`  |\n| Cloning    | Create direct memory clones of any object.                           | `object.Clone`   |\n| Pointers   | Access/retrieve native memory pointers of an object.                 | `object.Pointer` |\n| Freezing   | Mark an object as frozen, preventing it being altered.               | `object.Freeze`  |\n\n## Keywords\n\nA list of control keywords available in the language.\nRMX keywords are not reserved words, but will always take preference over other usages in valid situations.\nFor example, the first `house` usage in `this house house { }` would be identified as a type (for a variable assignment)\nbut if it were replaced with `cast` (see `this cast house { }`) then the `cast` keyword would take priority.\n\n| Keyword | Description                                              |\n|---------|----------------------------------------------------------|\n| `type`  | Declare a new object-type.                               |\n| `is`    | Declare or check for type inheritance.                   |\n| `trans` | Declare a field as being transient.                      |\n| `func`  | Begin a function.                                        |\n| `oper`  | Begin an operator.                                       |\n| `if`    | Run a branch conditionally.                              |\n| `while` | Run a repeating branch conditionally.                    |\n| `break` | Jump to the end of the current branch.                   |\n| `new`   | Create a new object. Can be overloaded like an operator. |\n| `alloc` | Create a zero-instance of an object.                     |\n| `cast`  | Convert an object to another (compatible) type.          |\n| `dup`   | Duplicate an object reference.                           |\n| `pop`   | Discard an object reference.                             |\n| `swap`  | Swap the most recent two object references.              |\n| `exit`  | Exit the current function.                               |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoderocky%2Fremix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoderocky%2Fremix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoderocky%2Fremix/lists"}