1. Experimental builds for Euphoria 4.2

Good news, everyone! I just pushed one of the many things I've been toiling away on: a new Makefile called build.mak.

This is a "meta" makefile that to create a full release of Euphoria. I assume you're on x86-64 and using a recent distribution of Debian (11+) or Ubuntu (20.04+) or a derivative (e.g. Mint).

See the platforms list below for the required packages. Here's how it works:

  1. . Runs ./configure with the options for (cross-)compiling to the target platform.
  2. . Renames config.gnu file created by ./configure to include the platform name.
  3. . Runs make, specifying the CONFIG_FILE option to the file created in steps 1-2.
  4. . Collects the artifacts from the build directory into a temporary directory in /tmp.
  5. . Creates a tarball or zip file in the source directory with the files from step 4.

Here's an example to try on a fresh Debian or Ubuntu machine:

sudo apt install build-essential git binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 
git clone https://github.com/OpenEuphoria/euphoria 
cd euphoria/source 
make -f build.mak -j$(nproc) PLATFORM=windows-x64 

Here are the supported platforms and their required packages:

Platform Packages
linux-x64 build-essential
linux-arm build-essential binutils-arm-linux-gnu gcc-arm-linux-gnu
linux-x86 build-essential binutils-i686-linux-gnu gcc-i686-linux-gnu
windows-x64 build-essential binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64
windows-x86 build-essential binutils-mingw-w64-i686 gcc-mingw-w64-i686

I still have some things to work out with the GitHub actions (see euphoria.yml) but soon it will be able to complete a build and publish the artifacts directly to the Releases page!

-Greg

new topic     » topic index » view message » categorize

2. Re: Experimental builds for Euphoria 4.2

Brilliant! Nice to see this moving.

new topic     » goto parent     » topic index » view message » categorize

3. Re: Experimental builds for Euphoria 4.2

I managed to build it on Debian 11 and it seems to be working with no problems.

new topic     » goto parent     » topic index » view message » categorize

4. Re: Experimental builds for Euphoria 4.2

It also builds on Ubuntu 22.04 over WSL. I was also able to cross compile the Windows X64 version which works on Windows 10 too.

I noticed the Win32 demos did not run, but other demos do work.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

5. Re: Experimental builds for Euphoria 4.2

After comparing window.exw which runs and winwire.exw and taskwire.exw which don't run, I found that the bug is here:

allocate_string("Euphoria Multitasking Demo",1), 

PS C:\WinApps\euphoria\demo\win32> ..\..\bin\eui .\winwire.exw 
 
C:\WinApps\euphoria\include\std\machine.e:2354 in procedure free() 
A machine-level exception occurred during execution of this statement (signal 11) 

If you remove the option to free memory, the demos work:

allocate_string("Euphoria Multitasking Demo"), 

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

6. Re: Experimental builds for Euphoria 4.2

I tried building using the the steps listed above, but I wasn't able to get it to build. I tried building it under WSL using Debian, but I got build errors. I guess I can wait until 4.2 builds get posted to the Github page.

new topic     » goto parent     » topic index » view message » categorize

7. Re: Experimental builds for Euphoria 4.2

How can this be done? The complete build weights 42MB with all object files. The release I created from this weights 26307KB.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

8. Re: Experimental builds for Euphoria 4.2

I'm not sure I did it the right way but here is the OpenEuphoria 4.2 Development Win64 binary release cross-compiled on WSL under Windows 10 Pro: https://github.com/jm-duro/euphoria/releases

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

9. Re: Experimental builds for Euphoria 4.2

Here it is: https://github.com/jm-duro/euphoria/releases/tag/v0.0.1

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

10. Re: Experimental builds for Euphoria 4.2

What are the difference?

new topic     » goto parent     » topic index » view message » categorize

11. Re: Experimental builds for Euphoria 4.2

Hallo Here is another experimental build. It differs slightly from the official branch.

https://github.com/andizk4kx/euphoria/releases/tag/1.0.0

1. it was compiled natively under Win10pro with gcc (tdm-1) 10.3.0.
2. i did not use build.mak to create the release.
3. I added the sources from wee and a batch file (openeuphoria.bat) to start it.

I was not able to create the pdfdoc, I tried it with miktex 24.1 portable.

VirusTotal says the files are OK

Andreas

new topic     » goto parent     » topic index » view message » categorize

12. Re: Experimental builds for Euphoria 4.2

mitgedanken said...

What are the difference?

Mine is the standard one with no modification, just to provide the binaries to those who can't build them.

new topic     » goto parent     » topic index » view message » categorize

