public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [00/32] C++ 20 Modules
@ 2020-11-03 21:12 Nathan Sidwell
  2020-11-04  3:14 ` Hans-Peter Nilsson
                   ` (6 more replies)
  0 siblings, 7 replies; 18+ messages in thread
From: Nathan Sidwell @ 2020-11-03 21:12 UTC (permalink / raw)
  To: GCC Patches, Jason Merrill, Richard Biener

Here is the implementation of C++20 modules that I have been developing 
on the devel/c++-modules branch over the last few years.

It is not a complete implementation.  The major missing pieces are:

1) Private Module Fragment
   The syntax is recognized and a sorry emitted

2) textually parsing a duplicate global module definition when a 
definition has already been read from a header-unit.  (the converse is 
supported)

3) Complete type (in)visibility when provided in implementation 
partitions that are imported into the primary interface.  Users will see 
the type as complete.

4) Internal linkage reachability rules from exported entities.  We're 
likely to accept ill-formed programs.  This will not cause us to reject 
well-formed programs.

It is some 25K new lines of code (plus testsuite).  There are about 48 
FIXMEs, nearly all in module.cc and the remaining in name-lookup.c. Of 
these 12 are QOI comments.  The remaining 36 probably fall into the 
following categories:
1/3 are repeating a FIXME mentioned elsewhere
1/3 are already resolved, or have become irrelevant
1/3 are defects (an above missing feature, a QOI issue, or something else).

I believe there is time in stage 1 to address the most significant ones.

I have bootstrapped and tested on:
x86_64-linux
aarch64-linux
powerpc8le-linux
powerpc8-aix

Iain Sandoe has been regularly bootstrapping on x86_64-darwin.  Joseph 
Myers graciously built for i686-mingw host.  We eventually ran into 
compilation errors in the analyzer, as it seemed unprepared for an 
IL32P64 host.

I have attempted to break the patches apart into coherent pieces.  But 
they are somewhat interconnected.

01-langhooks.diff	New langhooks
02-cpp-line-maps.diff 	line-map pieces
03-cpp-callbacks.diff 	Preprocessor callbacks
04-cpp-lexer.diff 	There are new lexing requirements
05-cpp-files.diff 	... and file reading functionality
06-cpp-macro.diff 	... and macro expansion rules
07-cpp-main.diff 	Main file reading
08-cpp-mkdeps.diff 	Dependency generation
09-core-diag.diff 	Core diagnostics
10-core-config.diff 	Autoconf
11-core-parmtime.diff 	parameters and time instrumentation
12-core-doc.diff 	User documentation
13-family-options.diff 	New options
14-family-keywords.diff New keyword
15-c++-lexer.diff 	New C++ lexing
16-c++-infra.diff 	C++ infrastructure interfaces
17-c++-infra-constexpr.diff new constexpr interfacing
18-c++-infra-template.diff  new template interfacing
19-global-trees.diff 	Global tree ordering
20-c++-dynctor.diff 	Dynamic constructor generation
21-core-rawbits.diff 	Some core node bits
22-c++-otherbits.diff	Miscellaneous C++ changes
23-libcody.diff 	Libcody
24-c++-mapper.diff 	Module Mapper
25-c++-modules.diff 	The Modules file
26-c++-name-lookup.diff Name lookup changes
27-c++-parser.diff 	Parser changes
28-c++-langhooks.diff 	Lang hooks implementation
29-c++-make.diff 	Makefile changes
30-test-harness.diff 	Testharness changes
31-testsuite.diff 	The testsuite
32-aix-fixincl.diff 	AIX fixinclude

Nearly all of this is within gcc/cp and libcpp/ directories.  There are 
a few changes to gcc/ and more changes in gcc/c-family/  It is likely 
that this patchset will cause breakages, for that I apologize (please 
try the modules branch and report early).

My understanding is that a Global Maintainer's approval is needed for 
such a large patchset.  It's be good to get this in as early in stage 3 
as possible (if stage 1 expires).

Definitely the most important event of today :)  But don't forget to vote.

nathan

-- 
Nathan Sidwell

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2020-11-16  8:50 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 21:12 [00/32] C++ 20 Modules Nathan Sidwell
2020-11-04  3:14 ` Hans-Peter Nilsson
2020-11-04 12:30   ` Nathan Sidwell
2020-11-04 13:50     ` Nathan Sidwell
2020-11-04 14:15       ` Jason Merrill
2020-11-04 15:06         ` Nathan Sidwell
2020-11-04 19:24 ` [10/32] config Nathan Sidwell
2020-11-06 17:56   ` Jeff Law
2020-11-06 18:47     ` Nathan Sidwell
2020-11-05  7:08 ` [00/32] C++ 20 Modules Boris Kolpackov
2020-11-05 17:17   ` Nathan Sidwell
2020-11-06 14:26     ` Boris Kolpackov
2020-11-05 13:33 ` Richard Biener
2020-11-05 15:25   ` Nathan Sidwell
2020-11-05 18:45     ` Richard Biener
2020-11-05 14:30 ` David Malcolm
2020-11-13 21:55 ` Mike Stump
2020-11-16  8:50 ` Boris Kolpackov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).