LINUX.ORG.RU
ФорумTalks

Инициатива по переписыванию TeX/LaTeX на Rust

 , ,


1

3

Существует такой проект - Tectonic, он предоставляет более удобный и современный интерфейс вокруг ядра TeX, и экспортирует его в виде крейта для Rust. Однако, ядро проекта остается в почти неизменном виде, копия с оригинала на Си (автоматически сгенерированного из WEB). Поэтому нашелся энтузиаст, стартовавший переписывание всего кода на раст. Вначале он использовал набор утилит для автоматической конверсии кода на C в Rust с последующим рефакторингом - c2rust, затем вручную отрефакторил получившийся код. Если есть желание помочь проекту - вот список багов и пожеланий, которые необходимо исправить до переноса кода в мэйнстрим.

★★★★★

И чо, в нем багов меньше или он от этого работает шустрее? Или лишь бы растопипиську нарастить на миллиметр?

shimon ★★★★★
()
Ответ на: комментарий от shimon

Tectonic automatically downloads support files so you don’t have to install a full LaTeX system in order to start using it. If you start using a new LaTeX package, Tectonic just pulls down the files it needs and continues processing. The underlying “bundle” technology allows for completely reproducible document compiles.

  • Tectonic has sophisticated logic and automatically loops TeX and BibTeX as needed, and only as much as needed. In its default mode it doesn’t write TeX’s intermediate files and always produces a fully-processed document.
  • The tectonic command-line program is quiet and never stops to ask for input.
  • Thanks to the power of XeTeX, Tectonic can use modern OpenType fonts and is fully Unicode-enabled.
  • The Tectonic engine has been extracted into a completely self-contained library so that it can be embedded in other applications.
XVilka ★★★★★
() автор топика
Ответ на: комментарий от the_real_kinik

Почему Rust, а не OCaml или F#?

Потому что раст популярнее.

sT331h0rs3 ★★★★★
()
Ответ на: комментарий от Eddy_Em

Ну, почему же, хочет человек переписать на раст, пусть пишет. Если выйдет кака, ну и фиг с ней. Получится стоящая вещь — отлично.

einhander ★★★★★
()
Ответ на: комментарий от shimon

А как же! Каждый мм важен! Переписал проект с Си на Раст — у тебя пипирка отрасла, а у какого-нибудь сишника вроде Царька укоротилась и волос на попе поубавилось.

Virtuos86 ★★★★★
()

Странно что использован был оригинальный код на WEB, сконвертированый в C, потому что он не читаем. Уже есть как минимум cxtex и luatex, которые уже написанны на C и имеют более понятный код.

RisuX3
()
Ответ на: комментарий от RazrFalcon

C это же промежуточный язык. Код там на этом самом Web-е, как я понял.

Legioner ★★★★★
()
Ответ на: комментарий от thunar

Разве TeX не идеален?

ТеХ-то идеален, а вот С — нет. Я так понимаю.

Nervous ★★★★★
()

Предлагаю ещё и «Искусство программирования» переписать под современные реалии: «Подключил репозиторий, полистал Stackoverflow и чуть-чуть поговнокодил — всё, ура, проект готов»©

te111011010
()
Ответ на: комментарий от RazrFalcon

Вообще-то код на WEB и этот самый код выдержал несколько изданий в виде _твёрдой_ книги TeX: The Program. Много исходников других программ публиковалось в печати так, чтобы их покупали?

Evgueni ★★★★★
()
Ответ на: комментарий от thunar

Зависит от того для чего ты хочешь его использовать. Если для обучения себя в плане написания программ на раст, то очевидно нет...

P.S. К сожалению для некоторых задач вёрстки мало одного, хоть и хорошего, алгоритма разбиения абзаца на строки. Если кто-то сможет реализовать решение, где оптимизация разбиения учитывает сразу весь текст целиком (а не только конкретный абзац) с целью оптимального заполнения всех страниц, то это будет реальной киллер фичей и без разнице на чём она будет реализована. Хоть на Яве, хотя нет — это уже пробовали…

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 3)

Сколько уже было этих язычков-убийц, на которых бросались всё переписывать. А песня Write in C по-прежнему актуальна.

buddhist ★★★★★
()

Кстати, вот подумалось. Тот кнутовский TeX заморожен, так что реализовать его любым способом известным и не шибко известным человечеству вполне реально и безобидно, но чтобы на эту реализацию обратили внимание, то нужна киллер-фича помимо «другое средство реализации». Пока этой киллер-фичи нет переписывание является упражнением интересным только упражняющемуся.

