{"id":13469812,"url":"https://github.com/matz/streem","last_synced_at":"2025-05-14T18:03:12.055Z","repository":{"id":24457780,"uuid":"27860738","full_name":"matz/streem","owner":"matz","description":"prototype of stream based programming language","archived":false,"fork":false,"pushed_at":"2022-01-03T10:45:02.000Z","size":841,"stargazers_count":4602,"open_issues_count":25,"forks_count":236,"subscribers_count":353,"default_branch":"master","last_synced_at":"2025-04-11T23:00:46.008Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/matz.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":"CODEOWNERS","security":null,"support":null}},"created_at":"2014-12-11T08:07:50.000Z","updated_at":"2025-04-06T14:26:24.000Z","dependencies_parsed_at":"2022-08-03T00:01:08.856Z","dependency_job_id":null,"html_url":"https://github.com/matz/streem","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matz%2Fstreem","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matz%2Fstreem/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matz%2Fstreem/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matz%2Fstreem/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matz","download_url":"https://codeload.github.com/matz/streem/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254198452,"owners_count":22030964,"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-07-31T16:00:16.928Z","updated_at":"2025-05-14T18:03:07.046Z","avatar_url":"https://github.com/matz.png","language":"C","readme":"# Streem\n\n[![Build Status](https://github.com/matz/streem/workflows/ci/badge.svg)](https://github.com/matz/streem/actions?query=workflow%3Aci)\n[![Gitter](https://badges.gitter.im/JoinChat.svg)](https://gitter.im/matz/streem?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nStreem is a stream based concurrent scripting language. It is based on a\nprogramming model similar to the shell, with influences from Ruby, Erlang, and\nother functional programming languages.\n\n__Note:__ Streem is still in the design stage. It's not working yet. Stay tuned.\n\n## Compiling\n\n### Installing dependencies\n\n* bison\n* flex\n* gcc / clang\n\n### Run make\n\n```shell\nmake\n```\n\n## Examples\n\nIn Streem, a simple `cat` program looks like this:\n\n```\nstdin | stdout\n```\n\nYou can try it out by (firstly `cd` to streem top directory):\n\n```shell\n$ bin/streem -e 'stdin | stdout'\n```\n\nor\n\n```shell\n$ bin/streem examples/01cat.strm\n```\n\nStreem is a (sort of) DSL for data flows. Above code means\nbuilding data-flow connection between `stdin` and `stdout`.\nActual data processing will be done in the event loop\ninvoked after program execution.\n\nFor another example, a simple FizzBuzz will look like this:\n\n```\n# seq(100) returns a stream of numbers from 1 to 100.\n# A function object in pipeline works as a map function.\n# stdout is an output destination.\nseq(100) | map{x-\u003e\n  if (x % 15 == 0)     \"FizzBuzz\"\n  else if (x % 3 == 0) \"Fizz\"\n  else if (x % 5 == 0) \"Buzz\"\n  else                 x\n} | stdout\n```\n\nThe second part in the pipeline (`{x -\u003e...}`) is a function\nobject. If a function object is connected in the pipeline,\nit will be invoked for each element in the stream.\n\nThere are more examples under folder `examples/`. Just play with them!\n\n## Contributing\n\nSend a pull request to \u003chttps://github.com/matz/streem\u003e.  We consider\nyou have granted non-exclusive right to your contributed code under\nMIT license. Use \u003chttps://github.com/matz/streem/issues\u003e for\ndiscussion.\n\n## License\n\nMIT license (\u0026copy; 2015-2016 Yukihiro Matsumoto)\n","funding_links":[],"categories":["C","Uncategorized","Ruby Language Research, Papers \u0026 Books"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatz%2Fstreem","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatz%2Fstreem","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatz%2Fstreem/lists"}