Π ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π²ΡΠΏΡΡΠΊ Ember v3.17.0 Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ» ΡΠ°Π·ΠΌΠ΅Ρ Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ²:
/ cc @pzuraq @rwjblue
ΠΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π² ΡΠ²Π΅ΠΆΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Ember:
__2.16.0__
__2.17.0__
Π‘Π΄Π΅Π»Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π²ΡΠ·Π²Π°Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΡΠΊ-VM ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ https://github.com/glimmerjs/glimmer-vm/commit/4c56c216465410f5bd6f4f53fb7d4508f8048f09#diff -64c3cabffb164d9a2c4bf2d427094e19 ΡΠ΅ΡΠ΅Π· https://github.com/emberjs/ ember.js / commit / 699439c0aaa1917754490efeb5751d10f77e5230
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
2.16.3
2.17.0
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ» ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° ~ 5% Π² Π½Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΠ°Ρ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π΅ Ρ 2.16.3 Π½Π° 2.17.0.
PS @ Turbo87 - ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ·-Π·Π° HBS ? Π― ΡΠΎΠΆΠ΅ ΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ. ΠΠΎΠ³Π»ΠΎ Π»ΠΈ ΠΎΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Β«ΡΠ»ΠΎΠΌΠ°ΡΡΡΡΒ» Π΄Π»Ρ Π½ΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ Glimmer?
@ boris-petrov - ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ? Π― Π΄ΡΠΌΠ°Ρ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π°Π»ΠΈΡΡ ΠΌΠΈΠ½ΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ· ΡΠ²ΠΎΠΈΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ package.json
...
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² glimmer wireformat, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: https://github.com/glimmerjs/glimmer-vm/blob/11cc83b2adf220bef298a1a6298c9e4e750c9fe1/packages/%40glimmer/interfaces/lib/compile/wire-format.d.ts#L76
@rwjblue - Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ @krisselden ΠΏΡΠ°Π² - ΡΡΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ember-hbs-minifier
. Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ember ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠΎΠΌ:
import Helper from '@ember/component/helper';
export default Helper.helper(() => true);
Π Π΄Π²Π΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅:
other-component.hbs
{{some-component foo=1}}
some-component.hbs
{{some-helper 1 2 3 @foo}}
3.16.3 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π΄Π»Ρ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
other-component.hbs
:
block: "{\"symbols\":[],\"statements\":[[1,[28,\"some-component\",null,[[\"foo\"],[1]]],false],[0,\"\\n\"]],\"hasEval\":false}",
some-component.hbs
:
block: "{\"symbols\":[\"@foo\"],\"statements\":[[1,[28,\"some-helper\",[1,2,3,[23,1,[]]],null],false],[0,\"\\n\"]],\"hasEval\":false}",
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ 3.17:
other-component.hbs
:
block: "{\"symbols\":[],\"statements\":[[1,0,0,0,[31,2,14,[27,[26,0,\"CallHead\"],[]],null,[[\"foo\"],[1]]]],[1,1,0,0,\"\\n\"]],\"hasEval\":false,\"upvars\":[\"some-component\"]}",
some-component.hbs
:
block: "{\"symbols\":[\"@foo\"],\"statements\":[[1,0,0,0,[31,2,11,[27,[26,0,\"CallHead\"],[]],[1,2,3,[27,[24,1],[]]],null]],[1,1,0,0,\"\\n\"]],\"hasEval\":false,\"upvars\":[\"some-helper\"]}",
Π― Π±Ρ Π½Π΅ Π½Π°Π·Π²Π°Π» ΡΡΠΎ "ΠΎΡΠΈΠ±ΠΊΠΎΠΉ", ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΡΡΠ½ΠΎ. Π§Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Ρ Π²Π°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠ², ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΏΡΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Π·Π΄Π΅ΡΡ ΡΠ°Π±ΠΎΡΠΎΠΉ: https://github.com/glimmerjs/glimmer-vm/pull/972
ΠΠΌΠ±Π΅Ρ 3.16
- dist/assets/ember-observer.js: 706.89 KB (66.89 KB gzipped)
ΠΠΌΠ±Π΅Ρ 3.17
- dist/assets/ember-observer.js: 743.7 KB (69.63 KB gzipped)
ΠΠΎΡΠ»Π΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄ΠΎ ΡΠΈΡΠ»Π°
- dist/assets/ember-observer.js: 739.58 KB (69.44 KB gzipped)
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
- dist/assets/ember-observer.js: 723.55 KB (68.06 KB gzipped)
Π‘Π³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Get + GetPath + GetContextualFree
- dist/assets/ember-observer.js: 721.99 KB (68.04 KB gzipped)
Π― ΡΠ΄Π΅Π»Π°Π» ΡΡΠΈΠ»ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΏΡΠΎΡΠΈΠ² Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠ°ΡΡ
$ npx ember-template-size .
npx: installed 11 in 1.766s
{
'3.16.3': {
version: '3.16.3',
original: 793656,
compiled: 1223295,
brotli: 242598,
gzip: 242606
},
'3.17.0-patched': {
version: '3.17.0-patched',
original: 793656,
compiled: 1299096,
brotli: 258803,
gzip: 258826
},
'3.17.0': {
version: '3.17.0',
original: 793656,
compiled: 1624741,
brotli: 294760,
gzip: 294780
}
}
ΠΈ Π΄Π»Ρ https://github.com/rust-lang/crates.io :
{
'3.16.3': {
version: '3.16.3',
original: 73613,
compiled: 143264,
brotli: 32477,
gzip: 32608
},
'3.17.0-patched': {
version: '3.17.0-patched',
original: 73613,
compiled: 160526,
brotli: 34663,
gzip: 34803
},
'3.17.0': {
version: '3.17.0',
original: 73613,
compiled: 183711,
brotli: 36903,
gzip: 37070
}
}
Π΄Π»Ρ Π½Π°Ρ:
{
'3.16.3': {
version: '3.16.3',
original: 281240,
compiled: 450040,
brotli: 98120,
gzip: 98142
},
'3.17.0-patched': {
version: '3.17.0-patched',
original: 281240,
compiled: 494042,
brotli: 105152,
gzip: 105178
},
'3.17.0': {
version: '3.17.0',
original: 281240,
compiled: 596287,
brotli: 117757,
gzip: 117784
}
}
ΠΠ°ΡΡ ΠΎΡΡΠ°ΠΆΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΎΠΈΡ Π½ΠΈΠ·ΠΊΠΎ Π²ΠΈΡΡΡΠΈΡ ΡΡΡΠΊΡΠΎΠ²ΡΡ ΠΈΠ΄Π΅ΠΉ. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΏΠ°ΡΠ° ΠΈΠ΄Π΅ΠΉ, Π½ΠΎ ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ. Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·Π²Π°Π» ΡΠ΅Π³ΡΠ΅ΡΡ, Π±ΡΠ» Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈ Π΄Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π° Ρ ΠΌΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π΅ΡΠ΅ 2 ΠΏΡΠΎΡΡΡΠ΅ ΠΈΠ΄Π΅ΠΈ, ΡΠ³Π»Π°Π΄ΡΡΠ΅ [ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, 1 | 0, ...] Π² [TrustingAppend | Append, ..], Π° Π·Π°ΡΠ΅ΠΌ Π΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠΎΡΠΌΠ°ΡΠ° ΠΏΡΠΎΠ²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π°Π³, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 1 | 0 Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ - https://github.com/emberjs/ember.js/pull/18941 Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠΎΡΡΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ 3,16 (Ρ ΠΎΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΡΠ΅ Π½Π° ~ 3%, Π½Π°Π΄ ΡΠ΅ΠΌ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ).
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ - https://github.com/emberjs/ember.js/pull/18941 Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ Π½Π° Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠΎΡΡΠ° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ 3,16 (Ρ ΠΎΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΡΠ΅ Π½Π° ~ 3%, Π½Π°Π΄ ΡΠ΅ΠΌ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ).