
Zig 0.17.0 გადაამუშავებს აწყობას და აფართოებს პლატფორმისა და ენის მხარდაჭერას
Zig 0.17.0 გადაამუშავებს build სისტემას, აუმჯობესებს ELF-ის linker-ს, აფართოებს პლატფორმის მხარდაჭერას და აახლებს ენის შესაძლებლობებს ხუთთვიანი განვითარების შემდეგ, რომელშიც მონაწილეობა მიიღო 206 კონტრიბუტორმა და 925 commit-მა.
რელიზის ძირითადი მასშტაბი
Zig 0.17.0 მოიცავს 206 კონტრიბუტორის მიერ 925 commit-ში შესრულებულ ხუთთვიან სამუშაოს. გამოშვება მნიშვნელოვნად ცვლის build სისტემას: maker პროცესს აცალკევებს configurer პროცესისგან, გადაამუშავებს ქეშის სისტემას, შემოაქვს configure cache poisoning და ამატებს Build Server Protocol-ს. ასევე აფართოებს lazy dependency-ისა და ფორმატირების ოფციებს.
ELF-ის linker-ი გაუმჯობესდა იმ დონემდე, რომ incremental compilation, სავარაუდოდ, ყველასთვის იმუშავებს x86_64-linux-ზე. პაკეტების მართვას ემატება local path-ის override-ები, ხოლო Windows-ის resource-ების კომპილაცია გადადის გარე პაკეტში.
სამიზნეების უფრო ფართო დაფარვა
პლატფორმულ სამუშაოებში შედის native CI-ის ტესტირება aarch64-openbsd-ისთვის და pull request-ის CI aarch64-freebsd-ისა და aarch64-netbsd-ისთვის. Zig ახორციელებს სავალდებულო კოდის გამაგრებას aarch64-openbsd-ისთვის, გვერდს უვლის LLVM-ის პრობლემას, რომელიც aarch64-windows-ის ბინარების უმეტესობას ეხება, და უზრუნველყოფს stack trace-ებს crash-ებისა და წარუმატებელი assertion-ებისთვის 32-ბიტიან ARM-სა და SPARC-ზე. Pointer authentication-ის ოპკოდები ახლა მუშავდება AArch64-ის stack unwinding-ის დროს.
დაემატა მხარდაჭერა loongarch32-linux-gnu სამიზნეებისთვის, ხოლო 64-ბიტიანი SPARC-ი ზოგადად გამოსაყენებელ სტატუსს მიაღწია. სამიზნეების ინფორმაცია დაემატა aarch64-switch, arm-gba, mipsel-psx და powerpc-wiiu-სთვის. xtensa-linux-ის ძალიან ადრეული მხარდაჭერა ხელმისაწვდომია C ან ექსპერიმენტული LLVM backend-ის მეშვეობით. სტანდარტულმა ბიბლიოთეკამ ასევე მიიღო მხარდაჭერა რამდენიმე ნიშური Linux, OpenBSD და no-libc სამიზნისთვის.
ენისა და ბიბლიოთეკის ცვლილებები
Zig-ის ფორმალური გრამატიკა და იმპლემენტაცია ერთმანეთს დაუკავშირდა გენერირებული recursive descent parser-ის მეშვეობით, რომელიც fuzzing oracle-ად გამოიყენება. @bitCast ბილთინი ახლა ხელახლა ინტერპრეტირებს მნიშვნელობის ლოგიკურ ბიტურ წარმოდგენას და ერთნაირად იქცევა სამიზნის endianness-ის მიუხედავად. მისი სემანტიკა შეიცვალა მასივებისა და ვექტორებისთვის, ხოლო extern struct-ებიდან ან union-ებიდან ქასთები აღარ არის დაშვებული. რელიზის შენიშვნები გვირჩევენ, გადაამოწმოთ მასივების ან ვექტორების გამოყენება, რადგან ზოგიერთი კოდი შეიძლება გატყდეს კომპილაციის შეცდომის გარეშე.
@cImport ბილთინი წაიშალა, ხოლო std.Build.Step.TranslateC მოძველებულად გამოცხადდა ოფიციალურ ZSF translate-c პაკეტზე აშკარა დამოკიდებულების სასარგებლოდ. ახალი @backingInt და @fromBackingInt ბილთინები ცვლიან მოძველებულ @intFromEnum და @enumFromInt ბილთინებს. Zig 0.17.0 ასევე ამატებს @SpirvType-ს, შემოაქვს SafeAllocator-ს და გადაამუშავებს StackFallbackAllocator-ს.
SiTech — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.