Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Candidate items for v2.3 Release #2371

Closed
9 of 11 tasks
feilipu opened this issue Jul 29, 2023 · 17 comments
Closed
9 of 11 tasks

Candidate items for v2.3 Release #2371

feilipu opened this issue Jul 29, 2023 · 17 comments
Labels
discussion requests for comment and discussion

Comments

@feilipu
Copy link
Collaborator

feilipu commented Jul 29, 2023

It has been a year since v2.2, so,...

An open list for things which might be added before the v2.3 Release.
Please edit, add or exclude as relevant or desired...

Or we could open a project with the proposed list?

For @feilipu

  • Integer maths Rabbit r2ka 64_64x64 2682c8c
  • math32 Rabbit r2ka optimisation de5746f (added z180, z80n, r2ka to the tests feb81e0)

Would it be best to push #1391 out to v2.4 or a v3.0 (even though it was already in the v2.2 todo 😉), and have a simple Release before tackling the big job?

@feilipu feilipu added the discussion requests for comment and discussion label Jul 29, 2023
@suborb
Copy link
Member

suborb commented Jul 29, 2023

Thanks for doing this - it probably is about time again.

  • Clang: I think this is done enough for now. There's enough library support to be useful and I've not seen any feedback on it.
  • Parallel builds: The immediate problem was sorted, newlib is parallelised, classic should be as well.
  • Aquarius+: I just need to implement opendir and friends here.

#1391 should be kicked out again (I'll comment on that issue later)

The one thing that would be nice (but is a big change with possibly lots of issues) is #2320

@pauloscustodio
Copy link
Member

I'm finishing #2338 and will tackle #2320 next.

@zx70
Copy link
Member

zx70 commented Jul 29, 2023

There's a couple of issues I totally left behind, which obviously can stay like this a little more. The TI calculator issue is probably slightly pointless, IIRC the native asm() entry allows very small programs only.
As for the bug on the Aquarius we should find someone owning the hardware and coordinating the tests (e.g. being very precise on reporting the test results and sharing ideas/ informations on how the target works compared to the emulated machines).

@feilipu
Copy link
Collaborator Author

feilipu commented Jul 31, 2023

As for the bug on the Aquarius we should find someone owning the hardware and coordinating the tests.

@Fabrizio-Caruso suggested that Roy Templeman (@LoudScotsBloke) might be able to help, if he's listening?

@pauloscustodio
Copy link
Member

The one thing that would be nice (but is a big change with possibly lots of issues) is #2320

The feature is ready in the issue_2320 branch, but the library does not build, due to incompatible -IXIY options between objects being linked together.

@LoudScotsBloke
Copy link

LoudScotsBloke commented Jul 31, 2023 via email

@pauloscustodio
Copy link
Member

On issue #2320: on the issue_2320 branch you cannot include in a library an object file built for a different CPU.
As a possible solution I've added the options "z80asm -m'*' -xlib ,,," that assembles all files for all CPU-IXIY combinations and packs them all in the same library; when linking, z80asm skips the object files for a different architecture and all should work.

@zx70
Copy link
Member

zx70 commented Aug 1, 2023

Hi guys, I'm listening! What would you like me to do?

Roy,
You're very kind showing up immediately!
I left a couple of issues pending related to the Mattel Aquarius, I wonder if it's possible for you to do some testing on the real machine ?

I will redirect you to a proper issue chat

@feilipu
Copy link
Collaborator Author

feilipu commented Aug 5, 2023

@LoudScotsBloke is this issue #2064 still current with the current code?

@feilipu
Copy link
Collaborator Author

feilipu commented Aug 15, 2023

Added math32 r2ka tests... some useful numbers. Even if not fully optimised, I think it will do.

Benchmarks for math32 r2ka n-body and whetstone are so good, compared to z80 and z180, it is embarrassing.
But the ez80 is still faster. Better than twice as fast again.

