Menu

SDCC-STD-UX

Maarten Brock Philipp Klaus Krause Benedikt Freisen Felix
Attachments
BMBF_RGB_Gef_L_e.jpg (4126 bytes)

SDCC-STD-UX is a German federally funded 6 month project to improve standard compliance and usability in SDCC.
It is mostly about improving standard compliance (ISO C standards, DWARF. Focus: ISO C23) when targeting µC architectures.

Sponsored by the Federal Ministry of Education and Research

Possible tasks:

Priority from 1 (most important) to 5 (least important). Criteria for priorities: Has the feature been requested by users often? Is the feature necessary for older standards beside C23? Is it particularly relevant for µC? Is it mandatory in the standard(s)?

Note: The "New parser, suitable for C23" Task is special, since many other C23 tasks depend on it.

Priority Category Task Tickets Developer Status
1 C90-C23 Support struct / union return [feature-requests:#167] [bugs:#2846] @spth DONE
1 C90-C23 Support struct / union parameter [feature-requests:#23] @spth DONE
2 C99-C23 Compound literals [feature-requests:#332] @roybaer POSTPONED (WIP)
2 Debug Debug info fixes [bugs:#3200] [bugs:#2970] [bugs:#2870] [bugs:#2741] [bugs:#2906] [support-requests:#151] POSTPONED
2 C11-C23 _Generic fixes [bugs:#3145] [bugs:#3255] @spth DONE
2 C90-C23 Type system fixes [bugs:#3254] [bugs:#2629] [bugs:#2766] @spth DONE
2 C90-C23 Function declaration fixes [bugs:#3091] [bugs:#2664] [feature-requests:#776] @spth DONE
3 C90-C23 brace omission in array initalization [feature-requests:#562] @roybaer POSTPONED (WIP)
3 C99, C23 variably-modified types [feature-requests:#786] @spth DONE
3 Debug ELF/DWARF for mcs51 POSTPONED
3 C23 Modernize preprocessor (possibly by rebasing our fork on the one from GCC 11) [bugs:#3159] [feature-requests:#466] @felixs DONE
3 C23, Usability assert [feature-requests:#780] @spth DONE
3 Usability Fix type range warnings [bugs:#3094] [bugs:#2877] POSTPONED
3 C23 typeof [feature-requests:#738] [feature-requests:#739] @spth DONE
3 C23 New parser, suitable for C23 [feature-requests:#809] @spth MOSTLY DONE
3 C23 attributes [feature-requests:#654] MOSTLY DONE
3 C23 Bit-precise integer types [feature-requests:#681] @spth DONE
3 C99-C23, Usability Segfault in loop [bugs:#2981] ? DONE
3 Usability, C90-C17 Include GCC 11 tests in regression tests [feature-requests:#698] @felixs DONE
3 Usability, C90-C99 Include QuickC tests in regression tests [feature-requests:#697] @felixs DONE
3 Usability, C90-C99 Include tinycc tests in regression tests [feature-requests:#696] @felixs DONE
3 Usability GCC-style command line options [feature-requests:#733] @roybaer DONE
3 Usability F2X headers [feature-requests:#33] rejected
3 Usability STM8-Wizard für Code::Blocks? Maybe have a look at https://github.com/retiredfeline/codeblocks-wizard-stm8/tree/master/stm8 and maybe merge to upstream Code::Blocks? POSTPONED
3 Usability IDE integration? Code::Blocks, PlatformIO (might work already https://github.com/platformio/platform-ststm8/issues/31, but affected by SDCC bugs: https://github.com/microsoft/vscode-cpptools/issues/7146), Eclipse? POSTPONED
3 C23 Enhanced enumerations [feature-requests:#847] POSTPONED
3 C23 auto [feature-requests:#849] @spth DONE
3 C23 bit utilities [feature-requests:#854] @spth DONE
4 C23 Checked integer arithmetic [feature-requests:#749] @spth MOSTLY DONE
4 C23 Identifier syntax [feature-requests:#775] @roybaer POSTPONED (concept)
4 C23 Invalid Unicode warning [feature-requests:#781] @spth DONE
4 Usability Get rid of invalid warnings [bugs:#3108] POSTPONED
4 Usability Segfault on float initialization [bugs:#3031] @spth DONE
4 C95-C23 Segfault on wide string literals [bugs:#3030] POSTPONED
4 C90-C17 K & R declarations [bugs:#3021] [feature-requests:#450] @roybaer POSTPONED (concept)
4 C23 {} initialization [feature-requests:#782] @spth DONE
4 C23 keywords [feature-requests:#783] @spth DONE
4 C23 unreachable [feature-requests:#778] @spth DONE
4 C23 UTF-8 literal type char8_t [feature-requests:#779] @spth DONE
4 C99-C23 New modular C23-compliant implementation of the printf family [feature-requests:#768] @roybaer POSTPONED (WIP)
4 Usability Allow multiple C source files on command line [feature-requests:#657] @roybaer POSTPONED (WIP)
4 SDCC developer meeting in summer, to discuss progress and coordinate many DONE
4 Present results at FrOSCon 2022 @spth DONE
4 Usability Fails to build on current Debian GNU/Linux [bugs:#3140] POSTPONED
4 C90-C23 Full/improved floating point support [bugs:#3396] [feature-requests:#304] [feature-requests:#324] [feature-requests:#351] [feature-requests:#599] [feature-requests:#753] @roybaer POSTPONED (preparation)
4 C23 C2X variadic parameters [feature-requests:#845] POSTPONED
4 C23 memalignment [feature-requests:#846] @spth DONE
4 C90-C23 enumeration types and constants [bugs:#3462] @spth DONE
4 C23 qualifier-preserving stdlib functions [feature-requests:#848] POSTPONED
4 C23 constexpr [feature-requests:#850] POSTPONED
4 C23 nullptr [feature-requests:#853] @spth DONE
4 C23 tag compatibility [feature-requests:#852] @spth DONE
4 C23 label at end of compound statement [feature-requests:#802] @spth DONE
5 Debug ELF/DWARF for sm83 POSTPONED
5 C23 call_once [feature-requests:#777] @spth DONE
5 Usability GCC-compatible attribute syntax [feature-requests:#682] @roybaer PARTIAL (WIP)
5 Usability configure should check for makeinfo [bugs:#3192] [bugs:#3288] POSTPONED
5 Usability Documentation tarball contains intermediate files [bugs:#3345] @spth work in progress
5 C23 [[unsequenced]] [[reproducible]] [feature-requests:#851] @spth DONE

Further relevant feature request: [feature-requests:#666].

Fortnightly progress reports:

2022-03-07:

Done: Kick-off-workshop, paperwork, create this page, setup internal communication channel (Matrix).
Doing: Unit tests. Check meeting minutes of recent SC22 WG14 meetings for relevant new C23 features already approved. Open tickets for individual features. List, priorize and categorize relevant tasks here (see above).
Motivation: Quality assurance, getting started.

2022-03-21:

Done: Onboarding. Derived relevant C23 tasks (see above) from SC22 WG14 meeting minutes, categorized and priorized them. C23 assert. C23 char8_t.
Doing: Unit tests (port tests from GCC, QuickC, Tiny C to SDCC). C23 bit-precise integer types. C90-C23 struct / union return. C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O.
Motivation: Quality assurance. Standard compliance.

2022-04-05:

Done: C90-C23 struct / union return. C90-C23 struct / union parameters. C23 bit-precise integer types.
Doing: Refactor test infrastructure. Port tests from GCC, QuickC, Tiny C to SDCC. C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O.
Motivation: Quality assurance. Standard compliance.

2022-04-18:

Done: Various small fixes.
Doing: Refactor test infrastructure. Port tests from GCC, QuickC, Tiny C to SDCC. C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Fixes for the type system and C11 _Generic selections.
Motivation: Quality assurance. Standard compliance, usability.

2022-05-03

Done: Fixes for the type system (in particular wrt. intrinsic named address spaces) and C11 _Generic selections.
Doing: Refactor test infrastructure. Port tests from GCC, QuickC, Tiny C to SDCC. C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Merge current upstream GNU binutils into SDCC fork.
Motivation: Quality assurance. Standard compliance, usability. Code quality.

2022-05-16

Done: Refactor test infrastructure. Port tests from GCC, QuickC, Tiny C to SDCC. C23 warning on invalid Unicode codepoints.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Merge current upstream GNU binutils into SDCC fork.
Motivation: Quality assurance. Standard compliance, usability. Code quality.

2022-05-30

Done: Merge current upstream GNU binutils into SDCC fork. Classify failures in new tests adopted from GCC, TinyC, QuickC. Check impact of ISO SC22WG14 May meeting C23 decisions on SDCC.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor.
Motivation: Quality assurance. Standard compliance, usability. Code quality.

2022-06-13

Done: SDCC developer meeting 1. Bugfixes.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor. New parser.
Motivation: Standard compliance, in particular foundations for further progress towards C23 compliance. Share preprocessor code between GCC and SDCC.
Challenges: Single out preprocessor out of large GCC codebase. Relicense an existing upstream parser under a free license so we can use bits of it in our new one.

2022-06-27

Done: Negotiated relicensing of C23 reference parser. Bugfixes.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor. New parser. GCC-style command line options.
Motivation: Standard compliance, in particular foundations for further progress towards C23 compliance. Share preprocessor code between GCC and SDCC.
Challenges: Single out preprocessor out of large GCC codebase. Implement C23 capabilities in parser without breaking backwards compability with SDCC language extensions too much.

2022-07-11

Done: GCC-style command line options. Improve floating-point support. Present some related work, in including bits of a possible successor project at FSiC 2022.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor. New parser. Apply for (non-PT) funding for a possible successor project.
Motivation: Standard compliance, in particular foundations for further progress towards C23 compliance. Share preprocessor code between GCC and SDCC. Learned about the relevance of SDCC for freedom in mobile devices (Replicant developers want to use SDCC to build free firmware for microcontrollers embedded in smartphone pripherals).
Challenges: Clean up preprocessor build. Implement C23 capabilities in parser without breaking backwards compability with SDCC language extensions too much.

2022-07-25

Done: Bugfixes. Completed list of tasks based on final set of features of the C23 standard (which was decided at the ISO SC22WG14 meeting 2022-07-18 to 2022-07-22). Preparations for the preprocessor modernization.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor. New parser. Apply for (non-PT) funding for a possible successor project.
Motivation: Standard compliance; we now know the final set of features for C23, which (apart from too many restriction on the use of -bit-precise integer types) seems reasonable.
Challenges: Clean up preprocessor build. Implement C23 capabilities in parser without breaking backwards compatibility with SDCC language extensions too much. Wonder, how much of all those new C23 features we will be able to implement, and how to prioritize.

2022-08-08

Done: Various Bugfixes. Applied for (non-PT) funding for a possible successor project. Basic VLA type support. C23 {} empty initializers. Function declaration fixes. C23 auto. C23 typeof and typeof_unqual. C2x unreachable. C23 memalignment. C23 nullptr.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O. Modernize preprocessor. New parser. Implement bit and byte utilities standard library functions. C23 attributes.
Motivation: Standard compliance; trying to get done more standard compliance tasks, even if that means postponing some of the debug support and usability-related tasks.
Challenges: Enhanced enums and some corner cases of attributes non-trivial to support in parser. Remaining time likely unsufficient to complete all remaining tasks.

2022-08-22

Done: Preprocessor modernization. New parser. Implement bit and byte utilities standard library functions. C23 attributes. C23 tag compatibility. C23 call_once. Bugfixes. FrOSCon talk.
Doing: C11-C23 compound literals. GCC attribute syntax compatibility. C23 modular formatted I/O.
Motivation: C23 standard compliance; trying to get done C standard compliance tasks, even if that means postponing some of the debug support and usability-related tasks.
Challenges: Time running out.

2022-09-05

Done: Demo Day.
Doing: Writing final report. Bugfixes.
Challenges: Project ended.


Related

Bugs: #2629
Bugs: #2664
Bugs: #2741
Bugs: #2766
Bugs: #2846
Bugs: #2870
Bugs: #2877
Bugs: #2906
Bugs: #2970
Bugs: #2981
Bugs: #3021
Bugs: #3030
Bugs: #3031
Bugs: #3091
Bugs: #3094
Bugs: #3108
Bugs: #3140
Bugs: #3145
Bugs: #3159
Bugs: #3192
Bugs: #3200
Bugs: #3254
Bugs: #3255
Bugs: #3288
Bugs: #3345
Bugs: #3396
Bugs: #3462
Feature Requests: #167
Feature Requests: #23
Feature Requests: #304
Feature Requests: #324
Feature Requests: #33
Feature Requests: #332
Feature Requests: #351
Feature Requests: #450
Feature Requests: #466
Feature Requests: #562
Feature Requests: #599
Feature Requests: #654
Feature Requests: #657
Feature Requests: #666
Feature Requests: #681
Feature Requests: #682
Feature Requests: #696
Feature Requests: #697
Feature Requests: #698
Feature Requests: #733
Feature Requests: #738
Feature Requests: #739
Feature Requests: #749
Feature Requests: #753
Feature Requests: #768
Feature Requests: #775
Feature Requests: #776
Feature Requests: #777
Feature Requests: #778
Feature Requests: #779
Feature Requests: #780
Feature Requests: #781
Feature Requests: #782
Feature Requests: #783
Feature Requests: #786
Feature Requests: #802
Feature Requests: #809
Feature Requests: #845
Feature Requests: #846
Feature Requests: #847
Feature Requests: #848
Feature Requests: #849
Feature Requests: #850
Feature Requests: #851
Feature Requests: #852
Feature Requests: #853
Feature Requests: #854
Support Requests: #151
Wiki: Funding