Skip to content

Commit

Permalink
Merge pull request #225 from davidtwco/polymorphization-wg
Browse files Browse the repository at this point in the history
Add polymorphization working group.
  • Loading branch information
nikomatsakis committed Dec 5, 2019
2 parents bcf8dec + 3eaaff6 commit 0cb5f28
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 17 deletions.
20 changes: 4 additions & 16 deletions content/_index.md
Expand Up @@ -74,23 +74,10 @@ Name | Status | Short
[Rustc pipelining](working-groups/pipelining/) | Active | Enable Cargo to invoke rustc in a pipelined fashion, speeding up crate graph compiles. | [#t-compiler/wg-pipelining][pipelining-stream]
[Polonius](working-groups/polonius/) | Active | Exploring the integration of the "NLL 2.0"-like ["Polonius analysis"][Polonius] into rustc | [#t-compiler/wg-polonius][polonius_stream]
[Learning](working-groups/learning/) | Active | Make the compiler easier to learn by ensuring that rustc-guide and api docs are "complete" | [#t-compiler/wg-learning][learning_stream]
[Diagnostics](working-groups/diagnostics/) | Active | Use crates.io crates for diagnostics rendering and make emitting diagnostics nicer. | [#t-compiler/wg-diagnostics][diagnostics-stream]
[Diagnostics](working-groups/diagnostics/) | Active | Use crates.io crates for diagnostics rendering and make emitting diagnostics nicer. | [#t-compiler/wg-diagnostics][diagnostics_stream]
[Polymorphization](working-groups/polymorphization/) | Active | Implement an analysis to detect when functions can remain polymorphic during code generation. | [#t-compiler/wg-polymorphization][polymorphization_stream]
[Profile-Guided Optimization](working-groups/pgo/) | Retired | Implementing profile-guided optimization for rustc | [#t-compiler/wg-profile-guided-optimization][pgo_stream]

[nikomatsakis]: https://github.com/nikomatsakis
[cramertj]: https://github.com/cramertj
[matklad]: https://github.com/matklad
[pnkfelix]: https://github.com/pnkfelix
[davidtwco]: https://github.com/davidtwco
[spastorino]: https://github.com/spastorino
[wesleywiser]: https://github.com/wesleywiser
[michaelwoerister]: https://github.com/michaelwoerister
[nagisa]: https://github.com/nagisa
[Zoxc]: https://github.com/Zoxc
[blitzerr]: https://github.com/blitzerr
[oli-obk]: https://github.com/oli-obk
[estebank]: https://github.com/estebank

[Weekly, in Zulip]: #meeting-calendar
[nll_stream]: https://rust-lang.zulipchat.com/#narrow/stream/122657-t-compiler.2Fwg-nll
[llvm_stream]: https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fwg-llvm
Expand All @@ -105,9 +92,10 @@ Name | Status | Short
[mir-opt-stream]: https://rust-lang.zulipchat.com/#narrow/stream/189540-t-compiler.2Fwg-mir-opt
[pipelining-stream]: https://rust-lang.zulipchat.com/#narrow/stream/195180-t-compiler.2Fwg-pipelining
[polonius_stream]: https://rust-lang.zulipchat.com/#narrow/stream/186049-t-compiler.2Fwg-polonius
[polymorphization_stream]: https://rust-lang.zulipchat.com/#narrow/stream/216091-t-compiler.2Fwg-polymorphization
[learning_stream]: https://rust-lang.zulipchat.com/#narrow/stream/196385-t-compiler.2Fwg-learning
[Polonius]: https://github.com/rust-lang/polonius
[diagnostics-stream]: https://rust-lang.zulipchat.com/#narrow/stream/147480-t-compiler.2Fwg-diagnostics
[diagnostics_stream]: https://rust-lang.zulipchat.com/#narrow/stream/147480-t-compiler.2Fwg-diagnostics

## Expert Map

Expand Down
38 changes: 38 additions & 0 deletions content/working-groups/polymorphization/_index.md
@@ -0,0 +1,38 @@
---
title: Polymorphization Working Group
type: docs
---
# Polymorphization Working Group
![working group status: active][status]

This working group aims to implement an analysis to detect when functions could remain polymorphic
during code generation.

- **Leads:** [@nikomatsakis][nikomatsakis] and [@davidtwco][davidtwco]

[status]: https://img.shields.io/badge/status-active-brightgreen.svg?style=for-the-badge

## What is the goal of this working group?
This working group aims to accomplish the following:

- Initially, implement an analysis to detect when type parameters are unused in functions, closures
and methods; and integrate this analysis into the monomorphization infrastructure so that less
copies of functions are redundantly made (this addresses rust-lang/rust#46477).
- Experiment and investigate extending the analysis to more advanced cases where functions could
be kept polymorphic. For example, if a function only uses the size of a type parameter, rustc
could create a copy for each distinct size of type (rather than each type).

# How can I get involved?
The scope of this working group is quite limited and the project is part
of [davidtwco][davidtwco]'s Master's Thesis, so there aren't many opportunities to get involved.
If you have any questions, feel free to drop them in the Zulip stream.

- **Desired experience level:** N/A
- **Relevant repositories:** [`rust-lang/rust`][repo]
- **Zulip stream:** [`#t-compiler/wg-polymorphization`][zulip] on Zulip

[repo]: https://github.com/rust-lang/rust
[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/216091-t-compiler.2Fwg-polymorphization

[nikomatsakis]: https://github.com/nikomatsakis
[davidtwco]: https://github.com/davidtwco
2 changes: 1 addition & 1 deletion layouts/shortcodes/checkin-schedule.html
Expand Up @@ -20,7 +20,7 @@
var wgs = [
"Async/Await", "Diagnostics", "Learning", "LLVM", "Meta", "MIR Optimizations", "NLL",
"Parallel Rustc", "PGO", "Pipelining", "Polonius", "RFC 2229", "RLS 2.0", "Self-Profile",
"Traits",
"Traits", "Polymorphization",
];
var count = wgs.length % 2 === 0 ? wgs.length : wgs.length + 1;

Expand Down

0 comments on commit 0cb5f28

Please sign in to comment.