{"id":18994939,"url":"https://github.com/jweinst1/fire","last_synced_at":"2025-07-10T10:34:04.006Z","repository":{"id":97723089,"uuid":"106609604","full_name":"jweinst1/Fire","owner":"jweinst1","description":"The Reactive Programming Language","archived":false,"fork":false,"pushed_at":"2017-11-15T23:50:25.000Z","size":134,"stargazers_count":10,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-17T01:37:35.189Z","etag":null,"topics":["programming-language","reactive-programming","reactive-streams","stream-processing"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jweinst1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"2017-10-11T21:08:00.000Z","updated_at":"2022-05-18T13:49:57.000Z","dependencies_parsed_at":"2023-03-14T13:30:26.685Z","dependency_job_id":null,"html_url":"https://github.com/jweinst1/Fire","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jweinst1%2FFire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jweinst1%2FFire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jweinst1%2FFire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jweinst1%2FFire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jweinst1","download_url":"https://codeload.github.com/jweinst1/Fire/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250244047,"owners_count":21398454,"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":["programming-language","reactive-programming","reactive-streams","stream-processing"],"created_at":"2024-11-08T17:27:41.177Z","updated_at":"2025-04-22T12:52:08.214Z","avatar_url":"https://github.com/jweinst1.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fire\n\n`*The Reactive Programming Language*`\n\n[wiki link](https://github.com/jweinst1/Fire/wiki)\n\n## Intro\n\nFire is a programming language based around the concepts of reactive programming, streams, and data processing. It's a highly portable, fast, and simple to learn language that lets you do anything with data. The linear, readable syntax is designed to be a modern programmer's best friend.\n\nSince Fire does not use nested structures, it can be translated directly into byte code, without any parsing, abstract syntax trees, or any of the other features a traditional compiler needs to run code. Fire also doesn't have a virtual machine, the bytecode is used to call methods directly on a binary stream.\n\n **Example Structure**\n\n```\nfire\u003e rng 88 -\u003e if \u003e 40 -\u003e out\n[41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ]\nfire\u003e -\u003e sin -\u003e floor -\u003e out\n[-1 -1 -1 0 0 0 0 -1 -1 -1 0 0 0 -1 -1 -1 0 0 0 -1 -1 -1 0 0 0 -1 -1 -1 -1 0 0 0 -1 -1 -1 0 0 0 -1 -1 -1 0 0 0 -1 -1 -1 ]\nfire\u003e -\u003e + 50 -\u003e out\n[49 49 49 50 50 50 50 49 49 49 50 50 50 49 49 49 50 50 50 49 49 49 50 50 50 49 49 49 49 50 50 50 49 49 49 50 50 50 49 49 49 50 50 50 49 49 49 ]\nfire\u003e -\u003e {/}   \nfire\u003e -\u003e out\n[0.000000 ]\nfire\u003e -\u003e floor -\u003e out\n[0 ]\nfire\u003e exit\n```\n\n## Status\n\nThe first Fire development build is complete, with a limited set of functionality.\nThis build is highly subject to changes in syntax and architecture.\n\nMany, many more features are planned to be added before version 1.\n\n## Usage\n\nFire's compiler is written in C and highly portable to almost any platform.\n\nTo build Fire, you can run the following in your shell\n\n```\nmake all\n```\n\nThis will produce an executable in the /bin folder of your directory.\n\nOr you can download the executables under the releases tab of this repo.\n\n### Command Line\n\nThe `Fire` executable currently takes two arguments:\n\n#### `-i`: Turns on the interactive repl.\n\n*Example*:\n\n```\n$ ./bin/Fire -i\nfire\u003e rng 10 -\u003e out\n[0 1 2 3 4 5 6 7 8 9 ]\nfire\u003e exit\n```\n\n\n#### `-h`: Prints out the help guide.\n\n## Language Guide\n\n### Printing Data\n-----------------------------------\n##### out:\nprints the current stream and it's data.\n\n```\nfire\u003e push 5 -\u003e push 1 -\u003e out\n[5 1 ]\n```\n\n### Adding Data\n-----------------------------------\n#### push (number):\npushes one number onto end of stream.\n\n```\nfire\u003e push 3 -\u003e push 1 -\u003e out\n[3 1 ]\n```\n\n#### rng (n):\npushes a stream of numbers from zero to n onto the stream.\n\n```\nfire\u003e rng 5 -\u003e push 4 -\u003e out\n[0 1 2 3 4 4 ]\n```\n\n### Reducing Data\n-----------------------------------\n#### `{+}`:\nSums all the numbers in the stream and store the result at the front.\n\n```\nfire\u003e rng 4 -\u003e {+} -\u003e out\n[6 ]\n```\n\n#### `{-}`:\nSubtracts all the numbers in the stream and store the result at the front.\n\n```\nfire\u003e rng 4 -\u003e out -\u003e {-} -\u003e out\n[0 1 2 3 ]\n[-6 ]\n```\n\n#### `{*}`:\nMultiplies all the numbers in the stream and store the result at the front.\n\n#### `{/}`:\nDivides all the numbers in the stream and store the result at the front.\n\n\n### Mapping Data\n-----------------------------------\n#### `+` (number):\nAdds some number to all numbers in the stream.\n\n```\nfire\u003e rng 4 -\u003e out -\u003e + 2 -\u003e out\n[0 1 2 3 ]\n[2 3 4 5 ]\n```\n\n#### `-` (number):\nSubtracts some number from all numbers in the stream.\n\n\n#### `*` (number):\nMultiplies each number in the stream.\n\n#### `/` (number):\nDivides each number in the stream.\n\n#### `%` (number):\nCalculates the remainder of each number of the stream by a number.\n#### floor:\nCalculates and maps the floor of each number in the stream\n\n```\nfire\u003e rng 6 -\u003e sin -\u003e out -\u003e floor -\u003e out\n[0 0.841471 0.909297 0.141120 -0.756802 -0.958924 ]\n[0 0 0 0 -1 -1 ]\n```\n\n#### cos:\nCalculates and maps the cos of each number in the stream\n\n#### sin:\nCalculates and maps the sin of each number in the stream\n\n#### log:\nCalculates and maps the log(e) of each number in the stream\n\n#### exp:\nCalculates and maps the (e)exp power of each number in the stream\n\n\n### Filtering Data\n-----------------------------------\n* All filtering expressions in Fire begin with an `if` keyword.\n Any element in the stream which holds false for the expression is removed from the string.\n\n#### if `==` (number):\nFilters out all numbers not equal to (number) in the stream.\n\n#### if `!=` (number):\nFilters out all numbers equal to (number) in the stream.\n\n#### if `\u003e` (number):\nFilters out all numbers greater than (number) in the stream.\n\n\n```\nfire\u003e rng 20 -\u003e if \u003e 5 -\u003e out\n[6 7 8 9 10 11 12 13 14 15 16 17 18 19 ]\n```\n\n#### if `\u003c` (number):\nFilters out all numbers less than (number) in the stream.\n\n## Contribution\n\nRight now Fire is still in it's infancy but ideas and suggestions are welcomed.\n\n## License\n\nFire is MIT licensed and open sourced.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjweinst1%2Ffire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjweinst1%2Ffire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjweinst1%2Ffire/lists"}