From 0ca1ed4412d8b640b5c918bac4c8a7a7630aca2d Mon Sep 17 00:00:00 2001 From: "SANO,Masatoshi" Date: Thu, 18 Jun 2026 00:44:27 +0900 Subject: [PATCH] Add dotcl (Common Lisp on .NET) support dotcl (https://github.com/dotcl/dotcl) is a Common Lisp implementation that compiles to .NET CIL. The changes are additive and guarded with #+dotcl-style implementation dispatch, mirroring the existing implementations: - impl: define-implementation-package for :dotcl, exporting the impl class and reexporting socket-connect from dotcl's dotcl-socket module - network: open-connection via dotcl-socket:socket-connect (binary stream) - impl-util: init-file-name (".dotcl-init.lisp") and directory-entries - package: export the dotcl implementation class from ql-impl so the ql-impl-util and ql-network packages can name it --- quicklisp/impl-util.lisp | 4 ++++ quicklisp/impl.lisp | 12 ++++++++++++ quicklisp/network.lisp | 2 ++ quicklisp/package.lisp | 1 + 4 files changed, 19 insertions(+) diff --git a/quicklisp/impl-util.lisp b/quicklisp/impl-util.lisp index f69cb51..aa9d488 100644 --- a/quicklisp/impl-util.lisp +++ b/quicklisp/impl-util.lisp @@ -57,6 +57,8 @@ ".clinit.cl") (:implementation abcl ".abclrc") + (:implementation dotcl + (ql-dotcl:user-init-file)) (:implementation ccl #+windows "ccl-init.lisp" @@ -219,6 +221,8 @@ quicklisp at CL startup." (:implementation abcl (directory (merge-pathnames *wild-entry* directory) #+abcl :resolve-symlinks #+abcl nil)) + (:implementation dotcl + (directory (merge-pathnames *wild-entry* directory))) (:implementation ccl (directory (merge-pathnames *wild-entry* directory) #+ccl :directories #+ccl t diff --git a/quicklisp/impl.lisp b/quicklisp/impl.lisp index 1d1a2ce..10c7f72 100644 --- a/quicklisp/impl.lisp +++ b/quicklisp/impl.lisp @@ -151,6 +151,18 @@ #:make-socket #:get-socket-stream)) +;;; dotcl + +(define-implementation-package :dotcl #:ql-dotcl + (:documentation + "dotcl - Common Lisp on .NET - https://github.com/dotcl/dotcl") + (:class dotcl) + (:prep (require "dotcl-socket")) + (:reexport-from #:dotcl-socket + #:socket-connect) + (:reexport-from #:dotcl + #:user-init-file)) + ;;; Clozure CL (define-implementation-package :ccl #:ql-ccl diff --git a/quicklisp/network.lisp b/quicklisp/network.lisp index 4a09a52..3ebacaf 100644 --- a/quicklisp/network.lisp +++ b/quicklisp/network.lisp @@ -23,6 +23,8 @@ (:implementation abcl (let ((socket (ql-abcl:make-socket host port))) (ql-abcl:get-socket-stream socket :element-type '(unsigned-byte 8)))) + (:implementation dotcl + (ql-dotcl:socket-connect host port :binary t)) (:implementation ccl (ql-ccl:make-socket :remote-host host :remote-port port)) diff --git a/quicklisp/package.lisp b/quicklisp/package.lisp index 5140597..ba685ac 100644 --- a/quicklisp/package.lisp +++ b/quicklisp/package.lisp @@ -50,6 +50,7 @@ #:clisp #:cmucl #:cormanlisp + #:dotcl #:ecl #:gcl #:genera