fukamachi / woo

A fast non-blocking HTTP server on top of libev
http://ultra.wikia.com/wiki/Woo_(kaiju)
MIT License
1.27k stars 96 forks source link

Windows? #112

Open MarcRohrer opened 2 months ago

MarcRohrer commented 2 months ago

Hi Eitaro,

in the introduction to your ELS talk, I leared that you are the author of the fastest Web-Server. This is woo, right? But is it supposted to be usable under Windows also? I wanted to try it, but installing via OCICL I get this error:

H:\src\ttt>ocicl install woo
; downloaded ghcr.io/ocicl/woo@sha256:25a9d2545bbce79e71c2a0933001c8af5d464c11d239bf5e549bf40f505332a5
; downloaded ghcr.io/ocicl/cffi-grovel@sha256:610379f5b978da0da3716023f395512236c80b6e66e6815ab75e06bf66de1060
; downloaded ghcr.io/ocicl/alexandria@sha256:e433c2e076ed3bcf8641b97b00192680db2201d305efac9293539dee88c7fbf7
; downloaded ghcr.io/ocicl/trivial-features@sha256:e278e24d39060fc7d3715531b16ddd9ab7f93f22ade53e436c0b86dbae3aa065
; downloaded ghcr.io/ocicl/babel@sha256:39a165e12b8dd705e731d17a0339047499a77002595c7069c3af4cba97f4d2a4
; downloaded ghcr.io/ocicl/lev@sha256:186548108c7dab9625e73e403fccd3f501ac0d75b510f1cf1d1323f25cc8d651
; downloaded ghcr.io/ocicl/clack-socket@sha256:ddffe5f32df4b9743665087b2bf08cc728757397afd24921532274f5f1170823
; downloaded ghcr.io/ocicl/swap-bytes@sha256:06edc17deb0f27cdf6290689711ece670a8282dfd07b732a9adc541af1ce7ed6
; downloaded ghcr.io/ocicl/static-vectors@sha256:6cbf2816835ca0ae3140d40d736502c66a5bb1f82c7081af4493c31b30c5e103
; downloaded ghcr.io/ocicl/bordeaux-threads@sha256:009463cad7b73ab3d4ce4be6e02df123898acea4c2f3ff903299bcb219c73238
; downloaded ghcr.io/ocicl/global-vars@sha256:d197e871c9c9abc4bf31b1186f5fd28f0ca848ebe2e9dddf2d82ecee01dbdc65
; downloaded ghcr.io/ocicl/trivial-garbage@sha256:a85dcf4110ad60ae9f6c70970acceb2bf12402ce5326891643d35506059afb1d
; downloaded ghcr.io/ocicl/fast-http@sha256:44e98b5239c0ded4921dc0b04ae272cff00583d93797a657543db782979eb50c
; downloaded ghcr.io/ocicl/cl-utilities@sha256:e5e0676a4e0627332a0fe64d56ed4f1890f0466d715a11e8d95561b4c2baa38f
; downloaded ghcr.io/ocicl/proc-parse@sha256:0880f9acb35eb9efbe1f77a981e36e84e8f29a22b14f680c7686eb381fa87bd6
; downloaded ghcr.io/ocicl/xsubseq@sha256:7605d14f7cc7fd2f63190ad81fe7bd65daef105d6728ee6bb59baef49da2aa51
; downloaded ghcr.io/ocicl/smart-buffer@sha256:b8d194f5881c415fd7f0099b88dfd9e2158405c2966de15c716b155a364bf0f7
; downloaded ghcr.io/ocicl/flexi-streams@sha256:95005b06a8a95c82780c75ead53810bcb273d07fcf5fe76b527f1856df9923f2
; downloaded ghcr.io/ocicl/trivial-gray-streams@sha256:d0cc9fb73876100ee60647524f98b5b22566fa1c3a985d79548b0d2b228f8b51
; downloaded ghcr.io/ocicl/quri@sha256:e2559f91600e4895e115b42dde88fcaac3677f051335d73431888dcf7af99f95
; downloaded ghcr.io/ocicl/split-sequence@sha256:3a37662eedd99c42995587b9d443c4631f25c4c523091bcca31a27b880585b8e
; downloaded ghcr.io/ocicl/fast-io@sha256:7ba35a0eddf00b3c25656b3c5a93e95460f6cb8f807afbc04ef4f50076d95aff
; downloaded ghcr.io/ocicl/trivial-utf-8@sha256:014e7fa0edd7f351c8b38c3247e0cdda438235bb8a086bb0f2bac08f78ef400d
; downloaded ghcr.io/ocicl/trivial-mimes@sha256:b33ae6d62bcd666d046e4ae1625b8e8b46a548fe2c4f18b4899ce1ecf581c17b
; downloaded ghcr.io/ocicl/vom@sha256:bae85e5543880d4fbbb292c0a4a824e100d136607cf2a859771d61b75f847f23

