{"id":36465754,"url":"https://github.com/atlantistechnology/sdt","last_synced_at":"2026-01-12T00:02:46.195Z","repository":{"id":62375702,"uuid":"546060480","full_name":"atlantistechnology/sdt","owner":"atlantistechnology","description":"Semantic comparison of versioned files with git awareness","archived":false,"fork":false,"pushed_at":"2023-07-20T02:49:44.000Z","size":46378,"stargazers_count":13,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-03T17:28:32.417Z","etag":null,"topics":["diff","git","lint","semantic","style","version-control"],"latest_commit_sha":null,"homepage":"","language":"Go","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/atlantistechnology.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":"2022-10-05T13:04:34.000Z","updated_at":"2025-08-31T14:49:39.000Z","dependencies_parsed_at":"2024-06-21T10:45:00.598Z","dependency_job_id":"fc7330cd-8fdc-4212-85d3-199b85345f19","html_url":"https://github.com/atlantistechnology/sdt","commit_stats":{"total_commits":208,"total_committers":5,"mean_commits":41.6,"dds":0.09134615384615385,"last_synced_commit":"600bacffc4884836411ed18e54d492e93295096d"},"previous_names":["atlantistechnology/ast-diff"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/atlantistechnology/sdt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlantistechnology%2Fsdt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlantistechnology%2Fsdt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlantistechnology%2Fsdt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlantistechnology%2Fsdt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atlantistechnology","download_url":"https://codeload.github.com/atlantistechnology/sdt/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atlantistechnology%2Fsdt/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28328695,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-11T22:11:01.104Z","status":"ssl_error","status_checked_at":"2026-01-11T22:10:58.990Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["diff","git","lint","semantic","style","version-control"],"created_at":"2026-01-12T00:02:46.122Z","updated_at":"2026-01-12T00:02:46.188Z","avatar_url":"https://github.com/atlantistechnology.png","language":"Go","funding_links":[],"categories":["git"],"sub_categories":[],"readme":"# Semantic Diff Tool (sdt)\n\nThe command-line tool `sdt` compares source files to identify which changes\ncreate semantic differences in the program operation, and specifically to\nexclude many changes which cannot be *functionally important* to the\noperation of a program or library.\n\nUse of `sdt` will allow code reviewers or submitters to assure that\nmodifications made to improve stylistic formatting of the code—whether made\nby hand or using code-formatting tools—does not modify the underlying\n*meaning* of the code.\n\nThe operation of the utility, pre-compiled binaries, bundled support tools,\ninstallation details, language support, integration with editors and version\ncontrol management, and other details are discussed at the [Semantic Diff\nTool Assets](https://www.sdt.dev) site.\n\nA quick example of usage shows an overview of capabilities (the switches\nadded simply minimize the output context and remove reliance on colorized\noutput).  The comparison shown compares what is currently on disk to the\nHEAD of the working git branch (many other combinations are enabled with\ncommand flags).\n\n```\n% sdt semantic --dumbterm --minimal 2\u003e/dev/null\nChanges to be committed:\n    modified:   .github/workflows/test-treesit.yaml\n| No available semantic analyzer for this format\n    new file:   pkg/types/types_test.go\nChanges not staged for commit:\n    modified:   samples/filter.rb\n| Segments with likely semantic changes\n| @@ -3,4 +3,4 @@ def mod5?(items)\n| -puts mod5? 1..100\n| +puts mod5? 1..50\n    modified:   samples/funcs.py\n| No semantic differences detected\n    modified:   samples/running-total.sql\n|        count(DISTINCT co.order_id) AS {{-num_}}order{{-s}}{{+_count}},\n```\n\n## Installation\n\nFor users wishing to aid in developing SDT, or who simply wish to install\nfrom source, you may install `sdt` by cloning this repository, and\ninstalling the tool(s) using `go install`.\n\nFor example:\n\n```bash\n% git clone https://github.com/atlantistechnology/sdt.git\n% cd sdt\n% go install ./...\n```\n\nFor installation of binaries, see the [asset site](https://www.sdt.dev).\n\n# Supported languages\n\nMuch of the work that Semantic Diff Tool accomplishes is done by means of\nutilizing other tools.  You will need to install those other tools in your\ndevelopment environment separately.  However, this requirement is generally\nfairly trivial, since the tools used are often the underlying runtime\nengines or compilers for the very same programming languages of those files\nwhose changes are analyzed (in other words, the programming languages your\nproject uses).\n\nAn additional \"fallback\" means of supporting programming languages for\nanalysis is using the `tree-sitter-cli` parser/generator with any grammars\nthat happen to be installed.  This loses the ability to tailor analysis to a\nspecific language version, but adds many additional languges.  See the main\ndocumentation for details.\n\nIn one manner or another (or via multiple, configurable options), `sdt` can\nsupport:\n\n| Mechanism     | Languages \n| ------------- | ------------------------------------------------------- \n| Bundled tools | Ruby, Python, SQL, JavaScript, JSON, Golang\n| Tree-sitter   | Agda; Bash; C; C#; C++; Common Lisp; CSS; CUDA;\n|               | Dockerfile; DOT; Elixir; Elm; Emacs Lisp; Eno; ERB/EJS; \n|               | Erlang; Fennel; GLSL (OpenGL Shading Language); Hack;\n|               | Haskell; HCL; HTML; Java; Julia; Kotlin; Lua; Make;\n|               | Markdown; Nix; Objective-C; OCaml; Org; Perl; PHP;\n|               | Protocol Buffers; R; Racket; Rust; Scala; S-expressions;\n|               | Sourcepawn; SPARQL; Svelte; Swift; SystemRDL; TOML;\n|               | Turtle; Twig; TypeScript; Verilog; VHDL; Vue; WASM;\n|               | WGSLi; WebGPU Shading Language; YAML.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatlantistechnology%2Fsdt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatlantistechnology%2Fsdt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatlantistechnology%2Fsdt/lists"}