Home » Community » U++ community news and announcements » U++ 2017.2 released
| U++ 2017.2 released [message #49074] |
Thu, 14 December 2017 14:30  |
 |
mirek
Messages: 14291 Registered: November 2005
|
Ultimate Member |
|
|
2017.2 (rev 11540) (Dec 2017)
**Core**
* New AsyncWork class - U++ future-alike tool
* CoWork: Exception propagation from worker threads, job cancellation support.
* Bits class optimized, it is now possible to set multiple bits (count parameter)
* WebSocket refactored for asynchronous operation
* UTF-32 support functions, UnicodeCompose and UnicodeDecompose functions, support for UTF16 surrogate pairs
* DeleteFolderDeep now deletes symlinks
* MakeOne function (alternative to One::Create)
* LoadFromFile, StoreToFile - Event variant
* ReverseRange and SortedRange
* Server Name Indicator support in Socket and HttpRequest
* SSL1.1 API support
* RegisterGlobalSerialize
**GUI programming**
* ArrayCtrl: Improvements in sorting, new public GetCellRect, GetCellRectM, GetSelKeys, SetRowDisplay, SetColumnDisplay, AcceptRow methods
* Button NakedStyle style.
* WithDropChoice: Set/Remove entry in drop-down list
* TextCtrl::Load refactored, now can break very long (>1MB) lines
* TreeCtrl: GetOpenIds, OpenIds
* IdCtrls, SqlCtrls refactored, improved
* Option: SetColor
* Edit...Spin: RoundFromMin modifier method
* ColorPopup now has button to enter the color as text
* New features in ScatterDraw, ScatterCtrl
* Header / Footer can now be changed using paragraph properties
* QTFDisplay now ignores text color / paper if style is not normal
**TheIDE**
* Improved debugging of console applications with MinGW
* MacroManager
* Explicit Go to line.. operation (in addition to Navigator)
* BRC now supports LZ4, LZMA and Zstd compression
* File comparison tool improved
* Directory comparison now can show/filter new/modified/removed files
* Dark theme highlighting
* Duplicate package function
* FindAll button in normal Search (finds all occurences in current file)
* HexView now remembers position
* Selection can be interpreted as error list
* now shows the number of selected characters
* tab size now possible on per-file basis
* Repository synchronize refactored, now supports both svn and git
* Layout visgen improvements
* theide now supports Visual Studio 2017 C++ compiler auto setup
* MS build tools autosetup
**3rd party modules**
* MinGW 64 updated to GCC-7.2.0
* OpenSSL for VC++ updated to 1.0.2l
* plugin/lz4: lz4 updated to 1.7.3
* plugin/bz2: updated to 1.0.6
* plugin/jpg: updated to version 9b
* plugin/pcre: updated to 8.41
* plugin/png: updated to 1.2.57
* plugin/sqlite3: updated to 3.17.9
* plugin/z: Updated to 1.2.11
* plugin/Eigen: Updated to version 3.3.4
[Updated on: Sat, 16 December 2017 14:12] Report message to a moderator
|
|
|
|
| Re: U++ 2017.2 released [message #49075 is a reply to message #49074] |
Thu, 14 December 2017 15:51   |
Tom1
Messages: 1319 Registered: March 2007
|
Ultimate Contributor |
|
|
Hi!
Congratulations and thanks again to everybody involved! I really appreciate your work on this excellent platform.
Best regards,
Tom
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Re: U++ 2017.2 released [message #49229 is a reply to message #49228] |
Tue, 09 January 2018 13:06   |
cbpporter
Messages: 1428 Registered: September 2007
|
Ultimate Contributor |
|
|
mirek wrote on Tue, 09 January 2018 13:38
Any help with that is highly appreciated.
There is nothing magical about the detection, check "ide/InstantSetup.cpp".
Unfotunately, it appears to be really fragile. ("it works on my machine"). I actually think that things got broken when I was "forced" by the community to replace dump "search through all directories" approach to using registry entries to "make it fast". (check svn history)
Maybe it is the time to get back to dumb.
Mirek
Well, I did not force anybody, but I was very vocal about it. I don't think that searching 5 minutes is OK when registry auto-detection can work, but disk based can be used as a backup, after a prompt.
But I believe you that it is very fragile. Here is the weird thing: every time I install VS on a new computer, the folders surprise me. I do believe you 100% that you are facing an infinite row of "works for me" scenarios.
But here is the thing. I am working on something with some similarity to U++ and I need auto-detection. I was shamelessly inspired by your old school auto-detection idea and code and use a similar method.
I need to update my method for MSC15, but I need to autodetect MSC10-14, MINGW and Clang, on Win and Linux.
It may be a case of "works for me", but my methods work for me ( ), while the U++ methods fluctuate. My methods have never failed across 5-6 computers in the last few years and I am often forced to maintain valid MSC10-14 installs on random computers, because they are supported, but not really used by anybody.
UT tests do test auto-detection often.
So it can be done.
One key progress in reliability was forgetting about assigning a given SDK a known code, like "10.0.16299.0". I search though all the folders and look for "um"/"ucrt" sub-folders with lib files inside, then order the valid finds. The method is very random, but I found it works though trial and error.
I do this after I have "detected" a SDK, to remove duds:
bool BuildMethod::TestLib(bool px86, bool px64) {
if (Compiler.IsEmpty() || Sdk.IsEmpty())
return false;
if (px86) {
Vector<String> x86um;
Vector<String> x86ucrt;
if (FindFile(Sdk + "\\lib\\*.lib"))
x86um.Add("\\lib\\");
else if (FindFile(Sdk + "\\lib\\x86\\*.lib"))
x86um.Add("\\lib\\x86\\");
else if (FindFile(Sdk + "\\lib\\win8\\um\\x86\\*.lib"))
x86um.Add("\\lib\\win8\\um\\x86\\");
else if (FindFile(Sdk + "\\lib\\winv6.3\\um\\x86"))
x86um.Add("\\lib\\winv6.3\\um\\x86\\");
else {
FindFile ff(Sdk + "\\lib\\*");
while (ff) {
if (ff.IsDirectory()) {
String s = ff.GetName();
if (s != ".." && s != ".") {
String p = ff.GetPath();
if (FileExists(p + "\\um\\x86\\User32.Lib")) {
x86um.Add("\\lib\\" + ff.GetName() + "\\um\\x86\\");
//break;
}
if (FileExists(p + "\\ucrt\\x86\\*.lib"))
x86ucrt.Add("\\lib\\" + ff.GetName() + "\\ucrt\\x86\\");
}
}
ff.Next();
}
}
if (x86um.GetCount() == 0)
return false;
for (int i = x86um.GetCount() - 1; i >= 0; i--) {
Lib32 << Sdk + x86um[i];
}
for (int i = x86ucrt.GetCount() - 1; i >= 0; i--) {
Lib32 << Sdk + x86ucrt[i];
}
if (FileExists(Compiler + "\\VC\\lib\\*.lib"))
Lib32 << Compiler + "\\VC\\lib\\";
}
I will look over ide/InstantSetup.cpp and see what goes on there. Haven't looked in years and maybe I can find your MSC15 detection and try to fix it. And 15...
I can also add the whole BuildMethod source if you wish.
But first I'm having still problems. It looks like setting a target version override with packages that use the resource compiler cause F5 to repeatedly "link", but never run. Ctrl-F5 works.
You can test this with EyeTests. EyeTests works just fine, but adding "target file oveeride" causes the linking loop.
I get this every F5:
Linking...
LINK : c:\z2c\eye.exe not found or not built by the last incremental link; performing full link
c:\z2c\eye.exe ( B) linked in (0:01.23)
All my projects use this override.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Re: U++ 2017.2 released [message #49258 is a reply to message #49257] |
Thu, 11 January 2018 10:16   |
cbpporter
Messages: 1428 Registered: September 2007
|
Ultimate Contributor |
|
|
mirek wrote on Thu, 11 January 2018 11:04cbpporter wrote on Thu, 11 January 2018 09:46So fast!
I'll check!
Do you have idea on the other problem I mentioned? I can't debug even command line apps with "target file override".
Unable to reproduce (so far). "works on my machine" 
Any further input on this is appreciated.
Yeah, it is tricky. My theory was that it is related to the resource compiler, but today I can't debug compile line either.
But I managed to reproduce it with EyeCare. AdressBook does not reproduce.
Set a target override for EyeCare, press F5, wait to link, it should finish, but not launch debugger. Pres F5 again, it will attempt to link again.
|
|
|
|
|
|
|
|
|
|
| Re: U++ 2017.2 released [message #49273 is a reply to message #49272] |
Mon, 15 January 2018 11:24   |
 |
mirek
Messages: 14291 Registered: November 2005
|
Ultimate Member |
|
|
cbpporter wrote on Mon, 15 January 2018 10:37My tests were with a self-compiled TheIDE, but I was using a 64bit to debug 32, like I usually do. Updating to nightly didn't help.
But I figured that my upp folder was compromised and indeed, after a fresh install, it works. As an added bonus BLITZ works again. It didn't on my broken setup. Autodection works too, at least for 2017.
So everything is a go. Thank you!
Which reminds me: it is probably time to stop using 32 bit for good.
How do you manage both 32 and 64 bit binary releases? Not for U++, but in general. Two packages? One package with both 32 bit and 64 binaries, with different names? Is there some lightweight .bat or .exe or something to autodetect and launch the proper version?
Uhm, I have tree cases I can comment on:
- U++ itself. I provide theide32.exe as backup option.
- My commercial app1: intended for many users with sometimes low-spec HW, app is not performance limited: We provide 32-bit only .exe
- My commercial app1: intended for many users with usually hi-spec HW, app is very performance limited: We provide 64-bit as standard, 32-bit on demand (which is very low).
|
|
|
|
|
|
|
|
| Re: U++ 2017.2 released [message #49282 is a reply to message #49274] |
Mon, 15 January 2018 16:15  |
cbpporter
Messages: 1428 Registered: September 2007
|
Ultimate Contributor |
|
|
mirek wrote on Mon, 15 January 2018 12:26cbpporter wrote on Mon, 15 January 2018 10:37
But I figured that my upp folder was compromised and indeed, after a fresh install, it works. As an added bonus BLITZ works again. It didn't on my broken setup. Autodection works too, at least for 2017.
OK, so nightly build install now works out of box? (Asking because thinking about doing the next release soon).
Mirek
So far so good.
Stable and auto-detection works for me.
I've been forking CodeEditor for years now and I see some convergent parallel evolution. I tried in the past to merge my efforts, but it was a total failure every time. This time I'd like to do a super small merge and would like to see that incorporated. Mostly bar placements bugs and binary literals, a dozen or so line changed.
Plus, there is a small minor bug with a DropDown still triggering and tool-tip from an underlying control.
Plus I need to get around to saving the size of the run options dialog.
But otherwise a new release will be welcome and I am not aware of critical bugs.
|
|
|
|
Goto Forum:
Current Time: Wed May 06 23:34:40 GMT+2 2026
Total time taken to generate the page: 0.01139 seconds
|