13. Re: Experimental builds for Euphoria 4.2

jmduro said...
mitgedanken said...

What are the difference?

Mine is the standard one with no modification, just to provide the binaries to those who can't build them.

Oh, sorry. I meant what is the difference between 4.1 and 4.2.
Where is the difference mentioned?
In other words: why would anyone download and test the experimental build(s) of 4.2?

new topic     » goto parent     » topic index » view message » categorize

14. Re: Experimental builds for Euphoria 4.2

Unfortunately, I don't know the answer.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

15. Re: Experimental builds for Euphoria 4.2

mitgedanken said...

In other words: why would anyone download and test the experimental build(s) of 4.2?

For me it's mainly the fact that pre-compiled euc didn't work on my Linux distro and all the attempts to build Euphoria 4.1 from source have failed. Now euc works correctly, but the performance of final executables is not what I expected. Some programs run five times faster that interpreted by eui and some only two. It's a shame that OpenEuphoria can't compete with languages like Nim, V or BaCon.

new topic     » goto parent     » topic index » view message » categorize

16. Re: Experimental builds for Euphoria 4.2

Pirx said...

For me it's mainly the fact that pre-compiled euc didn't work on my Linux distro

I'm curious which distro you're using as I'm hoping to cover "most" cases without having to provide bespoke hand-crafted builds to everyone.

Pirx said...

and all the attempts to build Euphoria 4.1 from source have failed

You need a working translator to build "from source" since all of the front end is written in Euphoria. So if euc doesn't work for you, building new binaries won't either.

Pirx said...

Now euc works correctly, but the performance of final executables is not what I expected. Some programs run five times faster that interpreted by eui and some only two.

Some empirical measurements and examples would be very helpful here. Nobody wants to lose performance and it's entirely possible I, or someone along the way, goofed something up. Or we're fighting some kind of change or regression in GCC.

Pirx said...

It's a shame that OpenEuphoria can't compete with languages like Nim, V or BaCon.

What's a shame is that the Euphoria code we're building today is largely the same as it was twenty years ago. Nim and V were started in 2008 and 2019 respectively, and they both have had the benefit of a "clean slate" design based on modern principles and technology at that time. BaCon, despite being from the dark ages, has seemingly advanced in step with modern technology, probably by keeping pace behind GCC.

If you want to see Euphoria get back into the ring with modern languages like Nim, or V, or Zig, or Rust, or Python, or Go, or Swift, or Ruby, and so on... then I implore you, please put together some code tests that demonstrate your concerns so we can actively test against it. Euphoria certainly can compete, but it's been sitting on the bench for years. Let's change that.

-Greg

new topic     » goto parent     » topic index » view message » categorize

17. Re: Experimental builds for Euphoria 4.2

The speed of compiled binaries was already discussed here and here. Since then, I've updated the system a couple of times and euc has stopped working completely. It's working again after I've managed to build Euphoria 4.2 from source, but nothing has changed in terms of performance.

Greg, you already helped me with trying to solve the problem with euc by building Euphoria from source, but it didn't work.

Don't get me wrong. I'm not complaining, not blaming anyone and not expecting anyone to solve this problem for me. Just stating the facts.

new topic     » goto parent     » topic index » view message » categorize

18. Re: Experimental builds for Euphoria 4.2

Pirx said...

I've updated the system a couple of times and euc has stopped working completely.

That makes sense. From https://sourceware.org/pipermail/libc-alpha/2020-May/113815.html we know that older binaries built on older systems will cease to run on newer ones. Probably there was some compatibility library that automatically got shim'd in in the past, which finally got removed on the most recent update.

Pirx said...

It's working again after I've managed to build Euphoria 4.2 from source, but nothing has changed in terms of performance.

The speed of compiled binaries was already discussed here and here. Since then,

Yep, it hasn't gotten any worse. So nothing has broke. I think it's been the same for the past 14 years. It's just no one has had time to look into speeding this up and optimizing this.

Pirx said...

Don't get me wrong. I'm not complaining, not blaming anyone and not expecting anyone to solve this problem for me. Just stating the facts.

Greg has been pretty clear on needing more help. Since you can build Eu now, maybe you can help to get it speeded up and optimized?

Pirx said...

Greg, you already helped me with trying to solve the problem with euc by building Euphoria from source, but it didn't work.

The eu.a was built successfully but not linkable. Need to have seen how it was built to diagnose what went wrong, but at a guess somehow the backend object code (e.g. be_w.o) got linked into a single eu.a twice. Not enough info provided to diagnose the issue (and adding a "thx anyways" at the end sort of discourages followup assistance).

