İçeriğe geç
LexerLangv0.2.0

Önbellek

lexer cache — ayrıştırılmış AST nerede saklanıyor ve ne zaman geçersiz oluyor.

Terminal
lexer cache info  [--dir yol]
lexer cache list  [--dir yol]
lexer cache clear [--dir yol]

Ne saklanıyor#

Saklanan şey ayrıştırılmış AST'dir — derleme çıktısı değil. LexerLang derlenmiyor; önbellek yalnızca aynı dosyayı her istekte yeniden ayrıştırma maliyetini ortadan kaldırıyor.

Terminal
lexer cache info --dir .

Ne zaman geçersiz oluyor#

Geçerlilik dosyanın değişiklik zamanına ve boyutuna bakar. İkisinden biri değiştiyse dosya yeniden ayrıştırılır.

Bu, içerik özetinden (hash) ucuzdur ama bir sınırı vardır: dosyayı değiştirip mtime'ı elle eski bir değere geri alırsanız — örneğin touch -t ya da mtime'ı koruyan bir kopyalama — önbellek eskimiş AST'yi kullanmaya devam eder.

Terminal
lexer cache clear --dir .

Nerede duruyor#

AST bellekte durur; diske yalnızca neyin bellendiğini gösteren meta veri (index.json) yazılır. Yazılacak dizin sırayla:

Metin
$LEXER_CACHE_DIR/<uygulama>        verilmişse yalnızca bu
<uygulama dizini>/.lexer/cache     varsayılan
~/.lexer/cache/<uygulama>          uygulama dizini salt okunursa

Üretimde uygulama dizini çoğu zaman salt okunurdur (root:app 0750). O durumda kayıt servis kullanıcısının ev dizinine gider; o da yoksa disk kaydı kapanır ve uyarı bir kez yazılır. Uygulama etkilenmez: AST yine bellekte tutulur, yalnızca lexer cache çıktısı boş kalır.

.env
# systemd biriminde, kaydı belirli bir yere almak için
Environment=LEXER_CACHE_DIR=/var/cache/uygulama
CacheDirectory=uygulama

Sırada#

Sözdizimi — dilin şekli.