SDCC 3.7.0 Release - roybaer/sdcc-wiki GitHub Wiki
Delivery | Planned date | Actual date |
---|---|---|
SDCC 3.7.0 RC1 | 2018-02-11 | |
SDCC 3.7.0 Release | 2018-02-18 |
See the SDCC 3.7.0 Release Plan.
If you think there is a functionality that should be included or a bug that needs to be fixed in the release, please submit it to the Feature Requests at http://sourceforge.net/tracker/?group_id=599&atid=350599 or Bugs at http://sourceforge.net/tracker/?group_id=599&atid=100599 and copy Request ID and Summary fields to the following table, where:
Request ID: | Request ID from Feature Requests or Bugs |
---|---|
Summary: | Summary from Feature Requests or Bugs |
Proposed by: | Who proposed the feature or bug fix |
Time: | Estimate of the implementation time |
Developer: | Who will implement the feature or bug fix |
Status: | Current status |
Request ID | Summary | Proposed by | Time | Developer | Status |
---|---|---|---|---|---|
2870755 | Accessing the stack | spth | POSTPONED | ||
sdas merge with asxxxx 5.0 | borutr | a lot more | borutr/maarten | work in progress | |
2085 | mcs51/ds390 bool fails when bit type is not allowed | spth | epetrich | DONE | |
1710546 | struct: aggregate assignment | spth | POSTPONED | ||
674638 | structures cannot be passed as function parameters | spth | POSTPONED | ||
3326880 | float classification macros | spth | POSTPONED | ||
3486540 | gcc-torture-execute-pr38212 fails | spth | |||
3486535 | gcc-torture-execute-pr20466-1 fails | spth | |||
3502632 | gcc-torture-execute-20010224-1 fails for z80-related | spth | epetrich | DONE | |
3289630 | variable length arrays | spth | POSTPONED | ||
3495899 | CSE ignores pointer aliasing problems. | spth | |||
3573141 | Handle static vars like global ones in initialization | spth | |||
327 | mcs51 code in device/lib | spth | |||
1731 | More sdcdb bugs | spth | |||
403 | Regression testing for pic16 | spth | POSTPONED | ||
1866 | [PIC16] Global variables not initialized to 0 by default (maybe enable crt0iz as default) | DiegoHerranz | QUASIDONE | ||
2241 | wrong code generated for a function call inside nested loops | spth | epetrich | DONE | |
451 | Intermingled declarations and code | spth | POSTPONED | ||
165 | C99 compliance: for (int i=0; ... | spth | spth | DONE | |
332 | Compound literals | spth | POSTPONED | ||
450 | K & R function style | spth | POSTPONED | ||
2545 | signed enum comparisons fail | spth | maarten | DONE | |
2559 | Wrong operand in left shift by literal | spth | epetrich | DONE | |
2539 | expression with bool result assigned to bitfield generates wrong code | spth | spth | DONE | |
2542 | Cast overwrites lower byte of 16-bit result (andgets wrong upper byte) | spth | spth | DONE | |
2585 | Wrong result in left shift of int by int | spth | maarten | DONE | |
2657 | Invalid asm generated | spth | benshi | DONE | |
2643 | Initialization of anonymous union inside struct broken | spth | spth | DONE | |
2560 | _Bool addition issues in ds390 | spth | |||
2609 | No doc snapshots since July 2016 | spth | spth | DONE | |
1995 | Z80 very long compile even with low --max-allocs-per-node | spth | spth | DONE | |
539 | Make debugging with gdb work well for stm8 | spth | spth | DONE | |
2680 | Possible GPL violation: Binary snapshots only | spth | DONE | ||
2685 | huge mcs51 memory model not working on 32-bit Windows | spth | maarten | DONE | |
2711 | collision with binutils /usr/share/info/bfd.info.bz2 | spth | spth | DONE |
There is always a problem to create a list of new features when a new SDCC release is announced. The following list is an attempt to create such a list "on the fly". Every time a new feature which is visible or interesting for the SDCC users is implemented, it should be added to the following list.
- 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 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.
- Additional general utility functions: qsort(), strtol(), strtoul().