https://github.com/Lovesan/bike
Велосипед представляет из себя интерфейс Common Lisp к .Net Core.
Рантайм последнего подгружается в лисп, и дергается за разные интересные места. В том числе поддерживаются коллбеки - из лисповых функций можно делать делегаты и передавать в дотнет, навешивать на эвенты и так далее.
Абсолютно кроссплатформенно.
Вобщем, ящитаю, проблема с библиотеками у Common Lisp решена.
(use-package :bike)
(import-assembly 'System.Runtime.InteropServices.RuntimeInformation)
(use-namespace 'System.Runtime.InteropServices)
(defun hello ()
(let* ((os (property 'RuntimeInformation 'OSDescription))
(delegate (new '(System.Action :string)
(lambda (who)
(format t "Hello ~a!~%You are running .Net Core~% inside ~a ~a~% on ~a"
who
(lisp-implementation-type)
(lisp-implementation-version)
os))))
(user (property 'System.Environment 'UserName)))
(invoke delegate 'invoke user)))
(hello)
;; ==>
;; Hello lovesan!
;; You are running .Net Core
;; inside SBCL 1.5.3
;; on Linux 4.15.0-1041-aws #43-Ubuntu SMP Thu Jun 6 13:39:11 UTC 2019