Add ZSTD compression#16
Conversation
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7016 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7017 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7018 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7019 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7020 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7021 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7022 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7023 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7024 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7025 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7026 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7027 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7028 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7029 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7030 212acab6-be3b-0410-9dea-997c60f758d6
…eNSISW git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7031 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7032 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7033 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7034 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7035 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7036 212acab6-be3b-0410-9dea-997c60f758d6
…at overload git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7037 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7038 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7039 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7040 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7041 212acab6-be3b-0410-9dea-997c60f758d6
…ges) git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7042 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7043 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7044 212acab6-be3b-0410-9dea-997c60f758d6
…ILL_* behind WINVER >= 0x0500 and GradientFill behind WINVER >= 0x0410 git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7045 212acab6-be3b-0410-9dea-997c60f758d6
|
Rebased and fixed the last warnings on OSX/Linux. Outstanding:
|
132a0a5 to
a783a8a
Compare
You can probably use Visual Studio although I personally just use Resource Hacker and/or hand tweaking in Notepad. There are a few remaining issues for older toolchains and they are rather annoying. |
|
Updated MakeNsisW, zip2exe and added your changes to the second commit |
[WIP] Implement zstd compression
|
Last push added a warning when trying to set a compression level for bzip2. |
|
Are there any changes you would like me to make? Should I submit the commits via svn on sourceforge? I'm really not familiar with the development workflow of NSIS or svn in general ;) |
|
Your allmul function is just a copy from the MS CRT source? We can't really accept that. Unless you are willing to install Visual Studio 6 there is probably more work to be done on our end before this can be merged. The multithreaded compressor (if enabled) uses some Vista+ functions and the stubs are missing some other 64-bit math stuff. |
|
Re: allmul, I believe this is CRT source, I'll have retrace where I found it, but I don't think it is a copyright issue though:
I have installed VS6 in a Win XP VM, and ugh... Making zstd compile under C90 without native support for 64bit types and literals is going to be messy. I hoped zstd could be used with minimal changes, so the lib can be updated in the future without much effort. What is the rationale for sticking with C90 and the VS6 toolchain? Are newer compilers not able to generate executables that run on old versions of Windows? Is the compatibility target of Windows 95 still accurate, both for stubs and makensis? I can definitely look into the imports for multi threading in makensis. |
|
VS6 creates the smallest code and lets us target Win95. Makensis and friends currently work on 2000 and later but we can probably bump that to XP. Or just disable multithreading when using older compilers. You can use the INT64 type in our code and whatever else VS6 allows, we don't care about MinGW that old. |
|
Apparently the only thing that prevents the stubs compiled by MSVC 2019 from running on W95 is the use of SSE (can be disabled in in modern MSVC) and the PE Header OS & subsystem compatibility fields. Since stubs produced by MSVC 2019 are only 1kb larger than the official v3.06.1, and there is still link time optimization that could be used, I think dropping VS6 should be considered. Especially for future developments on 64bit, losing the dependency on a C90 compiler would make many things easier. The multithreading imports are because of ConditionVariables API. I have gone with the minimal effort solution for now: Pull them in using I put those changes on a separate branch: https://github.com/dbeinder/nsis/commits/zstd_xp for now |
|
Can you test the Math plug-in compiled by 2019 on W95? It is allowed to use the static CRT library. |
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7276 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7277 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7278 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7279 212acab6-be3b-0410-9dea-997c60f758d6
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7280 212acab6-be3b-0410-9dea-997c60f758d6
|
The Math plugin was a problem, the MSVC2019 CRT is >100kB and uses imports that require WinXP. Currently in this branch: https://github.com/dbeinder/nsis/commits/zstd_xp |
|
Please open s new PR or reopen. We had to force push since my local git copy got corrupted. |
|
I'd like to get and to speed up things in my flow. @dbeinder any update? Thanks for working on this. |
Windows is always little-endian so for Math.dll that is not an issue. |
These patches integrate zstd compression into NSIS. Current state:
75kiB60kiB#ifndef EXEHEADto strip unused features and reduce code size of the stubsSetCompressionLevelscript command to control compression level for zstd (and zlib)