{"id":13862836,"url":"https://github.com/larsbrinkhoff/emacs-cl","last_synced_at":"2025-03-17T00:31:24.852Z","repository":{"id":4095512,"uuid":"5203562","full_name":"larsbrinkhoff/emacs-cl","owner":"larsbrinkhoff","description":"Common Lisp implemented in Emacs Lisp.","archived":false,"fork":false,"pushed_at":"2017-12-14T06:10:29.000Z","size":622,"stargazers_count":171,"open_issues_count":9,"forks_count":14,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-02-27T15:18:53.388Z","etag":null,"topics":["common-lisp","compiler","emacs","emacs-lisp","interpreter","lisp","programming-language"],"latest_commit_sha":null,"homepage":"http://www.lisp.se/emacs-cl/","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"notwaldorf/github-canned-responses","license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/larsbrinkhoff.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-07-27T11:00:43.000Z","updated_at":"2025-02-02T20:16:54.000Z","dependencies_parsed_at":"2022-08-06T15:00:25.432Z","dependency_job_id":null,"html_url":"https://github.com/larsbrinkhoff/emacs-cl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larsbrinkhoff%2Femacs-cl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larsbrinkhoff%2Femacs-cl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larsbrinkhoff%2Femacs-cl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larsbrinkhoff%2Femacs-cl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/larsbrinkhoff","download_url":"https://codeload.github.com/larsbrinkhoff/emacs-cl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243835952,"owners_count":20355611,"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":["common-lisp","compiler","emacs","emacs-lisp","interpreter","lisp","programming-language"],"created_at":"2024-08-05T06:01:53.708Z","updated_at":"2025-03-17T00:31:24.569Z","avatar_url":"https://github.com/larsbrinkhoff.png","language":"Emacs Lisp","funding_links":[],"categories":["Emacs Lisp"],"sub_categories":[],"readme":"Emacs Common Lisp is an implementation of Common Lisp, written in\nEmacs Lisp.  It does not yet purport to conform to the ANSI standard\nsince, among other things, CLOS, and pretty printing are missing.\nHowever, most other Common Lisp features like lexical closures,\npackages, readtables, multiple values, bignums, adjustable arrays,\netc, are present.  At this stage many bugs remain and error checking\nis sparse.\n\nThis implementation provides a Common Lisp environment, separate from\nEmacs Lisp, running in Emacs.  It does not intend to extend Emacs Lisp\nwith Common Lisp functionality; however, Common Lisp functions compile\nto byte code, so Emacs Lisp functions can call Common Lisp functions\nand vice versa.\n\nAll Emacs Lisp data can be passed unchanged to Common Lisp functions,\nexcept vectors, which are used to implement various Common Lisp types\nnot present in Emacs Lisp.  An Emacs Lisp vector should be converted\nto a Common Lisp vector by calling cl-vector.\n\nTo convert a Common Lisp vector back to Emacs Lisp, call el-vector.\nCommon Lisp strings and bit vectors should be converted by el-string\nand el-bool-vector or el-bit-vector (depending on your Emacs flavour).\n\nThere is a mailing list for discussion about Emacs Common Lisp.  Go to\nhttp://mailman.nocrew.org/cgi-bin/mailman/listinfo/emacs-cl to subscribe.\n\nSee INSTALL for usage instructions.  See HOWTO for some hints on how\nto do common tasks.\n\nSome algorithms and messages are from SBCL and Gareth McCaughan.\nNotes on the internals of the implementation follows:\n\n\f\n\nMapping from Emacs Lisp object types to Common Lisp object types:\n\nEL type\t\t\tCL type\nbit-vector (XEmacs)\tsimple-bit-vector\nbool-vector (GNU Emacs)\tsimple-bit-vector\ncharacter (XEmacs)\tcharacter\ncompiled-function\tcompiled-function\ncons\t\t\tcons\nfloat\t\t\tsingle-float\nhash-table\t\thash-table\ninteger\t\t\tfixnum\nstring\t\t\tsimple-string\nsubr\t\t\tcompiled-function\nsymbol\t\t\tsymbol\nvector\t\t\tvarious, type in first element\n\nCommon Lisp objects represented by Emacs Lisp vectors:\n\nbignum\t\t\t[BIGNUM \u003cn0\u003e \u003cn1\u003e ...]\nratio\t\t\t[RATIO \u003cnumerator\u003e \u003cdenominator\u003e]\ncomplex\t\t\t[COMPLEX \u003crealpart\u003e \u003cimagpart\u003e]\ncharacter\t\t[CHARACTER \u003ccode\u003e]\nstring\t\t\t[STRING \u003csize\u003e \u003cstring\u003e \u003coffset\u003e \u003cfill-pointer\u003e]\nchar-array\t\t[char-array \u003cdimensions\u003e \u003celements\u003e \u003coffset\u003e]\nbit-vector\t\t[BIT-VECTOR \u003csize\u003e \u003celements\u003e \u003coffset\u003e \u003cfill-pointer\u003e]\nbit-array\t\t[bit-array \u003cdimensions\u003e \u003celements\u003e \u003coffset\u003e]\nsimple-vector\t\t[SIMPLE-VECTOR \u003celt\u003e ...]\nvector\t\t\t[VECTOR \u003csize\u003e \u003celements\u003e \u003coffset\u003e \u003cfill-pointer\u003e]\narray\t\t\t[ARRAY \u003cdimensions\u003e \u003celements\u003e \u003coffset\u003e]\ninterpreted-function\t[INTERPRETED-FUNCTION \u003cfn\u003e \u003cenv\u003e \u003cname\u003e]\ninstance of class C\t[C \u003cslot\u003e ...]\n\n\f\n\nEmacs feature wish list:\n\n * Hash tables.  Done in later versions.\n\n * Weak hash tables.  Done in later versions.\n\n * A function that returns the address of an object, for implementing\n   print-unreadable-object :identity t.\n\n * A function that returns the amount of processor time used, for\n   implementing get-internal-run-time.\n\n * A way to portably embed information in byte-code objects.\n\n\f\n\nThere are problems with the cl:function macro when its output appears\nin compiled files:\n\n * When applied to a byte-code function the result will be printed\n   with the #[...] syntax.  That works, but separate invokations of\n   cl:function will result in distinct, though equal, code vectors.\n\n * When's applied to a subr, the result will be printed with the\n   #\u003csubr ...\u003e syntax, which will raise a syntax error when loaded.\n\nIn general, Emacs' byte compiler doesn't preserve object identity,\nwhich is a problem.  Here's another case:\n\n * This merges the two distinct strings into one object:\n   (byte-compile `(lambda () (foo ,(copy-seq \"abc\") ,(copy-seq \"abc\"))))\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarsbrinkhoff%2Femacs-cl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flarsbrinkhoff%2Femacs-cl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarsbrinkhoff%2Femacs-cl/lists"}