Geri qayıt

Elixir v1.20: dil artıq tədricən tipləşdirilmiş dildir
SiTech AI Team2 dəq oxu

Elixir v1.20: dil artıq tədricən tipləşdirilmiş dildir

Elixir v1.20 çoxluqlar nəzəriyyəsinə əsaslanan tip sisteminin ilk mərhələsini tamamlayıb: hər proqram heç bir tip anotasiyası olmadan tədricən yoxlanılır, kompilyator isə ölü kod və təsdiqlənmiş xətalar tapır.

3 iyun 2026-cı ildə Elixir v1.20 buraxılıb və dilin çoxluqlar nəzəriyyəsinə əsaslanan tip sisteminin ilk inkişaf mərhələsinin tamamlandığını göstərir. 2022-ci ildə elan olunan, 2023-cü ilin iyununda sistemin dizaynına dair mükafatlı məqalə ilə davam edən iş artıq tədqiqatdan kompilyatora keçib: hər Elixir proqramı tip çıxarımından keçir və tərtibatçının bir dənə də anotasiya yazmasına ehtiyac olmadan tədricən yoxlanılır.

Təsdiqlənmiş xətalar və ölü kod

Məqsəd ölü kodu və "təsdiqlənmiş xətaları" — işə salındıqda mütləq uğursuz olacaq tip pozuntularını — tərtibatçılara əlavə yük yaratmadan bildirməkdir. Buraxılış elanına görə, Elixir-in tətbiqi "If T: Benchmark for Type Narrowing" sınağının 13 kateqoriyasından 12-ni keçir. Tip sistemi CNRS ilə Remote arasındakı tərəfdaşlıq sayəsində mümkün olub, inkişafı isə Fresha və Tidewave maliyyələşdirir.

dynamic() tipi: uyğunluq və daralma

Bir çox tədricən tipləşdirilmiş sistemin "hər şey mümkündür" mənasında any() istifadə etdiyi yerdə Elixir iki xassəli dynamic() tipini təqdim edir. Uyğunluq o deməkdir ki, pozuntu yalnız verilən və qəbul edilən tiplər kəsişmədikdə bildirilir: tipi dynamic(integer() or binary()) kimi çıxarılan dəyişən yenə də yalnız ədəd gözləyən operatora ötürülə bilər. Daralma isə tipi aralıq kimi davrandırır: data.a və data.b istifadəsi dəyəri %{..., a: number(), b: number()} tipinə dəqiqləşdirir, buna görə sonradan data.a + data yazmaq pozuntu sayılır. Mühafizə şərtləri də tipləşdirilir: is_list/is_integer birləşmələr verir, is_map_key(x, :foo) və onun inkarı açarın varlığını və ya yoxluğunu müəyyən edir, tuple_size(x) < 3 isə elem(x, 3) müraciətini pozuntuya çevirir. case ifadələrində ilk budaqda nil ilə uyğunluq sonrakı budaqları binary() tipinə daraldır və bu, artıq budaqları və ölü kodu da üzə çıxarır.

Daha sürətli kompilyasiya və növbəti addımlar

Buraxılış kompilyasiya vaxtını da yaxşılaşdırır, xüsusən çoxnüvəli maşınlarda; komandanın sintetik sınaqlarında Elixir-in qurma aləti artıq adi "kompilyasiya + işə salma + test" dövründə ən sürətlidir. Yeni :module_definition seçimi :compiled (standart) və ya :interpreted ola bilər və mix.exs-də elixirc_options ilə qoşulur; yalnız defmodule daxilinin necə icra olunduğunu dəyişir, diskə yazılan .beam fayllarına təsir etmir. Tip imzaları hələ qarşıdadır: komanda onları yalnız tip sisteminin məhsuldarlığından razı qaldıqda və rekursiv tipləri, parametrik tipləri və map-lərin açar-dəyər cütlərini enumerable kimi səmərəli gəzməyi tətbiq edə bildikdə təqdim edəcək.

SiTech

SiTech — AI ilə gücləndirilmiş veb hazırlanması

Sürətli və müasir saytlar qurur, AI-ı real biznes proseslərinə gətiririk. Layihəniz və ya sualınız var? Kömək etməyə hazırıq.