Ситуация усложняется тем, что тот самый tex, уже почти десять лет как никто не использует и во всех современных дистрибутивах в качестве основного движка используется pdftex у которого в качестве «киллер-фичи» идёт использование Type1-шрифтов и микротипографика. Киллерфича xetex/luatex — unicode из коробки и подключение системных шрифтов (ttf), так что во вполне обозримом будущем они заменят pdftex по умолчанию (как только допилят микротипографику, наверное).

А что является киллерфичей топика? По ссылке вестимо не ходил ибо лень.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

В дополнение к вышесказанному список возможных киллер-фич (выдуманно из головы и может быть легко дополненным):

  • Реализация программы просмотра обновляющейся в реальном времени во время набора. В качестве примера можно привести дистрибутив BaKoMa TeX, где есть свой транслятор, свой редактор и свои шрифты, но за деньги. То есть заинтересованное сообщество найти достаточно легко. Было несколько (я тыкал палочкой две) свободных реализаций этой «хотелки», но они не были доведены до момента, когда ими удобно пользоваться.
  • Параллелизация трансляции. Сейчас TeX работает исключительно в один поток, хотя ту же оптимизацию разных абзацев можно пустить в разные потоки. Не очень понятен правда выигрыш от этого. Наверное пользу можно будет заметить, только при синергии с предыдущим пунктом.
  • Оптимизация сразу _всего_ текста, а не «сначала разбиваем абзац», замораживаем в блоки, а затем получившиеся кирпичики расставляем как получится по вертикали. Не уверен, что мощи хватит в этом случае для длинных текстов даже в теории, так что параллелизация возможно будет ключом к хоть какой-то реализации.
  • Автоматизация вёрстка газеты (много полос, перенос части статей на другие страницы). Необходимо что-то визивигнутое для руления процессом.
  • Замена имеющегося алгоритма разбиения абзаца на строки, например, эээ нейросетью которой были скормлены «лучшие образчики печатной продукции», ну или генерация нового алгоритма путём самообучения с целью создания наиболее плотного/однородного или какой-либо другого (по выбору) печатного результата.
  • TeX для WWW. Не очень понятно, почему пользователи не печатной продукции должны страдать от отсутствия грамотной вёрстки. Желательно в виде движка для сайтов, которые подгоняют текст на лету в зависимости от размеров экрана пользователя.

У кого-нибудь есть другие варианты?

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 1)
Ответ на: комментарий от buddhist

А песня Write in C по-прежнему актуальна.

Как там в криокамере? Новые проекты на Си - редкость.

RazrFalcon ★★★★★
()

Да сколько можно насиловать труп? При всём уважении, TeX как язык - кровавое говнище. Хуже фортрана, хуже кобола. Говорю как человек, написавший хренадцать статей, два диплома и одну диссертацию и прочитавший весь мануал по PGF/TikZ на 1200+ страниц. Дайте больному уже сдохнуть спокойно. Алсо, XeTeX. Ладно бы хоть LuaTeX взяли, он пока единственный проблеск надежды в этом болоте. Не хотим, хотим жрать легаси-говно на убогоньком недоязычке, по неосторожности случившемся тюринг-полным. Йоу, мы слышали, что вы любите Rust, поэтому мы засунули Rust в наше легаси-говно. Добавили подгрузку легаси-говна на лету, чтобы вы могли ещё больше легаси-говна, пока вы легаси-говно. Хоть позолотите какаху, вкуснее она не станет. Ох, как я рад, что больше не работаю «учёным» и больше не нужно нырять в это легаси-говно.

Алсо, по теме. Со Scribble можно брать пример, каким должен быть язык для создания документов. Но всем же пофиг, это слишком сложно, лучше ещё раз обмазаться легаси-говном, его же сам Кнут написал, поэтому оно не может быть плохим.

Pacmu3ka
()
Ответ на: комментарий от Pacmu3ka

Алсо Lilypond ещё. Чуваки быстро осознали, что кодить на TeXе = дорога на дурдом, выкинули TeX и стали юзать Guile. И всё у них хорошо.

Pacmu3ka
()
Ответ на: комментарий от shimon

Написано же, что NIH:

Вначале он использовал набор утилит для автоматической конверсии кода на C в Rust с последующим рефакторингом - c2rust, затем вручную отрефакторил получившийся код.

