{"id":13782704,"url":"https://github.com/wernsey/Fiz","last_synced_at":"2025-05-11T16:31:04.013Z","repository":{"id":27712410,"uuid":"31199454","full_name":"wernsey/Fiz","owner":"wernsey","description":"A small but functional interpreter for a Tcl-like language","archived":false,"fork":false,"pushed_at":"2019-11-15T09:26:23.000Z","size":86,"stargazers_count":8,"open_issues_count":2,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-08-03T18:16:47.221Z","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":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wernsey.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}},"created_at":"2015-02-23T08:31:36.000Z","updated_at":"2020-10-12T14:58:51.000Z","dependencies_parsed_at":"2022-07-21T03:00:33.697Z","dependency_job_id":null,"html_url":"https://github.com/wernsey/Fiz","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wernsey%2FFiz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wernsey%2FFiz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wernsey%2FFiz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wernsey%2FFiz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wernsey","download_url":"https://codeload.github.com/wernsey/Fiz/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225068726,"owners_count":17416123,"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-08-03T18:01:42.158Z","updated_at":"2024-11-17T17:31:57.870Z","avatar_url":"https://github.com/wernsey.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Fiz - A Tcl-like scripting language.\n\nI was inspired to write a Tcl interpreter after I realised how simple\nthe language really was (it took me some time to become enlightened)\nand how elegant the API for embedding it in another program could be.\n\nI call it a _Tcl-like_ language because it doesn't attempt to implement all the\nfeatures of Tcl. It has several useful features though, like `dict` and `expr`\nand so forth.\n\nDue to limits in the expression evaluator you can't just write an\n`if`- or `while`-statement condition like\n\n    if {$x\u003c2} {puts \"Yea\"};\n\nbecause the `{$x\u003c2}` will be treated as a command. You should rather use \nthe `expr` command, as follows:\n\n    if {expr $x\u003c2} {puts \"Yea\"};\n\nThis interpreter goes for simplicity. It uses strings to represents all\nvariables, with the result that it has to use `atoi()` and `snprintf()` to\nconvert to and from numbers when performing arithmetic. It also does a \nlot of `strdup()`ing internally. The result is that that it could be too\nslow for some tastes. Please don't hold it against me.\n\nAnother note: I have removed all checks on the return values of `malloc()` and \nfriends functions to make the interpreter a little bit leaner. I would not \nrecommend using the interpreter in environments where you may run out of memory.\n\nI took some inspiration (like how the callframes are handled and several of the \nAPI functions) from Salvatore Sanfilippo's Picol Tcl interpreter, which can be \nfound at http://antirez.com/page/picol. This is, however, a new implementation.\n\n\n## Compile time flags and options\n\nTo make Fiz usable in different configurations, some compile time flags have\nbeen added. Define these in your environment for the desired effect.\n\n* `FIZ_DISABLE_INCLUDE_FILES` - disables `fiz_readfile` function, `include`\n  command and the interactive shell. Provided for embedding into other \n  applications\n\n* `FIZ_INTEGER_EXPR` - changes the floating point expression evaluation\n  to use integers\n\nThese options are also available:\n\n* `FIZ_OVERRIDE_HASH_DEFAULT_SIZE` - set to override default hash size (default 512)\n* ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwernsey%2FFiz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwernsey%2FFiz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwernsey%2FFiz/lists"}