Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Community » U++ community news and announcements » U++ 2017.2 released
U++ 2017.2 released [message #49074] Thu, 14 December 2017 14:30 Go to next message
mirek is currently offline  mirek
Messages: 13975
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 Go to previous messageGo to next message
Tom1
Messages: 1212
Registered: March 2007
Senior 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 #49084 is a reply to message #49074] Fri, 15 December 2017 22:56 Go to previous messageGo to next message
koldo is currently offline  koldo
Messages: 3355
Registered: August 2008
Senior Veteran
Smile

Best regards
IƱaki
Re: U++ 2017.2 released [message #49214 is a reply to message #49084] Mon, 08 January 2018 10:55 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
Great! Thanks!

Been away for a while, time to upgrade...
Re: U++ 2017.2 released [message #49215 is a reply to message #49214] Mon, 08 January 2018 11:14 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
cbpporter wrote on Mon, 08 January 2018 11:55
Great! Thanks!

Been away for a while, time to upgrade...

Hmm, it works fine for now, but I think there was some sort of first time setup in the past? That step was gone for me.

Plus, clicking on "Automatic build methods setup.." with no VS installed that it recognizes does nothing. A prompt would be welcome.

Otherwise, I'm installing VS 2017 community.

I think I mention this at least once a year, but Microsoft SDK conventions are an ever increasing clusterfuck...
Re: U++ 2017.2 released [message #49216 is a reply to message #49215] Mon, 08 January 2018 11:29 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
cbpporter wrote on Mon, 08 January 2018 12:14

I think I mention this at least once a year, but Microsoft SDK conventions are an ever increasing clusterfuck...

Yup.

VS 2017 Community was not detected...
Re: U++ 2017.2 released [message #49224 is a reply to message #49216] Tue, 09 January 2018 11:52 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
I managed to get stuff working with VS2015, by moving over some existing .bm files and editing them to whatever paths the setup decided to use. VS 2015 was not detected.

This time the include and libs are under "10.0.16299.0".

When U++ was upgraded to C++xx whatever, it did not work out of the box for months. Then it got better. Now there is regression again.

Plus, I have no BLITZ, even though it looks like it is enabled.

----- Core ( MSC15 DEBUG DEBUG_FULL MSC WIN32 ) (1 / 5)
Re: U++ 2017.2 released [message #49225 is a reply to message #49224] Tue, 09 January 2018 12:02 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
And weirdly enough, the removal of:

Vector<Ln>       line; 


from TextCtrl is affecting me.

That is fixable, I just need to update and merge for inherited controls.

The BM detection needs to be fixed though.

I'm willing to boot up a few VMs and test a few clean setups.
Re: U++ 2017.2 released [message #49228 is a reply to message #49225] Tue, 09 January 2018 12:38 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
cbpporter wrote on Tue, 09 January 2018 12:02
And weirdly enough, the removal of:

Vector<Ln>       line; 


from TextCtrl is affecting me.

That is fixable, I just need to update and merge for inherited controls.

The BM detection needs to be fixed though.

I'm willing to boot up a few VMs and test a few clean setups.


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
Re: U++ 2017.2 released [message #49229 is a reply to message #49228] Tue, 09 January 2018 13:06 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
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 ( Smile ), 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 #49230 is a reply to message #49229] Tue, 09 January 2018 13:26 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
OK, my method ain't that good.

It picks up and incomplete/missing SDK MSC12 as a complete one. Missing "LIBCMT.lib". I guess such a file can be added somewhere at the end of the search to make sure a build is running.

Anyway, Microsoft don't really care about older versions and a lot of information has been purged from the sites, including downloads and any way to make heads or tails from the confusing VS vs. Windows SDK versions.
Re: U++ 2017.2 released [message #49231 is a reply to message #49074] Tue, 09 January 2018 20:07 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
So I'm preparing a VM right now with a 100% legal Windows 10.

Could you please provide some semblance of what the installation steps should be. There used to be some instructions on the site but right now I can't find them. Probably because auto-detection doesn't work.

Then I will replicate the steps and show auto-detection results.

Two first choices should be VS 2015 and VS 2017 community edition, right?

Re: U++ 2017.2 released [message #49232 is a reply to message #49231] Tue, 09 January 2018 21:57 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
How about these settings?

index.php?t=getfile&id=5480&private=0


Because this is not auto-detected.
  • Attachment: vs2017.png
    (Size: 91.47KB, Downloaded 484 times)
Re: U++ 2017.2 released [message #49237 is a reply to message #49231] Wed, 10 January 2018 09:04 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
cbpporter wrote on Tue, 09 January 2018 20:07
So I'm preparing a VM right now with a 100% legal Windows 10.

Could you please provide some semblance of what the installation steps should be. There used to be some instructions on the site but right now I can't find them. Probably because auto-detection doesn't work.


https://www.ultimatepp.org/app$ide$install$en-us.html

Quote:

Then I will replicate the steps and show auto-detection results.

Two first choices should be VS 2015 and VS 2017 community edition, right?



No reason to bother with VS2015 (but let us leave the code in the place). First choice should be build tools, secondary choice Community edition, ternary all regular variants of VS. All 2017.
Re: U++ 2017.2 released [message #49239 is a reply to message #49237] Wed, 10 January 2018 10:25 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
It looks like the problem with VS2015 is that in the SDK folder, some files are not in the x86 subfolder, but in 10.0.16299.0/x86.

Do we need those binaries too? Are the VC ones + includes + libs not enough?

This is the quick personal fix:
bin = df.Get(x64 ? "/windows kits/10/bin/10.0.16299.0/x86" : "windows kits/10/bin/10.0.16299.0/x86", "makecat.exe;accevent.exe");


This fixes both VS 2017 and VS 2015.

A real fix will be needed that looks in all the subfolders, not just 10.0.16299.0.

But first the question is: is it my install or the fact that I added VS2017 on top of 2015. I'll test in the VM that only has 2017 and on one with only VS2015 and get back to you with the results.

But at least I can auto-detect and work.

Almost...

With "Target file override" I still can't debug and get an attempted link every time I try and debug, on both 2015 and 2017, like I described in the EyeTest scenario:
Linking...
LINK : c:\z2c\zide.exe not found or not built by the last incremental link; performing full link
   Creating library c:\z2c\zide.lib and object c:\z2c\zide.exp
c:\z2c\zide.exe  ( B) linked in (0:01.64)


Quote:

No reason to bother with VS2015

That is a very good choice if you pretty much want to guarantee continual U++ obscurity.
Re: U++ 2017.2 released [message #49241 is a reply to message #49239] Wed, 10 January 2018 11:29 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
cbpporter wrote on Wed, 10 January 2018 10:25
It looks like the problem with VS2015 is that in the SDK folder, some files are not in the x86 subfolder, but in 10.0.16299.0/x86.

Do we need those binaries too? Are the VC ones + includes + libs not enough?


Yes. There are some utils required to build.

Quote:

bin = df.Get(x64 ? "/windows kits/10/bin/10.0.16299.0/x86" : "windows kits/10/bin/10.0.16299.0/x86", "makecat.exe;accevent.exe");


This fixes both VS 2017 and VS 2015.

A real fix will be needed that looks in all the subfolders, not just 10.0.16299.0.


Then it is simple. The support for versions is there, used for include / lib. See lines bellow. So it is just that I have not anticipated bin being in versioned folder (only).

Quote:

But first the question is: is it my install or the fact that I added VS2017 on top of 2015. I'll test in the VM that only has 2017 and on one with only VS2015 and get back to you with the results.


I guess it is MS constantly changing everything...
Re: U++ 2017.2 released [message #49253 is a reply to message #49241] Wed, 10 January 2018 22:38 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
mirek wrote on Wed, 10 January 2018 12:29

I guess it is MS constantly changing everything...

I guess MS were as short sighted as usual and did not anticipate several versions of the same SDK (all 10). This time they didn't go with 7 vs 7a or 8 and 8.1 scheme.

Anyway, 2017 does indeed use versioning. Tested on the clean VM. I'll try to fix it as with the libs and test it for a while and provide the fix.

Sorry this is taking a while, but my clean VM PC is the opposite corner of the city from my work PCs where I have every single VS version in existence.
Re: U++ 2017.2 released [message #49254 is a reply to message #49253] Wed, 10 January 2018 23:11 Go to previous messageGo to next message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
cbpporter wrote on Wed, 10 January 2018 22:38
mirek wrote on Wed, 10 January 2018 12:29

I guess it is MS constantly changing everything...

I guess MS were as short sighted as usual and did not anticipate several versions of the same SDK (all 10). This time they didn't go with 7 vs 7a or 8 and 8.1 scheme.

Anyway, 2017 does indeed use versioning. Tested on the clean VM. I'll try to fix it as with the libs and test it for a while and provide the fix.

Sorry this is taking a while, but my clean VM PC is the opposite corner of the city from my work PCs where I have every single VS version in existence.


I have added versioning of bin, hopefully fixing your setup. Please check (now in trunk, tomorrow nightly).
Re: U++ 2017.2 released [message #49256 is a reply to message #49254] Thu, 11 January 2018 09:46 Go to previous messageGo to next message
cbpporter is currently offline  cbpporter
Messages: 1401
Registered: September 2007
Ultimate Contributor
So 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".
Re: U++ 2017.2 released [message #49257 is a reply to message #49256] Thu, 11 January 2018 10:04 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 13975
Registered: November 2005
Ultimate Member
cbpporter wrote on Thu, 11 January 2018 09:46
So 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" Sad

Any further input on this is appreciated.
Previous Topic: Minor ide iml image designer changes and improvements
Next Topic: OptionBox
Goto Forum:
  


Current Time: Fri Mar 29 15:42:34 CET 2024

Total time taken to generate the page: 0.01851 seconds