{"id":13398752,"url":"https://github.com/factor/factor","last_synced_at":"2026-01-28T14:02:09.055Z","repository":{"id":37270393,"uuid":"157985","full_name":"factor/factor","owner":"factor","description":"Factor programming language","archived":false,"fork":false,"pushed_at":"2026-01-18T04:59:50.000Z","size":333463,"stargazers_count":1795,"open_issues_count":683,"forks_count":220,"subscribers_count":69,"default_branch":"master","last_synced_at":"2026-01-18T05:41:05.384Z","etag":null,"topics":["concatenative","factor","language","programming-language","stack"],"latest_commit_sha":null,"homepage":"https://factorcode.org/","language":"Factor","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/factor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2009-03-24T13:17:48.000Z","updated_at":"2026-01-18T04:59:54.000Z","dependencies_parsed_at":"2025-09-19T23:55:25.757Z","dependency_job_id":"687b5705-6da8-47c3-9863-73e0adb64b38","html_url":"https://github.com/factor/factor","commit_stats":{"total_commits":30399,"total_committers":294,"mean_commits":"103.39795918367346","dds":0.7867364058028224,"last_synced_commit":"2bc85d330d84a57645625873d779677c2faa1204"},"previous_names":[],"tags_count":122,"template":false,"template_full_name":null,"purl":"pkg:github/factor/factor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/factor%2Ffactor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/factor%2Ffactor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/factor%2Ffactor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/factor%2Ffactor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/factor","download_url":"https://codeload.github.com/factor/factor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/factor%2Ffactor/sbom","scorecard":{"id":132360,"data":{"date":"2025-08-11","repo":{"name":"github.com/factor/factor","commit":"4a2a884b70c37384facff4003d90dcc48e600398"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.8,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 12 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":"Code-Review","score":0,"reason":"Found 0/30 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":"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":"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":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/build.yml:10","Info: topLevel 'contents' permission set to 'read': .github/workflows/test_branch.yml:7","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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: BSD 2-Clause \"Simplified\" License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: extra/elf/a.elf:1"],"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_branch.yml:39: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/test_branch.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test_branch.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/test_branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_branch.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/test_branch.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test_branch.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/factor/factor/test_branch.yml/master?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 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"}}]},"last_synced_at":"2025-08-16T05:29:50.984Z","repository_id":37270393,"created_at":"2025-08-16T05:29:50.984Z","updated_at":"2025-08-16T05:29:50.984Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T13:02:32.985Z","status":"ssl_error","status_checked_at":"2026-01-28T13:02:04.945Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["concatenative","factor","language","programming-language","stack"],"created_at":"2024-07-30T19:00:31.378Z","updated_at":"2026-01-28T14:02:09.039Z","avatar_url":"https://github.com/factor.png","language":"Factor","readme":"# Factor\n\n![Build](https://github.com/factor/factor/actions/workflows/build.yml/badge.svg)\n\nFactor is a [concatenative](https://www.concatenative.org), stack-based\nprogramming language with [high-level\nfeatures](https://concatenative.org/wiki/view/Factor/Features/The%20language)\nincluding dynamic types, extensible syntax, macros, and garbage collection.\nOn a practical side, Factor has a [full-featured\nlibrary](https://docs.factorcode.org/content/article-vocab-index.html),\nsupports many different platforms, and has been extensively documented.\n\nThe implementation is [fully\ncompiled](https://concatenative.org/wiki/view/Factor/Optimizing%20compiler)\nfor performance, while still supporting [interactive\ndevelopment](https://concatenative.org/wiki/view/Factor/Interactive%20development).\nFactor applications are portable between all common platforms.  Factor can\n[deploy stand-alone\napplications](https://concatenative.org/wiki/view/Factor/Deployment) on all\nplatforms.  Full source code for the Factor project is available under a BSD\nlicense.\n\n## Getting Started\n\n### Building Factor from source\n\nIf you have a build environment set up, then you can build Factor from git.\nThese scripts will attempt to compile the Factor binary and bootstrap from\na boot image stored on factorcode.org.\n\nTo check out Factor:\n\n* git clone https://github.com/factor/factor.git\n* `cd factor`\n\nTo build the latest complete Factor system from git, either use the\nbuild script:\n\n* Unix: `./build.sh update`\n* Windows: `build.cmd`\n* M1 macOS: `arch -x86_64 ./build.sh update`\n\nor download the correct boot image for your system from\nhttps://downloads.factorcode.org/images/master/, put it in the `factor`\ndirectory and run:\n\n* Unix: `make` and then `./factor -i=boot.unix-x86.64.image`\n* Windows: `nmake /f Nmakefile x86-64` and then `factor.com -i=boot.windows-x86.64.image`\n\nNow you should have a complete Factor system ready to run.\n\nFactor does not yet work on arm64 cpus. There is an arm64 assembler\nin `cpu.arm.64.assembler` and we are working on a port and also looking for\ncontributors.\n\nMore information on [building factor](https://concatenative.org/wiki/view/Factor/Building%20Factor)\nand [system requirements](https://concatenative.org/wiki/view/Factor/Requirements).\n\n### To run a Factor binary:\n\nYou can download a Factor binary from the grid on [https://factorcode.org](https://factorcode.org).\nThe nightly builds are usually a better experience than the point releases.\n\n* Windows: Double-click `factor.exe`, or run `.\\factor.com` in a command prompt\n* macOS: Double-click `Factor.app` or run `open Factor.app` in a Terminal\n* Unix: Run `./factor` in a shell\n\n### Learning Factor\n\nA [tutorial](https://docs.factorcode.org/content/article-first-program.html)\nis available that can be accessed from the Factor environment:\n\n```factor\n\"first-program\" help\n```\n\nTake a look at a [guided\ntour](https://docs.factorcode.org/content/article-tour.html) of Factor:\n\n```factor\n\"tour\" help\n```\n\nSome demos that are included in the distribution to show off various features:\n\n```factor\n\"demos\" run\n```\n\nSome other simple things you can try in the listener:\n\n```factor\n\"Hello, world\" print\n\n{ 4 8 15 16 23 42 } [ 2 * ] map .\n\n1000 [1..b] sum .\n\n4 \u003ciota\u003e [\n    \"Happy Birthday \" write\n    2 = \"dear NAME\" \"to You\" ? print\n] each\n```\n\nFor more tips, see [Learning Factor](https://concatenative.org/wiki/view/Factor/Learning).\n\n## Documentation\n\nThe Factor environment includes extensive reference documentation and a\nshort \"cookbook\" to help you get started. The best way to read the\ndocumentation is in the UI; press F1 in the UI listener to open the help\nbrowser tool. You can also [browse the documentation\nonline](https://docs.factorcode.org).\n\n## Command Line Usage\n\nFactor supports a number of command line switches:\n\n```\nUsage: factor [Factor arguments] [script] [script arguments]\n\nCommon arguments:\n    -help            print this message and exit\n    -i=\u003cimage\u003e       load Factor image file \u003cimage\u003e (default factor.image)\n    -run=\u003cvocab\u003e     run the MAIN: entry point of \u003cvocab\u003e\n        -run=listener    run terminal listener\n        -run=ui.tools    run Factor development UI\n    -e=\u003ccode\u003e        evaluate \u003ccode\u003e\n    -no-user-init    suppress loading of .factor-rc\n    -roots=\u003cpaths\u003e   a list of path-delimited extra vocab roots\n\nEnter\n    \"command-line\" help\nfrom within Factor for more information.\n```\n\nYou can also write scripts that can be run from the terminal, by putting\n``#!/path/to/factor`` at the top of your scripts and making them executable.\n\n## Source Organization\n\nThe Factor source tree is organized as follows:\n\n* `vm/` - Factor VM source code (not present in binary packages)\n* `core/` - Factor core library\n* `basis/` - Factor basis library, compiler, tools\n* `extra/` - more libraries and applications\n* `misc/` - editor modes, icons, etc\n* `unmaintained/` - now at [factor-unmaintained](https://github.com/factor/factor-unmaintained)\n\n## Source History\n\nDuring Factor's lifetime, source code has lived in many repositories. Unfortunately, the first import in Git did not keep history. History has been partially recreated from what could be salvaged. Due to the nature of Git, it's only possible to add history without disturbing upstream work, by using replace objects. These need to be manually fetched, or need to be explicitly added to your git remote configuration.\n\nUse:\n`git fetch origin 'refs/replace/*:refs/replace/*'`\n\nor add the following line to your configuration file\n\n```\n[remote \"origin\"]\n    url = ...\n    fetch = +refs/heads/*:refs/remotes/origin/*\n    ...\n    fetch = +refs/replace/*:refs/replace/*\n```\n\nThen subsequent fetches will automatically update any replace objects.\n\n## Community\n\nFactor developers are quite active in [the Factor Discord server](https://discord.gg/QxJYZx3QDf).\nDrop by if you want to discuss anything related to Factor or language design in general.\n\n* [Factor homepage](https://factorcode.org)\n* [Concatenative languages wiki](https://concatenative.org)\n* [Join the mailing list](https://concatenative.org/wiki/view/Factor/Mailing%20list)\n* Search for \"factorcode\" on [Gitter](https://gitter.im/)\n\nHave fun!\n","funding_links":[],"categories":["Uncategorized","Factor"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffactor%2Ffactor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffactor%2Ffactor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffactor%2Ffactor/lists"}