LINUX.ORG.RU

Выкатили пятую демку лисп ОС Mezzano

 , , ,


4

6

https://github.com/froggey/Mezzano/releases/tag/demo5

Можно потыкать палочкой в VirtualBox, QEMU или даже на реальном железе (привет ReactOS!).

Последние изменения:

  • USB stack by fittestbits
  • Improved overall file system support by fittestbits
  • EXT2/3/4 support has been implemented by Bruno Cichon (ebrasca)
  • GMA950 modesetting display driver
  • Hardware accelerated 3D support via qemu’s Virgl device
  • Multicore/SMP support
  • Improved atomic operations
  • Async APIs: wait-for-objects, dispatch, and thread pools
  • Networking improvements: Server support, DHCP, TCP retransmit
  • Source locations are tracked for many kinds of definitions
  • Weak hash tables and other weak objects
  • Cleanup of object representation and unifcation of standard-object/structure-object
  • Unboxed structure slots
  • Short floats implemented using IEEE half floats
  • Unboxed (unsigned-byte 64) arithmetic
  • Stack overflows and memory faults are trapped and can be recovered from
  • Support for building on Windows
  • Major improvements to CLOS and MOP conformance
  • Keymap picker
  • More bug fixes, performance improvements and features

Еще в поставке есть из приложений:

  • IRC
  • Text Editor (Emacs-like)
  • Telnet
  • File manager
  • DOOM
  • Quake I
  • REPL (с доступом ко всем кишкам ОС)
  • Swank

Ух ты!!!

отпишитесь кто пробовал.

cast @den73: Денис, у тебя в ролике каком-то на ютубе в виртуалке A2 и Mezanno тоже. какие впечатления от сабжа?

ещё, если кто-то хочет попробовать лисп-машину Genera (OpenGenera) от Symbolics классическую, здесь руководство сиё о том, как это сделать невозбранно достигнув желаемого из-под Linux.

там есть три книжки в pdf:

  1. Genera concepts

  2. Genera user’s guide

  3. Lisp Lore: A Guide to Programming the Lisp Machine.

третья довольно таки научно-популярна. написана простым языком, с примерами.

кратко описывается flavors (объектная система ДО этого вашего CLOS) и отличия ZetaLisp от CL, отличия flavors до CLOS.

в примерах в книжке есть некоторые зайчатки истинного метапрога : программа рисования диаграмм, деревьев, на Common Lisp как AST дерево.

из занятного: записки @vtVitus Витуса Вагнера о TrueЪ Unixъ GUI: раз два

tl;dr: пишите простые программы, связанные пайпами, говорили они. и будет вам труЪ.

как бы не так: передача между пайпами нетипизированного текста, а не например объектов как в этой вашей PowerShellЬ (вдругорядь сразу видно же: ь != ъ, так что поверщель не труЪ, но направление мысли верное) – это костылинукс всей вашей юниксвейности. потому что у каждой «простой программы» 10500 вариантов input X output = комбинаторный взрыв «простых текстовых форматов» передаваемых между пайпами.

здесь как бы выделяется Plan 9 / Inferno с его plumber где по сути есть какой-то движок правил который определяет какой формат -> в какую программу пайпы водопроводчиком plumber’ить. марио водопроводчик прям.

но тоже по сути простой текст. хотя в Plan 9 продвинулись значительно в плане унификации: например, /dev/window , /dev/console, /dev/mouse это по сути мультиплексоры логических псевдофайлов в физические. и далее есть ctl «командный файл» в простом текстовом виде для запуска, и физический файл для обработки. папки-бандлы эдакие.

anonymous ()
Ответ на: Ух ты!!! от anonymous

Re: труЪ ~~Unix~~ Lisp Machine GUI

труЪ Unix Lisp Machine GUI:

казалось бы, причём же здесь лисп-машины.

вдругорядь невозбранно, читаем Lisp Lore: A Guide to Programming the Lisp Machine и для начала, простенький Genera concepts на 26 страниц:

