{"id":20754268,"url":"https://github.com/gabrieldosreis/ipr","last_synced_at":"2025-04-09T18:24:27.086Z","repository":{"id":2762407,"uuid":"46289821","full_name":"GabrielDosReis/ipr","owner":"GabrielDosReis","description":"Compiler-neutral Internal Program Representation for C++","archived":false,"fork":false,"pushed_at":"2023-06-24T23:09:53.000Z","size":1266,"stargazers_count":224,"open_issues_count":28,"forks_count":23,"subscribers_count":19,"default_branch":"main","last_synced_at":"2025-04-02T12:17:17.768Z","etag":null,"topics":["compilers","cplusplus","ipr"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GabrielDosReis.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","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":"2015-11-16T17:13:32.000Z","updated_at":"2025-03-09T15:08:33.000Z","dependencies_parsed_at":"2023-07-05T19:17:42.029Z","dependency_job_id":null,"html_url":"https://github.com/GabrielDosReis/ipr","commit_stats":{"total_commits":220,"total_committers":12,"mean_commits":"18.333333333333332","dds":"0.40909090909090906","last_synced_commit":"417591f233ddc7a02f56a253b821a5a9e089db7e"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielDosReis%2Fipr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielDosReis%2Fipr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielDosReis%2Fipr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GabrielDosReis%2Fipr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GabrielDosReis","download_url":"https://codeload.github.com/GabrielDosReis/ipr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248086280,"owners_count":21045313,"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":["compilers","cplusplus","ipr"],"created_at":"2024-11-17T09:16:46.558Z","updated_at":"2025-04-09T18:24:27.067Z","avatar_url":"https://github.com/GabrielDosReis.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build \u0026 Test](https://github.com/GabrielDosReis/ipr/actions/workflows/main.yml/badge.svg)\n\nThe IPR, short for *Internal Program Representation*, is an open source\nproject originally developed as the core data structures of a framework\nfor semantics-based analysis and transformation of C++ programs.  The\nfoundations of the IPR were laid down and implemented between 2004 and\n2005, as part of The Pivot research project.  An overview, the\ngeneral philosophy, and the design principles behind the IPR are\npresented in the paper [\"A Principled, Complete, and Efficient\nRepresentation of C++\"](http://www.stroustrup.com/macis09.pdf) \n\u003c!-- Restore when axiomatic is up [\"A Principled, Complete, and Efficient\nRepresentation of C++\"](http://www.axiomatics.org/~gdr/ipr/mcs.pdf)--\u003e.\nThat paper is a useful source of general information about the IPR\nand non-obvious challenges in representing C++ programs in their most\ngeneral forms.\n\nThe IPR library purposefully separates the interface (a collection of abstract \nclasses found in `\u003cipr/interface\u003e`) from the implementation (found in `\u003cipr/impl`\u003e)\nfor various reasons.  An interface class (say `ipr::Fundecl`) can admit several \nimplementations: a class for non-defining function declarations, and another class for  \nfunction definitions.  Furthermore, compilers and tools (in general) can provide their own\nspecific optimized implementations of the interface without impacting users of the\nIPR as long as those users restrict themselves to the public interface.  Such a\nseparation of concerns shields users of the library from implementation vagaries.\nThe implementation in `\u003cipr/impl\u003e` is provided for exposition and reference.\n\nFor more information, bug reports, and suggestions, please visit\n\n   https://github.com/GabrielDosReis/ipr\n\nGabriel Dos Reis, Bjarne Stroustrup.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieldosreis%2Fipr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrieldosreis%2Fipr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrieldosreis%2Fipr/lists"}