libuv is cross-platform support library which was originally written for NodeJS. It's designed around the event-driven asynchronous I/O model.
The library provides much more than simply abstraction over different I/O polling mechanisms:
diff --git a/test/echo-server.c b/test/echo-server.c | |
index 8a8366f..29736ea 100644 | |
--- a/test/echo-server.c | |
+++ b/test/echo-server.c | |
@@ -63,18 +63,26 @@ static void after_write(uv_write_t* req, int status) { | |
} | |
+static void after_shutdown(uv_shutdown_t* req, int status) { | |
+ uv_close((uv_handle_t*) req->handle, on_close); |
Sampling process 33217 for 3 seconds with 1 millisecond of run time between samples | |
Sampling completed, processing symbols... | |
Analysis of sampling moar (pid 33217) every 1 millisecond | |
Process: moar [33217] | |
Path: /Users/saghul/src/rakudo/install/bin/moar | |
Load Address: 0x10f26d000 | |
Identifier: moar | |
Version: 0 | |
Code Type: X86-64 | |
Parent Process: make [32867] |
commit 833777e0c89bc9f3b05db09564134c8932e52ecf | |
Author: Saúl Ibarra Corretgé <[email protected]> | |
Date: Thu Aug 14 22:18:28 2014 +0200 | |
fs: ifx uv_fs_readdir_next reported types | |
Some systems (hello SunOS!) don't have thr d_type field on struct | |
dirent, so mark them as UV_DIRENT_UNKNOWN, also mark anything not a | |
directory or a file as unknown. |
d802486 - test: disable tcp_close_accept on Windows | |
2e9d86e - windows: add uv_backend_timeout | |
89fc7d8 - windows: fix buffer overflow on uv__getnameinfo_work() | |
2cd91f9 - unix, windows: move uv_loop_close out of assert | |
8db4238 - windows: sort environment variables before calling CreateProcess | |
2ce14cf - windows: add more required environment variables | |
431b535 - windows: use UV_ECANCELED for aborted TCP writes | |
e72d48d - unix, windows: const-ify handle in uv_udp_getsockname | |
ff6a718 - Now working on v0.11.28 | |
ffe24f9 - 2014.07.32, Version 0.11.27 (Unstable) |
$ makepkg-mingw -L --nocheck | |
=> WARNING: You don't have installed mingw-w64 toolchain for architecture x86_64. | |
=> WARNING: To install it run: 'pacman -S mingw-w64-x86_64-toolchain' | |
==> Making package: mingw-w64-i686-lame 3.99.5-2 (Thu, Jul 31, 2014 1:06:24 PM) | |
==> Checking runtime dependencies... | |
==> Checking buildtime dependencies... | |
==> Retrieving sources... | |
-> Downloading lame-3.99.5.tar.gz... | |
% Total % Received % Xferd Average Speed Time Time Time Current | |
Dload Upload Total Spent Left Speed |
C:/msys2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o: In function `pre_c_init': | |
C:/repo/mingw-w64-crt-git/src/crt/mingw-w64-crt/crt/crtdll.c:67: undefined reference to `_encode_pointer' | |
C:/repo/mingw-w64-crt-git/src/crt/mingw-w64-crt/crt/crtdll.c:67: undefined reference to `__onexitbegin' | |
C:/repo/mingw-w64-crt-git/src/crt/mingw-w64-crt/crt/crtdll.c:67: undefined reference to `__onexitend' | |
C:/msys2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o: In function `InterlockedCompareExchange': | |
C:/msys64r/mingw32/i686-w64-mingw32/include/psdk_inc/intrin-impl.h:965: undefined reference to `__native_startup_lock' | |
C:/msys2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o: In function `CRT_INIT@12': | |
C:/repo/mingw-w64-crt-git/src/crt/mingw-w64-crt/crt/crtdll.c:132: undefined reference to `__native_startup_state' | |
C:/msys2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../.. |
saghul@foxtrot /c/Users/saghul/work/pyqt4/sip-4.16.2/sip-4.16.2 | |
$ python configure.py --platform win32-g++ | |
This is SIP 4.16.2 for Python 2.7.7 on win32. | |
The SIP code generator will be installed in C:/msys32/mingw32. | |
The sip module will be installed in | |
C:/msys32/mingw32/lib/python2.7/site-packages. | |
The sip.h header file will be installed in C:/msys32/mingw32/include/python2.7. | |
The default directory to install .sip files in is C:/msys32/mingw32\sip. | |
Creating siplib/sip.h... | |
Creating siplib/siplib.c... |
saghul@foxtrot /c/Users/saghul/work/python-cjson/python-cjson-1.1.0 | |
$ ./build_inplace | |
running build_ext | |
building 'cjson' extension | |
C:\msys32\mingw32\bin/i686-w64-mingw32-gcc.exe -fno-strict-aliasing -march=i686 -mtune=generic -O2 -pipe -fwrapv -D__USE_MINGW_ANSI_STDIO=1 -IC:/msys64r/mingw32/i686-w64-mingw32/include -DNDEBUG -DNDEBUG -DMODULE_VERSION=1.1.0 -IC:/msys32/mingw32/include/python2.7 -c cjson.c -o build/temp.mingw-2.7/cjson.o | |
writing build/temp.mingw-2.7/cjson.def | |
C:\msys32\mingw32\bin/i686-w64-mingw32-gcc.exe -shared -Wl,--enable-auto-image-base -pipe -LC:/msys64r/mingw32/i686-w64-mingw32/lib -LC:/msys64r/mingw32/lib -s -s build/temp.mingw-2.7/cjson.o build/temp.mingw-2.7/cjson.def -L/mingw32/lib -lpython2.7 -o C:/Users/saghul/work/python-cjson/python-cjson-1.1.0/cjson.pyd | |
C:/msys32/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.0/../../../../i686-w64-mingw32/lib/../lib/dllcrt2.o: In function `pre_c_init': | |
C:/repo/mingw-w64-crt/src/crt/mingw-w64-crt/crt/crtdll.c:67: undefined reference to `_encode_poin |
commit daf360ee7660d683da44650c5a154ba11403b7d5 | |
Author: Saúl Ibarra Corretgé <[email protected]> | |
Date: Tue Jul 8 22:17:34 2014 +0200 | |
windows: set readable and writable flags on uv_tcp_open | |
We don't know if it's connected already, but do it as a best-effort | |
approach. FWIW we do the same on Unix. | |
diff --git a/src/win/tcp.c b/src/win/tcp.c |