{"id":13580008,"url":"https://github.com/msteveb/jimtcl","last_synced_at":"2026-02-22T19:01:16.033Z","repository":{"id":39500020,"uuid":"1606904","full_name":"msteveb/jimtcl","owner":"msteveb","description":"Official repository of Jim Tcl, an open-source, small footprint implementation of Tcl","archived":false,"fork":false,"pushed_at":"2026-01-15T01:39:58.000Z","size":16917,"stargazers_count":496,"open_issues_count":15,"forks_count":130,"subscribers_count":29,"default_branch":"master","last_synced_at":"2026-01-15T07:57:39.104Z","etag":null,"topics":["embedded","scripting-language","small","tcl"],"latest_commit_sha":null,"homepage":"http://jim.tcl.tk/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/msteveb.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":"CONTRIBUTING.md","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":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2011-04-12T23:47:56.000Z","updated_at":"2026-01-15T01:40:02.000Z","dependencies_parsed_at":"2024-02-03T08:33:51.335Z","dependency_job_id":"bd900dd6-647c-4de1-97ed-2298cc735a76","html_url":"https://github.com/msteveb/jimtcl","commit_stats":{"total_commits":1845,"total_committers":45,"mean_commits":41.0,"dds":"0.26016260162601623","last_synced_commit":"fcbb4499a6b46ef69e7a95da53e30796e20817f0"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/msteveb/jimtcl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msteveb%2Fjimtcl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msteveb%2Fjimtcl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msteveb%2Fjimtcl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msteveb%2Fjimtcl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msteveb","download_url":"https://codeload.github.com/msteveb/jimtcl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msteveb%2Fjimtcl/sbom","scorecard":{"id":666159,"data":{"date":"2025-08-11","repo":{"name":"github.com/msteveb/jimtcl","commit":"a490c6801b5ad75afe209bdfe09f1beb4d351f19"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.5,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/4 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 7 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:33","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:34","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/makefile.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.83 not signed: https://api.github.com/repos/msteveb/jimtcl/releases/172272340","Warn: release artifact 0.82 not signed: https://api.github.com/repos/msteveb/jimtcl/releases/94182966","Warn: release artifact 0.83 does not have provenance: https://api.github.com/repos/msteveb/jimtcl/releases/172272340","Warn: release artifact 0.82 does not have provenance: https://api.github.com/repos/msteveb/jimtcl/releases/94182966"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: autosetup/autosetup:0","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:81: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/codeql.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:110: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:117: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/makefile.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/msteveb/jimtcl/makefile.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (28) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T18:07:15.649Z","repository_id":39500020,"created_at":"2025-08-21T18:07:15.650Z","updated_at":"2025-08-21T18:07:15.650Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29723573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T15:10:41.462Z","status":"ssl_error","status_checked_at":"2026-02-22T15:10:04.636Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["embedded","scripting-language","small","tcl"],"created_at":"2024-08-01T15:01:45.986Z","updated_at":"2026-02-22T19:01:16.013Z","avatar_url":"https://github.com/msteveb.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"The Jim Interpreter\n\nA small-footprint implementation of the Tcl programming language.\n\n--------------------------------------------------------------------------------\nWHAT IS JIM?\n--------------------------------------------------------------------------------\n\nJim is a small footprint implementation of the Tcl programming language\nwritten from scratch. Currently Jim Tcl is very feature complete with\nan extensive test suite (see the tests directory).\nThere are some Tcl commands and features which are not implemented\n(and likely never will be), including traces and Tk. However,\nJim Tcl offers a number of both Tcl8.5 and Tcl8.6 features ({*}, dict, lassign,\ntailcall and optional UTF-8 support) and some unique features.\nThese unique features include [lambda] with garbage collection, a general GC/references\nsystem, arrays as syntax sugar for [dict]tionaries, object-based I/O and more.\n\nOther common features of the Tcl programming language are present, like\nthe \"everything is a string\" behaviour, implemented internally as\ndual ported objects to ensure that the execution time does not reflect\nthe semantic of the language :)\n\n--------------------------------------------------------------------------------\nWHEN JIM CAN BE USEFUL?\n--------------------------------------------------------------------------------\n\n1) Jim provides the ability to write scriptable applications without needing\nto link your application with a big system. You can include the Jim source \ndirectly in your project and use the Jim API to write the glue code that makes \nyour application scriptable in Jim, with the following advantages:\n\n- Jim is not the next \"little language\", but it's a Tcl implementation.\n  You can reuse your knowledge if you already have Tcl skills, or enjoy\n  the availability of documentation, books, web resources, ...\n  (for example check my online Tcl book at http://www.invece.org/tclwise)\n\n- Jim is simple with 14k lines of core code. If you want to adapt it you can hack\n  the source code to meet the needs of your application. It makes you\n  able to have scripting by default, and avoid external dependencies.\n\n  Having scripting support *inside*, and in a way that a given version\n  of your program always gets shipped with the given version of Jim, you can\n  write part of your application in Jim itself. This is similar to Emacs/Elisp\n  or Gimp/Scheme, where both of these applications have the interpreter inside. \n\n- Jim is Tcl, and Tcl looks like a configuration file if you want. So\n  if you use Jim you also have a flexible syntax for your config file.\n  This is a valid Tcl script:\n\n     set MyFeature on\n     ifssl {\n       set SslPort 45000\n       use compression\n     }\n\n  It looks like a configuration file, but if you implement the [ifssl]\n  and [use] commands, it's a valid Tcl script.\n\n- Tcl scales with the user. Not all know it, but Tcl is so powerful that\n  you can reprogram the language in itself. Jim support this feature\n  of the Tcl programming language. You can write new control structures, and\n  use the flexible data types it offers (Lists are a central data structure,\n  with Dictionaries that are also lists). Still, Tcl is simpler for the\n  casual programmer, especially when compared to other languages offering\n  small footprint implementations (like Scheme and FORTH).\n\n- Because of the Tcl semantic (pass by value, everything is a command\n  since there are no reserved words), there is a nice API to glue\n  your application with Jim. See under the Jim Tcl manual for more detail.\n\n- Jim is supported. If you need commercial software, contact the original author\n  at 'antirez@gmail.com' or the current maintainer at 'steveb@workware.net.au'.\n\n2) The other \"field\" where Jim can be useful is obviously embedded systems.\n\n3) We are working to make Jim as feature-complete as possible. Thanks to\n   dynamically loaded extensions it may stay as small as it is today\n   but able to do interesting things for you. So it's possible that\n   in the future Jim will be an option as a general purpose language.\n   But don't worry, there is already the mainstream Tcl implementation\n   for this :).\n\n--------------------------------------------------------------------------------\nHOW BIG IS IT?\n--------------------------------------------------------------------------------\n\nJim with the default extensions configured and compiled with -Os is about 130k.\nWithout any extensions, it is about 85k.\n\n--------------------------------------------------------------------------------\nHOW FAST IS IT?\n--------------------------------------------------------------------------------\n\nJim is, in most code, faster than Tcl7.6p2 (latest 7.x version),\nand slower than Tcl 8.4.x. You can expect pretty decent performance\nfor such a little interpreter.\n\nIf you want a more precise measure, there is 'bench.tcl' inside this\ndistribution that will run both under Jim and Tcl, so just execute\nit with both the interpreters and see what you get :)\n\n--------------------------------------------------------------------------------\nHOW TO COMPILE\n--------------------------------------------------------------------------------\n\nJim was tested under Linux, FreeBSD, MacosX, eCos, QNX, Windows XP (mingw, MVC).\n\nTo compile Jim itself try:\n\n  ./configure\n  make\n\n--------------------------------------------------------------------------------\nEXTENSIONS\n--------------------------------------------------------------------------------\n\nMany optional extensions are included. Some are C extensions and others are pure Tcl.\nForm more information, try:\n\n  ./configure --help\n\n--------------------------------------------------------------------------------\nHOW TO EMBED JIM INTO APPLICATIONS\n--------------------------------------------------------------------------------\n\nSee the \"examples.api\" directory\n\n--------------------------------------------------------------------------------\nHOW TO WRITE EXTENSIONS FOR JIM\n--------------------------------------------------------------------------------\n\nSee the extensions shipped with Jim, jim-readline.c, jim-clock.c, glob.tcl and oo.tcl\n\n--------------------------------------------------------------------------------\nCOPYRIGHT and LICENSE\n--------------------------------------------------------------------------------\n\nUnless explicitly stated, all files within Jim repository are released\nunder following license:\n\n/* Jim - A small embeddable Tcl interpreter\n *\n * Copyright 2005 Salvatore Sanfilippo \u003cantirez@invece.org\u003e\n * Copyright 2005 Clemens Hintze \u003cc.hintze@gmx.net\u003e\n * Copyright 2005 patthoyts - Pat Thoyts \u003cpatthoyts@users.sf.net\u003e\n * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com\n * Copyright 2008 Andrew Lunn \u003candrew@lunn.ch\u003e\n * Copyright 2008 Duane Ellis \u003copenocd@duaneellis.com\u003e\n * Copyright 2008 Uwe Klein \u003cuklein@klein-messgeraete.de\u003e\n * Copyright 2008 Steve Bennett \u003csteveb@workware.net.au\u003e\n * Copyright 2009 Nico Coesel \u003cncoesel@dealogic.nl\u003e\n * Copyright 2009 Zachary T Welch zw@superlucidity.net\n * Copyright 2009 David Brownell\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n *\n * 1. Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials\n *    provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY THE JIM TCL PROJECT ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\n * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\n * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE\n * JIM TCL PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the Jim Tcl Project.\n */\n--------------------------------------------------------------------------------\nHISTORY\n--------------------------------------------------------------------------------\n\n\"first Jim goal: to vent my need to hack on Tcl.\"\n\nAnd actually this is exactly why I started Jim, in the first days\nof January 2005. After a month of hacking Jim was able to run\nsimple scripts, now, after two months it started to be clear to\nme that it was not just the next toy to throw away but something\nthat may evolve into a real interpreter. In the same time\nPat Thoyts and Clemens Hintze started to contribute code, so that\nthe development of new core commands was faster, and also more\npeople hacking on the same code had as result fixes in the API,\nC macros, and so on.\n\nCurrently we are at the point that the core interpreter is almost finished\nand it is entering the Beta stage. There is to add some other core command,\nto do a code review to ensure quality of all the parts and to write\ndocumentation.\n\nWe already started to work on extensions like OOP, event loop,\nI/O, networking, regexp. Some extensions are already ready for\nprime time, like the Sqlite extension and the ANSI I/O.\n\n------------------------------------------------------------------------------\nThanks to...\n------------------------------------------------------------------------------\n\n- First of all, thanks to every guy that are listed in the AUTHORS file,\n  that directly helped with code and ideas. Also check the ChangeLog\n  file for additional credits about patches or bug reports.\n- Elisa Manara that helped me to select this ill conceived name for\n  an interpreter.\n- Many people on the Tclers Chat that helped me to explore issues\n  about the use and the implementation of the Tcl programming language.\n- David Welton for the tech info sharing and our chats about\n  programming languages design and the ability of software to \"scale down\".\n- Martin S. Weber for the great help with Solaris issues, debugging of\n  problems with [load] on this arch, 64bit tests.\n- The authors of \"valgrind\", for this wonderful tool, that helped me a\n  lot to fix bugs in minutes instead of hours.\n\n\n----\nEnjoy!\nSalvatore Sanfilippo\n10 Mar 2005\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsteveb%2Fjimtcl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsteveb%2Fjimtcl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsteveb%2Fjimtcl/lists"}