akamai / cl-http2-protocol Goto Github PK
View Code? Open in Web Editor NEWHTTP/2 interop library in Common Lisp
License: Other
HTTP/2 interop library in Common Lisp
License: Other
I got the system to build, but it won't run and thought it would be useful to document how to get this far so that if someone else wants to pick up the ball and run with it they'll have a head start.
First, you'll want to review the contents of issue #4. Those are just symptoms of the fact that cl-async
and cl+ssl
both wrap the OpenSSL libs (why doesn't cl-async use cl+ssl?). @martinflack describes at a high level what remains to be done to finish off the project. I don't think any of this is insurmountable, but it will take a bit of time to organise all the pieces.
The immediate fixes to get the system building in this repo are:
:cl-libevent2-ssl
to the list of dependencies in the ASDF fileuse
with mix
in the example package definitionemit
These changes, and a few others, are in the Symbolics fork. A pull request has been made to bring these into this repo.
The remaining issues are in the dependent libraries, mostly cl-async and its dependencies, which seems to have suffered some minor bit rot.
cl-async
in turn has a dependency on cl-libevent2, a CFFI wrapper over libevent. The wrapper code was generated with swig, which has removed support for Common Lisp in its latest version. cl-libevent2
uses an older version of libevent. There are a few options:
swig
and regenerate the bindings with a newer libeventWhilst this may get cl-async
compiling on a developers workstation, it's not going to be a very nice user experience for others who want to use the library.
Now you can build cl-http2-protocol
. The build will contain errors because of references to internal cl-async
functions, now removed. See #4 for an explanation of why. The build errors aren't that great in number. Someone needs to look at each of the internal cl-async
functions called and check for a public interface equivalent. Ideally do this working with the upstream maintainer to get any changes adopted there. It would probably be good for both projects.
There's some other tidying up that could be done in cl+ssl
, but there don't appear to be any blockers there.
; file: s:/src/http2/tcp.lisp
; in: CL-ASYNC-UTIL:DEFINE-C-CALLBACK CL-ASYNC::TCP-EVENT-CB
; (CL-ASYNC::GET-LAST-TCP-ERR)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC::GET-LAST-TCP-ERR
; file: s:/src/http2/example.lisp
; in: DEFUN CL-HTTP2-PROTOCOL-EXAMPLE:EXAMPLE-CLIENT
; (CL-ASYNC-SSL::INIT-SSL-CLIENT-CONTEXT CL+SSL::*SSL-GLOBAL-CONTEXT*)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC-SSL::INIT-SSL-CLIENT-CONTEXT
; file: s:/src/http2/tcp-ssl.lisp
; in: DEFUN CL-ASYNC-SSL:TCP-SSL-SERVER
; (CL-ASYNC-SSL::LAST-SSL-ERROR)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC-SSL::LAST-SSL-ERROR
; file: s:/src/http2/tcp.lisp
; in: CL-ASYNC-UTIL:DEFINE-C-CALLBACK CL-ASYNC::TCP-EVENT-CB
; (CL-ASYNC::RELEASE-DNS-BASE)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC::RELEASE-DNS-BASE
; file: s:/src/http2/tcp-ssl.lisp
; in: DEFUN CL-ASYNC-SSL:TCP-SSL-SERVER
; (CL-ASYNC-SSL::TCP-SERVER-C CL-ASYNC-SSL::SERVER)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC-SSL::TCP-SERVER-C
; (CL-ASYNC-SSL::TCP-SERVER-DATA-POINTER CL-ASYNC-SSL::SERVER)
;
; caught STYLE-WARNING:
; undefined function: CL-ASYNC-SSL::TCP-SERVER-DATA-POINTER
; file: s:/src/http2/tcp.lisp
; in: CL-ASYNC-UTIL:DEFINE-C-CALLBACK CL-ASYNC::TCP-EVENT-CB
; (CL-ASYNC-UTIL:RUN-EVENT-CB CL-ASYNC::EVENT-CB CL-ASYNC:EVENT)
; --> HANDLER-BIND SB-KERNEL::%HANDLER-BIND LET SB-INT:DX-FLET FLET
; --> #:H0 BLOCK SETF
; ==>
; (SETQ CL-ASYNC::_EVCB-ERR CL-ASYNC::E)
;
; caught WARNING:
; undefined variable: CL-ASYNC::_EVCB-ERR
;
; compilation unit finished
; Undefined functions:
; CL-ASYNC::GET-LAST-TCP-ERR CL-ASYNC-SSL::INIT-SSL-CLIENT-CONTEXT CL-ASYNC-SSL::LAST-SSL-ERROR CL-ASYNC::RELEASE-DNS-BASE CL-ASYNC-SSL::TCP-SERVER-C CL-ASYNC-SSL::TCP-SERVER-DATA-POINTER
; Undefined variable:
; CL-ASYNC::_EVCB-ERR
; caught 1 WARNING condition
; caught 19 STYLE-WARNING conditions
Hi,
The problem described in this issue occurs with SBCL 1.5.4 using the versions of the dependencies that were installed by Quicklisp at the time of this writing on both platforms I tried it on:
I performed the setup and execution as per the instructions in the readme:
git clone https://github.com/akamai/cl-http2-protocol.git
wget http://beta.quicklisp.org/quicklisp.lisp
cat > deps.lisp <<EOF
(load "quicklisp.lisp")
(quicklisp-quickstart:install)
(ql:quickload :swank)
(ql:quickload :alexandria)
(ql:quickload :anaphora)
(ql:quickload :babel)
(ql:quickload :puri)
(ql:quickload :usocket)
(ql:quickload :cl+ssl)
(ql:quickload :cl-async)
(ql:quickload :cl-async-ssl)
EOF
sbcl --script deps.lisp
cat > server.lisp <<EOF
(load "quicklisp/setup.lisp")
(load "cl-http2-protocol/cl-http2-protocol.asd")
(require :cl-http2-protocol)
(in-package :http2-example)
(example-server)
EOF
sbcl --script server.lisp
Results in an error condition during compilation due to a naming conflict, and sbcl terminates:
[...]
; compiling (DEFPACKAGE :CL-HTTP2-PROTOCOL-EXAMPLE ...)ASDF could not load cl-http2-protocol because
USE-PACKAGE #<PACKAGE "CL+SSL"> causes name-conflicts in
#<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE"> between the following symbols:
CL+SSL:+SSL-OP-NO-TLSV1-1+, CL-ASYNC-SSL:+SSL-OP-NO-TLSV1-1+
See also:
The ANSI Standard, Section 11.1.1.2.5.
Unhandled NAME-CONFLICT in thread #<SB-THREAD:THREAD "main thread" RUNNING
{10005084F3}>:
USE-PACKAGE #<PACKAGE "CL+SSL"> causes name-conflicts in
#<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE"> between the following symbols:
CL+SSL:+SSL-OP-NO-TLSV1-1+, CL-ASYNC-SSL:+SSL-OP-NO-TLSV1-1+
See also:
The ANSI Standard, Section 11.1.1.2.5
Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {10005084F3}>
0: (SB-DEBUG::DEBUGGER-DISABLED-HOOK #<NAME-CONFLICT {1001B35783}> #<unused argument> :QUIT T)
1: (SB-DEBUG::RUN-HOOK *INVOKE-DEBUGGER-HOOK* #<NAME-CONFLICT {1001B35783}>)
2: (INVOKE-DEBUGGER #<NAME-CONFLICT {1001B35783}>)
3: (ERROR #<NAME-CONFLICT {1001B35783}>)
4: (SB-KERNEL:WITH-SIMPLE-CONDITION-RESTARTS ERROR NIL NAME-CONFLICT :PACKAGE #<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE"> :SYMBOLS (CL+SSL:+SSL-OP-NO-TLSV1-1+ CL-ASYNC-SSL:+SSL-OP-NO-TLSV1-1+) :FUNCTION USE-PACKAGE :DATUM #<PACKAGE "CL+SSL">)
5: (NAME-CONFLICT #<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE"> USE-PACKAGE #<PACKAGE "CL+SSL"> CL+SSL:+SSL-OP-NO-TLSV1-1+ CL-ASYNC-SSL:+SSL-OP-NO-TLSV1-1+)
6: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN USE-PACKAGE))
7: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
8: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN USE-PACKAGE) {800FFCBDB}> #<SB-THREAD:MUTEX "Package Graph Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005084F3}>> T NIL)
9: (USE-PACKAGE (#<PACKAGE "COMMON-LISP"> #<PACKAGE "ALEXANDRIA.1.0.0"> #<PACKAGE "ANAPHORA"> #<PACKAGE "BABEL"> #<PACKAGE "CL-ASYNC"> #<PACKAGE "CL-ASYNC-SSL"> #<PACKAGE "PURI"> #<PACKAGE "CL+SSL"> #<PACKAGE "CL-HTTP2-PROTOCOL-UTIL"> #<PACKAGE "CL-HTTP2-PROTOCOL">) #<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE">)
10: (SB-IMPL::UPDATE-PACKAGE #<PACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE"> ("HTTP2-EXAMPLE") #S(SB-C:DEFINITION-SOURCE-LOCATION :NAMESTRING "/usr/home/erikn/cl-http2-protocol/packages.lisp" :INDICES 131073) NIL NIL (#<PACKAGE "COMMON-LISP"> #<PACKAGE "ALEXANDRIA.1.0.0"> #<PACKAGE "ANAPHORA"> #<PACKAGE "BABEL"> #<PACKAGE "CL-ASYNC"> #<PACKAGE "CL-ASYNC-SSL"> #<PACKAGE "PURI"> #<PACKAGE "CL+SSL"> #<PACKAGE "CL-HTTP2-PROTOCOL-UTIL"> #<PACKAGE "CL-HTTP2-PROTOCOL">) NIL NIL ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*") ("CL-HTTP2-PROTOCOL-EXAMPLE") NIL NIL "HTTP/2 draft-14/hpack-09 (h2-14) simple CL-ASYNC example client/server.")
11: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
12: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-IMPL::%DEFPACKAGE) {800FFCE9B}> #<SB-THREAD:MUTEX "Package Graph Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005084F3}>> T NIL)
13: (SB-IMPL::%DEFPACKAGE "CL-HTTP2-PROTOCOL-EXAMPLE" ("HTTP2-EXAMPLE") NIL NIL NIL ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2") NIL NIL ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*") ("CL-HTTP2-PROTOCOL-EXAMPLE") NIL NIL #S(SB-C:DEFINITION-SOURCE-LOCATION :NAMESTRING "/usr/home/erikn/cl-http2-protocol/packages.lisp" :INDICES 131073) "HTTP/2 draft-14/hpack-09 (h2-14) simple CL-ASYNC example client/server.")
14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...) #<NULL-LEXENV>)
15: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) #<NULL-LEXENV>)
16: (EVAL-TLF (PROGN (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) 3 #<NULL-LEXENV>)
17: ((FLET SB-C::FROB :IN SB-C::EVAL-COMPILE-TOPLEVEL))
18: (SB-C::EVAL-COMPILE-TOPLEVEL ((SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) (#1=(SB-IMPL::%DEFPACKAGE #2="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#2#)) (QUOTE NIL) ...) (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) #1#) SB-C::ORIGINAL-SOURCE-START 0 3))
19: (SB-C::PROCESS-TOPLEVEL-FORM (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...) ((EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) SB-C::ORIGINAL-SOURCE-START 0 3) (:COMPILE-TOPLEVEL))
20: (SB-C::PROCESS-TOPLEVEL-PROGN ((SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) ((EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) SB-C::ORIGINAL-SOURCE-START 0 3) (:COMPILE-TOPLEVEL))
21: (SB-C::PROCESS-TOPLEVEL-FORM (EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE) (SB-IMPL::%DEFPACKAGE #1="CL-HTTP2-PROTOCOL-EXAMPLE" (QUOTE ("HTTP2-EXAMPLE")) (QUOTE NIL) (QUOTE NIL) (QUOTE NIL) (QUOTE ("CL" "ALEXANDRIA" "ANAPHORA" "BABEL" "CL-ASYNC" "CL-ASYNC-SSL" "PURI" "CL+SSL" "HTTP2-UTIL" "HTTP2")) (QUOTE NIL) (QUOTE NIL) (QUOTE ("EXAMPLE-CLIENT" "EXAMPLE-SERVER" "*DUMP-BYTES*" "*DUMP-BYTES-STREAM*" "*DUMP-BYTES-HOOK*")) (QUOTE (#1#)) (QUOTE NIL) ...)) (SB-C::ORIGINAL-SOURCE-START 0 3) NIL)
22: (SB-C::PROCESS-TOPLEVEL-FORM (DEFPACKAGE :CL-HTTP2-PROTOCOL-EXAMPLE (:NICKNAMES :HTTP2-EXAMPLE) (:DOCUMENTATION "HTTP/2 draft-14/hpack-09 (h2-14) simple CL-ASYNC example client/server.") (:USE :CL :ALEXANDRIA :ANAPHORA :BABEL :CL-ASYNC :CL-ASYNC-SSL :PURI :CL+SSL :HTTP2-UTIL :HTTP2) (:EXPORT #:EXAMPLE-CLIENT #:EXAMPLE-SERVER #:*DUMP-BYTES* #:*DUMP-BYTES-STREAM* #:*DUMP-BYTES-HOOK*)) (SB-C::ORIGINAL-SOURCE-START 0 3) NIL)
23: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-COMPILE-FILE) (DEFPACKAGE :CL-HTTP2-PROTOCOL-EXAMPLE (:NICKNAMES :HTTP2-EXAMPLE) (:DOCUMENTATION "HTTP/2 draft-14/hpack-09 (h2-14) simple CL-ASYNC example client/server.") (:USE :CL :ALEXANDRIA :ANAPHORA :BABEL :CL-ASYNC :CL-ASYNC-SSL :PURI :CL+SSL :HTTP2-UTIL :HTTP2) (:EXPORT #:EXAMPLE-CLIENT #:EXAMPLE-SERVER #:*DUMP-BYTES* #:*DUMP-BYTES-STREAM* #:*DUMP-BYTES-HOOK*)) :CURRENT-INDEX 3)
24: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-C::SUB-COMPILE-FILE) {21D15C7B}> #<SB-C::SOURCE-INFO {10019443F3}> SB-C::INPUT-ERROR-IN-COMPILE-FILE)
25: ((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE))
26: ((FLET "WITHOUT-INTERRUPTS-BODY-29" :IN SB-THREAD::CALL-WITH-RECURSIVE-LOCK))
27: (SB-THREAD::CALL-WITH-RECURSIVE-LOCK #<CLOSURE (FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK :IN SB-C::SUB-COMPILE-FILE) {800FFD79B}> #<SB-THREAD:MUTEX "World Lock" owner: #<SB-THREAD:THREAD "main thread" RUNNING {10005084F3}>> T NIL)
28: ((FLET "LAMBDA0" :IN "SYS:SRC;COMPILER;MAIN.LISP"))
29: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
30: (SB-C::SUB-COMPILE-FILE #<SB-C::SOURCE-INFO {10019443F3}> NIL)
31: (COMPILE-FILE #P"/usr/home/erikn/cl-http2-protocol/packages.lisp" :OUTPUT-FILE #P"/usr/home/erikn/.cache/common-lisp/sbcl-1.5.4-bsd-x64/usr/home/erikn/cl-http2-protocol/packages-tmpGHU3ALSV.fasl" :VERBOSE NIL :PRINT NIL :EXTERNAL-FORMAT :UTF-8 :TRACE-FILE NIL :BLOCK-COMPILE NIL :EMIT-CFASL NIL)
32: (UIOP/UTILITY:CALL-WITH-MUFFLED-CONDITIONS #<CLOSURE (LAMBDA NIL :IN UIOP/LISP-BUILD:COMPILE-FILE*) {1001942D0B}> NIL)
33: (UIOP/PATHNAME:CALL-WITH-ENOUGH-PATHNAME #P"/usr/home/erikn/cl-http2-protocol/packages.lisp" NIL #<CLOSURE (LAMBDA (UIOP/LISP-BUILD::INPUT-FILE) :IN UIOP/LISP-BUILD:COMPILE-FILE*) {1001942C8B}>)
34: (UIOP/LISP-BUILD:COMPILE-FILE* #P"/usr/home/erikn/cl-http2-protocol/packages.lisp" :OUTPUT-FILE #P"/usr/home/erikn/.cache/common-lisp/sbcl-1.5.4-bsd-x64/usr/home/erikn/cl-http2-protocol/packages.fasl" :EXTERNAL-FORMAT :UTF-8 :WARNINGS-FILE NIL)
35: (ASDF/LISP-ACTION:PERFORM-LISP-COMPILATION #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-http2-protocol" "packages">)
36: ((SB-PCL::EMF ASDF/ACTION:PERFORM) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-http2-protocol" "packages">)
37: ((LAMBDA NIL :IN ASDF/ACTION:CALL-WHILE-VISITING-ACTION))
38: ((:METHOD ASDF/ACTION:PERFORM-WITH-RESTARTS :AROUND (T T)) #<ASDF/LISP-ACTION:COMPILE-OP > #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cl-http2-protocol" "packages">) [fast-method]
39: ((:METHOD ASDF/PLAN:PERFORM-PLAN (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1002C93063}>) [fast-method]
40: ((FLET SB-C::WITH-IT :IN SB-C::%WITH-COMPILATION-UNIT))
41: ((:METHOD ASDF/PLAN:PERFORM-PLAN :AROUND (T)) #<ASDF/PLAN:SEQUENTIAL-PLAN {1002C93063}>) [fast-method]
42: ((:METHOD ASDF/OPERATE:OPERATE (ASDF/OPERATION:OPERATION ASDF/COMPONENT:COMPONENT)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "cl-http2-protocol"> :PLAN-CLASS NIL :PLAN-OPTIONS NIL) [fast-method]
43: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "cl-http2-protocol"> :VERBOSE NIL)
44: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
45: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) #<ASDF/LISP-ACTION:LOAD-OP > #<ASDF/SYSTEM:SYSTEM "cl-http2-protocol"> :VERBOSE NIL) [fast-method]
46: ((SB-PCL::EMF ASDF/OPERATE:OPERATE) #<unused argument> #<unused argument> ASDF/LISP-ACTION:LOAD-OP ("cl-http2-protocol") :VERBOSE NIL)
47: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
48: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP ("cl-http2-protocol") :VERBOSE NIL) [fast-method]
49: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1002C786EB}> :OVERRIDE T :KEY NIL :OVERRIDE-CACHE T :OVERRIDE-FORCING NIL)
50: ((LAMBDA NIL :IN ASDF/OPERATE:OPERATE))
51: (ASDF/SESSION:CALL-WITH-ASDF-SESSION #<CLOSURE (LAMBDA NIL :IN ASDF/OPERATE:OPERATE) {1002C67B9B}> :OVERRIDE NIL :KEY NIL :OVERRIDE-CACHE NIL :OVERRIDE-FORCING NIL)
52: ((:METHOD ASDF/OPERATE:OPERATE :AROUND (T T)) ASDF/LISP-ACTION:LOAD-OP #<ASDF/SYSTEM:SYSTEM "cl-http2-protocol"> :VERBOSE NIL) [fast-method]
53: (ASDF/OPERATE:LOAD-SYSTEM #<ASDF/SYSTEM:SYSTEM "cl-http2-protocol"> :VERBOSE NIL)
54: (ASDF/OPERATE:MODULE-PROVIDE-ASDF :CL-HTTP2-PROTOCOL)
55: ((FLET "WRAPPER4" :IN REQUIRE) ASDF/OPERATE:MODULE-PROVIDE-ASDF)
56: (SB-KERNEL:%MAP-FOR-EFFECT-ARITY-1 #<CLOSURE (FLET "WRAPPER4" :IN REQUIRE) {800FFED9B}> (ASDF/OPERATE:MODULE-PROVIDE-ASDF SB-IMPL::MODULE-PROVIDE-CONTRIB))
57: (REQUIRE :CL-HTTP2-PROTOCOL NIL)
58: (SB-INT:SIMPLE-EVAL-IN-LEXENV (REQUIRE :CL-HTTP2-PROTOCOL) #<NULL-LEXENV>)
59: (EVAL-TLF (REQUIRE :CL-HTTP2-PROTOCOL) 2 NIL)
60: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (REQUIRE :CL-HTTP2-PROTOCOL) 2)
61: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (REQUIRE :CL-HTTP2-PROTOCOL) :CURRENT-INDEX 2)
62: (SB-C::%DO-FORMS-FROM-INFO #<CLOSURE (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {10014FCFEB}> #<SB-C::SOURCE-INFO {10014FCFA3}> SB-C::INPUT-ERROR-IN-LOAD)
63: (SB-INT:LOAD-AS-SOURCE #<SB-SYS:FD-STREAM for "file /usr/home/erikn/server.lisp" {10014EE7F3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
64: ((FLET SB-FASL::THUNK :IN LOAD))
65: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<CLOSURE (FLET SB-FASL::THUNK :IN LOAD) {800FFF69B}> #<SB-SYS:FD-STREAM for "file /usr/home/erikn/server.lisp" {10014EE7F3}>)
66: ((FLET SB-FASL::LOAD-STREAM :IN LOAD) #<SB-SYS:FD-STREAM for "file /usr/home/erikn/server.lisp" {10014EE7F3}> NIL)
67: (LOAD #<SB-SYS:FD-STREAM for "file /usr/home/erikn/server.lisp" {10014EE7F3}> :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
68: ((FLET SB-IMPL::LOAD-SCRIPT :IN SB-IMPL::PROCESS-SCRIPT) #<SB-SYS:FD-STREAM for "file /usr/home/erikn/server.lisp" {10014EE7F3}>)
69: ((FLET SB-UNIX::BODY :IN SB-IMPL::PROCESS-SCRIPT))
70: ((FLET "WITHOUT-INTERRUPTS-BODY-2" :IN SB-IMPL::PROCESS-SCRIPT))
71: (SB-IMPL::PROCESS-SCRIPT "server.lisp")
72: (SB-IMPL::TOPLEVEL-INIT)
73: ((FLET SB-UNIX::BODY :IN SAVE-LISP-AND-DIE))
74: ((FLET "WITHOUT-INTERRUPTS-BODY-7" :IN SAVE-LISP-AND-DIE))
75: ((LABELS SB-IMPL::RESTART-LISP :IN SAVE-LISP-AND-DIE))
unhandled condition in --disable-debugger mode, quitting
; compilation aborted after 0:00:00.018
;
; compilation unit aborted
; caught 2 fatal ERROR conditions
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.