Forum: Compiler & IDEs SDCC 3.7.0 RC1


von Philipp Klaus K. (pkk)


Lesenswert?

Demnächst wird SDCC 3.7.0 erscheinen. Es gibt nun eine Release Candidate 
1, am üblichen Ort unter https://sourceforge.net/projects/sdcc/files/. 
Dies ist die letzte
Gelegenheit, noch Bugs in der aktuellen Version zu finden, bevor 3.7.0
erscheint. Besonders schwerwiegende oder einfach zu behebende Bugs
könnten dann noch rechtzeitig vor 3.7.0 behoben werden.

Aufgrund von Problemem in der Compile Farm besteht dieses Release nur 
aus Tarballs für Quellcode und Documentation. Maarten Brock, der die 
letzetn Jahre Release Manager war, hat dazu dieses Mal leider keine 
Zeit.

Wir hoffen, das beim Release 3.8.0, das ebenfalls dieses Jahr erfolgen 
soll, wieder alles normal läuft.

In SDCC 3.7.0 wurden gegenüber 3.6.0 viele Bugs behoben und neue 
Features implementiert. Das ChangeLog findet sich unter 
https://sourceforge.net/p/sdcc/code/HEAD/tree/tags/sdcc-3.7.0-pre1/sdcc/ChangeLog.

Die bedeutendsten neuen Features sind:

* Changed putchar() prototype from void putchar(char) to int 
putchar(int) to improve standard-compliance and allow error reporting.
* Various speed improvements in stm8 backend - Dhrystone score more than 
doubled, resulting in SDCC achieving the highest Dhrystone and Coremark 
scores among STM8 C implementations.
* Various speed improvements for multiplications resulting in SDCC 
achieving the highest Coremark scores among STM8 C implementations.
* Declarations in for loops (ISO C99).
* 64-bit integers (long long) for the mcs51 and ds390 backends (now long
long is fully supported in SDCC except for the pic14 and pic16 
backends).
* Full _Bool support for mcs51 and ds390 backend (now _Bool is fully 
supported in SDCC regardless of backend).
* Additional wide character library functions: mbstowcs() and 
wcstombs(), btowc() and wctob(), wcscmp(), wcslen().
* Changed PRNG for rand() from LCG to xorshift to improve speed and 
quality.
* Support for Small-C calling convention on the callee side (i.e.
function definitions with Small-C calling convention).
* The obsolete macro SDCC (which used to contain the version number 
encoded as an integer) has finally been removed (except for mcs51, where 
it will survive a little bit longer for SiLabs IDE compability).
* New devices supported by simulator (TLCS-90, and the 517, F380, XC88X, 
DS320 mcs51-variants along with dual-dptr and MDU support).
* Timer, UART (incl. interrupt) and I/O support in STM8 simulator.
* Simulator support for banked memory and bit banding.
* Various simulator improvements: Conditional breakpoints, breakpoints 
by function name from SDCC debug output, OMF input, VCD output, 
simulator interface for simulated program and new operators in 
expressions.
* Deprecated --nojtbound and the corresponding pragma.
* Faster register allocator reduces compilation time by about 25% (does
not apply to mcs51, ds390 which use a different register allocator).
* Execution count guessing and use of execution count guesses in stm8 
register allocation improve optimization for code speed.
* Changed getchar() prototype from char getchar(void) to int
getchar(void) to improve standard-compliance and allow error reporting.
* Type qualifiers in array parameters (ISO C99).
* static in array parameters (ISO C99).
* Improved support for DWARFv2 debug info in ELF output (stm8, hc08, 
s08).
* Various improvements in z80/z180/gbz80/tlcs90/r2k/r3ka code
generation, in particular for mixed 16-/32-bit code.
* __z88dk_fastcall function pointer support for --reserve-regs-iy.
* tlcs90 is now a fully supported backend, no longer work in progress.
* --data-seg to specify the segment for non-initialized data in the z80,
z180, gbz80, tlcs90, r2k and r3ka backends.
* New methods to obtain tree-decompositions of control-flow graphs 
improve compilation time / code-quality trade-off (when SDCC is built 
with support for the treedec library).
* Additional general utility functions: qsort(), strtol(), strtoul().

Philipp Klaus Krause
SDCC 3.7.0 Release Manager

P.S.: Auf der FOSDEM 2018 gab es vor einer Woche Vorträge zu den 
Toolchains für STM8 und Z80-basierten Videospielkonsolen; Bei beiden 
Toolchains dürfte SDCC der wichtigste Teil sein:

https://fosdem.org/2018/schedule/event/the_free_toolchain_for_the_stm8/
https://fosdem.org/2018/schedule/event/fame_development_colecovision_sega_8bit_systems/

von Ralph S. (jjflash)


Lesenswert?

... hört sich super an und dann freu ich mich mal auf 3.7.0 ... Vor 
allem da sich scheinbar für STM8 viel tut...

von Christopher J. (christopher_j23)


Lesenswert?

Sehr coole Sache. Die OpenOCD-Patches für den STM8 sind ja mittlerweile 
auch im Upstream gelandet. Kann man denn die "alten" gepatchten Binutils 
und GDB von Ake Rehnman mit dem aktuellen 3.7.0 RC1 und dem 
Upstream-OpenOCD verwenden oder muss da noch etwas angepasst werden?

von Philipp Klaus K. (pkk)


Lesenswert?

Christopher J. schrieb:
> Sehr coole Sache. Die OpenOCD-Patches für den STM8 sind ja mittlerweile
> auch im Upstream gelandet. Kann man denn die "alten" gepatchten Binutils
> und GDB von Ake Rehnman mit dem aktuellen 3.7.0 RC1 und dem
> Upstream-OpenOCD verwenden oder muss da noch etwas angepasst werden?

Da braucht es neue Patches (die Åke auch schon erstellt hat, und die ich 
auch schon etwas getestet habe; vermutlich wird er seine Seite zum 
Release von 3.7.0 aktualisieren).

Philipp

von Applesupport (Gast)


Lesenswert?

Wurde ja auch mal Zeit das es offizielle Verlautbarungen
aus der SDCC-Ecke gibt.

Aber wegen einem RC mach ich mir die Platte nicht schmutzig.

von Philipp Klaus K. (pkk)


Lesenswert?

Vor zwei Tagen ist 3.7.0 erschienen. Gegenüber dem RC1 wurde noch ein 
Bug im z80-Backend behoben und der Abschnitt zur Installation im 
Handbuch ergänzt.

Philipp

von Christopher J. (christopher_j23)


Lesenswert?

Hallo Philipp,
Vielen Dank erstmal für die tolle Arbeit am STM8 Backend. Weißt du schon 
ob und wann Åke seine neuen Patches veröffentlicht? Hatte die letzten 
Tage immer wieder mal geschaut ob es was neues gibt und wäre auch gerne 
bereit diese zu testen.

von Philipp Klaus K. (pkk)


Lesenswert?

Wann Åke seine Seite aktulaisiert, weiß ich nicht; zur Zeit gibt es ja 
eh noch Probleme bei Sourceforge, so dass sowohl seine Seite als auch 
die von SDCC nur eingeschränkt funktionieren.

Philipp

von Christopher J. (christopher_j23)


Lesenswert?

Die Seite ist nun aktualisiert und auch Sourceforge scheint wieder zu 
funktionieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.