{"id":16348897,"url":"https://github.com/alt-romes/linear-core","last_synced_at":"2026-03-01T04:03:44.209Z","repository":{"id":123412624,"uuid":"563304581","full_name":"alt-romes/linear-core","owner":"alt-romes","description":"My master thesis on typechecking linearity in GHC Core, by understanding semantic linearity in the presence of call-by-need evaluation","archived":false,"fork":false,"pushed_at":"2025-02-27T23:36:28.000Z","size":39142,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T07:12:36.893Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TeX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alt-romes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-11-08T10:37:41.000Z","updated_at":"2025-02-27T23:36:32.000Z","dependencies_parsed_at":"2025-01-28T00:22:43.070Z","dependency_job_id":"c26e5a59-da9e-4f77-9297-8f1b2c5a01ba","html_url":"https://github.com/alt-romes/linear-core","commit_stats":{"total_commits":384,"total_committers":3,"mean_commits":128.0,"dds":"0.11197916666666663","last_synced_commit":"1271ed0a4953620e1660484ecee50f710bacc84a"},"previous_names":["alt-romes/linear-core"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alt-romes%2Flinear-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alt-romes%2Flinear-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alt-romes%2Flinear-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alt-romes%2Flinear-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alt-romes","download_url":"https://codeload.github.com/alt-romes/linear-core/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248166925,"owners_count":21058481,"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-10-11T00:55:39.982Z","updated_at":"2026-03-01T04:03:39.153Z","avatar_url":"https://github.com/alt-romes.png","language":"TeX","readme":"# Linear Core\n\nLinear type systems guarantee linear resources are used *exactly once*.\nTraditionally, using a resource is synonymous with its *syntactic*\noccurrence in the program, however, under the lens of *lazy* evaluation,\nlinearity can be further understood *semantically*, where a\nsyntactic occurrence of a resource does not necessarily entail\n*using* that resource when the program is evaluated.\n\nSemantic linearity is especially necessary in optimising compilers for\nlanguages combining linearity and laziness: optimisations leverage laziness to\nheavily rewrite the source program, pushing the interaction of linearity and\nlaziness to its limit, regardless of the original program typing linearity\nconservatively.\n\nWe present Linear Core, the first type system that understands semantic\nlinearity in the presence of laziness, suitable for the Core intermediate\nlanguage of the Glasgow Haskell Compiler. We prove Linear Core is both type\nsafe and that multiple optimising transformations preserve linearity in Linear\nCore while failing to do so in Core. We have implemented Linear Core as a\ncompiler plugin to validate the system against established libraries, including\n`linear-base`, in the heart of the compiler.\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falt-romes%2Flinear-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falt-romes%2Flinear-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falt-romes%2Flinear-core/lists"}