grem ★★★★★
()
Ответ на: комментарий от Pacmu3ka

В целом согласен, но суть в том, что уже куча полезных вещей на нём реализована. В любом другом случае все придется писать с нуля, хотя, возможно, это будет и быстрее, но всё равно займет годы, а то и больше.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от thunar

Согласен, добавление:

  • Расставлять всю нумерацию за один проход.
Evgueni ★★★★★
()
Ответ на: комментарий от XVilka

Это означает, что микротипографики ждать в subj ждать не придётся? Та ещё киллерфича.

Evgueni ★★★★★
()
Ответ на: комментарий от Pacmu3ka

Не так. Чуваки писали совсем другую программу и им был нужен вывод нот в виде твёрдой копии. Вместо того, чтобы сидеть на голой попе и страдать, они взяли готовый пакет, который это уже умел это делать aka musicTeX (? могу ошибаться в названии). После того, как их собственная программа заматерела, они взяли готовые шрифты из TeX (не стали вилосипедить) и создали своё подмножество команд для вёрстки исключительно только нот. Что и прекрасно. В самом же LaTeX от этого ничего не убыло, а систем отрисовки нот сейчас там несколько разной степени развития и поддержки.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от vertexua

Потому что принцип «а перепишем-ка это на другом ЯП шутки ради» никогда ни к чему хорошему не приведет! Ржавчина принципиально хуже С. И переписывать с хорошего ЯП на дерьмо — надо ли?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Miguel

А ничего лучше теха для верстки статей и книг нет! И любой, «верстающий» в ворде что-то больше одной страницы объемом — идиот!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А ничего лучше теха для верстки статей и книг нет!

Это всё прямо в вэб можно делать без теха, ещё лучше.

yvv ★★☆
()
Ответ на: комментарий от Miguel

Ну, хорошо, а на чём ещё писать научные статьи?

На том, что принимает конкретный журнал. Хоть в маркдауне можно.

yvv ★★☆
()
Ответ на: комментарий от Evgueni

А что является киллерфичей топика? По ссылке вестимо не ходил ибо лень.

По ссылке тоже не ходил (в конце-то концов это может быть даже опасно).

Но предположу, что код на раст можно преобразовать в WebAssembly и запускать прямо в браузере, что позволит сделать принципиально новый редактор и компилятор TeX на Electron

michwill ★★★★★
()
Ответ на: комментарий от michwill

TeX онлайн редакторов сейчас уже около десятка, включая вполне себе юзабельные в своей возможности предоставлять совместное редактирование группой авторов. Так что это таки сейчас уже не является киллер фичей и, судя по посту, все это доступно было в rust и без переписывания исходников одного бинарника на rust. Современный TeX в своей LaTeX инкарнации это не только собственно сам tex, но и много чего ещё, то есть всё равно придётся подключать дистрибутив LaTeX в нагрузку.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от Miguel

Мог бы, как 100500 других «окончательных решений» (несколько из которых я достаточно потыкал разного рода и длины палочками), вот только всё это упёрлось в то, что двухстраничную докладную записку можно написать и даже прилично оформить в чём угодно, а вот более сложные текстовые произведения требуют 100500^100500 доделок к уже «готовой идеальной базе по созданию докладных записок», каждая из которых нужно 3.5 анонимусам, но в результате из них получается почему-то вполне себе армия (меньше конечно, чем армия свидетелей «двухстраничных докладных записок», но потенциально гораздо более полезная).

Иными словами кроме LaTeX для текстов есть ещё org-mode, но это совсем на другую тему, и это, «всё, что у нас есть».

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 4)
Ответ на: комментарий от Miguel

Это «потенциальное оно» обязано поддерживать TeX-нотацию для формул, библиографию, автоматическую нумерацию и ссылки. Формально ничего больше не ограничивает, так как в журнале всё равно верстают сами. В реальности получается, что проще выложить LaTeX-стиль и рекомендации по его использованию, чтобы упростить себе жизнь и автоматизировать процесс, хотя опять же журнальный результат будет существенно отличаться от авторского, хотя бы в силу используемых шрифтов.

Evgueni ★★★★★
()
Последнее исправление: Evgueni (всего исправлений: 2)
Ответ на: комментарий от XVilka

Как у него с плагинами от классического латеха? Поддерживаются?

Dmitry_Sokolowsky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.