From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) by sourceware.org (Postfix) with ESMTPS id DD7123858C2F; Tue, 28 Jun 2022 07:30:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DD7123858C2F Received: by mail-qv1-xf33.google.com with SMTP id q4so18801029qvq.8; Tue, 28 Jun 2022 00:30:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=WqED9S0tia084J1g2d/yVx4FK4vy/nsGmHYyLuWkGR8=; b=4jMnKD8zPBi0SbV26fEnogjvChAE64U6CIMp3eY0Vr5818CVffEJwW18GMlSRihXph NDKuCFWMgzTgJzd5evPumlkgO0kkmV/nCMJmFJHH4zNZcFJU/w3Y6a6LMa6KjvX0MaU1 oGahV1+VBoiggrDxuW0EuDy56HI6AqXOIhFQorCNDdqiqR+ojE1rsPKflyepp8ZTm1yR 46klAjRvvTdYWlMHVgQRN0vM2KlOgbgyu4Boa2zYVRaHf7EgnnJ9Ky0a3vOEdLwVc/tE LHkZyep9jRhtcN2h8xilfR/8PgS8wN0wc/yHK8/+IOO6EhksfBTevx0pzJyiclSPToqx q77g== X-Gm-Message-State: AJIora8z15qGX4fRLtZqiMTbqWYtaAPh5hXoVgpHZIrD4GJu2Py58mfq kbuS041HqPAaPudLL/zj1DXUIjbzCPpOw6yAv9ZpbypNERs= X-Google-Smtp-Source: AGRyM1vHY3uYmKKZlTknOEAhxfdTHNve6sqKCoihtdm+qODIMb0XyEBAezo3UvrEnlZ/IkeL/7R8RDTHV2qMwMRBHvQ= X-Received: by 2002:a05:622a:1b8b:b0:31b:f3f7:b3e with SMTP id bp11-20020a05622a1b8b00b0031bf3f70b3emr536135qtb.329.1656401431176; Tue, 28 Jun 2022 00:30:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Richard Biener Date: Tue, 28 Jun 2022 09:30:20 +0200 Message-ID: Subject: Re: Rust front-end To: Philip Herron Cc: gcc Mailing List , gcc-rust@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-rust@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: gcc-rust mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 28 Jun 2022 07:30:33 -0000 On Mon, Jun 27, 2022 at 4:52 PM Philip Herron wrote: > > Hi everyone, > > Since November 2020, I've worked full-time on the Rust front-end for > GCC, thanks to Open Source Security, Inc and Embecosm. As a result, I > am writing to this mailing list to seek feedback from the collective > experience here early to plan a path for upstreaming the front-end > into GCC. > > 1. What is the actual process of merging a prominent feature like this up= stream > - How do we review this? > - Do we create a "mega-commit" patch > - How long should we expect this review process to take > - Is there anything we can do to make this easier? Usually a new frontend is first proposed for merge and generally approved by the steering committee (which should also sort out legal issues). For the actual review process it's best to consult previous frontend merges - the most recent merged frontend was the D frontend and the modula2 frontend is in the process of being reviewed. To be able to focus on the possibly controversical pieces separating out changes to the generic GCC code base (such as driver or even middle-end) should be separated out. It would also be helpful to provide an overview of how a rust compile + link cycle works through the pieces in GCC (see the modula-2 case where that involved creating stub C++ code, compiling and linking that and how this is now done much more straight-forward). > 2. What sort of quality does the GCC community expect? > - I think it is essential that we can compile valid test cases from > a testsuite and real projects before merging. > - It seems reasonable that our error handling may not be 100% but be > expected to improve over time > - Upon merging, can features like Rust be marked as experimental Rust can be marked as experimental, sure. It would be not enabled to be built by default (and you can have a whitelist of supported targets). The most important part would be that the build works when enabled and that most of the existing testsuite passes so it can be used to regression test middle-end changes. If it is not useful at all for (basic) real-world usage then it might be no= t ready yet. > 3. How do GCC releases work? > - If you miss a window can we still merge code into the front-end? > - Can we merge without a borrow checker and backport this in the future= ? The rust frontend will not be part of the release critical pieces of the compiler (which includes the C and C++ frontends plus the set of primary and secondary targets) so it is up to the maintainers to decide what to merge and when. Release managers will generally ignore issues in Rust. > 4. What about the possibility of merging sooner rather than later, > which would help the project gain interest through the increased > visibility of it as part of the GCC family. > - Does this still allow for development churn, or will it cause frictio= n? The parts where GCC and Rust overlap still need to be reviewed and _some_ usability for users should be provided. > 5. Does anyone have prior experience or advice they could give us? I suppose Ian (for the Go frontend) or Iain (for the D frontend) can give you hints. > For some context, my current project plan brings us to November 2022 > where we (unexpected events permitting) should be able to support > valid Rust code targeting Rustc version ~1.40 and reuse libcore, > liballoc and libstd. This date does not account for the borrow checker > feature and the proc macro crate, which we have a plan to implement, > but this will be a further six-month project. > > Regarding patch management, we currently do our development on GitHub: > https://github.com/Rust-GCC/gccrs; this means we can integrate our > issue tracking with the official Rust project by linking back to the > official Rust project's RFC issues, for example. The downside is that > when someone uses our compiler and hits an ICE, they will be directed > to the GCC Bugzilla, which is correct but can lead to a mismatch in > issue tracking. Nevertheless, I think it's essential to have the > GitHub link here to integrate with the broader Rust community. I > believe we can triage Rust issues on the Bugzilla and raise associated > ones on Github to manage this. > > From my perspective as the lead on this front-end, we are currently > under heavy development, so this means a fair amount of code churn > still, and I don't see this changing until we can successfully compile > the libcore crate later this year. Although I would love to see us > merged into GCC 13, I want to make sure this project is a success for > everyone, and this might mean pushing back to the next release window > to make sure this is manageable to produce a quality front-end to sit > alongside the others. If you want to target GCC 13 for experimental Rust support I suggest to get review on the overall design (where it touches GCC) and the changes necessary to driver and build changes. The core frontend itself will usual= ly only get review on the parts that interface to the middle-end (thus GENERIC code generation and language hooks). Dropping in the frontend during Stage3 (thus until the end of the year) should be possible, especial= ly if the driver and build changes have been reviewed already. Richard. > I wish to thank you those in the GCC developer community, who have > inspired me and helped me navigate my journey to this point in time. > > - Thomas Schwinge > - Mark Wielaard > - Tom Tromey > - Ian Lance Taylor > - David Edelsohn > - David Malcolm > - Martin Jambor > > Thanks > > =E2=80=93Phil