Whetstone:

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ zcc +test -vn -O2 -DSTATIC -DTIMER -D__Z88DK whetstone.c -o whetstone.bin -lm -lndos -m
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ z88dk-ticks whetstone.bin -x whetstone.map -start TIMER_START -end TIMER_STOP -counter 9999999999
Ticks: 1284304837

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ zcc +test -vn -O2 -DSTATIC -DTIMER -D__Z88DK whetstone.c -o whetstone.bin --math32 -lndos -m
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ z88dk-ticks whetstone.bin -x whetstone.map -start TIMER_START -end TIMER_STOP -counter 9999999999
Ticks: 568729644

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ zcc +test -clib=z180 -vn -O2 -DSTATIC -DTIMER -D__Z88DK whetstone.c -o whetstone.bin --math32 -lndos -m
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ z88dk-ticks -mz180 whetstone.bin -x whetstone.map -start TIMER_START -end TIMER_STOP -counter 9999999999
Ticks: 308814449

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ zcc +test -clib=r2ka -vn -O2 -DSTATIC -DTIMER -D__Z88DK whetstone.c -o whetstone.bin --math32 -lndos -m
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ z88dk-ticks -mr2ka whetstone.bin -x whetstone.map -start TIMER_START -end TIMER_STOP -counter 9999999999
Ticks: 240717796

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ zcc +test -clib=ez80_z80 -vn -O2 -DSTATIC -DTIMER -D__Z88DK whetstone.c -o whetstone.bin --math32 -lndos -m
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/whetstone/z88dk-classic$ z88dk-ticks -mez80_z80 whetstone.bin -x whetstone.map -start TIMER_START -end TIMER_STOP -counter 9999999999
Ticks: 94651731

n-body:

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ zcc +test -vn -DSTATIC -DTIMER -D__Z88DK -O2 n-body.c -o n-body.bin -lm -m -lndos
phillip@SilverQuad:~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ z88dk-ticks n-body.bin -x n-body.map -start TIMER_START -end TIMER_END -counter 999999999999
Ticks: 3660659070

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ zcc +test -vn -DSTATIC -DTIMER -D__Z88DK -O2 n-body.c -o n-body.bin --math32 -m -lndos
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ z88dk-ticks n-body.bin -x n-body.map -start TIMER_START -end TIMER_END -counter 999999999999
Ticks: 995128656

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ zcc +test -clib=z180 -vn -DSTATIC -DTIMER -D__Z88DK -O2 n-body.c -o n-body.bin --math32 -m -lndos
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ z88dk-ticks -mz180 n-body.bin -x n-body.map -start TIMER_START -end TIMER_END -counter 999999999999
Ticks: 495620318

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ zcc +test -clib=r2ka -vn -DSTATIC -DTIMER -D__Z88DK -O2 n-body.c -o n-body.bin --math32 -m -lndos
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ z88dk-ticks -mr2ka n-body.bin -x n-body.map -start TIMER_START -end TIMER_END -counter 999999999999
Ticks: 410960340

~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ zcc +test -clib=ez80_z80 -vn -DSTATIC -DTIMER -D__Z88DK -O2 n-body.c -o n-body.bin --math32 -m -lndos
~/Z80/z88dk/libsrc/_DEVELOPMENT/EXAMPLES/benchmarks/n-body/z88dk-classic$ z88dk-ticks -mez80_z80 n-body.bin -x n-body.map -start TIMER_START -end TIMER_END -counter 999999999999
Ticks: 149650389

@suborb
Copy link
Member

suborb commented Aug 18, 2023

The thing to remember is that the instruction timings for the Rabbit and ez80 are different to the other CPUs (eg for the ez80 the minimum tick count for an instruction is 1 vs 4 for the z80).

I suspect the sdcc equivalent might show a bigger relative drop since ld hl,(ix+dd) is much faster than the equivalent z80 load.

The R800 reportedly has similar timings so if I get round to finishing off the timing changes in ticks we'd probably see a big drop there as well.

@suborb
Copy link
Member

suborb commented Dec 4, 2023

Things have slowed down again. I’m minded to do a snapshot and release around about the 15th December - any objections?

@feilipu
Copy link
Collaborator Author

feilipu commented Dec 4, 2023

Just to note about updating newlib z88dk_version.m4 and rebuild all newlib included files before the snapshot.

See #1989 (ignoring all the noise if you can), where I think we captured all the file touches needed.

@suborb
Copy link
Member

suborb commented Dec 18, 2023

Smidgen delayed on this one (let's say the 15th crept up on me).

Now the s390 stuff is resolved, I want to get #2461 in and #2462 confirmed as fixed.

suborb added a commit that referenced this issue Dec 18, 2023
@suborb
Copy link
Member

suborb commented Dec 20, 2023

Snapshotted and released.

@suborb suborb closed this as completed Dec 20, 2023
@feilipu
Copy link
Collaborator Author

feilipu commented Dec 20, 2023

Note to adjust main README.md to point to the new release.

@zx70
Copy link
Member

zx70 commented Dec 21, 2023

Congrats Dom, this autumn you kept parallelizing several issues. Impressive !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion requests for comment and discussion
Projects
None yet
Development

No branches or pull requests

5 participants