Skip to content

Commit 876271f

Browse files
authored
Merge pull request #61251 from slavapestov/implementing-swift-generics
docs: Work-in-progress generics implementation documentation
2 parents ea88bea + 10cc835 commit 876271f

File tree

6 files changed

+11699
-3604
lines changed

6 files changed

+11699
-3604
lines changed

docs/Generics/Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
generics.pdf:
2+
pdflatex generics
3+
bibtex generics
4+
pdflatex generics
5+
pdflatex generics
6+
7+
clean:
8+
rm *.aux *.bbl *.blg *.idx *.ilg *.ind *.log *.out *.pdf *.toc
9+
10+
.PHONY: clean

docs/Generics/generics.bib

Lines changed: 308 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,308 @@
1+
@misc{llvmtalk,
2+
author = "John McCall and Slava Pestov",
3+
title = "Implementing {S}wift generics",
4+
url = "https://www.youtube.com/watch?v=ctS8FzqcRug",
5+
year = {2017}
6+
}
7+
@misc{sr617,
8+
title = "{SR-617}: \texttt{Self} not always resolved dynamically with Generics",
9+
url = "https://github.com/apple/swift/issues/43234",
10+
year = {2016}
11+
}
12+
@misc{sr631,
13+
title = "{SR-631}: Extensions in different files do not recognize each other",
14+
url = "https://github.com/apple/swift/issues/43248",
15+
year = {2016}
16+
}
17+
@misc{sr4206,
18+
title = "{SR-4206}: Override checking does not properly enforce requirements",
19+
url = "https://github.com/apple/swift/issues/46789",
20+
year = {2017}
21+
}
22+
@misc{se0011,
23+
author = "Loïc Lecrenier",
24+
title = "{SE-0011}: Replace \texttt{typealias} keyword with \texttt{associatedtype} for associated type declarations",
25+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0011-replace-typealias-associated.md",
26+
year = {2015}
27+
}
28+
@misc{se0021,
29+
author = "Doug Gregor",
30+
title = "{SE-0021}: Naming Functions with Argument Labels",
31+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0021-generalized-naming.md",
32+
year = {2016}
33+
}
34+
@misc{se0029,
35+
author = "Chris Lattner",
36+
title = "{SE-0029}: Remove implicit tuple splat behavior from function applications",
37+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0029-remove-implicit-tuple-splat.md",
38+
year = {2016}
39+
}
40+
@misc{se0048,
41+
author = "Chris Lattner",
42+
title = "{SE-0048}: Generic type aliases",
43+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0048-generic-typealias.md",
44+
year = {2016}
45+
}
46+
@misc{se0066,
47+
author = "Chris Lattner",
48+
title = "{SE-0066}: Standardize function type argument syntax to require parentheses",
49+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0066-standardize-function-type-syntax.md",
50+
year = {2016}
51+
}
52+
@misc{se0077,
53+
author = "Anton Zhilin",
54+
title = "{SE-0077}: Improved operator declarations",
55+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0077-operator-precedence.md",
56+
year = {2016}
57+
}
58+
@misc{se0091,
59+
author = "Tony Allevato and Doug Gregor",
60+
title = "{SE-0091}: Improving operator requirements in protocols",
61+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0091-improving-operators-in-protocols.md",
62+
year = {2016}
63+
}
64+
@misc{se0110,
65+
author = "Vladimir S. and Austin Zheng",
66+
title = "{SE-0110}: Distinguish between single-tuple and multiple-argument function types",
67+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0110-distinguish-single-tuple-arg.md",
68+
year = {2016}
69+
}
70+
@misc{se0111,
71+
author = "Austin Zheng",
72+
title = "{SE-0111}: Remove type system significance of function argument labels",
73+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0111-remove-arg-label-type-significance.md",
74+
year = {2016}
75+
}
76+
@misc{se0068,
77+
author = "Erica Sadun",
78+
title = "{SE-0068}: Expanding Swift \texttt{Self} to class members and value types",
79+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0068-universal-self.md",
80+
year = {2016}
81+
}
82+
@misc{se0081,
83+
author = "David Hart and Robert Widman and Pyry Jahkola",
84+
title = "{SE-0081}: Move \texttt{where} clause to end of declaration",
85+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0081-move-where-expression.md",
86+
year = {2016}
87+
}
88+
@misc{se0092,
89+
author = "David Hart and Doug Gregor",
90+
title = "{SE-0092}: Typealiases in protocols and protocol extensions",
91+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0092-typealiases-in-protocols.md",
92+
year = {2016}
93+
}
94+
@misc{se0095,
95+
author = "Trent Nadeau",
96+
title = "{SE-0103}: Make non-escaping closures the default",
97+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0103-make-noescape-default.md",
98+
year = {2016}
99+
}
100+
@misc{se0103,
101+
author = "Adrian Zubarev and Austin Zheng",
102+
title = "{SE-0095}: Replace \texttt{protocol<P1,P2>} syntax with \texttt{P1 \& P2} syntax",
103+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0095-any-as-existential.md",
104+
year = {2016}
105+
}
106+
@misc{se0142,
107+
author = "David Hart and Jacob Bandes-Storch and Doug Gregor",
108+
title = "{SE-0142}: Permit where clauses to constrain associated types",
109+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0142-associated-types-constraints.md",
110+
year = {2017}
111+
}
112+
@misc{se0143,
113+
author = "Doug Gregor",
114+
title = "{SE-0143}: Conditional conformances",
115+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0143-conditional-conformances.md",
116+
year = {2016}
117+
}
118+
@misc{se0148,
119+
author = "Chris Eidhof",
120+
title = "{SE-0148}: Generic subscripts",
121+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0148-generic-subscripts.md",
122+
year = {2017}
123+
}
124+
@misc{se0156,
125+
author = "David Hart and Austin Zheng",
126+
title = "{SE-0156}: Class and subtype existentials",
127+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0156-subclass-existentials.md",
128+
year = {2017}
129+
}
130+
@misc{se0157,
131+
author = "Doug Gregor and Erica Sadun and Austin Zheng",
132+
title = "{SE-0157}: Support recursive constraints on associated types",
133+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0157-recursive-protocol-constraints.md",
134+
year = {2017}
135+
}
136+
@misc{se0193,
137+
author = "Slava Pestov",
138+
title = "{SE-0193}: Cross-module inlining and specialization",
139+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0193-cross-module-inlining-and-specialization.md",
140+
year = {2018}
141+
}
142+
@misc{se0244,
143+
author = "Doug Gregor and Joe Groff",
144+
title = "{SE-0244}: Opaque result types",
145+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0244-opaque-result-types.md",
146+
year = {2019}
147+
}
148+
@misc{se0260,
149+
author = "Jordan Rose and Ben Cohen",
150+
title = "{SE-0260}: Library Evolution for Stable {ABIs}",
151+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0260-library-evolution.md",
152+
year = {2019}
153+
}
154+
@misc{se0261,
155+
author = "Anthony Latsis",
156+
title = "{SE-0261}: \texttt{where} clauses on contextually generic declarations",
157+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0267-where-on-contextually-generic.md",
158+
year = {2019}
159+
}
160+
@misc{se0281,
161+
author = "Nate Cook and Nate Chandler and Matt Ricketson",
162+
title = "{SE-0281}: \texttt{@main}: Type-Based Program Entry Points",
163+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0281-main-attribute.md",
164+
year = {2020}
165+
}
166+
167+
@misc{se0296,
168+
author = "John McCall and Doug Gregor",
169+
title = "{SE-0296}: Async/await",
170+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0296-async-await.md",
171+
year = {2020}
172+
}
173+
@misc{se0309,
174+
author = "Anthony Latsis and Filip Sakel and Suyash Srijan",
175+
title = "{SE-0309}: Unlock existentials for all protocols",
176+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0309-unlock-existential-types-for-all-protocols.md",
177+
year = {2022}
178+
}
179+
@misc{se0315,
180+
author = "Frederick Kellison-Linn",
181+
title = "{SE-0315}: Type placeholders",
182+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0315-placeholder-types.md",
183+
year = {2021}
184+
}
185+
@misc{se0328,
186+
author = "Benjamin Driscoll and Holly Borla",
187+
title = "{SE-0328}: Structural opaque result types",
188+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0328-structural-opaque-result-types.md",
189+
year = {2021}
190+
}
191+
@misc{se0341,
192+
author = "Doug Gregor",
193+
title = "{SE-0341}: Opaque parameter declarations",
194+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0341-opaque-parameters.md",
195+
year = {2022}
196+
}
197+
@misc{se0346,
198+
author = "Pavel Yaskevich and Holly Borla and Slava Pestov",
199+
title = "{SE-0346}: Lightweight same-type requirements for primary associated types",
200+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0346-light-weight-same-type-syntax.md",
201+
year = {2022}
202+
}
203+
@misc{se0352,
204+
author = "Doug Gregor",
205+
title = "{SE-0352}: Implicitly opened existentials",
206+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0352-implicit-open-existentials.md",
207+
year = {2022}
208+
}
209+
@misc{se0353,
210+
author = "Robert Widmann",
211+
title = "{SE-0353}: Constrained existential types",
212+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0353-constrained-existential-types.md",
213+
year = {2022}
214+
}
215+
@misc{se0355,
216+
author = "Holly Borla",
217+
title = "{SE-0335}: Introduce existential \texttt{any}",
218+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0335-existential-any.md",
219+
year = {2021}
220+
}
221+
@misc{se0361,
222+
author = "Holly Borla",
223+
title = "{SE-0361}: Extensions on bound generic types",
224+
url = "https://github.com/apple/swift-evolution/blob/main/proposals/0361-bound-generic-extensions.md",
225+
year = {2022}
226+
}
227+
@misc(sil,
228+
title = "Swift Intermediate Language {(SIL)}",
229+
url = "https://github.com/apple/swift/blob/main/docs/SIL.rst",
230+
year = {2016}
231+
)
232+
@misc(gensig,
233+
author = "Doug Gregor",
234+
title = "Generic Signatures",
235+
url = "https://github.com/apple/swift/blob/main/docs/ABI/GenericSignature.md",
236+
year = {2018}
237+
)
238+
@misc(reqeval,
239+
author = "Doug Gregor",
240+
title = "Request evaluator",
241+
url = "https://github.com/apple/swift/blob/main/docs/RequestEvaluator.md",
242+
year = {2018}
243+
)
244+
@misc(incremental,
245+
author = "Jordan Rose",
246+
title = "Dependency analysis",
247+
url = "https://github.com/apple/swift/blob/main/docs/DependencyAnalysis.md",
248+
year = {2015}
249+
)
250+
251+
252+
@article{undecidablegroup,
253+
author = {Donald J. Collins},
254+
title = {{A simple presentation of a group with unsolvable word problem}},
255+
volume = {30},
256+
journal = {Illinois Journal of Mathematics},
257+
number = {2},
258+
publisher = {Duke University Press},
259+
pages = {230 -- 234},
260+
year = {1986},
261+
doi = {10.1215/ijm/1256044631},
262+
URL = {https://doi.org/10.1215/ijm/1256044631}
263+
}
264+
@book{andallthat, place={Cambridge}, title={Term Rewriting and All That}, DOI={10.1017/CBO9781139172752}, publisher={Cambridge University Press}, author={Baader, Franz and Nipkow, Tobias}, year={1998}}
265+
@Inbook{Knuth1983,
266+
author="Knuth, D. E.
267+
and Bendix, P. B.",
268+
editor="Siekmann, J{\"o}rg H.
269+
and Wrightson, Graham",
270+
title="Simple Word Problems in Universal Algebras",
271+
bookTitle="Automation of Reasoning: 2: Classical Papers on Computational Logic 1967--1970",
272+
year="1983",
273+
publisher="Springer Berlin Heidelberg",
274+
address="Berlin, Heidelberg",
275+
pages="342--376",
276+
isbn="978-3-642-81955-1",
277+
doi="10.1007/978-3-642-81955-1_23",
278+
url="https://doi.org/10.1007/978-3-642-81955-1_23"
279+
}
280+
@article{SQUIER1994271,
281+
title = {A finiteness condition for rewriting systems},
282+
journal = {Theoretical Computer Science},
283+
volume = {131},
284+
number = {2},
285+
pages = {271-294},
286+
year = {1994},
287+
issn = {0304-3975},
288+
doi = {https://doi.org/10.1016/0304-3975(94)90175-9},
289+
url = {https://www.sciencedirect.com/science/article/pii/0304397594901759},
290+
author = {Craig C. Squier and Friedrich Otto and Yuji Kobayashi}
291+
}
292+
@inproceedings{guiraud:hal-00818253,
293+
TITLE = {{A Homotopical Completion Procedure with Applications to Coherence of Monoids}},
294+
AUTHOR = {Guiraud, Yves and Malbos, Philippe and Mimram, Samuel},
295+
URL = {https://hal.inria.fr/hal-00818253},
296+
BOOKTITLE = {{RTA - 24th International Conference on Rewriting Techniques and Applications - 2013}},
297+
ADDRESS = {Eindhoven, Netherlands},
298+
EDITOR = {Van Raamsdonk, Femke},
299+
PUBLISHER = {{Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik}},
300+
SERIES = {Leibniz International Proceedings in Informatics (LIPIcs)},
301+
VOLUME = {21},
302+
PAGES = {223-238},
303+
YEAR = {2013},
304+
MONTH = Jun,
305+
DOI = {10.4230/LIPIcs.RTA.2013.223},
306+
HAL_ID = {hal-00818253},
307+
HAL_VERSION = {v1},
308+
}

0 commit comments

Comments
 (0)