debugger invoked on a CFFI:LOAD-FOREIGN-LIBRARY-ERROR in thread
#<THREAD "main thread" RUNNING {237B0049}>:
  Unable to load foreign library (LIBEV).
  Error opening shared object "libev.dll":
 Das angegebene Modul wurde nicht gefunden.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [RETRY                        ] Try loading the foreign library again.
  1: [USE-VALUE                    ] Use another library instead.
  2: [TRY-RECOMPILING              ] Recompile lev and try loading it again
  3: [RETRY                        ] Retry
                                     loading FASL for #<CL-SOURCE-FILE "lev" "src" "lev">.
  4: [ACCEPT                       ] Continue, treating
                                     loading FASL for #<CL-SOURCE-FILE "lev" "src" "lev">
                                     as having been successful.
  5:                                 Retry ASDF operation.
  6: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting the
                                     configuration.
  7:                                 Retry ASDF operation.
  8:                                 Retry ASDF operation after resetting the
                                     configuration.
  9: [ABORT                        ] Exit from the current thread.

(CFFI::FL-ERROR "Unable to load foreign library (~A).~%  ~A" LIBEV "Error opening shared object \"libev.dll\":
 Das angegebene Modul wurde nicht gefunden.")
   source: (ERROR 'LOAD-FOREIGN-LIBRARY-ERROR :FORMAT-CONTROL CONTROL
                  :FORMAT-ARGUMENTS ARGUMENTS)
0]

Marc

mdbergmann commented 2 months ago

From error message it seems that a shared library "libev.dll" is missing. This is one of the "requirements" noted in the readme. But I do not know how to install this on Windows, maybe Pacman?

MarcRohrer commented 2 months ago

So that means, everything is downloaded? I did not even have a a look at anything yet 😳

mdbergmann commented 2 months ago

From the looks of the downloaded Common Lisp packages it seems kinda complete. But 'libev.dll' is an additional manual install. Like installing third-party libraries. On Mac one would use 'brew' to install it. The readme only mentions UNIX, so could be it doesn't work on Windows. But then, why not.

MarcRohrer commented 2 months ago

Thanx! I will have a look, when I have time. Maybe someone knows where to get it? Maybe one has to compile from source.

fukamachi commented 2 months ago

Woo doesn't support Windows since it requires libev, and it doesn't run on Windows. Do you use Windows for a web server?

MarcRohrer commented 2 months ago

Hi,

yes, absolutely. I usually do not have a choice, what platform to use. Sad to hear that!

Marc

fukamachi commented 2 months ago

Okay..., then Woo can't help you!

I had ever used Hunchentoot on a Windows machine, but it didn't need any performance as it was a local HTTP server. If you need an asynchronous one, Wookie can be an option. It uses libuv, a portable equivalent.

conradwt commented 2 months ago

@MarcRohrer If you're using a Windows machine, I recommend looking into using Windows Subsystem for Linux (WSL). Then you should be able to install the required packages to run Woo.

MarcRohrer commented 2 months ago

Thank you!