LINUX.ORG.RU

Продемонстрирована возможность использования GCC для JIT-компиляции

 ,


1

4

В GCC версии 5 будет доступна возможность jit-компиляции исходного кода и встраивание GCC в виде разделяемой библиотеки libgccjit в другие программы. Новые возможности были продемонстрированы на примере небольшого интерпертатора brainfuck.

>>> Подробности



Проверено: toney ()

Т.е. теперь можно будет писать скрипты на Си для сишных программ? Всё лучше, чем обмазываться lua или, Ктулху спаси и сожри, JavaScript...

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

Я как-то ставил одну рисовалку, когда увлекался несложным пиксель-артом. Понравилась тем, что там была очень удобная сетка.

Так вот, там была очень занятная вещь — C Scripts. А устроено было довольно интересно, рисовалка просто имела свои хедеры, которые автоматом включались в скрипт. Писалось как обычное приложение, компилялось тоже обычным GCC, но линковалось с библиотекой программы. И наконец, собранный бинарь запускал новый экземпляр рисовалки с получившейся картинкой.

Вспомнил как зовётся — XPaint.

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

лучше чем lua? может ты просто ниасилил?

x4DA ★★★★★
()

To make it easy, let’s construct a compiler for an esoteric programming language that we shall refer to as “brainf”.

Изи так изи...

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

ЧСХ, компилятор в статье по ссылке написан на питоне

Пофикшено.

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

Всё лучше, чем обмазываться lua или, Ктулху спаси и сожри, JavaScript...

Есть еще Squirrel. Си-подобный синтаксис + ООП из коробки.

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

А теперь будет просто Си. Просто и понятно.

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

Чтобы не заниматься любовью с памятью и макросами.

Deleted
()

Хорошая новость. Теперь не исключено, что программы, скомпилированные GCC, смогут в отдалённом будущем работать почти также быстро, как и программы на Java.

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

Ну тогда скажу, что нет, tcg этим не заменить.

t184256 ★★★★★
()

Божественно! Критические, в плане оптимизации, куски программы выносятся в jit и автоматом собираются при запуске. Идеология Gentoo в каждом дистрибутиве.

A-234 ★★★★★
()

Еще одна возможность завязать программу на гцц онли? Полезно, ничего не скажешь.

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

Т.е. теперь можно будет писать скрипты на Си для сишных программ? В

man tcc man libtcc

anonymous
()

Интересно. Ждем реализаций

sehellion ★★★★★
()

теперь в GCC есть брейнфак

шлангокапец?

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

хочу jit для питона, а то pypy стал каким-то слишком теоретическим.

JIT для динамически типизированного языка - вещь специфическая, и дистанция от него до libgccjit очень велика.

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

ок. хочу jit для питона, а то pypy стал каким-то слишком теоретическим.

Гвидо в Дропбоксе как раз пилит что-то такое под названием Pyston.

FoodFighter
()

Позитивно, может теперь отладчики улучшатся значительно по типу .Net-а!

GladAlex ★★★★★
()

может лучше Tcc?

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

теперь можно будет писать скрипты на Си
лучше, чем обмазываться lua

Вот я посмеюсь, когда выяснится, что luajit в пару раз быстрее gccgit.

mix_mix ★★★★★
()

Новая фича - тормоза и чудеса линковки онлайн.

Napilnik ★★★★★
()

Офигеть, буквально на днях думал, что нечто такое было бы в некоторых случаях удобно...

def current_data_is_zero(self, loc):
        """Get 'data_cells[idx] == 0' as a boolean rvalue."""
        return self.ctxt.new_comparison(gccjit.Comparison.EQ,
                                        self.get_current_data(loc),
                                        self.byte_zero,
                                        loc)

...но не в таком же виде! А ведь это всего лишь сравнение data[idx] == 0.

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

программы, скомпилированные GCC, смогут в отдалённом будущем работать почти также быстро, как и программы на Java

и потреблять почти также мало памяти как и программы на Java?

mbivanyuk ★★★★★
()

Quake C наконец-таки довели до ума?

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

программы, скомпилированные GCC, смогут в отдалённом будущем работать почти также быстро, как и программы на Java

и потреблять почти также мало памяти как и программы на Java?

Конечно!

Valkeru ★★★★
()

Очень интересная фича. Ждем GCC 5

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

Хорошая новость. Теперь не исключено, что программы, скомпилированные GCC, смогут в отдалённом будущем работать почти также быстро, как и программы на Java.

Что, до болот тоже весна добралась? Троли выбрались из болот.

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

Пытаются догнать LLVM? :)

+1. При чём, вряд ли догонят.

http://llvm.org/docs/tutorial/LangImpl4.html

Надо было это сделать ещё в gcc-4, а не посылать разработчиков qemu лесом, вынуждая их переходить на tcg.

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

Что, до болот тоже весна добралась? Троли выбрались из болот.

Вы, видимо, не в курсе, что ява уже давно использует jit, ран-тайм профилировщики, и кучу друших техник динамической оптимизации.

anonymous
()

Жесть. Это ж оно будет компилить при каждом запуске. Можно себе представить тормоза...

Это оно будет запускаться так же медленно, как программы на шарпе, или даже еще медленей.

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

Да тут вообще во всем треде всего пару адекватных комментариев: народ походу вообще не вкуривает, что libgccjit, это просто API для JIT-компиляции с помощью GCC типа того, которое LLVM предоставляет поверх своего IR, и его можно использовать, чтобы делать method-level JITs, типа как Julia сейчас использует LLVM, а могла бы libgccjit (если бы David её написал 5-7 лет назад ;-) ). Собрались тут какие-то наркомане скрипты на Си обсуждать...

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

Гвидо в Дропбоксе как раз пилит что-то такое под названием Pyston.

Пилит, но не Гвидо.

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