{"id":473990,"date":"2025-09-05T09:00:26","date_gmt":"2025-09-05T09:00:26","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=473990"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=473990","title":{"rendered":"<span>AsmX G3 v29: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 \u2014 \u043e\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043a \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f26\/2e9\/d53\/f262e9d53dc1e3bb6bd9c852aba037b9.jpg\" width=\"1500\" height=\"1000\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f26\/2e9\/d53\/f262e9d53dc1e3bb6bd9c852aba037b9.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f26\/2e9\/d53\/f262e9d53dc1e3bb6bd9c852aba037b9.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u041c\u044b \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041f\u043e\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c. \u041f\u043e\u043a\u0430 \u0441\u043a\u0435\u043f\u0442\u0438\u043a\u0438 \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u044e\u0442\u0441\u044f, \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434. <strong>AsmX G3 v29<\/strong> \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0435\u043b\u0438\u0437. \u042d\u0442\u043e \u043d\u0430\u0448 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432 2025 \u0433\u043e\u0434\u0443?\u00bb. \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0436\u0435\u043b\u0435\u0437\u043e\u043c, \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u2014 \u043d\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441, \u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0435\u043b\u0438\u0437 \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430, \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0445 \u043d\u043e\u0447\u0435\u0439 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041c\u044b \u0443\u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u0432\u0430\u0448\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041c\u044b \u043d\u0435 \u043f\u043e\u0448\u043b\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0441 \u043d\u0430\u0448\u0438\u043c \u0432\u0438\u0434\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 AsmX \u0431\u043b\u0438\u0436\u0435 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u0447\u0430\u043c: \u043e\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b Linux-\u0441\u0438\u0441\u0442\u0435\u043c. \u0421 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0432 AUR \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0432\u0435\u0440\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443.<\/p>\n<p>\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c. AsmX G3 v29 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u042d\u0442\u043e \u043c\u043e\u0441\u0442 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0438\u0440\u043e\u043c. \u042d\u0442\u043e \u043d\u0430\u0448 \u0432\u044b\u0437\u043e\u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438 \u2014 \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432\u0430\u043c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e.<\/p>\n<h3>\u041e \u0433\u043b\u0430\u0432\u043d\u043e\u043c: \u041f\u0440\u044f\u043c\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b<\/h3>\n<p>\u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439. \u042f \u0446\u0435\u043d\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0440\u0435\u0437\u043a\u0443\u044e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437 \u0438 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<blockquote>\n<p><strong>1. \u00ab\u041d\u0435 \u044f\u0441\u0435\u043d \u043a\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0443\u0436\u0435\u043d (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0442 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430)&#8230;\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a? \u0421\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u043c \u0443 \u041a\u0435\u0440\u043d\u0438\u0433\u0430\u043d\u0430 \u0438 \u0420\u0438\u0442\u0447\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432 \u0441\u0442\u0435\u043d\u0430\u0445 Bell Labs \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u00a0<code>C<\/code>? \u041a\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u041b\u0438\u043d\u0443\u0441\u0443 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441\u0443 \u044f\u0434\u0440\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u0438\u0440\u0430? \u0412\u0435\u043b\u0438\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0440\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0438\u0437 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u043e\u0432, \u0430 \u0438\u0437 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u0438\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u043f\u0446\u0438\u044f, \u0430 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.\u00a0<code>Kotlin<\/code>\u00a0\u0433\u043e\u0434\u0430\u043c\u0438 \u0431\u044b\u043b \u043d\u0438\u0448\u0435\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f Android. \u041c\u044b \u0438\u0433\u0440\u0430\u0435\u043c \u0432\u0434\u043e\u043b\u0433\u0443\u044e. \u0410 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043d\u0435\u0433 \u2014 \u0434\u0430, \u044f \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442. \u041d\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u043e\u0438\u0442\u044c \u0434\u043e\u0440\u043e\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u0438, \u0442\u044b\u0441\u044f\u0447\u0438 \u0447\u0430\u0441\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0435 \u043d\u043e\u0447\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u044e \u0446\u0435\u043d\u0443.<\/p>\n<blockquote>\n<p><strong>2. \u00ab&#8230;\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u043b\u0430\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438&#8230; \u042d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043d\u0435\u0442.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u041c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0430 \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u0438. \u041d\u0430\u0448\u0430 &#171;\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c&#187; \u2014 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041c\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u0433\u0438\u043f\u043e\u0442\u0435\u0437, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445 \u0441 \u0438\u0445\u00a0<code>Haskell<\/code>\u00a0\u0438 \u043c\u043e\u043d\u0430\u0434\u0430\u043c\u0438. \u041d\u0430\u0448\u0430 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044f \u2014 \u044d\u0442\u043e \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u0430 \u043d\u0430\u0448\u0438 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u2014 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440\u00a0<code>hwm\/units<\/code>. \u041c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0434\u0435\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0441\u0445\u0438\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435. \u042d\u0442\u043e \u043d\u0435 &#171;\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0448\u0430\u0433\u0430&#187;, \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<blockquote>\n<p><strong>3. \u00ab\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430&#8230; \u0443\u0436\u0430\u0441\u0435\u043d&#8230; \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432&#8230;\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0444\u0430\u043a\u0442\u043e\u0432, \u0430 \u043d\u0435 \u044d\u043c\u043e\u0446\u0438\u0439. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b (<code>ISA<\/code>) \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0435\u0451 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435\u00a0<code>hwm<\/code>\u00a0(Hardware Machine)\u00a0<strong>\u0443\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b<\/strong>.<\/p>\n<ul>\n<li>\n<p><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/strong>\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<code>tbl.cts<\/code>. \u042d\u0442\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0<code>main.cts<\/code>. \u042d\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0440\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u00a0<code>tbl<\/code>\u00a0\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/strong>\u00a0(<code>rdb<\/code>) co-\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u00a0<code>main.cts<\/code>\u00a0\u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043d\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435, \u0447\u0435\u0442\u043a\u043e \u043e\u0447\u0435\u0440\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u043e\u043b\u0438. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e JSON. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043e\u0431\u0440\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0445\u0440\u0443\u043f\u043a\u0438\u0439 \u0441\u043b\u043e\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u0434\u0430\u0435\u0442 TypeScript. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u0441\u044b\u0440\u044b\u0445&#187; \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 JSON \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0435, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u0448\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u044b \u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 TypeScript \u2014 \u0432\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443. \u041c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0443\u044e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c, \u0430 \u043d\u0435 \u0441\u043b\u0435\u043f\u043e\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u0430\u043c.<\/p>\n<blockquote>\n<p><strong>4. \u00ab&#8230;\u043f\u0440\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u2013 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u043d\u043e? \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432? \u0415\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u044b\u00a0<code>SSA<\/code>\u00a0(Static Single Assignment), \u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0443\u043c\u0435\u0441\u0442\u043d\u044b. AsmX \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0436\u0435\u043b\u0435\u0437\u043e\u043c. \u0415\u0433\u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f \u2014 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u00a0\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439.<\/p>\n<p>\u041c\u044b \u0434\u0430\u0435\u043c \u0432 \u0440\u0443\u043a\u0438 \u0445\u0438\u0440\u0443\u0440\u0433\u0430 \u0441\u043a\u0430\u043b\u044c\u043f\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0440\u043e\u043d. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 LLVM \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0431\u044b \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0443\u044e, \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u043a\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u043b\u0438\u0448\u0438\u043b\u0430 \u0431\u044b \u043d\u0430\u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u2014 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f. \u041c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0447\u0438\u0441\u0442\u043e\u0442\u0443, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u044f\u043c\u043e\u0442\u0443. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0435\u0437 &#171;\u0447\u0435\u0440\u043d\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432&#187;.<\/p>\n<h2>\u0412\u043f\u0435\u0440\u0435\u0434, \u0432 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043d\u0435 \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0437\u0430\u0434<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u0438\u0441\u0442\u043e\u0442\u0443: 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433. \u041c\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e.<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438\u00a0<code>x86<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c \u0441 \u043a\u0430\u0440\u0431\u044e\u0440\u0430\u0442\u043e\u0440\u043e\u043c. \u0417\u0430\u0447\u0435\u043c? \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 64-\u0431\u0438\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443? \u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e. \u041c\u044b \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0435 \u2014\u00a0<code>amd64<\/code>\u00a0(<code>x86_64<\/code>), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0413\u0438\u0433\u0430\u043d\u0442\u044b \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>gcc<\/code>\u00a0\u0438\u00a0<code>clang<\/code>, \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0442\u0430\u0449\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0431\u0430\u0433\u0430\u0436 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u042d\u0442\u043e\u0442 &#171;\u043b\u0438\u0448\u043d\u0438\u0439 \u0432\u0435\u0441&#187; \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0438\u0445 \u0438 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442. \u041c\u044b \u0436\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442 \u044d\u0442\u043e\u0433\u043e. \u041d\u0430\u0448 \u0444\u043e\u043a\u0443\u0441 \u043d\u0430\u00a0<code>amd64<\/code>\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043b\u0435\u0433\u043a\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043c\u0438\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b 64-\u0431\u0438\u0442\u043d\u044b\u043c.<\/p>\n<h2>\u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b: \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u00ab\u041d\u0435\u0442\u00bb \u0431\u0435\u0437\u0443\u043c\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u0435\u0439<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043f\u043e\u043b\u043d\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u043e\u0432, \u0438, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u043b\u043d\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0439. \u0412 \u043c\u0438\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u043e, \u043a\u0430\u043a \u0432\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u043b\u0438 \u0445\u0440\u0443\u043f\u043a\u0443\u044e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e, \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0440\u0430\u0441\u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 &#171;\u0443\u0440\u043e\u0432\u043d\u044f\u0445&#187; <code>x86-64<\/code>: <code>v2<\/code>, <code>v3<\/code>, <code>v4<\/code>. \u042d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0438\u0434\u0435\u044f \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0437\u0434\u0440\u0430\u0432\u043e\u0439. \u0412\u043e\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/82a\/cae\/7ff\/82acae7ffb0850a8b512f96c14c822a2.png\" width=\"647\" height=\"780\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/82a\/cae\/7ff\/82acae7ffb0850a8b512f96c14c822a2.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/82a\/cae\/7ff\/82acae7ffb0850a8b512f96c14c822a2.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ \/lib64\/ld-linux-x86-64.so.2 --help Subdirectories of glibc-hwcaps directories, in priority order:   x86-64-v4 (supported, searched)   x86-64-v3 (supported, searched)   x86-64-v2 (supported, searched)<\/code><\/pre>\n<p><em>\u041d\u0430\u0434\u043f\u0438\u0441\u044c <\/em><code><em>(supported, searched)<\/em><\/code><em> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/em><\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0443\u0434\u043e\u0431\u043d\u043e. \u0411\u0435\u0440\u0438 \u0441\u0430\u043c\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0431\u0435\u0437\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0447\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u044b \u0441 \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u0435\u0442 \u043e \u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u0442\u043e-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442 \u041b\u0438\u043d\u0443\u0441\u0430 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441\u0430, \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f Linux. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0432\u043e\u0440.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c32\/25a\/e7d\/c3225ae7def7cb0c292d204042d295a0.png\" width=\"547\" height=\"493\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c32\/25a\/e7d\/c3225ae7def7cb0c292d204042d295a0.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c32\/25a\/e7d\/c3225ae7def7cb0c292d204042d295a0.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0442\u0430\u043a \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u043d, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043d\u0430 100%.<\/p>\n<p><strong>1. \u042d\u0442\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0438 \u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.<\/strong><br \/> \u041b\u0438\u043d\u0443\u0441 \u043f\u0438\u0448\u0435\u0442: <em>&#171;The whole &#171;v2&#187;, &#171;v3&#187;, &#171;v4&#187; etc naming seems to be some crazy glibc artifact&#8230; as far as I can tell, the &#171;microarchitecture levels&#187; garbage&#8230; is&#8217;s entirely unofficial&#187;<\/em>.<\/p>\n<p>\u042d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u2014 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 Intel \u0438\u043b\u0438 AMD. \u042d\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 <code>glibc<\/code> \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434. \u041f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u043c \u043d\u0430 \u0447\u0443\u0436\u043e\u043c, \u0448\u0430\u0442\u043a\u043e\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0435.<\/p>\n<p><strong>2. \u041b\u0438\u043d\u0435\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e.<\/strong><br \/> <em>&#171;Trying to linearize those bits is technically wrong, since these things simply aren&#8217;t some kind of linear progression.&#187;<\/em><\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0443\u043f\u0435\u043d\u044c\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438\u0437 &#171;v3&#187; (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>AVX2<\/code>), \u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u043e\u0439. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0432 \u0436\u0435\u0441\u0442\u043a\u0438\u0435, \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u043e\u0431\u043c\u0430\u043d. \u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u043e\u043c\u0430\u043d\u0430 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<p><strong>3. \u042d\u0442\u043e &#171;\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435&#187;, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442.<\/strong><br \/> \u042d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u041b\u0438\u043d\u0443\u0441\u0430: <em>&#171;And worse, it&#8217;s a &#171;simplification&#187; that literally adds complexity. Now instead of asking &#171;does this CPU support the cmpxchgb16 instruction?&#187;, the question instead becomes &#171;what the hell does &#8216;v3&#8217; mean again?&#187;<\/em><\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0438 \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e (&#171;\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0448\u044c \u043b\u0438 \u0442\u044b X?&#187;), \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0439, \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043c\u0435\u0442\u043a\u043e\u0439 <code>v3<\/code>. \u042d\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0435 \u0438 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c.<\/p>\n<h3>\u041d\u0430\u0448 \u043f\u043e\u0434\u0445\u043e\u0434: \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0443\u043f\u043a\u0438\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439<\/h3>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u041b\u0438\u043d\u0443\u0441, \u2014 \u044d\u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <strong>CPUID \u0431\u0438\u0442\u044b<\/strong>. \u042d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (<code>ISA sets<\/code>) \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u0430\u0432\u0434\u044b.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 AsmX G3 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u044d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438. \u041d\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u2014 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: <code>SSE2<\/code>, <code>AVX<\/code>, <code>AVX512<\/code>, <code>BMI2<\/code> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e, \u0442\u043e\u0447\u043d\u043e \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0436\u0435\u043b\u0435\u0437\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f <code>SSE6<\/code>, \u043e\u043d \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u044b\u0442\u0430\u0442\u044c\u0441\u044f &#171;\u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c&#187; \u0435\u0433\u043e \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0431\u044b \u0430\u0431\u0441\u0443\u0440\u0434\u043e\u043c.<\/p>\n<p>\u041c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0443 \u0433\u043b\u0430\u0432\u0443, \u0446\u0438\u0442\u0438\u0440\u0443\u044f \u0444\u0438\u043d\u0430\u043b \u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430:<\/p>\n<blockquote>\n<p><strong>\u00abSo no. We are <em>NOT<\/em> introducing that idiocy in the kernel.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0418 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435:<br \/> <strong>\u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435\u0442. \u041c\u044b \u041d\u0415 \u0432\u0432\u043e\u0434\u0438\u043c \u044d\u0442\u043e\u0442 \u0438\u0434\u0438\u043e\u0442\u0438\u0437\u043c \u0432 \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/strong><\/p>\n<h2>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 TAPI: \u0411\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/h2>\n<p>TAPI \u2014 \u044d\u0442\u043e \u043d\u0430\u0448 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u0444\u043b\u0430\u0433\u043e\u0432 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434. \u0412 v29 \u043c\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 \u0435\u0433\u043e, \u0441\u0434\u0435\u043b\u0430\u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c. \u0412\u043e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0434\u0435\u0444\u0438\u0441\u043e\u0432 \u0432 \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u0444\u043b\u0430\u0433\u0430\u0445.<\/strong> \u0420\u0430\u043d\u044c\u0448\u0435 \u0434\u043b\u044f \u0434\u043b\u0438\u043d\u043d\u044b\u0445 \u043e\u043f\u0446\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b <code>@<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>--llvm@version<\/code>). \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 \u0434\u0435\u0444\u0438\u0441\u0430\u043c\u0438: <code>--llvm-version<\/code>. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 CLI \u0431\u043e\u043b\u0435\u0435 \u0438\u043d\u0442\u0443\u0438\u0442\u0438\u0432\u043d\u044b\u043c \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u043c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438, \u0442\u0430\u043a\u0438\u043c\u0438 \u043a\u0430\u043a <code>gcc<\/code> \u0438\u043b\u0438 <code>clang<\/code>. \u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043b\u043e\u0433\u0438\u043a\u0430 TAPI \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043f\u043e\u0434 \u044d\u0442\u043e: \u0444\u043b\u0430\u0433\u0438 \u043e\u0447\u0438\u0449\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u0432 (<code>--<\/code>) \u0438 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>--llvm-version<\/code> \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f <code>llvm_version<\/code>).<\/p>\n<\/li>\n<li>\n<p><strong>\u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0444\u043b\u0430\u0433\u043e\u0432.<\/strong> \u0415\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u043d\u0435 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u043d, TAPI \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442 \u044f\u0432\u043d\u0443\u044e \u043e\u0448\u0438\u0431\u043a\u0443: <code>asmx: error: unrecognized command-line option \u2018--unknown-flag\u2019<\/code>. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043e\u0442\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0438 \u043d\u0430 \u0440\u0430\u043d\u043d\u0438\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0442\u0438\u0445\u0438\u0435 \u0441\u0431\u043e\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u043e\u0432\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0438:<\/strong> <\/p>\n<ul>\n<li>\n<p><code>--emergency-panic<\/code>: \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0430\u0432\u0430\u0440\u0438\u0439\u043d\u043e\u0439 \u043f\u0430\u043d\u0438\u043a\u0438 \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445. \u0415\u0441\u043b\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043d\u0435\u044f\u0441\u043d\u043e\u0439 \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439, \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u0442\u0435\u043a-\u0442\u0440\u0435\u0439\u0441 \u0438 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0430. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432: \u043e\u0442\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u043e \u0432 issues (\u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b), \u043d\u043e \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p><code>-q<\/code> \/ <code>--quiet<\/code>: \u041f\u043e\u0434\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u044b\u0432\u043e\u0434\u044b, \u043a\u0440\u043e\u043c\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043e\u0442 <code>LLVM.js<\/code>. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u0435\u043d \u0447\u0438\u0441\u0442\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0435\u0437 \u043b\u043e\u0433\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><code>-a<\/code> \/ <code>--aliases<\/code>: \u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0430\u043b\u0438\u0430\u0441\u043e\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440: <code>x86_64<\/code> \u2192 <code>x86-64<\/code>, <code>x64<\/code>, <code>intel64<\/code>, <code>amd64<\/code>). \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0439 \u0441\u043f\u0440\u0430\u0432\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><code>--help=llvm<\/code>: \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u043b\u0430\u0433\u0438, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 LLVM (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>--llvm-version<\/code>, <code>--llvm-dumpversion<\/code>, <code>--llvm-repository<\/code>).<\/p>\n<\/li>\n<li>\n<p><code>--help=common<\/code>: \u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431\u0449\u0438\u0435 \u043e\u043f\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><code>--help=package<\/code>: \u0412\u044b\u0432\u043e\u0434\u0438\u0442 \u0444\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438 (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0438\u0436\u0435).<\/p>\n<\/li>\n<li>\n<p><code>--export-json-isa<\/code>: \u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (ISA) \u0432 JSON-\u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0434\u0435\u043b\u0430\u044e\u0442 TAPI \u0431\u043e\u043b\u0435\u0435 \u0437\u0440\u0435\u043b\u044b\u043c: \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0430\u0440\u0441\u0438\u0442, \u043d\u043e \u0438 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u0432\u0432\u043e\u0434, \u0441\u043d\u0438\u0436\u0430\u044f \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a.<\/p>\n<h2>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0438 kernel: \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438<\/h2>\n<p>\u042f\u0434\u0440\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 (<code>kernel.js<\/code>) \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430. \u041c\u044b \u0444\u043e\u043a\u0443\u0441\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u0435\u0449\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u0440\u043e\u0449\u0430\u044e\u0442 \u0436\u0438\u0437\u043d\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c.<\/p>\n<ol>\n<li>\n<p><strong>JournalService: \u041d\u043e\u0432\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043b\u043e\u0433\u043e\u0432.<\/strong> \u042d\u0442\u043e \u043a\u0430\u043a \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u044b\u0439 <code>journalctl<\/code> \u0434\u043b\u044f AsmX. \u041e\u043d \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f (error, warn, info \u0438 \u0442.\u0434.) \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u044b\u0432\u043e\u0434. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u044d\u043c\u043e\u0434\u0437\u0438-\u043f\u0440\u0435\u0444\u0438\u043a\u0441\u044b \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u044f\u0441\u043d\u043e\u0441\u0442\u0438 (\u2714 \u0434\u043b\u044f \u0443\u0441\u043f\u0435\u0445\u0430, \u26a0 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439). \u0412 \u0442\u0438\u0445\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 (<code>--quiet<\/code>) \u043f\u043e\u0434\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435, \u043a\u0440\u043e\u043c\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e\u0433\u043e. \u041f\u043e\u043a\u0430 \u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0432\u044b\u0432\u043e\u0434\u044b <code>LLVM.js<\/code>, \u043d\u043e \u044d\u0442\u043e \u0432 \u043f\u043b\u0430\u043d\u0430\u0445. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044c\u0442\u0435: \u0432\u043c\u0435\u0441\u0442\u043e \u0445\u0430\u043e\u0441\u0430 \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u2014 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043b\u043e\u0433, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0435\u043d\u044b \u043a\u0440\u0430\u0441\u043d\u044b\u043c, \u0430 \u0443\u0441\u043f\u0435\u0445\u0438 \u2014 \u0437\u0435\u043b\u0451\u043d\u044b\u043c. \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0439 <\/strong><code><strong>--dumpversion<\/strong><\/code><strong>.<\/strong> \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043f\u043e\u043b\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0441 \u0440\u0435\u0432\u0438\u0437\u0438\u0435\u0439: <code>Version: v29 (rev 1.0)<\/code>. \u041f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0442\u0440\u0435\u043a\u0438\u043d\u0433\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u0445 \u0438\u043b\u0438 CI\/CD.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e CPU.<\/strong> \u041f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0442\u043e\u0447\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>amd64-unknown-linux-gnu<\/code>) \u0438 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>Meteor Lake<\/code> \u0434\u043b\u044f Intel 14-\u0433\u043e \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f). \u041c\u044b \u043f\u0430\u0440\u0441\u0438\u043c <code>os.cpus()<\/code> \u0438 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u043c\u0438 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0435: &#171;\u0410\u0433\u0430, \u043d\u0430 Raptor Lake \u043a\u043e\u0434 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f AVX-512&#187;. \u041d\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u043a\u0442\u044b \u043e\u0442 \u0436\u0435\u043b\u0435\u0437\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 <\/strong><code><strong>--target<\/strong><\/code><strong> \u0432\u043c\u0435\u0441\u0442\u043e <\/strong><code><strong>--march<\/strong><\/code><strong>.<\/strong> \u0414\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>--target amd64<\/code> (\u0438\u043b\u0438 \u0430\u043b\u0438\u0430\u0441\u044b \u0432\u0440\u043e\u0434\u0435 <code>x86_64<\/code>). \u042d\u0442\u043e \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d, \u043a\u0430\u043a \u0432 <code>clang<\/code>. \u0421\u0442\u0430\u0440\u044b\u0439 \u0444\u043b\u0430\u0433 \u0443\u0434\u0430\u043b\u0435\u043d \u0434\u043b\u044f \u0447\u0438\u0441\u0442\u043e\u0442\u044b \u043a\u043e\u0434\u0430 \u2014 \u043c\u0435\u043d\u044c\u0448\u0435 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b, \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u0449\u0438\u0439 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432.<\/strong> \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u043c\u044f \u0432\u044b\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u2014 <code>a.out<\/code> \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440 (\u0440\u0430\u043d\u044c\u0448\u0435 \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u043e \u043e\u0442 \u0431\u044d\u043a\u0435\u043d\u0434\u0430). \u041b\u043e\u0433\u0438\u043a\u0430 \u0432\u044b\u043d\u0435\u0441\u0435\u043d\u0430 \u0432 kernel: <code>const outname = terminal_arguments.objname || GVE.GCR_DEFAULT_OUTPUT_FILENAME_FOR_ALL_BACKENDS;<\/code>. \u042d\u0442\u043e \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u2014 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439 \u043d\u0430 amd64 \u0438\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043d\u0430 arm64, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u043e\u0432\u044b\u0439 \u0441\u043b\u043e\u0439: <\/strong><code><strong>__asmx_prepare_pipeline_factory_fn<\/strong><\/code><strong>.<\/strong> \u042d\u0442\u043e \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0444\u043b\u0430\u0433\u043e\u0432: \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0430\u043b\u0438\u0430\u0441\u044b (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>x64<\/code> \u2192 <code>amd64<\/code>), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0431\u044d\u043a\u0435\u043d\u0434\u043e\u0432 \u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f\u0445 <code>.\/backend\/targets<\/code> \u0438 <code>.\/backend\/packages<\/code>. \u0415\u0441\u043b\u0438 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438\u043b\u0438 \u0442\u0438\u043f \u043f\u0430\u043a\u0435\u0442\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043e\u0448\u0438\u0431\u043a\u0430 \u0441 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u043e\u0439: <code>Server.journal.error(\"The ${pair_v} architecture is not supported\");<\/code>. \u041a\u043e\u0434 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>fs.readdirSync<\/code> \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 <code>aliases.getTargetAlias<\/code> \u0434\u043b\u044f \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u2014 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433: \u0440\u0430\u0437\u0431\u0438\u0442\u044c \u043d\u0430 \u043c\u043e\u0434\u0443\u043b\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0439 \u0438 \u043e\u0448\u0438\u0431\u043e\u043a.<\/strong> \u0422\u0435\u043f\u0435\u0440\u044c \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f: <code>0 Warnings, 0 Errors.<\/code> (\u0438\u043b\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430). \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0447\u0435\u0440\u0435\u0437 <code>JournalService<\/code>: <code>this.count_warnings += 1;<\/code> \u0432 <code>throw_warning()<\/code>, \u0438 <code>printWarningStats()<\/code>. \u041f\u043e\u043a\u0430 \u044d\u0442\u043e \u0432 kernel \u0438 <code>ZGEN<\/code>; \u0432 JITC \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u043e\u0437\u0436\u0435.<\/p>\n<\/li>\n<\/ol>\n<h2>\u0420\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0432 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438: \u041a\u0430\u043a AsmX \u043d\u0430\u0443\u0447\u0438\u043b\u0441\u044f \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0432 .deb \u043f\u0430\u043a\u0435\u0442\u044b \u2014 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0451<\/h2>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/753\/029\/144\/753029144cd04516ba7366a3ae75ddc3.webp\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/753\/029\/144\/753029144cd04516ba7366a3ae75ddc3.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/753\/029\/144\/753029144cd04516ba7366a3ae75ddc3.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u042d\u0442\u043e \u0442\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u043b\u044f \u043c\u0435\u043d\u044f \u043a\u0430\u043a \u043f\u0440\u043e\u0440\u044b\u0432 \u0432 \u043a\u043e\u0441\u043c\u043e\u0441. \u041f\u043e\u043c\u043d\u0438\u0442\u0435, \u043a\u0430\u043a SpaceX \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0441\u0430\u0434\u0438\u043b\u0430 Falcon 9? \u0412\u043e\u0442 \u0442\u0430\u043a \u0436\u0435 \u0438 \u0437\u0434\u0435\u0441\u044c: AsmX G3 v29 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043a\u043e\u0434 \u2014 \u043e\u043d \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e \u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 <code>.deb<\/code> \u043f\u0430\u043a\u0435\u0442\u044b, \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 Ubuntu, Debian, Mint \u0438 \u0434\u0440\u0443\u0433\u0438\u0435. \u042d\u0442\u043e \u043d\u0435 \u0444\u0438\u0447\u0430 \u043d\u0430 \u043f\u043e\u043b\u043a\u0435; \u044d\u0442\u043e \u043c\u043e\u0441\u0442 \u043e\u0442 \u0441\u044b\u0440\u044b\u0445 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043c\u0438\u0440\u0443 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438. \u042f \u043f\u0440\u043e\u0441\u0438\u0434\u0435\u043b \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u043d\u0435\u0434\u0435\u043b\u044f\u043c\u0438, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u0430\u0440\u0445\u0438\u0432\u043e\u0432, \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u0418 \u044d\u0442\u043e \u043a\u0440\u0443\u0442\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443: &#171;\u0421\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043b \u2014 \u0430 \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0442\u044c?&#187; \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0441\u0442\u043e: \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0439, \u0443\u043f\u0430\u043a\u0443\u0439, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438 \u0447\u0435\u0440\u0435\u0437 <code>dpkg<\/code>. \u0411\u0435\u0437 \u043b\u0438\u0448\u043d\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u044f\u043c\u043e \u0438\u0437 AsmX.<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u044d\u0442\u043e \u043a\u0430\u043a \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b: \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c, \u043e\u0442 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 <code>.deb<\/code> \u0434\u043e \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0430. \u042f \u043e\u0431\u044a\u044f\u0441\u043d\u044e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>.deb<\/code> \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434, \u0438 \u043f\u043e\u043a\u0430\u0436\u0443 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440. \u0411\u0435\u0437 \u043f\u0430\u0444\u043e\u0441\u0430 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u0444\u0430\u043a\u0442\u044b \u0438 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c \u0438\u043b\u0438 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c.<\/p>\n<h4>\u041f\u043e\u0447\u0435\u043c\u0443 .deb? \u0418 \u043f\u043e\u0447\u0435\u043c\u0443 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441?<\/h4>\n<p><code>.deb<\/code> \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f Debian-based \u0441\u0438\u0441\u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0442 \u0432 \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445 \u0438 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445 (Ubuntu \u2014 30% \u0440\u044b\u043d\u043a\u0430 Linux). \u0424\u043e\u0440\u043c\u0430\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043d\u043e \u043c\u043e\u0449\u043d\u044b\u0439: \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u0441\u043a\u0440\u0438\u043f\u0442\u044b, \u0438\u043a\u043e\u043d\u043a\u0438 \u0438 \u0434\u0430\u0436\u0435 desktop-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e. \u041c\u044b \u043d\u0430\u0447\u0430\u043b\u0438 \u0441 \u043d\u0435\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u0440\u0435\u0448\u0430\u0435\u0442 80% \u0441\u043b\u0443\u0447\u0430\u0435\u0432: \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0441 GUI. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u043c RPM \u0438\u043b\u0438 AppImage, \u043d\u043e <code>.deb<\/code> \u2014 \u044d\u0442\u043e \u0431\u0430\u0437\u0430.<\/p>\n<p>\u0412 AsmX \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u044d\u0442\u043e \u0432 <code>.\/backend\/packages\/deb\/builder.cjs<\/code> \u0438 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0435 <code>.\/backend\/packages\/driver.cjs<\/code>. \u041d\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0442 <code>dpkg-deb<\/code> \u0438\u043b\u0438 <code>fakeroot<\/code> \u2014 \u0432\u0441\u0451 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Node.js \u0441 <code>fs<\/code>, <code>zlib<\/code> \u0438 <code>crypto<\/code>. \u041f\u043e\u0447\u0435\u043c\u0443? \u0427\u0442\u043e\u0431\u044b AsmX \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u0435\u0437\u0434\u0435, \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 Debian-tools. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c: \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0430\u043a\u0435\u0442\u044b \u043d\u0430 Windows \u0438\u043b\u0438 macOS \u0434\u043b\u044f Linux-\u0446\u0435\u043b\u0435\u0439.<\/p>\n<h4>\u041a\u0430\u043a \u0443\u0441\u0442\u0440\u043e\u0435\u043d .deb-\u043f\u0430\u043a\u0435\u0442: \u0420\u0430\u0437\u0431\u043e\u0440 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u043e\u0442 \u0410 \u0434\u043e \u042f<\/h4>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d16\/f87\/518\/d16f8751852f60a229d5690a513cedd1.webp\" alt=\"\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e .deb \u043f\u0430\u043a\u0435\u0442\u0430\" title=\"\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e .deb \u043f\u0430\u043a\u0435\u0442\u0430\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d16\/f87\/518\/d16f8751852f60a229d5690a513cedd1.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d16\/f87\/518\/d16f8751852f60a229d5690a513cedd1.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e <code>.deb<\/code> \u043f\u0430\u043a\u0435\u0442\u0430<\/figcaption><\/div>\n<\/figure>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u044b\u0440\u043d\u0435\u043c \u0432 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0434\u0435\u0442\u0430\u043b\u0438. \u042f \u043d\u0435 \u043b\u044e\u0431\u043b\u044e \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u043d\u044b\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u2014 \u043e\u043d\u0438 \u043a\u0430\u043a \u0440\u0430\u043a\u0435\u0442\u044b \u0431\u0435\u0437 \u0442\u043e\u043f\u043b\u0438\u0432\u0430: \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u043a\u0440\u0443\u0442\u043e, \u043d\u043e \u043d\u0435 \u0432\u0437\u043b\u0435\u0442\u0430\u044e\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0444\u043e\u0440\u043c\u0430\u0442 <code>.deb<\/code> \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c, \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438 \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440. \u042d\u0442\u043e \u043d\u0435 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0442\u0440\u0430\u043a\u0442\u0430\u0442, \u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u0433\u0438\u0434: \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0437\u044f\u0442\u044c \u044d\u0442\u043e \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0430\u043c\u0438, \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435.<\/p>\n<p><code>.deb<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e ZIP \u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u042d\u0442\u043e <strong>ar-\u0430\u0440\u0445\u0438\u0432<\/strong> (\u0434\u0430, \u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u043e\u0442 Unix, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0445 \u0432\u0440\u043e\u0434\u0435 <code>.a<\/code>), \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0440\u043e\u0432\u043d\u043e \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430:<\/p>\n<ol>\n<li>\n<p><strong>debian-binary<\/strong>: \u0422\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 (\u0432\u0441\u0435\u0433\u0434\u0430 &#171;2.0\\n&#187;). \u042d\u0442\u043e \u043c\u0430\u0440\u043a\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435 <code>dpkg<\/code> \u0437\u043d\u0430\u043b\u0438, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 <code>.deb<\/code>. \u0412 <code>ar<\/code>-\u0430\u0440\u0445\u0438\u0432\u0435 \u0444\u0430\u0439\u043b \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u0447\u043d\u043e <code>debian-binary<\/code> (\u0431\u0435\u0437 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439).<\/p>\n<\/li>\n<li>\n<p><strong>control.tar.gz<\/strong>: \u0421\u0436\u0430\u0442\u044b\u0439 <code>tar<\/code>-\u0430\u0440\u0445\u0438\u0432 \u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u0430\u043a\u0435\u0442\u0430. \u0417\u0434\u0435\u0441\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b: <code>control<\/code> (\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430), \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u0440\u043e\u0434\u0435 <code>postinst<\/code> (\u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438) \u0438 <code>postrm<\/code> (\u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f).<\/p>\n<\/li>\n<\/ol>\n<ul>\n<li>\n<p><strong>data.tar.gz<\/strong>: \u0421\u0436\u0430\u0442\u044b\u0439 <code>tar<\/code>-\u0430\u0440\u0445\u0438\u0432 \u0441 \u0441\u0430\u043c\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2014 \u0432\u0430\u0448\u0438\u043c \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u043e\u043c, \u0438\u043a\u043e\u043d\u043a\u0430\u043c\u0438, desktop-\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0438 \u0432\u0441\u0435\u043c \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 <code>control<\/code> \u043c\u043e\u0436\u043d\u043e:<\/p>\n<pre><code class=\"bash\">$ dpkg -f myapp_1.0.0_amd64.deb Package: myapp Version: 1.0.0 Architecture: amd64 Maintainer: AsmX Developer  Description: An application created with the AsmX compiler. Section: devel Priority: optional Installed-Size: 2 Depends: libc6<\/code><\/pre>\n<p>\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (ASCII-\u0430\u0440\u0442 \u0434\u043b\u044f \u044f\u0441\u043d\u043e\u0441\u0442\u0438):<\/p>\n<pre><code>.deb (ar-\u0430\u0440\u0445\u0438\u0432) \u251c\u2500\u2500 debian-binary   (Buffer: '2.0\\n') \u251c\u2500\u2500 control.tar.gz  (gzip(tar(DEBIAN\/))) \u2502   \u2514\u2500\u2500 DEBIAN\/ \u2502       \u251c\u2500\u2500 control     (\u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435: \u0438\u043c\u044f, \u0432\u0435\u0440\u0441\u0438\u044f, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438) \u2502       \u251c\u2500\u2500 postinst    (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e: \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438) \u2502       \u2514\u2500\u2500 postrm      (\u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e: \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0441\u043b\u0435 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f) \u2514\u2500\u2500 data.tar.gz     (gzip(tar(\u0444\u0430\u0439\u043b\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\/)))     \u251c\u2500\u2500 usr\/     \u2502   \u251c\u2500\u2500 bin\/        (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b)     \u2502   \u251c\u2500\u2500 share\/     \u2502   \u2502   \u251c\u2500\u2500 applications\/  (.desktop \u0444\u0430\u0439\u043b)     \u2502   \u2502   \u2514\u2500\u2500 icons\/...      (\u0438\u043a\u043e\u043d\u043a\u0430 .png)     \u2514\u2500\u2500 ... <\/code><\/pre>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 <code>ar<\/code>? \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d \u043f\u0440\u043e\u0441\u0442\u043e\u0439: \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u043c\u0438, \u0431\u0435\u0437 \u0441\u0436\u0430\u0442\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u0438 \u0431\u0435\u0437 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0433\u043e. \u0412 AsmX \u043c\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u044d\u0442\u043e \u0432 <code>createArArchive<\/code> \u0438\u0437 <code>builder.ts<\/code>:<\/p>\n<pre><code class=\"typescript\">async function createArArchive(   outputPath: string,   files: { name: string; content: Buffer }[] ): Promise&lt;void&gt; {   let arContent = Buffer.from('!\\n'); \/\/ \u041c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a ar    for (const file of files) {     const header = Buffer.alloc(60); \/\/ \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 60 \u0431\u0430\u0439\u0442     header.write(file.name.padEnd(16), 0); \/\/ File identifier     \/\/ File modification timestamp     header.write(Math.floor(Date.now() \/ 1000).toString().padEnd(12), 16);      header.write('0'.padEnd(6), 28); \/\/ Owner ID     header.write('0'.padEnd(6), 34); \/\/ Group ID     header.write('100644'.padEnd(8), 40); \/\/ File mode     header.write(file.content.length.toString().padEnd(10), 48); \/\/ File size     header.write('\\x60\\n', 58); \/\/ Ending characters      arContent = Buffer.concat([arContent, header, file.content]);     if (file.content.length % 2 !== 0) { \/\/ \u041f\u0430\u0434\u0434\u0438\u043d\u0433 \u0434\u043e \u0447\u0451\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430       arContent = Buffer.concat([arContent, Buffer.from('\\n')]); \/\/ Padding     }   }    await fs.writeFile(outputPath, arContent); }<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u043a\u043e\u0434 \u2014 \u0441\u0435\u0440\u0434\u0446\u0435 \u0443\u043f\u0430\u043a\u043e\u0432\u0449\u0438\u043a\u0430. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0431\u0443\u0444\u0435\u0440 \u0434\u043b\u044f \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 \u2014 \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0430 Unix), \u043a\u043e\u043d\u043a\u0430\u0442\u0435\u043d\u0438\u0440\u0443\u0435\u043c \u0441 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043f\u0430\u0434\u0434\u0438\u043d\u0433 (ar \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0447\u0451\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u044b). \u041d\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 Node.js \u0434\u043b\u044f \u043f\u043e\u0440\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c <strong>ar-\u0430\u0440\u0445\u0438\u0432<\/strong> \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435. \u041e\u043d \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 <code>!\\n<\/code> (8 \u0431\u0430\u0439\u0442). \u0417\u0430\u0442\u0435\u043c \u2014 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0444\u0430\u0439\u043b\u043e\u0432, \u043a\u0430\u0436\u0434\u044b\u0439 \u0441 60-\u0431\u0430\u0439\u0442\u043d\u044b\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">Offset<\/p>\n<\/th>\n<th>\n<p align=\"left\">Length<\/p>\n<\/th>\n<th data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Name<\/p>\n<\/th>\n<th>\n<p align=\"left\">Format<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">\u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 (\u043f\u0430\u0434\u0434\u0438\u043d\u0433 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438 \u0434\u043e 16)<\/p>\n<\/td>\n<td>\n<p align=\"left\">ASCII<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">16<\/p>\n<\/td>\n<td>\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Timestamp (\u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0441 \u044d\u043f\u043e\u0445\u0438, \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043f\u0430\u0434\u0434\u0438\u043d\u0433 \u043f\u0440\u043e\u0431\u0435\u043b\u0430\u043c\u0438)<\/p>\n<\/td>\n<td>\n<p align=\"left\">Decimal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">28<\/p>\n<\/td>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Owner ID<\/p>\n<\/td>\n<td>\n<p align=\"left\">Decimal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">34<\/p>\n<\/td>\n<td>\n<p align=\"left\">6<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Group ID<\/p>\n<\/td>\n<td>\n<p align=\"left\">Decimal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">40<\/p>\n<\/td>\n<td>\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Mode (\u0432\u043e\u0441\u044c\u043c\u0435\u0440\u0438\u0447\u043d\u043e\u0435, \u043a\u0430\u043a \u0432 chmod)<\/p>\n<\/td>\n<td>\n<p align=\"left\">Octal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">48<\/p>\n<\/td>\n<td>\n<p align=\"left\">10<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430 (bytes)<\/p>\n<\/td>\n<td>\n<p align=\"left\">Decimal<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">58<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"175\" width=\"175\">\n<p align=\"left\">Ending characters<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>0x60<\/code> <code>0x0A<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041c\u043e\u0436\u0435\u043c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <code>ar<\/code> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a:<\/p>\n<pre><code class=\"bash\">$ dd if=myapp_1.0.0_amd64.deb bs=1 count=68 2&gt;\/dev\/null | hexdump -C 00000000  21 3c 61 72 63 68 3e 0a  64 65 62 69 61 6e 2d 62  |!.debian-b| 00000010  69 6e 61 72 79 20 20 20  31 37 35 36 39 39 34 36  |inary   17569946| 00000020  30 30 20 20 30 20 20 20  20 20 30 20 20 20 20 20  |00  0     0     | 00000030  31 30 30 36 34 34 20 20  34 20 20 20 20 20 20 20  |100644  4       | 00000040  20 20 60 0a                                       |  `.| 00000044<\/code><\/pre>\n<h4>\u041e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/h4>\n<ul>\n<li>\n<p><code>dd if=myapp_1.0.0_amd64.deb<\/code>: \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435n \u0432\u0445\u043e\u0434\u043d\u043e\u0439 \u0444\u0430\u0439\u043b.<\/p>\n<\/li>\n<li>\n<p><code>bs=1<\/code>: \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0430 \u0432 1 \u0431\u0430\u0439\u0442.<\/p>\n<\/li>\n<li>\n<p><code>count=68<\/code>: \u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c 68 \u0431\u0430\u0439\u0442\u043e\u0432. (8 \u0431\u0430\u0439\u0442\u043e\u0432 \u0441 magic \u0438 60 \u0431\u0430\u0439\u0442\u043e\u0432 \u0441\u0430\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a)<\/p>\n<\/li>\n<li>\n<p><code>2&amp;gt;\/dev\/null<\/code>: \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><code>| hexdump -C<\/code>: \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432\u044b\u0432\u043e\u0434 \u0432\u00a0<code>hexdump<\/code>\u00a0\u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u043c \u0438 ASCII \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u2014 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0444\u0430\u0439\u043b\u0430, \u0437\u0430\u0442\u0435\u043c \u043f\u0430\u0434\u0434\u0438\u043d\u0433 <code>\\n<\/code> \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435\u0447\u0451\u0442\u043d\u044b\u0439. \u0412\u0441\u0451 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u0438\u043b\u0438 \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432. \u041f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 = \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0412 AsmX \u043c\u044b \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u044d\u0442\u043e \u0442\u0430\u043a:<\/p>\n<pre><code class=\"typescript\">await createArArchive(outputPath, [   { name: 'debian-binary', content: debianBinary },   { name: 'control.tar.gz', content: controlTarGz }, \u00a0 { name: 'data.tar.gz', content: dataTarGz } ]);<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 <code>.deb<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 <code>dpkg -i<\/code> \u043f\u0440\u0438\u043c\u0435\u0442 \u0431\u0435\u0437 \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<h4>Tar-\u0430\u0440\u0445\u0438\u0432: \u0424\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442 data.tar \u0438 control.tar<\/h4>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48f\/c28\/848\/48fc28848c25d8a3fcb62de8e083ed74.png\" alt=\".tar archive and .tar.gz\" title=\".tar archive and .tar.gz\" width=\"500\" height=\"130\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/48f\/c28\/848\/48fc28848c25d8a3fcb62de8e083ed74.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/48f\/c28\/848\/48fc28848c25d8a3fcb62de8e083ed74.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption><code>.tar<\/code> archive and <code>.tar.gz<\/code><\/figcaption><\/div>\n<\/figure>\n<p>Tar (Tape ARchive) \u2014 \u044d\u0442\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439, \u0431\u0435\u0437 \u0441\u0436\u0430\u0442\u0438\u044f. \u0412 <code>.deb<\/code> \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c USTAR-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 (POSIX-\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442). \u041a\u0430\u0436\u0434\u044b\u0439 \u0444\u0430\u0439\u043b \u0432 <code>tar<\/code> \u0438\u043c\u0435\u0435\u0442 512-\u0431\u0430\u0439\u0442\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 (\u043f\u0430\u0434\u0434\u0438\u043d\u0433 \u0434\u043e 512-\u0431\u0430\u0439\u0442\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u043e\u0432).<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"115\" width=\"115\">\n<p align=\"left\">Field<\/p>\n<\/th>\n<th data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">Size (bytes)<\/p>\n<\/th>\n<th data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">Byte Offset<\/p>\n<\/th>\n<th>\n<p align=\"left\">Description<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>name<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">0<\/p>\n<\/td>\n<td>\n<p align=\"left\">File name<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>mode<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td>\n<p align=\"left\">File permissions<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>uid<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">108<\/p>\n<\/td>\n<td>\n<p align=\"left\">User ID<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>gid<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">116<\/p>\n<\/td>\n<td>\n<p align=\"left\">Group ID<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>size<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">124<\/p>\n<\/td>\n<td>\n<p align=\"left\">File size in bytes<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>mtime<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">136<\/p>\n<\/td>\n<td>\n<p align=\"left\">Modification time (UNIX timestamp)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>chksum<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">148<\/p>\n<\/td>\n<td>\n<p align=\"left\">Header checksum<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>typeflag<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">1<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">156<\/p>\n<\/td>\n<td>\n<p align=\"left\">File type (e.g., regular file, directory)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>linkname<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">100<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">157<\/p>\n<\/td>\n<td>\n<p align=\"left\">Name of linked file (if symbolic link)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>magic<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">6<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">257<\/p>\n<\/td>\n<td>\n<p align=\"left\">Format identifier (e.g.,\u00a0<code>ustar<\/code>)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>version<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">263<\/p>\n<\/td>\n<td>\n<p align=\"left\">Format version (<code>00<\/code>)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>uname<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">32<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">265<\/p>\n<\/td>\n<td>\n<p align=\"left\">User name<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>gname<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">32<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">297<\/p>\n<\/td>\n<td>\n<p align=\"left\">Group name<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>devmajor<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">329<\/p>\n<\/td>\n<td>\n<p align=\"left\">Major device number (if special file)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>devminor<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">8<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">337<\/p>\n<\/td>\n<td>\n<p align=\"left\">Minor device number (if special file)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>prefix<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">155<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">345<\/p>\n<\/td>\n<td>\n<p align=\"left\">Prefix for file name (for long file names)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"115\" width=\"115\">\n<p align=\"left\"><code>Padding<\/code><\/p>\n<\/td>\n<td data-colwidth=\"121\" width=\"121\">\n<p align=\"left\">12<\/p>\n<\/td>\n<td data-colwidth=\"125\" width=\"125\">\n<p align=\"left\">500<\/p>\n<\/td>\n<td>\n<p align=\"left\">Padding to make the header 512 bytes<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0427\u0435\u043a-\u0441\u0443\u043c\u043c\u0430 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u044f \u0432\u0441\u0435 \u0431\u0430\u0439\u0442\u044b \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 (\u0437\u0430\u043c\u0435\u043d\u044f\u044f \u043f\u043e\u043b\u0435 \u0441\u0443\u043c\u043c\u044b \u043d\u0430 \u043f\u0440\u043e\u0431\u0435\u043b\u044b) \u0438 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u043a\u0430\u043a \u0432\u043e\u0441\u044c\u043c\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0412 \u043d\u0430\u0448\u0435\u043c \u043a\u043e\u0434\u0435 (<code>tar-utils<\/code>):<\/p>\n<pre><code class=\"typescript\">function calculateTarChecksum(header: Buffer): number { \u00a0 let sum = 0; \u00a0 for (let i = 0; i &lt; 512; i++) { \u00a0 \u00a0 if (i &gt;= 148 &amp;&amp; i &lt; 156) { \u00a0 \u00a0 \u00a0 sum += 32; \/\/ Spaces in checksum field \u00a0 \u00a0 } else { \u00a0 \u00a0 \u00a0 sum += header[i]; \u00a0 \u00a0 } \u00a0 } \u00a0 return sum; }<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <code>tar<\/code> \u043c\u044b \u0441\u043a\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e (<code>FsUtils.getAllFiles<\/code>), \u0438 \u0441\u0442\u0440\u043e\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a + \u043a\u043e\u043d\u0442\u0435\u043d\u0442 + \u043f\u0430\u0434\u0434\u0438\u043d\u0433. \u0412 \u043a\u043e\u043d\u0446\u0435 \u2014 \u0434\u0432\u0430 \u043d\u0443\u043b\u0435\u0432\u044b\u0445 \u0431\u043b\u043e\u043a\u0430 (1024 \u0431\u0430\u0439\u0442\u0430) \u0434\u043b\u044f \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f.<\/p>\n<pre><code class=\"typescript\">export async function createTar(   sourceDir: string,   excludeDirs: string[] = [] ): Promise&lt;Buffer&gt; { \u00a0 const files = await FsUtils.getAllFiles(sourceDir, excludeDirs); \u00a0 let tarContent = Buffer.alloc(0);  \u00a0 for (const file of files) { \u00a0 \u00a0 const relativePath = path.relative(sourceDir, file).replace(\/\\\\\/g, '\/'); \u00a0 \u00a0 const stats = await fs.stat(file); \u00a0 \u00a0 const content = await fs.readFile(file); \u00a0 \u00a0 const header = createTarHeader(relativePath, stats.size, stats.mode); \u00a0 \u00a0 tarContent = Buffer.concat([tarContent, header, content]);  \u00a0 \u00a0 const padding = 512 - (content.length % 512); \u00a0 \u00a0 if (padding &lt; 512) { \u00a0 \u00a0 \u00a0 tarContent = Buffer.concat([tarContent, Buffer.alloc(padding)]); \u00a0 \u00a0 } \u00a0 }  \u00a0 tarContent = Buffer.concat([tarContent, Buffer.alloc(1024)]); \u00a0 return tarContent; }<\/code><\/pre>\n<p>\u042d\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442 raw tar. \u0417\u0430\u0442\u0435\u043c \u0441\u0436\u0438\u043c\u0430\u0435\u043c \u0432 gz.<\/p>\n<h4>\u0421\u0436\u0430\u0442\u0438\u0435: .tar.gz \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e zlib<\/h4>\n<p>Gz \u2014 \u044d\u0442\u043e gzip-\u0441\u0436\u0430\u0442\u0438\u0435, \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0434\u043b\u044f Unix. \u041c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 <code>zlib.gzip<\/code> \u0432 Node.js:<\/p>\n<pre><code class=\"typescript\">export function gzip(data: Buffer): Promise&lt;Buffer&gt; { \u00a0 return new Promise((resolve, reject) =&gt; { \u00a0 \u00a0 zlib.gzip(data, (err, result) =&gt; { \u00a0 \u00a0 \u00a0 if (err) return reject(err); \u00a0 \u00a0 \u00a0 resolve(result); \u00a0 \u00a0 }); \u00a0 }); }  \/\/ \u0412 builder const controlTar = await createTar(debianDir); const controlTarGz = await gzip(controlTar);<\/code><\/pre>\n<p>Gzip \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a (10 \u0431\u0430\u0439\u0442: \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 ID, \u043c\u0435\u0442\u043e\u0434 \u0441\u0436\u0430\u0442\u0438\u044f \u0438 \u0442.\u0434.), \u0441\u0436\u0430\u0442\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 (DEFLATE) \u0438 \u0444\u0443\u0442\u0435\u0440 (CRC32 + \u0440\u0430\u0437\u043c\u0435\u0440). \u041c\u044b \u043d\u0435 \u0443\u0433\u043b\u0443\u0431\u043b\u044f\u0435\u043c\u0441\u044f \u0432 DEFLATE (\u044d\u0442\u043e LZ77 + Huffman), \u043d\u043e \u0432\u0430\u0436\u043d\u043e: \u044d\u0442\u043e lossless, \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0435 \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u043e\u0432\/\u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u043e\u0432.<\/p>\n<h3>\u041a\u0430\u043a AsmX \u0441\u0442\u0440\u043e\u0438\u0442 .deb: \u041e\u0431\u0437\u043e\u0440 builder \u0438 driver<\/h3>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b9b\/ef1\/2f9\/b9bef12f9866a6c350e9bf6e30e91a1c.png\" alt=\"Diagram showing an example file structure of a .deb file  \" title=\"Diagram showing an example file structure of a .deb file  \" width=\"500\" height=\"873\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b9b\/ef1\/2f9\/b9bef12f9866a6c350e9bf6e30e91a1c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b9b\/ef1\/2f9\/b9bef12f9866a6c350e9bf6e30e91a1c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Diagram showing an example file structure of a <code>.deb<\/code> file  <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 AsmX \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u0430 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u0430 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u044f: <strong>driver<\/strong> (<code>driver.ts<\/code>) \u0438 <strong>DebBuilder<\/strong> (<code>builder.ts<\/code>). \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 <code>dpkg-deb<\/code>, \u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c Node.js \u0431\u0435\u0437 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e, \u0448\u0430\u0433 \u0437\u0430 \u0448\u0430\u0433\u043e\u043c, \u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u043c\u0438 \u043a\u043e\u0434\u0430 \u0438 \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u044f\u043c\u0438.<\/p>\n<h4>\u0420\u043e\u043b\u044c driver<\/h4>\n<p><code>driver.ts<\/code> \u2014 \u044d\u0442\u043e \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0438\u0440\u0443\u0435\u0442 \u0441\u0431\u043e\u0440\u043a\u0443. \u041e\u043d \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430:<\/p>\n<ol>\n<li>\n<p><strong>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/strong>: \u0423\u0431\u0435\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0431\u043e\u0440\u043a\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 Linux (\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f <code>.deb<\/code>), \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 <code>ldd<\/code> \u0434\u043b\u044f \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 ELF.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/strong>: \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0444\u043b\u0430\u0433\u0438 \u0432\u0440\u043e\u0434\u0435 <code>--package-name<\/code>, <code>--package-version<\/code>, <code>--package-icon<\/code> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0438\u0445 \u0432 <code>DebBuilder<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u043d\u0430\u043b\u0438\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439<\/strong>: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>ldd<\/code> \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0438\u043b\u0438 fallback \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0431\u043e\u0440\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0437\u043e\u0432 DebBuilder<\/strong>: \u041f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438.<\/p>\n<\/li>\n<\/ol>\n<h4>\u0420\u043e\u043b\u044c DebBuilder<\/h4>\n<p><code>DebBuilder<\/code> (<code>builder.ts<\/code>) \u2014 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u043b\u043e\u0448\u0430\u0434\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442. \u041e\u043d\u0430:<\/p>\n<ol>\n<li>\n<p><strong>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e<\/strong>: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 <code>FsUtils.createTempDirectoryRecursive<\/code> \u0434\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443<\/strong>: <\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0432 <code>usr\/bin\/<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 <code>.desktop<\/code>-\u0444\u0430\u0439\u043b (\u0435\u0441\u043b\u0438 <code>--package-desktop<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u0438\u043a\u043e\u043d\u043a\u0443 \u0432 <code>usr\/share\/icons\/hicolor\/<\/code> (\u0435\u0441\u043b\u0438 <code>--package-icon<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 <code>DEBIAN\/control<\/code> \u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u044b (<code>postinst<\/code>, <code>postrm<\/code>).<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0421\u0442\u0440\u043e\u0438\u0442 \u0430\u0440\u0445\u0438\u0432\u044b<\/strong>: <\/p>\n<ul>\n<li>\n<p><code>control.tar.gz<\/code> \u0441 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><code>data.tar.gz<\/code> \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><code>ar<\/code>-\u0430\u0440\u0445\u0438\u0432 \u0434\u043b\u044f \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>.deb<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0427\u0438\u0441\u0442\u0438\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439<\/strong>: \u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<\/li>\n<\/ol>\n<h3>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043c\u043e\u043c\u0435\u043d\u0442\u044b<\/h3>\n<ul>\n<li>\n<p><strong>\u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u0430<\/strong>: <code>calculateInstalledSize<\/code> \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0441\u0443\u043c\u043c\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 <code>dataDir<\/code> (\u0432 \u0431\u0430\u0439\u0442\u0430\u0445, \u043f\u043e\u0442\u043e\u043c \u0434\u0435\u043b\u0438\u043c \u043d\u0430 1024 \u0434\u043b\u044f <code>Installed-Size<\/code> \u0432 KB).<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0430\u0432\u0430 \u0444\u0430\u0439\u043b\u043e\u0432<\/strong>: \u0411\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u2014 <code>755<\/code> (rwxr-xr-x), \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014 <code>644<\/code> (rw-r&#8212;r&#8212;).<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/strong>: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>ldd<\/code>. \u0415\u0441\u043b\u0438 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439, <code>Depends<\/code> \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043c\u0435\u043d\u0430 \u0444\u0430\u0439\u043b\u043e\u0432<\/strong>: \u0412\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u044e\u0442\u0441\u044f regex\u2019\u0430\u043c\u0438 (<code>^[a-z0-9][a-z0-9.-]*$<\/code> \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438, <code>\\d+\\.\\d+\\.\\d+<\/code> \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438).<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430<\/h3>\n<pre><code class=\"bash\">asmx main.asmx --release --target amd64 -o myapp --package \\   --package-type deb \\   --package-name my-application --package-version 1.0.0 \\   --package-description \"My awesome app\" --package-author \"Dev &lt;dev@example.com&gt;\" \\   --package-icon icon.png --package-desktop<\/code><\/pre>\n<p>\u0412\u044b\u0432\u043e\u0434: <code>my-application_1.0.0_amd64.deb<\/code>, \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 <code>dpkg -i<\/code>.<\/p>\n<h4>\u0424\u043b\u0430\u0433\u0438 \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 AsmX<\/h4>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b1e\/abb\/1a5\/b1eabb1a5aea71e5bfd0662932e748fc.webp\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b1e\/abb\/1a5\/b1eabb1a5aea71e5bfd0662932e748fc.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b1e\/abb\/1a5\/b1eabb1a5aea71e5bfd0662932e748fc.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>AsmX \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0433\u0438\u0431\u043a\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435, GUI-\u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438. \u042d\u0442\u0438 \u0444\u043b\u0430\u0433\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 <code>driver.ts<\/code> \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442\u0441\u044f \u0432 <code>DebBuilder<\/code> \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430. \u0412\u043e\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0444\u043b\u0430\u0433\u043e\u0432, \u0438\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th data-colwidth=\"229\" width=\"229\">\n<p align=\"left\">Name<\/p>\n<\/th>\n<th data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">Type<\/p>\n<\/th>\n<th>\n<p align=\"left\">Description<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">bool<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0440\u0435\u0436\u0438\u043c \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0438. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e AsmX \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-type<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">string<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0442\u0438\u043f \u043f\u0430\u043a\u0435\u0442\u0430 (<code>deb<\/code> \u0434\u043b\u044f Debian\/Ubuntu)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-name<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">string<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430. \u0414\u043e\u043b\u0436\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c regex <code>^[a-z0-9][a-z0-9.-]*$<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-version<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">string<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0435\u0440\u0441\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u0430. \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442 <code>\\d+\\.\\d+\\.\\d+<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 1.0.0)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-description<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">string<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430 \u0434\u043b\u044f <code>control<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-author<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">string<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u043c\u044f \u0438 email \u0430\u0432\u0442\u043e\u0440\u0430 \u0434\u043b\u044f <code>Maintainer<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-icon<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">path<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0443\u0442\u044c \u043a \u0438\u043a\u043e\u043d\u043a\u0435 (.png, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f 256&#215;256). \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 <code>\/usr\/share\/icons\/hicolor\/<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"229\" width=\"229\">\n<p align=\"left\"><code><strong>--package-desktop<\/strong><\/code><\/p>\n<\/td>\n<td data-colwidth=\"94\" width=\"94\">\n<p align=\"left\">bool<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043e\u0437\u0434\u0430\u0451\u0442 .desktop-\u0444\u0430\u0439\u043b \u0434\u043b\u044f GUI-\u043c\u0435\u043d\u044e \u0432 <code>\/usr\/share\/applications\/<\/code><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h3>\u041a\u0430\u043a \u0444\u043b\u0430\u0433\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f<\/h3>\n<p>\u0424\u043b\u0430\u0433\u0438 \u043f\u0430\u0440\u0441\u044f\u0442\u0441\u044f \u0432 <code>driver.ts<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TAPI (Terminal Argument Parser Interface) \u0438 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 <code>DebConfig<\/code>:<\/p>\n<pre><code class=\"typescript\">export interface DebConfig extends BasePackageConfig { \u00a0 type: 'deb'; \u00a0 deb: { \u00a0 \u00a0 maintainer?: string; \u00a0 \u00a0 section?: string; \u00a0 \u00a0 priority?: string; \u00a0 \u00a0 depends?: string[]; \u00a0 \u00a0 suggests?: string[]; \u00a0 \u00a0 conflicts?: string[]; \u00a0 \u00a0 replaces?: string[]; \u00a0 \u00a0 postinst?: string; \u00a0 \u00a0 postrm?: string; \u00a0 }; }<\/code><\/pre>\n<p>\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><code>--package-name<\/code>: \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>\/^[a-z0-9][a-z0-9.-]*$\/<\/code>. \u0418\u043c\u044f \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u0447\u043a\u043e\u0439\/\u0434\u0435\u0444\u0438\u0441\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u043c <code>dpkg<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>--package-version<\/code>: \u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0444\u043e\u0440\u043c\u0430\u0442 <code>\/^\\d+\\.\\d+\\.\\d+$\/<\/code>. \u0412 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0434\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u0439 \u0432\u0438\u0434\u0430 <code>1.0.0-1<\/code> \u0438\u043b\u0438 <code>1.0.0~beta1<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/h3>\n<ul>\n<li>\n<p><strong>\u0418\u043c\u044f \u043f\u0430\u043a\u0435\u0442\u0430<\/strong>: <code>dpkg<\/code> \u043e\u0442\u043a\u043b\u043e\u043d\u0438\u0442 \u043f\u0430\u043a\u0435\u0442, \u0435\u0441\u043b\u0438 \u0438\u043c\u044f \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0431\u0443\u043a\u0432\u044b \u0438\u043b\u0438 \u043d\u0430\u0440\u0443\u0448\u0430\u0435\u0442 \u0444\u043e\u0440\u043c\u0430\u0442. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>MyApp<\/code> \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 <code>myapp<\/code> \u0438\u043b\u0438 <code>my-app<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043a\u043e\u043d\u043a\u0430<\/strong>: \u0414\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c <code>.png<\/code>, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e <code>256x256<\/code>. \u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e GNOME\/KDE \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442 \u0438\u043a\u043e\u043d\u043a\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u0435\u0440\u0441\u0438\u044f<\/strong>: \u0424\u043e\u0440\u043c\u0430\u0442 <code>\\d+\\.\\d+\\.\\d+<\/code> \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u0435\u043d. \u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>1.0<\/code>) \u0432\u044b\u0437\u043e\u0432\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<h2>AsmX G3 \u043a\u0430\u043a AUR-\u043f\u0430\u043a\u0435\u0442<\/h2>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a0f\/fb4\/e6c\/a0ffb4e6c00e404792f580d3c1d3e886.webp\" width=\"1536\" height=\"1024\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/a0f\/fb4\/e6c\/a0ffb4e6c00e404792f580d3c1d3e886.webp 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a0f\/fb4\/e6c\/a0ffb4e6c00e404792f580d3c1d3e886.webp 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u044b \u0440\u0430\u0434\u044b \u043e\u0431\u044a\u044f\u0432\u0438\u0442\u044c, \u0447\u0442\u043e <code>asmx-g3-git<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0432 Arch User Repository (AUR)! \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u044b\u0439 \u0448\u0430\u0433 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 AsmX \u0432 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0443 Arch Linux, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a <code>yay<\/code> \u0438\u043b\u0438 <code>paru<\/code>. \u041f\u0430\u043a\u0435\u0442 <code>asmx-g3-git<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0438\u0437 Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0432\u0441\u0435 \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0444\u0438\u0447\u0438 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<h3>\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 AUR \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u0432\u0430\u0436\u043d\u043e?<\/h3>\n<p>AUR \u2014 \u044d\u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0434\u043b\u044f Arch Linux, \u0433\u0434\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442 PKGBUILD-\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f <code>asmx-g3-git<\/code>, <code>asmx-stable<\/code> \u0438 <code>asmx-official<\/code> \u0432 AUR \u0434\u0435\u043b\u0430\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0434\u043b\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u0443\u043f\u0440\u043e\u0449\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0438\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f. \u042d\u0442\u043e \u0448\u0430\u0433 \u043a \u0442\u043e\u043c\u0443, \u0447\u0442\u043e\u0431\u044b AsmX \u0441\u0442\u0430\u043b \u0447\u0430\u0441\u0442\u044c\u044e \u043f\u043e\u0432\u0441\u0435\u0434\u043d\u0435\u0432\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043d\u0430 Arch-based \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445.<\/p>\n<h3>\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u0430\u043a\u0435\u0442\u044b<\/h3>\n<ul>\n<li>\n<p><code><strong>asmx-g3-git<\/strong><\/code>: Bleeding-edge \u0432\u0435\u0440\u0441\u0438\u044f, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f (<a href=\"https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git<\/code><\/a>). \u041f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u0435\u0439\u0448\u0438\u0435 \u0444\u0438\u0447\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u043d\u044b\u0439 TAPI.<\/p>\n<\/li>\n<li>\n<p><code><strong>asmx-stable<\/strong><\/code>: \u0421\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u0440\u0435\u043b\u0438\u0437\u0430\u043c (+<code>v29-rev1.0<\/code>). \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u0430 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0433\u0434\u0435 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0430\u0436\u043d\u0435\u0435 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><code><strong>asmx-official<\/strong><\/code>: \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 AsmX. \u041c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439. \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f enterprise-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438\u043b\u0438 \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0443\u044e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043f\u0430\u043a\u0435\u0442\u044b<\/h3>\n<ol>\n<li>\n<p>\u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0443 \u0432\u0430\u0441 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d AUR-\u0445\u0435\u043b\u043f\u0435\u0440, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 <code>yay<\/code> \u0438\u043b\u0438 <code>paru<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">yay -S asmx-g3-git   # \u0414\u043b\u044f bleeding-edge \u0432\u0435\u0440\u0441\u0438\u0438 yay -S asmx-stable   # \u0414\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 yay -S asmx-official # \u0414\u043b\u044f \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438<\/code><\/pre>\n<p>paru -S asmx-g3-git<br \/> paru -S asmx-stable<br \/> paru -S asmx-official\u0418\u043b\u0438, \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 <code>paru<\/code>:<\/p>\n<pre><code class=\"bash\">paru -S asmx-g3-git paru -S asmx-stable paru -S asmx-official<\/code><\/pre>\n<\/li>\n<li>\n<p> \u041f\u0430\u043a\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438: <\/p>\n<ul>\n<li>\n<p>\u0421\u043a\u0430\u0447\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f <a href=\"https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 (<code>nodejs<\/code>, <code>bash<\/code>, <code>npm<\/code>, <code>jq<\/code>, <code>typescript<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>npm run build<\/code> (\u0434\u043b\u044f <code>asmx-g3-git<\/code>) \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 (\u0434\u043b\u044f <code>asmx-stable<\/code> \u0438 <code>asmx-official<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a <code>asmx<\/code> \u0432 <code>\/usr\/bin\/<\/code> \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0432 <code>\/usr\/share\/doc\/asmx-g3-git\/<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 PKGBUILD<\/h3>\n<p>PKGBUILD \u0434\u043b\u044f <code>asmx-g3-git<\/code> \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0447\u0438\u0441\u0442\u0443\u044e \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u0443\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443:<\/p>\n<ul>\n<li>\n<p><strong>\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a<\/strong>: \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u0442 Git-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 AsmX (<code>git+<\/code><a href=\"https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git\" rel=\"noopener noreferrer nofollow\"><code>https:\/\/github.com\/AsmXFoundation\/AsmX-G3.git<\/code><\/a>).<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/strong>: <\/p>\n<ul>\n<li>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b: <code>nodejs<\/code>, <code>bash<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438: <code>git<\/code>, <code>npm<\/code>, <code>jq<\/code> (\u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 package.json), typescript.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0421\u0431\u043e\u0440\u043a\u0430<\/strong>: <\/p>\n<ul>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (<code>typescript<\/code>, <code>@types\/node<\/code>).<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>npm install --ignore-scripts<\/code> \u0434\u043b\u044f \u043c\u0438\u043d\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043b\u0438\u0448\u043d\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0447\u0435\u0440\u0435\u0437 <code>npm run build<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/strong>: <\/p>\n<ul>\n<li>\n<p>\u041a\u043e\u043f\u0438\u0440\u0443\u0435\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0432 <code>\/usr\/lib\/node_modules\/asmx-g3\/<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u0442 \u0441\u0438\u043c\u043b\u0438\u043d\u043a <code>\/usr\/bin\/asmx<\/code> \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u043f\u0440\u0430\u0432\u0430 (755 \u0434\u043b\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0430, 644 \u0434\u043b\u044f \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432).<\/p>\n<\/li>\n<li>\n<p>\u0427\u0438\u0441\u0442\u0438\u0442 <code>package.json<\/code> \u043e\u0442 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 npm-\u043f\u043e\u043b\u0435\u0439 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>jq<\/code>) \u0438 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0443\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e (<a href=\"http:\/\/README.md\" rel=\"noopener noreferrer nofollow\"><code>README.md<\/code><\/a>) \u0432 <code>\/usr\/share\/doc\/asmx-g3-git\/<\/code>.<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>\u0412\u0435\u0440\u0441\u0438\u044f<\/strong>: \u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 Git: <code>r&amp;lt;\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043c\u0438\u0442\u043e\u0432&amp;gt;.&amp;lt;\u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0439 \u0445\u044d\u0448&amp;gt;<\/code> (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>r17.c89a3ce<\/code>).<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430<\/h3>\n<ul>\n<li>\n<p><strong>\u0423\u0434\u043e\u0431\u0441\u0442\u0432\u043e<\/strong>: \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 AUR \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442 AsmX \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0434\u0435\u043b\u0430\u044f \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <code>asmx<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0431\u043e\u0440<\/strong>: \u0422\u0440\u0438 \u043f\u0430\u043a\u0435\u0442\u0430 (<code>asmx-g3-git<\/code>, <code>asmx-stable<\/code>, <code>asmx-official<\/code>) \u0434\u0430\u044e\u0442 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u2014 \u043e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043e \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f<\/strong>: AUR-\u0445\u0435\u043b\u043f\u0435\u0440\u044b \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043c\u043c\u0438\u0442\u044b (<code>asmx-g3-git<\/code>) \u0438\u043b\u0438 \u0440\u0435\u043b\u0438\u0437\u044b (<code>asmx-stable<\/code>, <code>asmx-official<\/code>), \u0443\u043f\u0440\u043e\u0449\u0430\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e<\/strong>: \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432 AUR \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0435\u0442 Arch-\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439, \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044f \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044e \u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u044f \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u043a\u0430\u043c\u043d\u0438<\/h3>\n<ul>\n<li>\n<p><strong>Git-\u0432\u0435\u0440\u0441\u0438\u044f<\/strong>: <code>asmx-g3-git<\/code> \u2014 \u044d\u0442\u043e bleeding-edge, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b \u043d\u0435\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 <code>asmx-stable<\/code> \u0438\u043b\u0438 <code>asmx-official<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438<\/strong>: \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e <code>nodejs<\/code>, <code>npm<\/code> \u0438 <code>typescript<\/code> \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0434\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a \u0441\u0431\u043e\u0440\u043a\u0438. \u0422\u0430\u043a\u0436\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <code>jq<\/code> \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 <code>package.json<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>AUR-\u0445\u0435\u043b\u043f\u0435\u0440\u044b<\/strong>: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (<code>yay<\/code>, <code>paru<\/code>) \u0434\u043b\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u0440\u0430\u0432\u0430<\/strong>: \u0415\u0441\u043b\u0438 \u0441\u0438\u043c\u043b\u0438\u043d\u043a <code>\/usr\/bin\/asmx<\/code> \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u043d\u0430 <code>\/usr\/lib\/node_modules\/asmx-g3\/bin\/asmx<\/code> (\u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c 755).<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0431\u043e\u0440 \u043f\u0430\u043a\u0435\u0442\u0430<\/strong>: \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u043a\u0430\u043a\u043e\u0439 \u043f\u0430\u043a\u0435\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 <code>asmx-stable<\/code> \u0434\u043b\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u043c\u0435\u0436\u0434\u0443 \u043d\u043e\u0432\u044b\u043c\u0438 \u0444\u0438\u0447\u0430\u043c\u0438 \u0438 \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\u044e.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041a\u0430\u043a \u0432\u043d\u0435\u0441\u0442\u0438 \u0432\u043a\u043b\u0430\u0434<\/h3>\n<p>AUR-\u043f\u0430\u043a\u0435\u0442 \u2014 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0431\u0430\u0433 \u0438\u043b\u0438 \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c PKGBUILD, \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 issue \u0438\u043b\u0438 pull request \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 AUR \u0438\u043b\u0438 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 <code>AsmXFoundation\/AsmX-G3<\/code>. \u041c\u044b \u0446\u0435\u043d\u0438\u043c \u0432\u043a\u043b\u0430\u0434 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430!<\/p>\n<h4>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h4>\n<p>AsmX G3 v29 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435, \u0430 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0441\u043a\u0430\u0447\u043e\u043a. \u041c\u044b \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 \u044f\u0434\u0440\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u043e\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438, \u043d\u043e \u0438 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0448\u0430\u0433 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438. \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u0430\u0448 \u043a\u043e\u0434 \u0432 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 Debian-based \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445. \u041f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0442\u0440\u0451\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 AUR \u2014 <code>asmx-g3-git<\/code> \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0442\u043e\u0440\u043e\u0432, <code>asmx-stable<\/code> \u0434\u043b\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u0438 <code>asmx-official<\/code> \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d\u0430 \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 AsmX \u0434\u043b\u044f Arch-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0434\u0435\u043b\u0430\u044f AsmX \u0447\u0430\u0441\u0442\u044c\u044e \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u044b Linux.<\/p>\n<p>\u041c\u044b \u043e\u0441\u0442\u0430\u0451\u043c\u0441\u044f \u0432\u0435\u0440\u043d\u044b \u043d\u0430\u0448\u0435\u0439 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u0438: \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0447\u0451\u0440\u043d\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432, \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u041e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 (<code>v2<\/code>, <code>v3<\/code>, <code>v4<\/code>) \u0432 \u043f\u043e\u043b\u044c\u0437\u0443 \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f CPUID \u2014 \u044d\u0442\u043e \u043d\u0430\u0448 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u044b\u0437\u043e\u0432\u044b \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438. \u041c\u044b \u0441\u0442\u0440\u043e\u0438\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0441\u0432\u043e\u0439 \u043a\u043e\u0434.<\/p>\n<p>\u041d\u043e \u044d\u0442\u043e \u043d\u0435 \u043a\u043e\u043d\u0435\u0446. \u0412\u043f\u0435\u0440\u0435\u0434\u0438 \u2014 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u043d\u043e\u0432\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. AsmX \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u0435. \u041a\u043e\u0434 \u043e\u0442\u043a\u0440\u044b\u0442, AUR-\u043f\u0430\u043a\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d, \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0441\u0442\u0451\u0442. \u0416\u0434\u0451\u043c \u0432\u0430\u0448\u0438\u0445 \u0438\u0434\u0435\u0439, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0439\u0442\u0435 \u0431\u0430\u0433-\u0440\u0435\u043f\u043e\u0440\u0442\u044b. \u041c\u044b \u043d\u0435 \u0436\u0434\u0451\u043c \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u2014 \u043c\u044b \u0441\u0442\u0440\u043e\u0438\u043c.  \u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c \u043a \u043d\u0430\u043c, \u0438 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/944064\/\"> https:\/\/habr.com\/ru\/articles\/944064\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<h2>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041c\u044b \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f. \u041c\u044b \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0432\u0430\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438. \u041f\u043e\u043a\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u043c. \u041f\u043e\u043a\u0430 \u0441\u043a\u0435\u043f\u0442\u0438\u043a\u0438 \u0441\u043e\u043c\u043d\u0435\u0432\u0430\u044e\u0442\u0441\u044f, \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u0434. <strong>AsmX G3 v29<\/strong> \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0440\u0435\u043b\u0438\u0437. \u042d\u0442\u043e \u043d\u0430\u0448 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441: \u00ab\u041a\u0430\u043a \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432 2025 \u0433\u043e\u0434\u0443?\u00bb. \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0451\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0436\u0435\u043b\u0435\u0437\u043e\u043c, \u043e\u0442 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0434\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0446\u0438\u0438 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f, \u0433\u0434\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0430 \u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0441\u0442\u044c \u2014 \u043d\u0435 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441, \u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442.<\/p>\n<p>\u042d\u0442\u043e\u0442 \u0440\u0435\u043b\u0438\u0437 \u2014 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u044b\u0441\u044f\u0447 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430, \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0445 \u043d\u043e\u0447\u0435\u0439 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430. \u041c\u044b \u0443\u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u0432\u0430\u0448\u0438 \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u043a\u0440\u0438\u0442\u0438\u043a\u0443 \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041c\u044b \u043d\u0435 \u043f\u043e\u0448\u043b\u0438 \u043d\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u044b \u0441 \u043d\u0430\u0448\u0438\u043c \u0432\u0438\u0434\u0435\u043d\u0438\u0435\u043c, \u043d\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438 AsmX \u0431\u043b\u0438\u0436\u0435 \u043a \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u0430\u0434\u0430\u0447\u0430\u043c: \u043e\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 \u043d\u0430 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b Linux-\u0441\u0438\u0441\u0442\u0435\u043c. \u0421 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 <code>.deb<\/code>-\u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0435\u0439 \u0432 AUR \u043c\u044b \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0434\u0432\u0435\u0440\u0438 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u043e\u0442\u044f\u0442 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0434, \u0430 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u0435\u0433\u043e \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443.<\/p>\n<p>\u041f\u0440\u0438\u0433\u043e\u0442\u043e\u0432\u044c\u0442\u0435\u0441\u044c. AsmX G3 v29 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440. \u042d\u0442\u043e \u043c\u043e\u0441\u0442 \u043c\u0435\u0436\u0434\u0443 \u0432\u0430\u0448\u0438\u043c \u043a\u043e\u0434\u043e\u043c \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043c\u0438\u0440\u043e\u043c. \u042d\u0442\u043e \u043d\u0430\u0448 \u0432\u044b\u0437\u043e\u0432 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438 \u2014 \u0438 \u043f\u0440\u0438\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 \u0432\u0430\u043c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e.<\/p>\n<h3>\u041e \u0433\u043b\u0430\u0432\u043d\u043e\u043c: \u041f\u0440\u044f\u043c\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u043e\u0441\u0442\u0440\u044b\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u044b<\/h3>\n<p>\u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0431\u044b\u043b\u043e \u043c\u043d\u043e\u0433\u043e \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0439. \u042f \u0446\u0435\u043d\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u0434\u0430\u0436\u0435 \u0441\u0430\u043c\u0443\u044e \u0440\u0435\u0437\u043a\u0443\u044e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u044f\u0441\u043d\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432 \u0440\u0430\u0437 \u0438 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430.<\/p>\n<blockquote>\n<p><strong>1. \u00ab\u041d\u0435 \u044f\u0441\u0435\u043d \u043a\u043e\u043c\u0443 \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0443\u0436\u0435\u043d (\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0435\u0442 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430)&#8230;\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0417\u0430\u043a\u0430\u0437\u0447\u0438\u043a? \u0421\u043a\u0430\u0436\u0438\u0442\u0435, \u043a\u0442\u043e \u0431\u044b\u043b \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u043c \u0443 \u041a\u0435\u0440\u043d\u0438\u0433\u0430\u043d\u0430 \u0438 \u0420\u0438\u0442\u0447\u0438, \u043a\u043e\u0433\u0434\u0430 \u043e\u043d\u0438 \u0432 \u0441\u0442\u0435\u043d\u0430\u0445 Bell Labs \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438\u00a0<code>C<\/code>? \u041a\u0442\u043e \u0437\u0430\u043a\u0430\u0437\u044b\u0432\u0430\u043b \u041b\u0438\u043d\u0443\u0441\u0443 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441\u0443 \u044f\u0434\u0440\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u043c\u0438\u0440\u0430? \u0412\u0435\u043b\u0438\u043a\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0440\u043e\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0438\u0437 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u043e\u0432, \u0430 \u0438\u0437 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u043e\u0439 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438 \u0432\u0438\u0434\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u043f\u0446\u0438\u044f, \u0430 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043f\u0440\u0438\u0445\u043e\u0434\u044f\u0442 \u0442\u0443\u0434\u0430, \u0433\u0434\u0435 \u0435\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438.\u00a0<code>Kotlin<\/code>\u00a0\u0433\u043e\u0434\u0430\u043c\u0438 \u0431\u044b\u043b \u043d\u0438\u0448\u0435\u0432\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c, \u043f\u043e\u043a\u0430 \u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u0434\u043b\u044f Android. \u041c\u044b \u0438\u0433\u0440\u0430\u0435\u043c \u0432\u0434\u043e\u043b\u0433\u0443\u044e. \u0410 \u0447\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u043d\u0435\u0433 \u2014 \u0434\u0430, \u044f \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0434\u0443\u043a\u0442. \u041d\u043e \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0441\u0442\u043e\u0438\u0442\u044c \u0434\u043e\u0440\u043e\u0433\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u0438, \u0442\u044b\u0441\u044f\u0447\u0438 \u0447\u0430\u0441\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0431\u0435\u0441\u0441\u043e\u043d\u043d\u044b\u0435 \u043d\u043e\u0447\u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432 \u0438\u043c\u0435\u044e\u0442 \u0441\u0432\u043e\u044e \u0446\u0435\u043d\u0443.<\/p>\n<blockquote>\n<p><strong>2. \u00ab&#8230;\u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0435\u043b\u0430\u044e\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0438&#8230; \u042d\u0442\u043e\u0433\u043e \u0448\u0430\u0433\u0430 \u043d\u0435\u0442.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u041c\u044b \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b, \u0430 \u043d\u0435 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u043a\u0438. \u041d\u0430\u0448\u0430 &#171;\u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c&#187; \u2014 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043a\u043e\u0434, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0447\u0435\u0440\u043f\u044b\u0432\u0430\u044e\u0449\u0438\u043c\u0438 \u0442\u0435\u0441\u0442\u0430\u043c\u0438. \u041c\u044b \u043d\u0435 \u0442\u0440\u0430\u0442\u0438\u043c \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u0433\u0438\u043f\u043e\u0442\u0435\u0437, \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432 \u0430\u043a\u0430\u0434\u0435\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445 \u0441 \u0438\u0445\u00a0<code>Haskell<\/code>\u00a0\u0438 \u043c\u043e\u043d\u0430\u0434\u0430\u043c\u0438. \u041d\u0430\u0448\u0430 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044f \u2014 \u044d\u0442\u043e \u043a\u043e\u0434\u043e\u0432\u0430\u044f \u0431\u0430\u0437\u0430, \u0430 \u043d\u0430\u0448\u0438 \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430 \u2014 \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 \u0442\u0435\u0441\u0442\u044b, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440\u00a0<code>hwm\/units<\/code>. \u041c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0438\u0434\u0435\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043e\u0441\u0445\u0438\u0449\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435. \u042d\u0442\u043e \u043d\u0435 &#171;\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0448\u0430\u0433\u0430&#187;, \u044d\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0430\u0433\u043c\u0430\u0442\u0438\u0447\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434.<\/p>\n<blockquote>\n<p><strong>3. \u00ab\u041a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430&#8230; \u0443\u0436\u0430\u0441\u0435\u043d&#8230; \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u0435\u043d\u044b \u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432&#8230;\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0444\u0430\u043a\u0442\u043e\u0432, \u0430 \u043d\u0435 \u044d\u043c\u043e\u0446\u0438\u0439. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b (<code>ISA<\/code>) \u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0435\u0451 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043c\u043e\u0434\u0443\u043b\u0435\u00a0<code>hwm<\/code>\u00a0(Hardware Machine)\u00a0<strong>\u0443\u0436\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b<\/strong>.<\/p>\n<ul>\n<li>\n<p><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b<\/strong>\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0444\u0430\u0439\u043b\u0435\u00a0<code>tbl.cts<\/code>. \u042d\u0442\u043e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u0438 \u0438\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p><strong>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/strong>\u00a0\u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u00a0<code>main.cts<\/code>. \u042d\u0442\u043e \u043b\u043e\u0433\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0435\u0440\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u00a0<code>tbl<\/code>\u00a0\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0432 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434.<\/p>\n<\/li>\n<li>\n<p><strong>\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u0432<\/strong>\u00a0(<code>rdb<\/code>) co-\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0432\u00a0<code>main.cts<\/code>\u00a0\u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430, \u043d\u043e \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044c.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u0440\u0430\u0437\u043d\u044b\u0435, \u0447\u0435\u0442\u043a\u043e \u043e\u0447\u0435\u0440\u0447\u0435\u043d\u043d\u044b\u0435 \u0440\u043e\u043b\u0438. \u042d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043e JSON. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0437\u0434\u0435\u0441\u044c \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0434\u043e\u0431\u0440\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0445\u0440\u0443\u043f\u043a\u0438\u0439 \u0441\u043b\u043e\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u0438 \u043f\u043e\u0442\u0435\u0440\u044f\u0442\u044c \u0432\u0441\u044e \u043c\u043e\u0449\u044c \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0440\u043e\u0433\u043e\u0439 \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u0434\u0430\u0435\u0442 TypeScript. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 &#171;\u0441\u044b\u0440\u044b\u0445&#187; \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0437 JSON \u0432 \u0441\u043b\u043e\u0436\u043d\u044b\u0435, \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b \u2014 \u044d\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0439 \u0448\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043e\u0448\u0438\u0431\u043e\u043a. \u0412\u044b \u043f\u0440\u043e\u0441\u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 TypeScript \u2014 \u0432\u044b \u0435\u0433\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0438 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0435\u0433\u043e \u0441\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043f\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443. \u041c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0443\u044e \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c, \u0430 \u043d\u0435 \u0441\u043b\u0435\u043f\u043e\u0435 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u043d\u0434\u0430\u043c.<\/p>\n<blockquote>\n<p><strong>4. \u00ab&#8230;\u043f\u0440\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u2013 \u043d\u0438 \u0441\u043b\u043e\u0432\u0430.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0447\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u043d\u043e? \u0410\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432? \u0415\u0441\u043b\u0438 \u0440\u0435\u0447\u044c \u043e \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f\u0445, \u0442\u0430\u043a\u0438\u0445 \u043a\u0430\u043a \u0444\u043e\u0440\u043c\u044b\u00a0<code>SSA<\/code>\u00a0(Static Single Assignment), \u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0430\u0441\u0441\u0435\u043c\u0431\u043b\u0435\u0440\u0430 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0443\u043c\u0435\u0441\u0442\u043d\u044b. AsmX \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0436\u0435\u043b\u0435\u0437\u043e\u043c. \u0415\u0433\u043e \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f \u2014 \u043d\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u043e\u043c \u043d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u0434, \u0430 \u0434\u0430\u0442\u044c \u0435\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u00a0\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439.<\/p>\n<p>\u041c\u044b \u0434\u0430\u0435\u043c \u0432 \u0440\u0443\u043a\u0438 \u0445\u0438\u0440\u0443\u0440\u0433\u0430 \u0441\u043a\u0430\u043b\u044c\u043f\u0435\u043b\u044c, \u0430 \u043d\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0440\u043e\u043d. \u0418\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 LLVM \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043b\u0430 \u0431\u044b \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0433\u0440\u043e\u043c\u043e\u0437\u0434\u043a\u0443\u044e, \u043c\u043d\u043e\u0433\u043e\u044f\u0437\u044b\u043a\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0438 \u043b\u0438\u0448\u0438\u043b\u0430 \u0431\u044b \u043d\u0430\u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u2014 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f. \u041c\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0447\u0438\u0441\u0442\u043e\u0442\u0443, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043f\u0440\u044f\u043c\u043e\u0442\u0443. \u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u043b\u043e\u0436\u0435\u043d\u0430 \u0432 \u0441\u0430\u043c\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0448\u0438\u043d\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u0435\u0437 &#171;\u0447\u0435\u0440\u043d\u044b\u0445 \u044f\u0449\u0438\u043a\u043e\u0432&#187;.<\/p>\n<h2>\u0412\u043f\u0435\u0440\u0435\u0434, \u0432 64-\u0431\u0438\u0442\u043d\u043e\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u043d\u0435 \u043e\u0433\u043b\u044f\u0434\u044b\u0432\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u0437\u0430\u0434<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u0438\u0441\u0442\u043e\u0442\u0443: 32-\u0431\u0438\u0442\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043b\u0433. \u041c\u044b \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0448\u043b\u043e\u0433\u043e.<\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438\u00a0<code>x86<\/code>\u00a0\u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u043e\u0431\u0438\u043b\u044c \u0441 \u043a\u0430\u0440\u0431\u044e\u0440\u0430\u0442\u043e\u0440\u043e\u043c. \u0417\u0430\u0447\u0435\u043c? \u0427\u0442\u043e\u0431\u044b \u043f\u043e\u0442\u043e\u043c \u0433\u0435\u0440\u043e\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043d\u0430 64-\u0431\u0438\u0442\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443? \u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e. \u041c\u044b \u0441\u0440\u0430\u0437\u0443 \u0441\u0442\u0440\u043e\u0438\u043c \u043d\u0430 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0435 \u2014\u00a0<code>amd64<\/code>\u00a0(<code>x86_64<\/code>), \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0437\u0434\u0435\u0441\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0438 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u0413\u0438\u0433\u0430\u043d\u0442\u044b \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a\u00a0<code>gcc<\/code>\u00a0\u0438\u00a0<code>clang<\/code>, \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d\u044b \u0442\u0430\u0449\u0438\u0442\u044c \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0439 \u0431\u0430\u0433\u0430\u0436 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 32-\u0431\u0438\u0442\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u042d\u0442\u043e\u0442 &#171;\u043b\u0438\u0448\u043d\u0438\u0439 \u0432\u0435\u0441&#187; \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442 \u0438\u0445 \u0438 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442. \u041c\u044b \u0436\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b \u043e\u0442 \u044d\u0442\u043e\u0433\u043e. \u041d\u0430\u0448 \u0444\u043e\u043a\u0443\u0441 \u043d\u0430\u00a0<code>amd64<\/code>\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435, \u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e. \u041c\u044b \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u043b\u0435\u0433\u043a\u0438\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043c\u0438\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0441\u0442\u0430\u043b 64-\u0431\u0438\u0442\u043d\u044b\u043c.<\/p>\n<h2>\u041c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b: \u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u00ab\u041d\u0435\u0442\u00bb \u0431\u0435\u0437\u0443\u043c\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u0435\u0439<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u043c\u0438\u043a\u0440\u043e\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\u0445. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u0430\u044f \u0442\u0435\u043c\u0430, \u043f\u043e\u043b\u043d\u0430\u044f \u043d\u044e\u0430\u043d\u0441\u043e\u0432, \u0438, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043f\u043e\u043b\u043d\u0430\u044f \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0439. \u0412 \u043c\u0438\u0440\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0442\u043e, \u043a\u0430\u043a \u0432\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u0435 \u043a \u044d\u0442\u043e\u043c\u0443 \u0432\u043e\u043f\u0440\u043e\u0441\u0443, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0435 \u043b\u0438 \u0432\u044b \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u043b\u0438 \u0445\u0440\u0443\u043f\u043a\u0443\u044e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e, \u0433\u043e\u0442\u043e\u0432\u0443\u044e \u0440\u0430\u0441\u0441\u044b\u043f\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u0432\u0430\u0441, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043b\u044b\u0448\u0430\u043b\u0438 \u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 &#171;\u0443\u0440\u043e\u0432\u043d\u044f\u0445&#187; <code>x86-64<\/code>: <code>v2<\/code>, <code>v3<\/code>, <code>v4<\/code>. \u042d\u0442\u043e \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u0432 \u043f\u043e \u043d\u0430\u0431\u043e\u0440\u0443 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0438\u0434\u0435\u044f \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0437\u0434\u0440\u0430\u0432\u043e\u0439. \u0412\u043e\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 \u043f\u043e\u0434\u0445\u043e\u0434:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">$ \/lib64\/ld-linux-x86-64.so.2 --help Subdirectories of glibc-hwcaps directories, in priority order:   x86-64-v4 (supported, searched)   x86-64-v3 (supported, searched)   x86-64-v2 (supported, searched)<\/code><\/pre>\n<p><em>\u041d\u0430\u0434\u043f\u0438\u0441\u044c <\/em><code><em>(supported, searched)<\/em><\/code><em> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u0430\u0448\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0433\u043e\u0442\u043e\u0432\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c\u0438 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439.<\/em><\/p>\n<p>\u041a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b, \u0443\u0434\u043e\u0431\u043d\u043e. \u0411\u0435\u0440\u0438 \u0441\u0430\u043c\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u0431\u0435\u0437\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0447\u043d\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u044b \u0441 \u043c\u043d\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u043d\u0430\u0435\u0442 \u043e \u0436\u0435\u043b\u0435\u0437\u0435 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u043a\u0442\u043e-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0439.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u043e \u043f\u0438\u0441\u044c\u043c\u043e \u043e\u0442 \u041b\u0438\u043d\u0443\u0441\u0430 \u0422\u043e\u0440\u0432\u0430\u043b\u044c\u0434\u0441\u0430, \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u044f Linux. \u042d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u043d\u0435\u043d\u0438\u0435, \u044d\u0442\u043e \u043f\u0440\u0438\u0433\u043e\u0432\u043e\u0440.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u043e\u043d \u0442\u0430\u043a \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0447\u0435\u043d, \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u043d\u0430 100%.<\/p>\n<p><strong>1. \u042d\u0442\u043e \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u0430\u044f \u0438 \u043d\u0435\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.<\/strong><br \/> \u041b\u0438\u043d\u0443\u0441 \u043f\u0438\u0448\u0435\u0442: <em>&#171;The whole &#171;v2&#187;, &#171;v3&#187;, &#171;v4&#187; etc naming seems to be some crazy glibc artifact&#8230; as far as I can tell, the &#171;microarchitecture levels&#187; garbage&#8230; is&#8217;s entirely unofficial&#187;<\/em>.<\/p>\n<p>\u042d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438 \u2014 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 Intel \u0438\u043b\u0438 AMD. \u042d\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f, \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u043d\u0430\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 <code>glibc<\/code> \u0434\u043b\u044f \u0441\u0432\u043e\u0438\u0445 \u043d\u0443\u0436\u0434. \u041f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0435 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c \u2014 \u0437\u043d\u0430\u0447\u0438\u0442 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u043c \u043d\u0430 \u0447\u0443\u0436\u043e\u043c, \u0448\u0430\u0442\u043a\u043e\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0435.<\/p>\n<p><strong>2. \u041b\u0438\u043d\u0435\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e.<\/strong><br \/> <em>&#171;Trying to linearize those bits is technically wrong, since these things simply aren&#8217;t some kind of linear progression.&#187;<\/em><\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0430, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u0430\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0443\u043f\u0435\u043d\u044c\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0432\u0441\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435. \u042d\u0442\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u0434\u0435\u0440\u0435\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u0438\u0437 &#171;v3&#187; (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>AVX2<\/code>), \u043d\u043e \u043d\u0435 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0439, \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0430\u0440\u043e\u0439. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c \u044d\u0442\u043e \u043c\u043d\u043e\u0433\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0432 \u0436\u0435\u0441\u0442\u043a\u0438\u0435, \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u2014 \u044d\u0442\u043e \u0441\u0430\u043c\u043e\u043e\u0431\u043c\u0430\u043d. \u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u043e\u043c\u0430\u043d\u0430 \u0432 \u0441\u0432\u043e\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u0435.<\/p>\n<p><strong>3. \u042d\u0442\u043e &#171;\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u0435&#187;, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0432\u0441\u0451 \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442.<\/strong><br \/> \u042d\u0442\u043e \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u041b\u0438\u043d\u0443\u0441\u0430: <em>&#171;And worse, it&#8217;s a &#171;simplification&#187; that literally adds complexity. Now instead of asking &#171;does this CPU support the cmpxchgb16 instruction?&#187;, the question instead becomes &#171;what the hell does &#8216;v3&#8217; mean again?&#187;<\/em><\/p>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0438 \u0447\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u0430 \u043a \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u044e (&#171;\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0448\u044c \u043b\u0438 \u0442\u044b X?&#187;), \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0432\u044b\u043d\u0443\u0436\u0434\u0435\u043d \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0439, \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0436\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u043c\u0435\u0442\u043a\u043e\u0439 <code>v3<\/code>. \u042d\u0442\u043e \u043f\u0443\u0442\u044c \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u0435 \u0438 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u043c.<\/p>\n<h3>\u041d\u0430\u0448 \u043f\u043e\u0434\u0445\u043e\u0434: \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0430\u044f \u043f\u0440\u0430\u0432\u0434\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0445\u0440\u0443\u043f\u043a\u0438\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439<\/h3>\n<p>\u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u041b\u0438\u043d\u0443\u0441, \u2014 \u044d\u0442\u043e \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 <strong>CPUID \u0431\u0438\u0442\u044b<\/strong>. \u042d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442, \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 (<code>ISA sets<\/code>) \u043e\u043d \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442. \u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u043f\u0440\u0430\u0432\u0434\u044b.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 AsmX G3 \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u0432 \u044d\u0442\u0438 \u0443\u0440\u043e\u0432\u043d\u0438. \u041d\u0430\u0448\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f \u2014 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043d\u0430\u0431\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u043e\u043d \u0445\u043e\u0447\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c: <code>SSE2<\/code>, <code>AVX<\/code>, <code>AVX512<\/code>, <code>BMI2<\/code> \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u042d\u0442\u043e \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e, \u0442\u043e\u0447\u043d\u043e \u0438 \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0436\u0435\u043b\u0435\u0437\u0430.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f <code>SSE6<\/code>, \u043e\u043d \u0441\u0442\u0430\u043d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u043d\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430\u0445 \u043a\u0430\u043a \u043d\u043e\u0432\u044b\u0439, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439. \u041f\u044b\u0442\u0430\u0442\u044c\u0441\u044f &#171;\u0432\u0442\u0438\u0441\u043d\u0443\u0442\u044c&#187; \u0435\u0433\u043e \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u044e \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u0431\u044b\u043b\u043e \u0431\u044b \u0430\u0431\u0441\u0443\u0440\u0434\u043e\u043c.<\/p>\n<p>\u041c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0434\u043b\u044f \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0446\u0435\u043d\u044f\u0442 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u043c \u044d\u0442\u0443 \u0433\u043b\u0430\u0432\u0443, \u0446\u0438\u0442\u0438\u0440\u0443\u044f \u0444\u0438\u043d\u0430\u043b \u0442\u043e\u0433\u043e \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0438\u0441\u044c\u043c\u0430:<\/p>\n<blockquote>\n<p><strong>\u00abSo no. We are <em>NOT<\/em> introducing that idiocy in the kernel.\u00bb<\/strong><\/p>\n<\/blockquote>\n<p>\u0418 \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435:<br \/> <strong>\u0422\u0430\u043a \u0447\u0442\u043e \u043d\u0435\u0442. \u041c\u044b \u041d\u0415 \u0432\u0432\u043e\u0434\u0438\u043c \u044d\u0442\u043e\u0442 \u0438\u0434\u0438\u043e\u0442\u0438\u0437\u043c \u0432 \u043d\u0430\u0448 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440.<\/strong><\/p>\n<h2>\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 TAPI: \u0411\u043e\u043b\u0435\u0435 \u0433\u0438\u0431\u043a\u0438\u0439 \u043f\u0430\u0440\u0441\u0438\u043d\u0433 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/h2>\n<p>TAPI \u2014 \u044d\u0442\u043e \u043d\u0430\u0448 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043f\u0430\u0440\u0441\u0435\u0440 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435\u0445 \u0444\u043b\u0430\u0433\u043e\u0432 \u0438 \u043a\u043e\u043c\u0430\u043d\u0434. \u0412 v29 \u043c\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u043b\u0438 \u0435\u0433\u043e, \u0441\u0434\u0435\u043b\u0430\u0432 \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u044b\u043c \u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u043c \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c. \u0412\u043e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 <\/strong><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-473990","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/473990","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=473990"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/473990\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=473990"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=473990"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=473990"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}