Xeus-Fift - Jupyter kernel для языка Fift (и ассемблер TVM)

alfacoder

New member
Сообщения
24
Лучшие ответы
0
Реакции
4
Jupyter kernel для языка Fift (и ассемблер TVM).


В итоге получаются интерактивные блокноты (jupyter) с Fift, внутри подсветка синтаксиса, автодополнение и встроенные доки

Демо:


98

Возможности

Помимо удобного интерактивного рабочего процесса Jupyter, есть следующие фичи:

  • Подсветка синтаксиса
  • Автозаполнение слов через Tab (включая те, которые включены или определены вами)
  • Shift+Tab строки документации на месте через (для слов, определенных в PDF-файлах FiftBase и TVM)
Как использовать

Запустить в докере

1. Создайте контейнер, используя проверенный образ докера:

docker run --rm -it -p 127.0.0.1:8888:8888 -v $(pwd):/home/jupyter/notebooks atomex/xeus-fift


  1. Откройте ссылку из контейнера вывода в вашем браузере
  2. Сохраняйте записные книжки в папке сопоставления, чтобы не потерять их
Установить пакет .deb


  1. Проверьте тег последней версии на https://github.com/atomex-me/xeus-fift/releases
  2. Загрузите и установите пакет
Код:
wget https://github.com/atomex-me/xeus-fift/releases/download/0.1.0/xeus-fift_0.1.0-1_amd64.deb -P /tmp/
sudo dpkg -i /tmp/xeus-fift_0.1.0-1_amd64.deb
3. Убедитесь, что Jupyter теперь поддерживает ядро Fift

jupyter kernelspec list

Установить из источников


  1. Убедитесь, что установлены следующие пакеты: libssl-dev zlib1g-dev uuid-dev
  2. Получить исходники, собрать и установить
Код:
git clone https://github.com/atomex-me/xeus-fift
cd xeus-fift
mkdir build
cd build
cmake ..
make xeus-fift
sudo make install
3. Убедитесь, что Jupyter теперь поддерживает ядро Fift

jupyter kernelspec list


Github: https://github.com/atomex-me/xeus-fift
 
Последнее редактирование:

m-kus

New member
Сообщения
1
Лучшие ответы
0
Реакции
2
Теперь и Фанси!
Можно отлаживать/прототипировать контракты прямо в браузере :)

Интерактивный режим не совсем честный, но достаточно интуитивный:
  1. В начале каждой ячейки можно подключать .fc файлы: #include "path/to/file"
  2. Все функции из подключенных файлов, а также определенные в ячейках хранятся в глобальной таблице и доступны из любой ячейки
  3. Каждый раз, когда вы что-то меняете в функции и перезапускаете ячейку - значение в глобальной таблице перезаписывается (как побочная фича - можно так делать моки)
  4. Код, не обернутый в функцию считается телом main и исполняется каждый раз заново. Также такой код не доступен из других ячеек (т.е. нельзя проинициализировать переменную в одной ячейке и испольовать в другой)
  5. В последней строчке можно опускать завершающую ; а также return, т.е. можно делать так:
Код:
<<< 2 + 2
>>> 4
<<< sum(2, 2)
>>> 4
<<< int i = 2 + 2
>>> 4
6. По дефолту подключена stdlib.fc и маленький impure хелпер print для отладки

Дополнительно:
  • подсветка синтаксиса
  • автодополнение по всем ключевикам и функциям
  • по shift+tab показывает сигнатуру функции (список и типы аргументов)
 
Сверху