{"id":13466379,"url":"https://github.com/gabordemooij/citrine","last_synced_at":"2025-10-07T02:01:58.139Z","repository":{"id":19992541,"uuid":"23259816","full_name":"gabordemooij/citrine","owner":"gabordemooij","description":"Citrine Programming Language","archived":false,"fork":false,"pushed_at":"2025-03-28T17:25:08.000Z","size":69873,"stargazers_count":111,"open_issues_count":13,"forks_count":12,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-28T18:29:59.246Z","etag":null,"topics":["dutch-language","french-language","localization","programming-language"],"latest_commit_sha":null,"homepage":"https://citrine-lang.org/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabordemooij.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-08-23T15:55:48.000Z","updated_at":"2025-03-28T17:25:11.000Z","dependencies_parsed_at":"2025-03-28T18:36:24.780Z","dependency_job_id":null,"html_url":"https://github.com/gabordemooij/citrine","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabordemooij%2Fcitrine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabordemooij%2Fcitrine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabordemooij%2Fcitrine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabordemooij%2Fcitrine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabordemooij","download_url":"https://codeload.github.com/gabordemooij/citrine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247325693,"owners_count":20920714,"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":["dutch-language","french-language","localization","programming-language"],"created_at":"2024-07-31T15:00:43.221Z","updated_at":"2025-10-07T02:01:58.047Z","avatar_url":"https://github.com/gabordemooij.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"Citrine\n=======\n\nWelcome to the Citrine Programming Language Project.\n\nCitrine is a __general-purpose, localised scripting language.__ It aims to foster readable\nand maintainable code, while remaining simple and easy to learn by focusing on syntactical\nand conceptual minimalism:\n\n```\n\u003e\u003e greeting := ['Hello country!'].\n\ngreeting country: ['Great Britain'].\n\nOut write: greeting.\n```\n\n\u003e Hello Great Britain!\n\nCitrine is wholly [free](https://www.gnu.org/philosophy/free-sw.html) and\n[open-source](https://opensource.org/osd) software, released under the 2-clause BSD\nLicense (see the file `LICENSE`).\n\nFor more information (including more examples and an on-line demo), please see the\n[official website](https://citrine-lang.org/).\n\n\nInstallation\n------------\n\nCitrine is cross-platform and should run on a variety of operating systems, but the\ninstallation procedure for some is currently lacking in support. Help to improve the\nsituation is very welcome.\n\nPlease make sure you are using the latest official release of Citrine, in order to have\nthe newest features and bug fixes.\n\n### Using a precompiled binary\n\nThe easiest way to get started is by using a precompiled binary, currently available on\nthe [official website](https://citrine-lang.org/download.ctr) for the following systems:\n\n- GNU/Linux\n- Microsoft Windows\n- OpenBSD\n\n### Compiling the source code\n\nSource code for the latest official release may likewise be acquired from the [official\nwebsite](https://citrine-lang.org/download.ctr). If you choose to compile it yourself,\nthere’s an installation script, `mk.sh`, included to automate the process. You may run it\nas follows:\n\n```bash\n./mk.sh\n```\n\nThis should generate a separate binary for every supported language in the `bin`\ndirectory, in a subdirectory matching your system. Now you can install Citrine with all of\nthe compiled binaries using `make`:\n\n```bash\nmake install\n```\n\nYou can adjust the path the files get installed to by setting the variable `prefix`, if\nthe default value doesn’t work well for your setup:\n\n```bash\nmake prefix='/usr/local' install\n```\n\n#### Compiling only some languages\n\nCompiling binaries for all the languages can take a while. If you know for sure that you\nwon’t be needing all of those, you can choose to only compile binaries for a subset of the\nlanguages instead, by passing their codes as arguments to `mk.sh`:\n\n```bash\n./mk.sh en nl  #Compile English and Dutch only.\n```\n\nWithout arguments, `mk.sh` compiles all the languages listed in the `i18nsel` directory.\nBy default, this is only a symbolic link to the actual directory `i18n`, where all of the\navailable languages are really stored.\n\n#### Manual compilation\n\nIn case `mk.sh` doesn’t work for you, here’s an explanation of how to compile Citrine\nmanually, but still using `make`:\n\nFirst, a binary for every language is compiled separately. Every time you run `make` on\nthe appropriate makefile, the environment variable `ISO` of your shell should contain the\nISO code of the language you want to compile. Likewise, the variable `OS` should contain\nan identifier of your operating system. For example:\n\n```bash\nISO='hi' OS='Haiku' make -f makefile all\n```\n\nGiven the above, `make` would fetch Hindi vocabularies from the language’s files in\n`i18n/hi`, compile them into a binary named `ctr`, and copy the binary to the Haiku\nsystem’s directory at `bin/Haiku`, with the language’s code attached to the filename.\n\nNow’s a good opportunity to use the binary to compose a dictionary of translations between\ntwo languages. Just point Citrine to each language’s `dictionary.h` file to make a one-way\ntranslation dictionary:\n\n```bash\n./ctr -g i18n/nl/dictionary.h i18n/hi/dictionary.h \u003e dict/nlhi.dict\n./ctr -g i18n/hi/dictionary.h i18n/nl/dictionary.h \u003e dict/hinl.dict\n```\n\nThese two commands would produce two dictionaries in the `dict` directory: one for\ntranslating from Dutch to Hindi, and another for translating from Hindi to Dutch.\n\nHaving done all this, you can clean up the files produced during compilation and move on\nto the next language:\n\n```bash\nmake -f makefile clean\n```\nOnce you’ve compiled all the languages you want, you will find the binaries in `bin`. You\ncan start using them right away, but you might want to install them under your system’s\nstandard binary path first. \n\nAnd with this, you should be done!\n\n\nContributing\n------------\n\nIf you’d like to contribute to the project, you can get in touch using e-mail or GitHub.\nForms of contribution include, but are not limited to:\n\n- Ideas for improvement.\n- [Code improvements](https://citrine-lang.org/changelog.ctr#roadmap).\n- [Translations](https://citrine-lang.org/add.ctr).\n- [Plugins](https://citrine-lang.org/changelog.ctr#plugins).\n\nCitrine and its plugins are written in the __C__ programming language. The Citrine Project\nis apolitical.\n\n[![CitrineCI](https://github.com/gabordemooij/citrine/actions/workflows/c-cpp.yml/badge.svg)](https://github.com/gabordemooij/citrine/actions/workflows/c-cpp.yml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabordemooij%2Fcitrine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabordemooij%2Fcitrine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabordemooij%2Fcitrine/lists"}