/
663.txt
580 lines (427 loc) · 29.8 KB
/
663.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
[1] [[Web]] 関連の[[仕様書]]では、[[プログラム]]の動作に関する要件の多くや[[文書]]の適合性に関する要件の一部は[DFN[[RUBYB[[[アルゴリズム]]]@en[algorithm]]]]として記述されています。
* 仕様書
[REFS[
- [5] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2014-09-19 23:39:59 +09:00]] 版) <https://html.spec.whatwg.org/#conformance-requirements>
]REFS]
* 呼称
[2] 一連の処理をまとめたものの呼称として、「[RUBYB[アルゴリズム]@en[algorithm]]」
の他に「[DFN[steps]]」も用いられています。両者間に明確な使い分けはないようです。
;; [35] 「アルゴリズム」も「steps」も、構成する各段階は「step」といいます。
* 記述
[3] [[仕様書]]上の[[アルゴリズム]]の記述方法は、
共通の規定はなく、各[[仕様書]]によって若干の違いがあります。
[4] 現在ほとんどの[[仕様書]]では、[[自然言語]] ([[英語]])
により規定を述べています。
* 適合性
[8] [[アルゴリズム]]として記述された[[要件]]は、必ずしもそのまま実装しなくても構いません。
外部から観測可能な結果が同じである限り、任意の方法で実装して構いません。 [SRC[>>5]]
;; [9] このことは明記されていない[[仕様書]]もありますが、
どの[[仕様書]]でもそうであると理解されています。
[[アルゴリズム]]の形での要件の記述は、それが最も正確な記述方法であるから採用されているだけで、
実装方法を制約する意図はありません。特に、わかりやすさのために性能を度外視していることがあります
[SRC[>>5]]。
[6] [[RFC 2119]] [[助動詞]]によって[[要件]]を明記するスタイルの[[仕様書]]
([[HTML Standard]] など) では、[[アルゴリズム]]内の動作は[[命令形]]で記述し、
[[アルゴリズム]]全体を説明する文の[[助動詞]]が[[命令形]]の各[[文]]に適用されることとしています
[SRC[>>5]]。
[EG[
[7] 例えば、
>
To eat an orange, the user [['''MUST''']]:
[FIG(steps)[
= Peel the orange.
= Separate each slice of the orange.
= Eat the orange slices.
]FIG]
... は、
>
To eat an orange:
[FIG(steps)[
= The user [['''MUST''']] peel the orange.
= The user [['''MUST''']] separate each slice of the orange.
= The user [['''MUST''']] eat the orange slices.
]FIG]
... と同じ[[要件]]を表しています [SRC[>>5]]。
]EG]
* フロー制御
[10] [[アルゴリズム]]の各段階は「step」と呼ばれます。 step
の粒度は仕様書の筆者や個々のアルゴリズムによって様々で一概には言えませんが、
[[プログラミング言語]]で一行で書ける単位 (一般的に「1ステップ」とされる粒度)
となっていることが多いようです。
[13] step は必要があれば連番によって参照されますが、ジャンプなどで参照される時は名前が付されていることがあります。
[EG[
>
= '''Rewind''': If there are no entries before [VAR[entry]] in the list of active formatting elements, then jump to the step labeled '''create'''.
]EG]
[11] step は入れ子になっていたり、条件分岐となっていたりすることもあります。
step の中の step は「substep」と呼ばれます。
[12] 一連の step は、記述の順に実行されます。すなわち、
[[連接]]は先のものから順に実行することを表しています。
ただし、分岐などにより飛ばされることもあります。
[14] ジャンプは「jump to」や「go to」、「return to」などの表現で飛び先の step
が指定されます。飛び先は「次のステップ」のような相対的な表現のこともあります。
[EG[
>
= If [VAR[node]] is [VAR[formatting element]], then go to the next step in the overall algorithm.
]EG]
[15] 条件分岐は「if」や「unless」などの文章で表現されたり、
変数などの値によって動作が指定されたり ([[switch]]) します。
[16] 反復は「for each」、「while」、「repeat」のような文章で表現されることがあります。
;; [17] [[Ian Hickson]] の仕様書では反復は「if」と「go to」などで表現されることが多いです。
[18] アルゴリズムの停止は、「abort these steps」などの表現により示されます。
ただしアルゴリズムの末端では自明に停止するため明記されないのが普通です。
[19] アルゴリズムは値を返す場合があり、「return」を使った文章で返す値が指定されます。
またアルゴリズムは[[例外]]を投げる場合があり、「throw」を使った文章で記述されます。
[[Ian Hickson]] の仕様書ではこれらの場合でも「abort these steps」
を明記するのが普通ですが (場合によっては更に処理が続くこともあります。)、
仕様書によっては暗示的にアルゴリズムが停止することにしている場合もあるので、
注意が必要です。
[22] アルゴリズムの返すものは常に同じ種類とは限りません。処理の内容によって違う種類 (型)
のものを返すことがあります。また値ではなく「失敗」のような概念を返すことがあります。
[32] [[継続]]については[[イベントループのスピン]]を参照。
* アルゴリズムの呼び出し
[20] アルゴリズムは他のアルゴリズムを呼び出すことがあります
(直接または間接に自身を呼び出すこともあります)。
その場合、元のアルゴリズムは一旦停止し、呼び出したアルゴリズムが返した結果を (あれば)
受け取ってから処理を継続します。呼び出したアルゴリズムが[[例外]]を投げた場合は、
明示的に[[捕獲]]していない限り元のアルゴリズムもそのまま停止すると解釈されています (このことは各[[仕様書]]には必ずしも明記されていませんので、注意が必要です)。
[27] 「[[即座に実行]]」と明記されることがありますが、普通は明記されなくても原則として[[アルゴリズム]]は規定された事象が発生した時点で[[即座]]に実行されます。
[21] 呼び出されたアルゴリズムは呼び出したアルゴリズムの変数にアクセスしないのが普通ですが、
中には呼び出したアルゴリズムの変数にアクセスするものもあります。その場合はその旨が明記されています。
** フック
[23] アルゴリズムの中では「フック」を呼び出すものがあります。これは[[仕様書]]の記述上の技法で、
他の仕様書または同じ仕様書の他の場所で定義されたアルゴリズム群の実行のタイミングを明確にしつつも、
それらを別々の箇所で規定するものです。
[EG[
[24] 例えば [[DOM Standard]] は[[要素]]の[[挿入]]のアルゴリズムの途中で [[insertion steps]]
を呼び出します。 [[HTML Standard]] はいくつかの [[HTML要素]]に関して [[insertion steps]]
を定義しています。これらにより、例えば [CODE(HTMLe)@en[[[script]]]] [[要素]]が
[CODE(DOMm)@en[[[appendChild]]]] されると[[スクリプト]]が実行される、
という動作が規定されています。
]EG]
[25] フックの実行方法は他の[[アルゴリズム]]と変わりません。
ただしフックは該当する[[アルゴリズム]]が複数存在することがあり、
その場合はいずれをも実行します。該当する[[アルゴリズム]]が存在しない時は何も実行しません。
;; [26] 複数存在しても、それらの実行順序が問題となることはないように規定されているはずです。
** 並列性
[28] [[アルゴリズム]]の一部または全部が[[並列]]に実行されることがあります。
その場合は[[並列]]に実行される部分を無視した続きを継続して処理するものと、
[[並列]]に実行される部分を処理するもので、複数の処理が同時に進行することになります。
;; 詳しくは[[並列実行]]を参照。
[29] また[[並列]]に実行した処理の後のいくつかの step が[[同期区間]]として記されていることがあります。
[[同期区間]]は[[安定状態]]を待って[[イベントループ]]内で実行されるものです。
;; 詳しくは[[安定状態]]を参照。
[41] [[並列に]]実行されている他の[[アルゴリズム]]を[RUBYB[停止]@en[abort]]させることがあります。
[EG[
[42] [[fetch]] 関係の[[アルゴリズム]]や[[バイブレーションを実施]]する[[アルゴリズム]]は、
自身が別途実行中なら、それを停止させることがあります。
[43] [[バイブレーションを実施]]する[[アルゴリズム]]は他の[[アルゴリズム]]により停止されることがあります。
]EG]
[30] [[I/O]] に関わる処理のほとんどは[[並列]]に実行されることになっています。
[44] [[並列]]でないことを[[即座]]に実行するといいます。通常[[アルゴリズム]]は別途指定がなければ各段階を[[即座]]に順に実行していきますが、
そのことを明確にするために敢えて[[即座]]に実行すると指示されることもあります。
[54] 他の処理や、何らかの条件が整うのを[[待って][wait]]、次の処理に進むよう指示されている場合もあります。
;; [[仕様書]]は[[仕様書]]としての正確性や理解の容易性を優先しているので、
そのままの形で実装できる場合もあれば、「待つ」を使わない形に読み替えて実装するのが現実的な場合もあります。
** 遅延実行
[31] [[アルゴリズム]]の一部または全部の実行は[[キュー]]に入れられて遅延されることがあります。
そのような[[キュー]]には次のものがあります。
[FIG(short list)[
- [[タスクキュー]]
- [[マイクロタスクキュー]]
- [[大域スクリプト片付けジョブリスト]]
- [[セッション履歴探索キュー]]
- [[pending application cache download process tasks]]
- [[animation frame task]]
]FIG]
;; [33] [[安定状態]]を待って[[同期区間]]を実行する手順は[[マイクロタスクキュー]]に入れられます。
* 歴史
[36] [[プロトコル]]の動作や[[マーク付け言語]]の処理の規定などを[[アルゴリズム]]の形で記述することは古くから部分的に行われてきましたが、どちらかといえば例外的なものとされることがほとんどでした。
[[アルゴリズム]]が提示される場合であっても、[[規定]]ではなく[[参考]]とされることも多々ありました。
[37] これは[[アルゴリズム]]の提示によって実装方法が必要以上に詳細に制限されてしまうのを避ける目的があったり、
[[アルゴリズム]]による[[手続き的]]な記述よりも[[宣言的]]な記述や[[構文記述言語]]等による[[形式的]]な記述がより理解しやすい、あるいは政治的に好ましいと考える人が多いことに由来しているようです。
関連する分野で歴史的に使われてきた記述方法を引き継ぐ (例えば同じ [[BNF]] の[[方言]]を用いる)
場合も多々ありました。
[38] しかし、少なくても [[Web]] においては、従来の仕様書が曖昧にしていたことが原因で[[相互運用性]]に著しい支障をもたらしたことがわかってきたこと、
理解にしやすさに難があったとしてもこれ以上に正確に記述する方法が他にないことなどから、
[[アルゴリズム]]による規定が一般的になってきました。
[40] [[Web]] 関連仕様の中では、 [[ECMAScript]] が[[プログラミング言語]]の仕様書ということもあり、早くから[[アルゴリズム]]による詳細な処理方法の規定を行っていました。
[39] 00年代の中期に [[Ian Hickson]] による [[Web Applications 1.0]] (現在の [[HTML Standard]])
が[[HTML構文解析器]]をはじめとする [[HTML]] の処理方法を[[アルゴリズム]]の形で正確に規定するようになり、
やがて [[Web IDL]]、 [[DOM]]、[[CSSOM]]、[[Fetch]]、[[CSP]] など他の仕様書でも同様の形で規定するようになりました。
[REFS[
- [34] [CITE@en[Add algorithms be implemented in any manner · f765c1a · whatwg/url]] ([TIME[2014-10-23 02:21:07 +09:00]] 版) <https://github.com/whatwg/url/commit/f765c1ad6bf6e339f5ccca0476ea6ef1c1ff51cf>
]REFS]
[FIG(quote)[
[FIGCAPTION[
[45] [CITE@en[Re: Writing spec algorithms in ES6?]]
([[Joshua Bell]] 著, [TIME[2015-06-12 06:25:20 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-webapps/2015AprJun/0865.html>
]FIGCAPTION]
> I just did a rework of the IDB "v2" editor's draft and probably 90% of the
> spec is basically an additional layer of "bindings" between
> WebIDL/ECMAScript and the the core concepts of the spec. That 90% was
> previously written as blocks of prose rather than imperative algorithms and
> behavior does differ among implementations. Fortunately, that mostly
> applies to edge cases (bad inputs, getters/setters). Maybe it's just IDB,
> but the remaining 10%of the spec is where all the fun
> implementation-specific optimizations happen and is 90% of the actual code,
> it's just short in the spec because it can be described in abstract terms.
]FIG]
[46] [CITE[IRC logs: freenode / #whatwg / 20150914]]
([TIME[2015-09-15 10:58:37 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150914>
[FIG(quote)[
[FIGCAPTION[
[47] [CITE@en[Deprecating old IDL]]
([[Marcos Caceres]] 著, [TIME[2015-09-20 00:55:21 +09:00]] 版)
<https://lists.w3.org/Archives/Public/public-script-coord/2015JulSep/0074.html>
]FIGCAPTION]
> specs should be imperative, not declarative. Imperative in that they should define the algorithms/behavior, and not be a collection of statements.
]FIG]
[48] [CITE@en[Use . instead of @ for internal slot access]]
( ([[domenic]]著, [TIME[2016-06-04 05:44:36 +09:00]]))
<https://github.com/whatwg/streams/commit/7791c58dbb8ebd470b6e5ecfeb0fa25107a0f638>
[49] [CITE@en[Editorial: refactor to depend on the Infra Standard]]
([[domenic]]著, [TIME[2016-11-17 07:29:00 +09:00]])
<https://github.com/whatwg/html/commit/4ac633e08c2c9430853fc8322943bc2438ed36a3>
[50] [CITE@en[Editorial: start using the Infra Standard]]
([[annevk]]著, [TIME[2016-11-18 20:21:54 +09:00]])
<https://github.com/whatwg/encoding/commit/a26f76889bf393999e9caad84a3647ab09c39e09>
[51] [CITE@en[Editorial: make use of the Infra Standard]]
([[annevk]]著, [TIME[2016-11-18 20:06:36 +09:00]])
<https://github.com/whatwg/dom/commit/bb2890beed2be14d2f7633ec89e2bbb88ec7fdcd>
[52] [CITE@en[Define 'continue' and 'break' statements]]
([[mikewest]]著, [TIME[2016-11-22 03:27:37 +09:00]])
<https://github.com/whatwg/infra/commit/8fbf990dcdb5f7ee80a85b569cba61a056fe1cc5>
[53] [CITE@en[Use INFRA.]]
([[mikewest]]著, [TIME[2016-11-30 20:25:40 +09:00]])
<https://github.com/w3c/webappsec-csp/commit/8a2b0ebd25ea8d0e793ab48a1c51a6d45834fab5>
[55] [CITE@en['''['''css-timing''']''' Add section on serialization]]
([[birtles]]著, [TIME[2017-01-19 11:33:26 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/6165ee591e0d6eabf18fe7534cc77d81b93ac958>
[56] [CITE@en[Editorial: use the Infra Standard for URL's path]]
([[annevk]]著, [TIME[2017-02-10 02:32:12 +09:00]])
<https://github.com/whatwg/url/commit/2f99502dc12b781f5bf6a062257ba031c7129c1e>
[57] [CITE[Writing Procedural Specs]]
([TIME[2017-03-01 08:47:36 +09:00]])
<https://garykac.github.io/procspec/>
[58] [CITE@en[What was the motive in choosing algorithm description approach? · Issue #82 · whatwg/infra]]
([TIME[2017-03-22 19:27:09 +09:00]])
<https://github.com/whatwg/infra/issues/82>
[59] [CITE@en[Say a bit more about iteration]]
([[annevk]]著, [TIME[2017-03-23 11:31:47 +09:00]])
<https://github.com/whatwg/infra/commit/a21296bd10867f43a6d6b20747e1fb2a3dbb78ec>
[60] [CITE@en[Editorial: make Algorithms a top-level section]]
([[annevk]]著, [TIME[2017-03-23 20:04:05 +09:00]])
<https://github.com/whatwg/infra/commit/c17d8e3963ca78411208b9f0ff21d72553805a99>
[61] [CITE@en[Editorial: use Infra's return and continue concepts]]
([[annevk]]著, [TIME[2017-03-18 00:56:48 +09:00]])
<https://github.com/whatwg/dom/commit/16944b0faef3da894c825d7a154a7bf9a60ea8a4>
[62] [CITE@en[Define how "Assert:" works]]
([[annevk]]著, [TIME[2017-03-24 15:17:50 +09:00]])
<https://github.com/whatwg/infra/commit/6d7612602d60a5a3785a0841265d54550b71707f>
[63] [CITE@en[Add a note on performance]]
([[annevk]]著, [TIME[2017-03-24 18:50:16 +09:00]])
<https://github.com/whatwg/infra/commit/82d933cd1f33a7cb2db7a4801fc7bb4d6aded8a9>
[64] [CITE@en[Editorial: remove "rethrow any exception"]]
([[annevk]]著, [TIME[2017-03-24 20:27:29 +09:00]])
<https://github.com/whatwg/dom/commit/d298c5b7c690fb6a12bb487fd43549c5b46520bc>
[65] [CITE@en[Editorial: get rid of substeps]]
([[annevk]]著, [TIME[2017-03-24 20:54:32 +09:00]])
<https://github.com/whatwg/dom/commit/6253e53af2fbfaa6d25ad09fd54280d8083b2a97>
[66] [CITE@en[Add the ability to construct a callback function]]
([[domenic]]著, [TIME[2017-03-27 13:42:03 +09:00]])
<https://github.com/heycam/webidl/commit/36b3646ac02654626b575ac9891b6e9d75adbfe7>
[67] [CITE@en[Add "let" and "set for variables]]
([[annevk]]著, [TIME[2017-03-27 17:02:19 +09:00]])
<https://github.com/whatwg/infra/commit/f30d4d763df65b7b23781b371c851e258d42ed8f>
[68] [CITE@en[Editorial: reduce the amount of times we use "substep"]]
([[annevk]]著, [TIME[2017-03-27 23:29:59 +09:00]])
<https://github.com/whatwg/html/commit/ca5823dd551d47af0a95202e6c850fad74782b60>
[69] [CITE@en[Editorial: format bytes and code points per Infra]]
([[annevk]]著, [TIME[2017-03-28 21:14:42 +09:00]])
<https://github.com/whatwg/url/commit/91cb2aa532bc2b217e6237d23649aed0d2c566bb>
[70] [CITE@en[Editorial: replace usage of repeat with for each]]
([[annevk]]著, [TIME[2017-04-03 23:43:50 +09:00]])
<https://github.com/whatwg/url/commit/2f4b7f74533398c41f4316157f027a33a627caf9>
[71] [CITE@en[Rethrow more exceptions clearly by annevk · Pull Request #422 · whatwg/dom]]
([TIME[2017-04-13 14:03:59 +09:00]])
<https://github.com/whatwg/dom/pull/422>
[72] [CITE@en[Editorial: refactor two algorithms to not use labels]]
([[annevk]]著, [TIME[2017-03-30 14:57:30 +09:00]])
<https://github.com/whatwg/html/commit/aafb92e3d7c588ff968b03a5d726e9704829357a>
[73] [CITE@en[Editorial: modernize perform a microtask checkpoint]]
([[annevk]]著, [TIME[2017-04-30 17:17:12 +09:00]])
<https://github.com/whatwg/html/commit/eb31d93fdf569da9b8529a79c3060868a15fa328>
[74] [CITE@en[Editorial: remove substeps as a concept]]
([[annevk]]著, [TIME[2017-05-05 21:19:57 +09:00]])
<https://github.com/whatwg/encoding/commit/717d435179d6420b66a7e000d5737af1aa460504>
[75] [CITE@en[Editorial: check non-null before null]]
([[annevk]]著, [TIME[2017-05-05 21:01:38 +09:00]])
<https://github.com/whatwg/encoding/commit/4e53e160b9e0ade6e33a25d21580106a0db2c47f>
[76] [CITE@en[Editorial: update variable name in removing steps]]
([[foolip]]著, [TIME[2017-05-10 19:24:09 +09:00]])
<https://github.com/whatwg/fullscreen/commit/c8164afaa1a04b77c9b45f013144c603f3e201bd>
[77] [CITE@en[Editorial: use Infra's continue to clarify requestFullscreen()]]
([[foolip]]著, [TIME[2017-05-11 23:01:00 +09:00]])
<https://github.com/whatwg/fullscreen/commit/946d3ec0b8bb607c2ad4dfb67f17e444f9dc42de>
[78] [CITE@en[Editorial: cleanup close a browsing context and prompt to unload]]
([[annevk]]著, [TIME[2017-05-10 20:47:29 +09:00]])
<https://github.com/whatwg/html/commit/b714a7bc124bf0e8828b2adc2aa0b672d96a1dbd>
[79] [CITE@en[Assertions are non-normative]]
([[annevk]]著, [TIME[2017-05-24 18:31:49 +09:00]])
<https://github.com/whatwg/infra/commit/e88a63efc4663eedc6cb3081002c26935014c25d>
[80] [CITE@en["specification-level data structures and values ..." · Issue #2799 · whatwg/html]]
([TIME[2017-07-08 14:03:50 +09:00]])
<https://github.com/whatwg/html/issues/2799>
[81] [CITE@en[Clarify exception catching language]]
([[domenic]]著, [TIME[2017-07-18 04:25:03 +09:00]])
<https://github.com/whatwg/html/commit/5a2087f95d9be0a3bea2ac2c6a35c70c63782f9a>
[82] [CITE@en[Clarify the behavour if the custom element reaction throws any exception · Issue #2842 · whatwg/html]]
([TIME[2017-07-20 19:41:13 +09:00]])
<https://github.com/whatwg/html/issues/2842>
[83] [CITE@en[Clarify exception catching language by domenic · Pull Request #2843 · whatwg/html]]
([TIME[2017-07-20 19:41:46 +09:00]])
<https://github.com/whatwg/html/pull/2843>
[84] [CITE@en[Allow decimals with no leading 0 as the time in refresh <meta>]]
([[domenic]]著, [TIME[2017-07-22 06:10:04 +09:00]])
<https://github.com/whatwg/html/commit/b8a34e302cdf0289f5403a02905629bb358519a6>
[85] [CITE@en[Editorial: remove "rethrow" per Infra]]
([[annevk]]著, [TIME[2017-09-04 18:11:21 +09:00]])
<https://github.com/whatwg/fetch/commit/829e56dd47534b8e6725ce0c56c5bdea6e23d222>
[86] [CITE@en[Editorial: remove "rethrow" per Infra by annevk · Pull Request #595 · whatwg/fetch]]
([TIME[2017-09-07 11:53:10 +09:00]])
<https://github.com/whatwg/fetch/pull/595>
[87] [CITE@en[Clarify some of the ECMAScript conventions applied]]
([[domenic]]著, [TIME[2017-09-14 14:14:00 +09:00]])
<https://github.com/whatwg/streams/commit/89d32e228eb9428ae6f82793c875b1123febfc92>
[88] [CITE@en[Aborting fetch by jakearchibald · Pull Request #523 · whatwg/fetch]]
([TIME[2017-09-23 14:19:19 +09:00]])
<https://github.com/whatwg/fetch/pull/523>
[89] [CITE@en[Editorial: refactor classic and module scripts to be more alike]]
([[domenic]]著, [TIME[2017-09-07 05:40:50 +09:00]])
<https://github.com/whatwg/html/commit/dce999aac4d9deeefa3b338dd2aeb30c17669bc8>
[90] [CITE@en[RFC 7692 - Compression Extensions for WebSocket]]
([TIME[2017-09-19 00:18:15 +09:00]])
<https://tools.ietf.org/html/rfc7692#section-2>
[91] [CITE@en[Make shared worker creation deterministic]]
([[jakearchibald]]著, [TIME[2017-09-21 22:27:09 +09:00]])
<https://github.com/whatwg/html/commit/9fda90f44c7c9223de6e3755a043f67ea7c92bf5>
[92] [CITE@en[Editorial: reduce "abort these steps" usage]]
([[sam0410]]著, [TIME[2017-11-14 21:41:34 +09:00]])
<https://github.com/whatwg/html/commit/7ebc44ad58924f1872091c8f8b6fdba1533cfa37>
[93] [CITE@en[replace repetitions by sam0410 · Pull Request #3185 · whatwg/html]]
([TIME[2017-11-16 00:50:07 +09:00]])
<https://github.com/whatwg/html/pull/3185>
[94] [CITE@en[Remove "abort these steps" wording · Issue #2878 · whatwg/html]]
([TIME[2017-11-16 00:51:37 +09:00]])
<https://github.com/whatwg/html/issues/2878>
[95] [CITE@en[Add an example of declaring a variable using a ternary construct]]
([[annevk]]著, [TIME[2017-11-29 01:28:09 +09:00]])
<https://github.com/whatwg/infra/commit/ad786aed0d5d40af705041fabb35e9901ca7555c>
[96] [CITE@en[Ternary-like construct for creating variables · Issue #157 · whatwg/infra]]
([TIME[2017-11-30 23:45:02 +09:00]])
<https://github.com/whatwg/infra/issues/157>
[97] [CITE@en[Declare a variable using a ternary construct by annevk · Pull Request #175 · whatwg/infra]]
([TIME[2017-11-30 23:45:09 +09:00]])
<https://github.com/whatwg/infra/pull/175>
[98] [CITE@en[Define the term "Assert" for linkability]]
([[domenic]]著, [TIME[2017-11-29 01:53:29 +09:00]])
<https://github.com/whatwg/infra/commit/5790c85b39264360f37002b6a9ca13401eefa609>
[99] [CITE@en[Link asserts? · Issue #163 · whatwg/infra]]
([TIME[2017-11-30 23:46:50 +09:00]])
<https://github.com/whatwg/infra/issues/163>
[100] [CITE@en[Define the term "Assert" for linkability by domenic · Pull Request #176 · whatwg/infra]]
([TIME[2017-11-30 23:46:56 +09:00]])
<https://github.com/whatwg/infra/pull/176>
[101] [CITE@en[Restrict variables to be declared once per algorithm]]
([[annevk]]著, [TIME[2017-11-29 02:54:03 +09:00]])
<https://github.com/whatwg/infra/commit/2649c4f308c12fecb5489d636311b462b774d560>
[102] [CITE@en[Should we allow variable shadowing? · Issue #141 · whatwg/infra]]
([TIME[2017-11-30 23:47:26 +09:00]])
<https://github.com/whatwg/infra/issues/141>
[103] [CITE@en[Restrict variables to be declared once per algorithm by annevk · Pull Request #173 · whatwg/infra]]
([TIME[2017-11-30 23:47:36 +09:00]])
<https://github.com/whatwg/infra/pull/173>
[104] [CITE@en[Prohibit using "for each" with stacks and queues]]
([[domenic]]著, [TIME[2017-11-29 03:21:19 +09:00]])
<https://github.com/whatwg/infra/commit/7d898d01390c7f88ad55f6e91a039f69c3f6a055>
[105] [CITE@en[Correct branching in estimate()]]
([[annevk]]著, [TIME[2018-01-06 20:25:28 +09:00]])
<https://github.com/whatwg/storage/commit/22bc13d4b1d7dbca32155a2a53a24cd8eab59acb>
[106] [CITE@en[Editorial: remove the remaining subscript notation for argument lists (…]]
([[tobie]]著, [TIME[2018-01-07 23:15:16 +09:00]])
<https://github.com/heycam/webidl/commit/5f2b156ff8a2f6e8917b07a3e63d59a8fcacb5ce>
[107] [CITE@en[Editorial: remove the remaining subscript notation for argument lists by tobie · Pull Request #508 · heycam/webidl]]
([TIME[2018-01-09 11:10:02 +09:00]])
<https://github.com/heycam/webidl/pull/508>
[108] [CITE@en[Editorial: further cleanup "abort these steps"]]
([[shreyateeza]]著, [TIME[2018-01-09 20:22:36 +09:00]])
<https://github.com/whatwg/html/commit/99e2cdfc484c2ff14cbf5c38b859f4d6da17e64c>
[109] [CITE@en[Remove "abort these steps" wording · Issue #2878 · whatwg/html]]
([TIME[2018-01-10 23:00:20 +09:00]])
<https://github.com/whatwg/html/issues/2878>
[110] [CITE@en[Replace 'abort these steps' with 'return' by shreyateeza · Pull Request #3303 · whatwg/html]]
([TIME[2018-01-10 23:00:37 +09:00]])
<https://github.com/whatwg/html/pull/3303>
[111] [CITE@en[Editorial: less continue after returning]]
([[annevk]]著, [TIME[2018-01-23 23:24:34 +09:00]])
<https://github.com/whatwg/html/commit/0d097af1acbeabe56a1b0d0c2e2f521eca4defa8>
[112] [CITE@en["Return the new EventSource object, but continue..." · Issue #692 · whatwg/html]]
([TIME[2018-01-25 13:02:00 +09:00]])
<https://github.com/whatwg/html/issues/692>
[113] [CITE@en[Editorial: less continue after returning by annevk · Pull Request #3385 · whatwg/html]]
([TIME[2018-01-25 13:02:42 +09:00]])
<https://github.com/whatwg/html/pull/3385>
[114] [CITE@en[Editorial: no more "return, but continue" for <input type=file>]]
([[annevk]]著, [TIME[2018-01-24 00:21:18 +09:00]])
<https://github.com/whatwg/html/commit/b2fc1c1d49ad5701b4bdcf80dcee115c3167005e>
[115] [CITE@en[Editorial: no more "return, but continue" for <input type=file> by annevk · Pull Request #3388 · whatwg/html]]
([TIME[2018-01-25 13:03:52 +09:00]])
<https://github.com/whatwg/html/pull/3388>
[116] [CITE@en[Editorial: rewrite createImageBitmap()]]
([[annevk]]著, [TIME[2018-01-24 17:54:28 +09:00]])
<https://github.com/whatwg/html/commit/5b40420b83dad83e5e566de9581dc51e4e4ee6cd>
[117] [CITE@en[Editorial: rewrite createImageBitmap() by annevk · Pull Request #3389 · whatwg/html]]
([TIME[2018-01-25 13:05:31 +09:00]])
<https://github.com/whatwg/html/pull/3389>
[118] [CITE@en[Editorial: "return, but continue" cleanup for downloads and Worker]]
([[annevk]]著, [TIME[2018-01-24 22:04:54 +09:00]])
<https://github.com/whatwg/html/commit/0217e1d4cb1ace836f6ef72a402b643aa879fbed>
[119] [CITE@en[Editorial: "return, but continue" cleanup for downloads and Worker by annevk · Pull Request #3397 · whatwg/html]]
([TIME[2018-01-27 16:50:11 +09:00]])
<https://github.com/whatwg/html/pull/3397>
[120] [CITE@en['''['''cssom-1''']''' Editorial: Remove or replace "terminate ...".]]
([[upsuper]]著, [TIME[2018-02-12 17:14:44 +09:00]])
<https://github.com/w3c/csswg-drafts/commit/416b2d025594ac649953a990e32c14ad87b1d488>
[121] [CITE@en['''['''cssom-1''']''' Remove or replace "terminate ..." by upsuper · Pull Request #2299 · w3c/csswg-drafts]]
([TIME[2018-02-13 14:25:46 +09:00]])
<https://github.com/w3c/csswg-drafts/pull/2299>
[122] [CITE@en[Editorial: adopt more Infra terminology]]
([[annevk]]著, [TIME[2018-02-28 02:27:16 +09:00]])
<https://github.com/whatwg/notifications/commit/daf4b50d05209709578b43584a9597b16e3f2c3f>
[123] [CITE@en[Editorial: adopt more Infra terminology by annevk · Pull Request #123 · whatwg/notifications]]
([TIME[2018-02-28 22:39:33 +09:00]])
<https://github.com/whatwg/notifications/pull/123>
[124] [CITE@en[Definition of propagating exceptions, ? and ! · Issue #164 · whatwg/infra]]
([TIME[2018-04-17 23:32:29 +09:00]])
<https://github.com/whatwg/infra/issues/164>
[125] [CITE@en[add recusiveFlag argument to unload by gterzian · Pull Request #3632 · whatwg/html]]
([TIME[2018-04-21 18:14:13 +09:00]])
<https://github.com/whatwg/html/pull/3632>
[126] [CITE@en[Add "abort when"/"if aborted" construct for Fetch and elsewhere]]
([[annevk]]著, [TIME[2018-04-21 13:19:49 +09:00]])
<https://github.com/whatwg/infra/commit/23ce6ea50c541c8ac7edf53ccc908bc4a3f81fef>
[127] [CITE@en[Running a set of steps, breaking if a condition is met · Issue #143 · whatwg/infra]]
([TIME[2018-04-23 15:57:57 +09:00]])
<https://github.com/whatwg/infra/issues/143>
[128] [CITE@en[Add "Abort when" construct for Fetch and elsewhere by annevk · Pull Request #172 · whatwg/infra]]
([TIME[2018-04-23 15:59:40 +09:00]])
<https://github.com/whatwg/infra/pull/172>
[129] [CITE@en[Editorial: remove most substep usage]]
([[annevk]]著, [TIME[2018-04-24 02:00:28 +09:00]])
<https://github.com/whatwg/fetch/commit/509856c126d739aecf014ba039d98c3fa6dbbd8a>
[130] [CITE@en[Editorial: remove most substep usage by annevk · Pull Request #709 · whatwg/fetch]]
([TIME[2018-04-24 13:17:08 +09:00]])
<https://github.com/whatwg/fetch/pull/709>