стр. 3:

Genera is intelligent. Its many processes can communicate with each other, and they all automatically share data. Genera keeps an internal record of the history of almost everything that happens in the system  command history, output history, process history, window history, and so on.

Histories make it possible to use previous output on a window as input to a command. The mouse can select a relevant piece of output anywhere on the screen because the history mechanism keeps track of the data object types of all the output. As a result, the reusable output is completely context-sensitive.

For example, clicking on a filename in a directory listing displays the contents of the file. When a command needs a filename argument, clicking on that same filename gives the file to the command as an argument. The meaning of the clicks is both context-sensitive and intuitive. You can scoop up a piece of output in one activity and enter it as input to another activity in a matter of seconds. With just a few keystrokes, you can find, modify, and reuse a command that you entered earlier in the day.

The key to Genera’s intelligence is the sharing of knowledge and information among all activities. At any time, the collection of all the state of all the processes is called the environment (Figure 176). Any function running in any process can use any piece of data in the environment directly. You do not need laborious special-purpose protocols or intermediate files. The entire software environment, in its pristine unused state, ready for booting, is saved on disk as a world. A world consists of all the Lisp objects (functions, variables, windows, processes, and so on) that make up the software environment. The world contains the fully initialized environment, ready to boot and use. Genera doesn’t draw any boundaries around itself. It is customizable and extensible by design. Unlike most software, it has an open architecture; you can change anything that is part of Genera. In fact, we encourage you to take advantage of this and to build your applications as extensions of Genera.

The extensibility of the system is possible thanks to both its modular design and its implementation, using highly flexible, object-oriented data structures called flavors. Any data object defined by a flavor or class can be customized or extended cleanly. Object-oriented data structures are at the heart of symbolic processing because they allow abstract descriptions of data and operations in terms that fit well with the application. The data objects are essentially models of the real-world objects they are implementing. Thus programming uses a problem-solving vocabulary that matches the terminology of the problem domain.

Genera itself was designed to be extended in a number of different ways. You can set customizing variables and create simple files of personal initializations (called init files), or you can extend or replace parts of Genera itself in order to create your own special application

anonymous ()
Ответ на: Re: труЪ ~~Unix~~ Lisp Machine GUI от anonymous

Re: труЪ ~~Unix~~ Lisp Machine GUI

читаем далее более подробное описание работы лисп-машины Genera от Symbolics: Genera_User_s_Guide.pdf и третью научно-популярную книжку с примерами.

там расписано, что по сути эти history – это объекты на S-выражениях, в объектной системе flavors (до потопа ещё, до этого вашего новомодного CLOS).

то есть: емакс общесистемный Zwei может передавать между разными процессами не только лишь текст, но и объекты. собственно, в GNU Emacs есть eieio и какой-то велосипед на S-выражениях в org-mode. которыми эти объекты текстовых блоков, переменные-параметры блоков кода – эмулируются.

пойнт в том, что в труЪ Lisp machine GUI проблема труЪ Unix GUI, так наглядно озвученная и расписанная Витусом Вагнером – фактически решена :

  1. history это объекты а не только лишь текст

  2. объекты в универсальном представлении, на основе S-выражений

  3. в общесистемной ОО модели, на основе flavors (похоже на CLOS).

anonymous ()
Ответ на: Re: труЪ ~~Unix~~ Lisp Machine GUI от anonymous

Re: труЪ ~~Unix~~ Lisp Machine GUI

причём, вот ещё парочка достоинств подхода лисп машин:

читая исходники OpenGenera из поставок Symbolics:

/ : сорцы:

(здесь sct – это система конфигурационного управления на основе лиспа, нечто среднее между defsystem и git. Symbolics, 1985 год.)

  1. есть система подготовки документации Concordia на основе postscript, наподобие Scribe (из racket).

  2. не только лишь лисп: есть комплияторы C, fortran, pascal.

  3. в средствах конвертации : полуавтоматические (или, автомагические ??? :) средства конвертации между ZetaLisp который в Genera и Common Lisp, а также flavors и CLOS.