That said, probably was a bug in the older make system on not cleaning up older object files properly. Something Greg likely fixed with the new .mak that this thread is about (and hence why you could build 4.2.0).

new topic     » goto parent     » topic index » view message » categorize

19. Re: Experimental builds for Euphoria 4.2

All I did was to type the three lines provided by Greg. If the process failed at any stage I would have given up. I don't have time and skills to investigate and solve this kind of issues.

new topic     » goto parent     » topic index » view message » categorize

20. Re: Experimental builds for Euphoria 4.2

Pirx said...

If the process failed at any stage I would have given up.

That's why I'm so glad that Greg had found and fixed the bug with the new build system in 4.2.0

Pirx said...

I don't have time and skills to investigate and solve this kind of issues.

Alas, that's the recurring theme here, for everyone using this site and even this language. Mostly a lack of time.

Pirx said...

I don't have ... skills

All I did was to type the three lines provided by Greg.

That's all that's needed. If someone has the time to post on the forum with the results of running commands and things, that would be enough to be a big boost and assist to Greg and petelomax and all the other devs on the forum here.

new topic     » goto parent     » topic index » view message » categorize

21. Re: Experimental builds for Euphoria 4.2

I can't use Pastey to do the job:

Fatal run-time error: 
Couldn't insert new pastey: Incorrect string value: '\xE2\x80\x98ini...' for column 'body' at row 1 

I tried with UTF-8 and with ANSI. I did not even find where the incorrect string value is located.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

22. Re: Experimental builds for Euphoria 4.2

jmduro said...

Couldn't insert new pastey: Incorrect string value: '\xE2\x80\x98ini...' 

Search the text you are trying to post for "ini" (w/o the quotes): it is struggling with the three bytes before that (or one of that).
I believe it is a "LEFT SINGLE QUOTATION MARK" (U+2018) which of course you should replace with the saner ' (#27) and I think I can
safely predict there will be a "RIGHT SINGLE QUOTATION MARK" that goes with it, ditto.

new topic     » goto parent     » topic index » view message » categorize

23. Re: Experimental builds for Euphoria 4.2

mitgedanken said...
jmduro said...
mitgedanken said...

...

...

Oh, sorry. I meant what is the difference between 4.1 and 4.2.
Where is the difference mentioned?
In other words: why would anyone download and test the experimental build(s) of 4.2?

Does someone know the answer?!

new topic     » goto parent     » topic index » view message » categorize

24. Re: Experimental builds for Euphoria 4.2

mitgedanken said...
mitgedanken said...

Oh, sorry. I meant what is the difference between 4.1 and 4.2.
Where is the difference mentioned?
In other words: why would anyone download and test the experimental build(s) of 4.2?

Does someone know the answer?!

4.2 is newer than 4.1 tongue

OK, you can look through the commits: https://github.com/OpenEuphoria/euphoria/commits/master/ (since Jun 15, 2022)
or the current release notes: https://github.com/OpenEuphoria/euphoria/blob/master/docs/release/4.2.0.txt
Seems like it is mainly just about getting it to build...

new topic     » goto parent     » topic index » view message » categorize

25. Re: Experimental builds for Euphoria 4.2

petelomax said...

Seems like it is mainly just about getting it to build...

This is the correct answer.

There's no significant difference between the "4.1.0 beta" from February 2015 and these builds. Maybe a few bug fixes we picked up along the way.

The next step, which I'm currently working on, is to get GitHub Actions to publish the resulting zip/tarball packages to the Releases page.

First release through that process will probably be an "alpha" without any additional code changes. Then I'll start pushing changes toward "beta" etc.

-Greg

new topic     » goto parent     » topic index » view message » categorize

26. Re: Experimental builds for Euphoria 4.2

petelomax said...
jmduro said...

Couldn't insert new pastey: Incorrect string value: '\xE2\x80\x98ini...' 

Search the text you are trying to post for "ini" (w/o the quotes): it is struggling with the three bytes before that (or one of that).
I believe it is a "LEFT SINGLE QUOTATION MARK" (U+2018) which of course you should replace with the saner ' (#27) and I think I can
safely predict there will be a "RIGHT SINGLE QUOTATION MARK" that goes with it, ditto.

Thank you Pete but there is still a problem:

Couldn't insert new pastey: Data too long for column 'body' at row 1

The zipped log is only 14KB. Is there another way to send it ?

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

27. Re: Experimental builds for Euphoria 4.2

I sent it to Greg and Pete via private mail.

Jean-Marc

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu