Re: memcached for Windows (Win32 and Win64)

2020-04-04 Thread dormando
Hey,

Thanks for this! I haven't had time yet to look closely. I'll throw out a
few sentences to maybe start a convo:

I think this is the third or fourth windows port. Usually they come out,
run for a few versions, then the maintainer gets distracted and it stops.

Often the patches are huge/unwieldy or simply replace code so it won't run
on anything _but_ windows.

In that spirit, do you have any interest in finding what code can be
upstreamed to either minimize the size of the fork to something managable
longer term, or at least fiddle in that direction?

My thought would be (though again I haven't at all looked at what
you've done) is to break down the changes into small chunks to be
individually reviewed and upstreamed so that the fork simply shrinks with
time. There should be some changes that're easier than others to upstream.

thanks,
-Dormando

On Sat, 4 Apr 2020, Jefty Negapatan wrote:

> Hello Memcached community!
> Just an update:
>
> Again, the unsupported options/features (may support in the future):
>
>  1. sasl (Upstream support since v1.4.3)
>  2. extstore (Upstream support since v1.5.4) Now supported! All tests passed!
>  3. -u/user (Better use Windows runas command, Windows explorer's Run as 
> different user context
> menu, or other Windows built-in tools)
>  4. -s/unix-socket
>  5. -k/lock-memory
>  6. -r/coredumps
>  7. seccomp
>
> Build/Tests/Artifacts: https://ci.appveyor.com/project/jefty/memcached-windows
>
> Alternative Downloads: 
> https://bintray.com/jefty/generic/memcached-windows/_latestVersion
>
> Regards,
> Jefty
>
> On Tuesday, March 31, 2020 at 9:35:47 PM UTC+2, Jefty Negapatan wrote:
>
>   Hello Memcached community!
>
>
>   Just an update (v1.6.3):
>
>
>   Unsupported/Disabled options/features (may support in the future):
>
>   tls (Upstream support since v1.5.13) Now supported! Built and tested 
> with latest OpenSSL
>   (1.1.1d). Built and tested with latest BoringSSL (chromium-stable). 
> BoringSSL reduced
>   the statically-linked executable size by ~34% (Win64 2.94MB -> 1.94MB). 
> BoringSSL
>   already rejects peer renegotiations by default so the unsupported 
> OpenSSL-only
>   SSL_in_before API used in memcached is no longer necessary. I just 
> disabled it using
>   OPENSSL_IS_BORINGSSL macro.
>
>   Testing:
>
>   NOTE: Since Perl-based test suite is not executed, test is lacking on 
> some areas. Use at
>   your own risk! Perl-based test suite is now ported and it was able to 
> detect issues and
>   I already fixed! Majority of the test suite change is only disabling 
> the unsupported
>   unix socket connection but no changes in test cases/scenarios. All 
> tests PASSED! This
>   will now give Windows users the confidence to use the native Windows 
> port.
>
>   GitHub Release: 
> https://github.com/jefyt/memcached-windows/releases/tag/1.6.3_mingw
>
>   Build/Test/Artifacts:
>   https://ci.appveyor.com/project/jefty/memcached-windows/builds/31859470
>
>   Again, the unsupported options/features (may support in the future):
>
>1. sasl (Upstream support since v1.4.3)
>2. extstore (Upstream support since v1.5.4)
>3. -u/user (Can use Windows runas command or Windows explorer's Run as 
> different user
>   context menu)
>4. -s/unix-socket
>5. -k/lock-memory
>6. -r/coredumps
>7. seccomp
>
>
>   Regards,
> Jefty
>
> On Friday, March 27, 2020 at 10:25:05 PM UTC+1, Jefty Negapatan wrote:
>   Hello Memcached community!
> Just an update:
>
> Unsupported/Disabled options/features (may support in the future):
>  1. tls (Upstream support since v1.5.13) Now supported! Built and tested with 
> latest
> OpenSSL (1.1.1d).
> Just like cURL and Google Chrome for Windows, TLS library is statically 
> linked.
> Statically-linked exe size: 327KB -> 3,008KB
>
> Regards,
> Jefty
>
> On Tuesday, March 24, 2020 at 11:26:13 PM UTC+1, Jefty Negapatan wrote:
>   Hello Memcached community!
>
> Just wanna share that I've ported the latest memcached (1.6.2) to Windows. 
> Based
> on my search if I'm not mistaken, the last native Windows build (not via
> Cygwin/WSL) is already outdated (1.4.5).
>
> Unsupported/Disabled options/features (may support in the future):
>  1. sasl (Upstream support since v1.4.3)
>  2. extstore (Upstream support since v1.5.4)
>  3. tls (Upstream support since v1.5.13)
>  4. -u/user (Can use Windows runas command or Windows explorer's Run as 
> different
> user context menu)
>  5. -s/unix-socket (Windows does not currently support Unix domain socket)
>  6. -k/lock-memory (Windows does not currently support locking of all paged
> memory)
>  7. -r/coredumps (mingw-w64 currently doesn't support postmortem but gdb 
> debugging
> without coredump is possible)
>  8. seccomp (Linux-specific)
>
> Testing:
>  1. memcached's testapp is also ported to easily verify that the port is 
> working
> as expect

Re: memcached for Windows (Win32 and Win64)

2020-04-04 Thread Jefty Negapatan
Hello Memcached community!

Just an update:

Again, the unsupported options/features (may support in the future):

   1. sasl (Upstream support since v1.4.3)
   2. extstore (Upstream support since v1.5.4) *Now supported! All tests 
   passed!*
   3. -u/user (Better use Windows runas command, Windows explorer's Run as 
   different user context menu, or other Windows built-in tools)
   4. -s/unix-socket
   5. -k/lock-memory
   6. -r/coredumps
   7. seccomp

Build/Tests/Artifacts: 
https://ci.appveyor.com/project/jefty/memcached-windows
Alternative Downloads: 
https://bintray.com/jefty/generic/memcached-windows/_latestVersion

Regards,
Jefty

On Tuesday, March 31, 2020 at 9:35:47 PM UTC+2, Jefty Negapatan wrote:
>
> Hello Memcached community!
>
>
> Just an update (v1.6.3):
>
>
> *Unsupported/Disabled options/features (may support in the future):*
>
> *tls* (Upstream support since v1.5.13) *Now supported! **Built and tested 
> with latest OpenSSL (1.1.1d).* Built and tested with latest *BoringSSL 
> (chromium-stable)*. *BoringSSL* reduced the statically-linked executable 
> size by *~34%* (Win64 2.94MB -> 1.94MB). *BoringSSL* already rejects peer 
> renegotiations by default so the unsupported *OpenSSL*-only 
> *SSL_in_before* API used in memcached is no longer necessary. I just 
> disabled it using *OPENSSL_IS_BORINGSSL* macro.
>
> *Testing:*
>
> *NOTE:* Since Perl-based test suite is not executed, test is lacking on 
> some areas. *Use at your own risk!* Perl-based test suite is now ported 
> and it was able to detect issues and I already fixed! Majority of the test 
> suite change is only disabling the unsupported unix socket connection but 
> no changes in test cases/scenarios. All tests *PASSED*! This will now 
> give Windows users the confidence to use the native Windows port.
>
> GitHub Release: 
> https://github.com/jefyt/memcached-windows/releases/tag/1.6.3_mingw 
>
> Build/Test/Artifacts: 
> https://ci.appveyor.com/project/jefty/memcached-windows/builds/31859470
>
> Again, the unsupported options/features (may support in the future):
>
>1. sasl (Upstream support since v1.4.3)
>2. extstore (Upstream support since v1.5.4)
>3. -u/user (Can use Windows runas command or Windows explorer's Run as 
>different user context menu)
>4. -s/unix-socket
>5. -k/lock-memory
>6. -r/coredumps
>7. seccomp
>
>
> Regards,
> Jefty
>
> On Friday, March 27, 2020 at 10:25:05 PM UTC+1, Jefty Negapatan wrote:
>>
>> Hello Memcached community!
>>
>> Just an update:
>>
>> *Unsupported/Disabled options/features (may support in the future):*
>>
>>1. *tls* (Upstream support since v1.5.13) *Now supported! Built and 
>>tested with latest OpenSSL (1.1.1d).*
>>
>> Just like cURL and Google Chrome for Windows, TLS library is statically 
>> linked.
>> Statically-linked exe size: *327KB* -> *3,008KB*
>>
>> Regards,
>> Jefty
>>
>> On Tuesday, March 24, 2020 at 11:26:13 PM UTC+1, Jefty Negapatan wrote:
>>>
>>> Hello Memcached community!
>>>
>>> Just wanna share that I've ported the latest memcached (1.6.2 
>>> ) to 
>>> Windows. Based on my search if I'm not mistaken, the last native Windows 
>>> build (not via Cygwin/WSL) is already outdated (1.4.5).
>>>
>>> *Unsupported/Disabled options/features (may support in the future):*
>>>
>>>1. *sasl* (Upstream support since v1.4.3)
>>>2. *extstore* (Upstream support since v1.5.4)
>>>3. *tls* (Upstream support since v1.5.13)
>>>4. *-u/user* (Can use Windows *runas* command or Windows explorer's *Run 
>>>as different user* context menu)
>>>5. *-s/unix-socket* (Windows does not currently support Unix domain 
>>>socket)
>>>6. *-k/lock-memory* (Windows does not currently support locking of 
>>>all paged memory)
>>>7. *-r/coredumps* (mingw-w64  
>>>currently doesn't support postmortem but gdb debugging without coredump 
>>> is 
>>>possible)
>>>8. *seccomp* (Linux-specific)
>>>
>>>
>>> *Testing:*
>>>
>>>1. memcached's *testapp* is also ported to easily verify that the 
>>>port is working as expected (all *57* tests are *OK*)
>>>2. *make test* will only execute *testapp.exe* and *sizes.exe* but 
>>>not the Perl-based test suite (at least currently)
>>>3. mc-crusher  test is also 
>>>performed (although not really for hours/days).
>>>4. Maximum connection limit concurrency testing is also performed 
>>>using libMemcached 's *memcslap*.
>>>5. *NOTE:* Since Perl-based test suite is not executed, test is 
>>>lacking on some areas. *Use at your own risk!*
>>>
>>>
>>> Since the ideal target is to be merged upstream although not really a 
>>> priority and just depends on the maintainer, the codes are carefully 
>>> written (and of course tested!) not to cause major merge conflicts with the 
>>> base code. You can confirm this w