{"id":13726187,"url":"https://github.com/links-lang/links","last_synced_at":"2025-05-07T21:31:42.057Z","repository":{"id":13527797,"uuid":"16219137","full_name":"links-lang/links","owner":"links-lang","description":"Links: Linking Theory to Practice for the Web","archived":false,"fork":false,"pushed_at":"2024-10-28T17:08:33.000Z","size":28132,"stargazers_count":329,"open_issues_count":161,"forks_count":42,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-10-28T18:43:10.084Z","etag":null,"topics":["effect-handlers","language-integrated-query","multi-tier","session-types","tierless","web-programming"],"latest_commit_sha":null,"homepage":"http://www.links-lang.org","language":"OCaml","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/links-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","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":"2014-01-24T22:40:35.000Z","updated_at":"2024-10-28T17:08:37.000Z","dependencies_parsed_at":"2023-09-25T22:54:45.124Z","dependency_job_id":"fcb126d8-adb4-4841-b8e8-16bc9d80158f","html_url":"https://github.com/links-lang/links","commit_stats":null,"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/links-lang%2Flinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/links-lang%2Flinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/links-lang%2Flinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/links-lang%2Flinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/links-lang","download_url":"https://codeload.github.com/links-lang/links/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224654156,"owners_count":17347680,"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":["effect-handlers","language-integrated-query","multi-tier","session-types","tierless","web-programming"],"created_at":"2024-08-03T01:02:55.211Z","updated_at":"2024-11-14T16:33:27.440Z","avatar_url":"https://github.com/links-lang.png","language":"OCaml","readme":"Links: Linking Theory to Practice for the Web\n---------------------------------------------\n\n![Build status](https://github.com/links-lang/links/actions/workflows/default.yml/badge.svg?branch=master)\n\nLinks helps to build modern Ajax-style applications: those with\nsignificant client- and server-side components.\n\nA typical, modern web program involves many \"tiers\": part of the\nprogram runs in the web browser, part runs on a web server, and part\nruns in specialized systems such as a relational database. To create\nsuch a program, the programmer must master a myriad of languages: the\nlogic is written in a mixture of Java, Python, and Perl; the\npresentation in HTML; the GUI behavior in Javascript; and the queries\nare written in SQL or XQuery. There is no easy way to link these: to\nbe sure, for example, that an HTML form or an SQL query produces the\ntype of data that the Java code expects. This is called the impedance\nmismatch problem.\n\nLinks eases the impedance mismatch problem by providing a single\nlanguage for all three tiers. The system is responsible for\ntranslating the code into suitable languages for each tier: for\ninstance, translating some code into Javascript for the browser, some\ninto Java for the server, and some into SQL to use the database.\n\nLinks incorporates ideas proven in other programming languages:\ndatabase-query support from Kleisli, web-interaction proposals from\nPLT Scheme, and distributed-computing support from Erlang. On top of\nthis, it adds some new web-centric features of its own.\n\nFEATURES\n\n * Allows web programs to be written in a single programming language\n * Call-by-value functional language\n * Server / Client annotations\n * AJAX\n * Scalability through defunctionalised server continuations.\n * Statically typed database access a la Kleisli\n * Concurrent processes on the client and the server\n * Statically typed Erlang-esque message passing\n * Polymorphic records and variants\n * An effect system for supporting abstraction over database queries\nwhilst guaranteeing that they can be efficiently compiled to SQL\n * Handlers for algebraic effects on the server-side and the client-side\n","funding_links":[],"categories":["OCaml"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinks-lang%2Flinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinks-lang%2Flinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinks-lang%2Flinks/lists"}