собственно, дальше вот такая мысль. судя по исходному мануалу, почему это вообще стало возможно – запустить OpenGenera православную из исторических Lisp машин Symbolics на основе лисп микрокода (читайте в мануалах про бинарные патчи, установку через sct) ???

потому что уникальное железо с тумблерочком «debug» и пунктами меню в ОС Genera «Arrest/Un-Arrest» (RTFM) – которое позволяло отлаживаться символьным отладчиком, со всеми переменными, символами, типами, структурами и объектами.

примерно годам к 90-м устарело, но ещё сама Symbolics пару лет потрепыхалась:

  1. MacIvory клавиатуры и совмещённая Macintosh/Lisp машина

  2. собственно, OpenGenera: Genera OS в виртуалке под DEC AlphaStation, манул:

In the early 1990s, Symbolics took a bold step by releasing the Genera software environment, renamed «Open Genera», on Digital Equipment Corporation’s Alpha workstations. To make this happen, they created a «Virtual Lisp Machine» (VLM) that ran under OSF/1 (later, Digital UNIX) and emulated the full Symbolics Lisp Machine architecture.

The source code for VLM was written in Lisp, which when executed would generate Alpha assembly instructions. In the early 2000s, Brad Parker had the brilliant idea to see if he could tweak the Alpha assembly generator to emit snippets of C code instead. It worked, and the results were compiled for 64-bit Linux.

And here we reach a grey area. Symbolics was dissolved in the mid 1990s, and the current state of its intellectual property is muddled. The rights holders of VLM and Genera itself are scattered. There is no longer any «Symbolics, Inc.»

With that in mind…

This document is meant to guide you through installing the VLM and Symbolics Open Genera on a modern 64-bit Linux system. If you choose to do so, please be aware that you may or may not be violating someone’s copyrights. Have fun and play safe!

anonymous ()
Ответ на: Re: труЪ ~~Unix~~ Lisp Machine GUI от anonymous

VLM на основе Mezanno???

всё это приводит к следующей мысли:

сабжевая лисп-ось, Mezanno интересна в сравнении с OpenGenera тем, что здесь реализация – Common Lisp и CLOS осовременненый и менее навороченый чем Symbolics OpenGenera, ZetaLisp и Flavors.

теоретически, возможно и даже рационально реализовать VLM из OpenGenera на основе Mezanno OS

раскрутив из VLM OpenGenera части для CommonLisp

либо из Mezanno на CLOS – реализовав части для ZetaLisp, Flavors

и потом автомаГически оттранслировать Symbolics OpenGenera наследие исторических сорцов в CommonLisp, CLOS, Mezanno OS на SBCL.

алсо, @den73. вот ты в clcon вроде бы емакс на основе Zwei юзал. какие впечатления в общем от Mezanno, OpenGenera, clcon емаксе на коммон лиспе, и вообще – от ОС на основе лиспа а не оберона, например – в качестве среды разработки???

поделись впечатлениями.

а то я тут тоже тыкаю в виртуалочке Guix (NixOS+Guile=Linux), в нём OpenGenera, и рядом Mezanno. сравниваю ощущения, книжки читаю.

покамест ощущения самые позитивные. и общее впечатление что постюниксы продвинулись в целом круче, чем только лишь юникс.

и эта самая труЪ ЮНИКСъ GUI проблема как финал-опофеоз клинической юниксвейности – со всеми её недостатками там фактически решена.

невозбранно достигнув желаемого

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

вопрос интересный.

потому что есть два способа достигнуть желаемого:

  1. Ъ: написать веб-браузер на Common Lisp. в районе McCLIM, емаксе на CL : CLIMACS был где-то браузер на CL. очень древний, не обновлялся. ХЗ как у него с современными стандартами.

  2. йота : средство для портирования LLVM кода под SBCL.

в репозитории видим : sdlquake, doom (prboom).

казалось бы, ну что мешает хромого собрати ? обычного Chromium?

эксперимент получится интересный.

anonymous ()
Ответ на: комментарий от anonymous
cat > example.c <<EOF
#include <stdio.h>
int main(int argc, char **argv) {
    printf("Hello, World!\n");
    return 0;
}
EOF
toolchain/bin/clang -c example.c
toolchain/bin/llvm-link -o=example.bc example.o toolchain/le32-iota/lib/libc.a
toolchain/bin/iota -package=":example" example.bc > example.lisp
anonymous ()
Ответ на: Re: труЪ ~~Unix~~ Lisp Machine GUI от anonymous

Re: труЪ ~~Unix~~ Lisp Machine GUI

The source code for VLM was written in Lisp, which when executed would generate Alpha assembly instructions. In the early 2000s, Brad Parker had the brilliant idea to see if he could tweak the Alpha assembly generator to emit snippets of C code instead. It worked, and the results were compiled for 64-bit Linux.

даже не нужно это переписывать снова на лисп, и собирать под Mezzano под SBCL. нужно попытаться Iota задействовать, и генерировать не только лишь код няшной сишечки, сколько ЛЛВМ биткод. который завернуть в лисп и далее SBCL под Mezzano.

и запустить невозбранно OpenGenera VLM из-под Mezzano.

anonymous ()

Выкатили пятую демку

пятую

демку

привет от [s]Redox,[/s] hurd, таки да ReactOS, Colibri, minix, BeOS, Plan 9, Oberon, OS/2, Novel Netware и тыщ других, у кого демок было больше :)

anonymous ()
Ответ на: Ух ты!!! от anonymous

Re: Ух ты!!!

Ничего не понял, но выглядит как переизобретение DOM + js + html-text (как неоднозначно разбираемый невалидный xml вместо скобочных варажений). Вердикт: gc потечет и затопит весь район.

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

Забавно. Оська, написанная на лишпе, запускается, потребляет и шевелится быстрее, чем редокс ос, написанная на якобы системном языке. Не удивлюсь, если она и умеет сильно больше.

anonymous ()
Ответ на: Ух ты!!! от anonymous

cast @den73: Денис, у тебя в ролике каком-то на ютубе в виртуалке A2 и Mezanno тоже. какие впечатления от сабжа?

Я довольно поверхностно знаком даже с А2, хоть и перевожу её, а с Mezzano и подавно. Но A2 понравилась мне больше. В Mezzano я остановился на перетаскивании окон - оно чертовски тормозило у меня (возможно, дело в чём-то типа драйвера видеокарты). На сём я счёл, что она пока далека от юзабельности. Но прошу не считать моё мнение за экспертную оценку - я и 20 минут в меззано не просидел.

Окончательный выбор между Меззано и А2 основан на том, что Оберон - это «язык выходного дня». Зная Си и любой ОО язык, его можно освоить практически мгновенно. А CL имеет устойчиво низкую популярность и я не знаю, что с этим можно сделать.

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

Вот возьмем к примеру эту ОС.
Какая потребность, контент, … подвигли разработчика ее разрабатывать?
В Linux непочатый край работы …
Все оно как-то «шевелится».
Но часто собрано из «говна и палок».
Вроде бы и дом, но из «говна и палок» дом не юзабельный.
Не утверждаю что все плохо, но часто API из «говна и палок» восхваляют, используют, советуют …
К примеру https://ru.wikipedia.org/wiki/Gettext

gettext — библиотека проекта GNU для интернационализации, широко применяемая в свободном ПО. Википедия
Дата выхода: 1990 г.
Языки интерфейса: русский и ещё 37 языков
Автор-создатель: Sun Microsystems
Тип: локализация программного обеспечения
Язык программирования: Си

В Linux «говна и палок» - много.

Даже хорошего API для работы с строками нет.

Критикую не «лежа на диване».
О чем говорю не фантазии Метапроговские, а реальное и отлаженное API.

Обязательно GUI разработаю /знаю, что «попотеть» придется хорошо/.
Пальцем бы не шевельнул, если бы не знал в чем необходимость и почему нужно крепенько потрудиться.

PS: А «крутые» новые ОС «стругают» …

Владимир

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

Какая потребность, контент, … подвигли разработчика ее разрабатывать?

как-то так:

Genera – The Best Software Environment Available

Genera Does It Better

Symbolics Genera is an advanced software development environment that integrates the features normally found in an operating system, its utilities, and the applications running under it. Genera is written in Lisp and supports program development in Lisp and in a number of other languages, including conventional algorithmic ones such as Pascal and C.

Genera has evolved expressly for providing full life-cycle support for major development projects. It includes facilities for the following classes of activities:

• Exploring ideas
• Developing prototypes
• Communicating with other project members
• Consolidating diverse exploratory efforts
• Testing and refining a product
• Distributing, maintaining, and retiring the final product

Genera was designed for advanced, complex applications. By their very nature, this kind of program is not well understood by its designers; understanding grows incrementally with time and experience.

Genera provides the support necessary for this kind of evolutionary growth of a complex program. With the rich substrate of reusable functions, you can create a working prototype in a fraction of the time you were accustomed to needing. With the modular design encouraged by object-oriented methodology, you can replace parts of the prototype cleanly whenever new understanding permits. As the application grows, configuration management tools keep the complexity under control.
Genera was designed specifically to support the evolutionary software methodology.
Both the basic architecture and the software itself were built for managing the details of program structure and compilation

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

альтернативная реальность постюниксов

оно конечно понятно что и в других языках такое сделать можно. и каждый кулик своё болото хвалит.

но ось на лиспе это как минимум интересно. потому что лисповые S-выражения – это структурные выражения. и какие-то свойства и меру на свойствах могут сохранять. через преобразования DSL-ей лиспоподобных, которые описывают всё на самом себе. то есть, на лиспе.

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

простой пример конструктора текстовый – программы, связанные через пайпы, обменивающиеся простым текстом, интерпретация которого зависит от самих программ.

или не совсем простым, каким-то универсальным представлением. вроде S-выражений. в итоге пайпы становятся типизированными. как в GoLang горутины обмениваются типизированными каналами.

потом на этом можно накрутить общую шину, какой-то ESB enterprise system bus. или ещё чего.

или структурные S-выражения, сериализованные AST деревья.

потом какой-то Display PostScript/Display PDF.

в итоге получается такой типа САПР на лисп-выражениях. на самом себе.

конкретные примеры таких систем с какими-то composable модулями, компонентами – интересны. Oberon, Zonnon, Active Oberon (A2). что если убрать общесистемный линкер а оставить простой загрузчик простых модулей и на этом накрутить кооперативную многозадачность «активных объектов». или Plan9/Inferno/Limbo. что если расширить файловый сервер в универсальный протокол P9FS/Styx и вместо dll/.so поделить другим ортогональным способом, на ctl и поток, и далее мультиплексировать такие многие физические в одно логическое.

ещё я так понимаю, есть третий способ. нечто мейнфреймовое, в духе Multics или LambdaMOO, MUMPS: сервер СУБД + серверные процессы + какой-то простой язык типа Lua для бизнес-логики с транзакциями или, желательно, акторная модель в духе PonyLang или там Ада task + рандеву.

или вот лисп машины. что если лисп всюду везде, сверху донизу.

и полная Unlambda всю дорогу.

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

собственно основная идея лисп-машин – идеальный конструктор для интеграции ужа с ежом, в лисп-выражениях.

пайпы типизированные, объекты и лисп-выражения всю дорогу. далее какое-то простое ОО и конструирование всяческих метапрогов. на самом себе.

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

В Mezzano я остановился на перетаскивании окон - оно чертовски тормозило у меня (возможно, дело в чём-то типа драйвера видеокарты).

Попробовал, быстро таскаются даже через ssh -X.

mv ★★★★★ ()