(comment =============================================================================== This section is defining additional HTML DOM manipulation commands. Note: this code is sensitive to tabs, do not use Tab character in the text below. In Vim set expandtab before editing! =============================================================================== ) (define (\n "
") (head (getElement "head")) (body (getElement "body")) (title (lambda (value) (setProperty (getElement "title") "text" value))) (span (lambda (parent) (setProperty (createElement parent "span") "text" (concat (rest args))))) (h1 (lambda (parent) (setProperty (createElement parent "h1") "text" (concat (rest args))))) (h2 (lambda (parent) (setProperty (createElement parent "h2") "text" (concat (rest args))))) (h3 (lambda (parent) (setProperty (createElement parent "h3") "text" (concat (rest args))))) (ordered_list (lambda (parent) (createElement parent "ol"))) (list_item (lambda (parent) (p (createElement parent "li") (concat (rest args))))) (quotation (lambda (parent) (setProperty (createElement parent "code") "text" (concat (rest args))))) (p (lambda (parent) (setProperty (createElement parent "p") "text" (concat (rest args))))) (a (lambda (text link) (concat (list "" text "")))) ) (comment =============================================================================== List of important external references. Note that some of the references are hard-coded in the body of the document. But the most noteworthy ones are listed here for the convenience of the reader. =============================================================================== ) (define (AlanKayShowingSizeOfMicrosoftCode "https://www.youtube.com/embed/prIwpKL57dM?start=1556&end=2063") (EtienneDelacroixInterview "https://greenhosting.am/db/get?id=6febc033-2171-4c24-b430-680f24d96e0d#ff129eaf-8ffb-484c-97ef-ab21f4b97d84") (McCarthyEarlyHistoryOfLisp "http://jmc.stanford.edu/articles/lisp/lisp.pdf") (MetaPresentation "https://www.youtube.com/watch?v=VdJwdX-IaTQ") (TheEarlyHistoryOfSmalltalk "http://worrydream.com/EarlyHistoryOfSmalltalk/") (BackusTuringAwardLecture "https://dl.acm.org/doi/pdf/10.1145/359576.359579") (Steps2012FinalTR "https://tinlizzie.org/VPRIPapers/tr2012001_steps.pdf") (AlanKayExplainingSmalltalkLayers "https://www.youtube.com/embed/prIwpKL57dM?start=1333&end=2980") (DistributedOSWikipedia "https://en.wikipedia.org/wiki/Distributed_operating_system") (RustPrankVideo "https://www.youtube.com/watch?v=QTiAWZ1YfzI") (TheBlueBookOfLisp "https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html") (TheBlueBookOfSmalltalk "http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf") (MetaIITutorial "https://www.bayfronttechnologies.com/metaii.html") (AlanKayMSThesis "https://www.chilton-computing.org.uk/inf/pdfs/AD0761962.pdf") (EToysDemo "https://www.youtube.com/embed/prIwpKL57dM?start=180&end=467") (ErlangArmstrongThesis "https://erlang.org/download/armstrong_thesis_2003.pdf") (QuickThreadsLibrary "https://github.com/nakane1chome/SystemC-QuickThreads") (TimBernersLeeExplainingLinkedData "https://www.youtube.com/watch?v=OM6XIICm_qo") (TimBernersLeeTheNextWebTedTalk "https://www.ted.com/talks/tim_berners_lee_the_next_web") (TimBernersLeeUnhappyWithWeb3 "https://www.cnbc.com/2022/11/04/web-inventor-tim-berners-lee-wants-us-to-ignore-web3.html") (ViewPointsRIArchive "https://web.archive.org/web/20220808134416/http://www.vpri.org/writings.php") (CroquetProject "https://en.wikipedia.org/wiki/Croquet_Project") (NamedDataNetworking "https://en.wikipedia.org/wiki/Named_data_networking") (WhatIsVPP "https://www.synopsys.com/glossary/what-is-virtual-prototyping.html") (ChromeOSWP "https://services.google.com/fh/files/misc/chrome_enterprise_and_beyondcorp_enterprise_technical_paper.pdf") (BittorrentArch "https://www.quora.com/What-is-BitTorrents-architecture") (ChromeAppStore "https://chrome.google.com/webstore") (ChromeBook "https://en.wikipedia.org/wiki/Chromebook") (SqueakVMWebImage "https://wiki.squeak.org/squeak/1762") (AlanKayDDobsInterview "https://www.minormiraclesoftware.com/university_wiki/images/d/dc/Dr_Dobb%27s_Interview_with_Alan_Kay_July_10_2012.pdf") (ConversationWithAlanKay "https://queue.acm.org/detail.cfm?id=1039523") (SqueakObjectModelOverview "https://rmod-files.lille.inria.fr/FreeBooks/CollectiveNBlueBook/Rowledge-Final.pdf") (MetaxOverview "https://leviathan.am/#b2e6b585-68e0-459f-b646-983d54687232") (NWirthProjectOberonPortal "http://www.projectoberon.net/") (OberonStationOverview "http://www.projectoberon.net/ostation/OberonStationQR.pdf") (NWirthLogicLanguage "https://people.inf.ethz.ch/wirth/Lola/index.html") (UrbitOSOverview "https://urbit.org/overview/urbit-os") (GreenArrayEvalBoard "https://www.greenarraychips.com/home/documents/greg/DB014-190520-EVB002.pdf") (ReflectionInSmalltalk "https://arxiv.org/pdf/1804.07272.pdf") (ReflectiveProgramming "https://rmod-files.lille.inria.fr/Lectures/StephaneDucasse/200809-Turino/STOOP-305-ReflectiveProgramming5.pdf") (ImageBasedLanguageConcept "https://wiki.c2.com/?ImageBasedLanguage") (EditCompileRunVsImageBased "https://www.quora.com/What-is-this-live-objects-in-Smalltalk-Ive-gotten-used-to-that-edit-compile-test-debug-cycle-and-want-to-understand-the-philosophy-behind-Smalltalk-Pharo") (MetaCircularEvaluator "https://en.wikipedia.org/wiki/Meta-circular_evaluator") (EvalApplyLecture "https://www.youtube.com/watch?v=aAlR3cezPJg") (LispAsMES "https://www.gnu.org/software/mes/manual/html_node/LISP-as-Maxwell_0027s-Equations-of-Software.html") (CreateYourOwnForthCompiler "https://www.youtube.com/watch?v=gPk-e9vGSWU") (BuildYourOwnLisp "https://buildyourownlisp.com/") (TheZammBook "https://en.wikipedia.org/wiki/Zen_and_the_Art_of_Motorcycle_Maintenance") (KenThompsonTuringLectureOnRootOfTrust "https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf") (TotalInformationAwarenessSpyingProgram "https://en.wikipedia.org/wiki/Total_Information_Awareness") (Stage0CleanBootstreapProject "https://github.com/oriansj/stage0") (GNUMESProject "https://www.gnu.org/software/mes/") (ProgrammersWorstNightmareStory "https://www.quora.com/What-is-a-coders-worst-nightmare/answer/Mick-Stute") (NotesOnStage0 "https://bootstrapping.miraheze.org/wiki/Stage0") (StepanovPrinciple "https://www.boost.org/sgi/stl/complexity.html") (TCCBOOOTLinuxInInterpreter "https://bellard.org/tcc/tccboot.html") (TinyCCompilerByFabriceBellard "https://bellard.org/tcc/index.html") (TinyJSCompilerByFabriceBellard "https://bellard.org/quickjs/") (NewJSEngineStartup "https://oven.sh/") (NewJSEngineEffort "https://bun.sh/") (NewPythonEngine "https://www.modular.com/mojo") (ZigLanguage "https://ziglang.org/") (SqueakOSOnBareHW "http://squeaknos.blogspot.com/") (SmalltalkEmulatorInBrowser "https://smalltalkzoo.thechm.org/") (OberonEmulatorInBrowser "https://schierlm.github.io/OberonEmulator/") (PCEmulatorInBrowserBootingWindows "https://bellard.org/jslinux/vm.html?url=win2k.cfg&mem=192&graphic=1&w=1024&h=768") (BellardsTinyVMInJS "https://bellard.org/jslinux/") (MythsAboutHLS4FPGA "https://promwad.com/news/myths-around-high-level-synthesis-fpga") (ShiftingToDistributedMemoryModel "https://journals.iucr.org/d/issues/2009/07/00/ic5056/ic5056.pdf") (Simulink2FPGA "https://www.mathworks.com/help/hdlcoder/gs/fpga-synthesis-and-analysis-using-the-hdl-workflow-advisor.html") (LabView2FPGA "https://www.viewpointusa.com/ie/ar/labview-fpga-the-good-the-bad-and-the-ugly/") (CSPModelInPtholemyII "https://ptolemy.berkeley.edu/ptolemyII/ptII10.0/ptII10.0.1/ptolemy/domains/csp/doc/main.htm") (KPNModel "http://www1.cs.columbia.edu/~sedwards/papers/kahn1974semantics.pdf") (SDFModelInPtholemyII "https://www.researchgate.net/figure/Ptolemy-II-model-using-the-synchronous-dataflow-SDF-model-of-computation_fig4_238271992") (DDFModelInPtholemyII "https://ptolemy.berkeley.edu/papers/04/DynamicDataflow/GangMS.pdf") (KPNDFCompositeModel "https://www.labri.fr/perso/ejeannot/publications/euromicro16.pdf") (MetaxAlveoWorkingDoc "https://instigate.academy/db/get?id=f7dfdeef-d782-4221-ba74-f3fa1cfa0c18-8a72140e-3829-4935-beb3-1ac09749bf4d") (InstigateAppFramework3 "https://sourceforge.net/p/instigate-fwk/code/ci/master/tree/src/") (InstigateManifestFramework "https://instigate.academy/db/get?id=fbe1aafb-6fb9-43ff-a5c7-6fd4690e58d8#aea62f74-9622-4c9c-93cf-dcd707e11e43") (ProximusOSKernel "https://sourceforge.net/p/proximus-os-kernel/svn/HEAD/tree/trunk/src/os_kernel/") (ComputerOrganizationBook "http://home.ustc.edu.cn/~louwenqi/reference_books_tools/Computer%20Organization%20and%20Design%20RISC-V%20edition.pdf") (NumaAwareProgramming "https://onlinelibrary.wiley.com/doi/full/10.1002/cpe.6887") (InstigateAcademyXUPPortal "https://instigate.academy/db/get?id=fbe1aafb-6fb9-43ff-a5c7-6fd4690e58d8#1289ef05-059b-4a48-a6b1-2bd7997a6f58") ) (comment ==================== THE ARTICLE ===================================== ------------------------------------------------------------------------- | Warning: do not use tabs if you're editing this code. Set expand tabs | | in your editor to use only spaces for the whitespace | ------------------------------------------------------------------------- ) (title "ISRC : STEPS 2.0 (Reinventing Computing)") (h1 body "STEPS 2.0: Reinventing Computing") (span body "Notes from seminar at AMD Armenia, Yerevan, 2023 Mar 24." \n "V.Poghosyan, ISRC Foundation. " (a "vahagn@instigate.academy" "mailto:vahagn@instigate.academy")) (h2 body "Abstract") (quotation body "'People think that computer science is the art" \n "of geniuses but the actual reality is the" \n "opposite, just many people doing things that" \n "build on each other, like a wall of mini" \n "stones.' Donald Knuth") (p body "Modern computer systems are built of " (a "hundreds of millions" AlanKayShowingSizeOfMicrosoftCode) " of lines of source code (LOC). The software part alone, without the hardware sources (HDL code), just to be able to boot the PC, log in, edit documents and browse the Internet requires more than 300M LOC in a modern mainstream PC. This is beyond human reach.") (p body "This creates an " (a "epistemological gap" EtienneDelacroixInterview) ", which makes it impossible for the educational sector to fulfill the requirements of a healthy industry. Engineers are unaware of internal structure and operations of their SW and HW tools, or of their mathematical and structural properties.") (p body "This also transforms the cyber-security assurance business into a " (a "'security theater'" "https://en.wikipedia.org/wiki/Security_theater") " in it's worst possible form: the " (a "CISO " "https://en.wikipedia.org/wiki/Chief_information_security_officer") " of a corporation (or country) is building up a portfolio of cyber-security service and product vendor certificates, to prove to the judge (in case of inevitable security breach) that it was not his fault, because he did check every vendor's certificate.") (p body "After creation of " (a "Lisp" McCarthyEarlyHistoryOfLisp) ", " (a "Meta" MetaPresentation) " and " (a "Smalltalk" TheEarlyHistoryOfSmalltalk) " the software industry " (a "went retrograde" BackusTuringAwardLecture) ".") (p body "We're set out with a project to research, develop, implement, verify, productise, deploy, support, and teach a full-stack HW-FW-SW-NW ecosystem, with the LOC budget reduced by factor of 1000 and more. This is not a mere re-write of " (a "STEPS" Steps2012FinalTR) ". STEPS included " (a "FW/SW layer built on top of Virtual Machine" AlanKayExplainingSmalltalkLayers) ", but not the HW per se, and it was a single-computer (classical) OS, not a " (a "Distributed OS" DistributedOSWikipedia) ".") (p body "Furthermore, " (a "the modern OS rewrite efforts" "https://www.redox-os.org/") " bind themselves with POSIX/UNIX legacy, and the " (a "modern language efforts" "https://www.rust-lang.org/") " are trying to " (a "repeat mistakes" RustPrankVideo) " of C++ and Python. We are building an innovative (aka well forgotten old) programming language based on discoveries made in design of " (a "Lisp" TheBlueBookOfLisp) " and " (a "Meta" MetaIITutorial) ", " (a "Scribe" AlanKayMSThesis) ", " (a "Smalltalk" TheBlueBookOfSmalltalk) " and " (a "eToys" EToysDemo) ", Scheme and " (a "Erlang" ErlangArmstrongThesis) ", " (a "SystemC" "https://systemc.org") " and " (a "QuickThreads" QuickThreadsLibrary) ", OpenCL and Metal, as well as our our own research in " (a "Proximus" "https://proximusda.com") " - an OS Kernel for Heterogeneous computers, " (a "Vostan" "https://vostan.net") " - a Mind-map based Human-Machine Interaction paradigm for " (a "Linked Data" TimBernersLeeTheNextWebTedTalk) ", and " (a "Metax" "https://leviathan.am") " - an OS kernel for post-cloud era (aka " (a "peer-to-peer" "https://en.wikipedia.org/wiki/Peer-to-peer") " aka " (a "web 3.0" TimBernersLeeExplainingLinkedData) ", but NOT " (a "web3" TimBernersLeeUnhappyWithWeb3) ") digital ecosystem, including Hardware, Firmware, Software, Netware and R&D tools to design and program them.") (p body "We refer to this as STEPS 2.0 as reverence to STEPS initiative by " (a "ViewPoints research institute" ViewPointsRIArchive) " in direction of reinventing programming. STEPS 2.0 is about reinventing the computing - not just reinventing the programming, but also the hardware (down the technology stack), as well as upwards - into the networking layers, because XXI century has opened the age of " (a "Distributed Operating Systems" CroquetProject) " and " (a "Named Data Networking" NamedDataNetworking) ".") (h1 body "Introduction") (h2 body "Vision") (quotation body "'It is much more rewarding to " \n "do more with less' Don Knuth") (p body "With roughly 100K LOC budget allocated to Hardware (including HW " (a "virtual prototypes" WhatIsVPP) ") 100K LOC budget for Firmware, including compilers (aka HLS), linkers (aka P&R), debuggers and profilers, and 100K LOC budget for a modern object-oriented distributed network OS kernel, Framework (DB + GUI TK), and Desktop Environment, our system can be imagined as a next-generation " (a "ChromeOS" ChromeOSWP) " analogue, which is running over " (a "Bittorrent" BittorrentArch) " network, rather than over the Google Cloud and " (a "Chrome App Store" ChromeAppStore) ". It would be running on our own HW, altrenative to " (a "Chrombooks" ChromeBook) ", which made of boards with a central FPGA instead of an SoC (user-made CPU/DSP fabric running inside the FPGA). " ) (h2 body "Is Google Chromebook the only source of our inspiration?") (p body "Before you are revolted by the GAFA reference and decide to stop reading this, please note that the only reason we had to make an analogy with " (a "ChromeOS" "https://en.wikipedia.org/wiki/ChromeOS") " and not " (a "SqueakOS" SqueakVMWebImage) " or " (a "Croquet" "https://croquet.io/") " is because modern IT industry (including it's surrounding services such as education) is in deep stagnation, caused by prevailing " (a "pop culture" AlanKayDDobsInterview) ". " (a "Squeak" "https://squeak.js.org/etoys/#fullscreen") ", " (a "Etoys" "https://www.youtube.com/embed/prIwpKL57dM?start=500&end=785") " and " (a "Smalltalk" "https://wiki.c2.com/?SmalltalkLanguage") " are little known in the pop world of IT. Furthermore, pop culture has made its way into academia, resulting in the substitution of Lisp and Smalltalk-based curricula with languages like Python, C++, Rust, Java, and so on.") (p body "«Computing spread out much, much faster than educating unsophisticated people can happen. In the last 25 years or so, we actually got something like a pop culture, similar to what happened when television came on the scene and some of its inventors thought it would be a way of getting Shakespeare to the masses. But they forgot that you have to be more sophisticated and have more perspective to understand Shakespeare. What television was able to do was to capture people as they were. So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.»") (p body "This is a quote from the " (a "«Conversation with Alan Kay»" ConversationWithAlanKay) " Vol. 2, No. 9 - Dec/Jan 2004-2005. And although in this conversation Alan Kay refers to Shakespeare as example of non-pop culture, we still strongly recommend reading it up.") (p body "So here is the corrected version of our") (h2 body "Vision") (quotation body "'It is easier to invent the future" \n "than to predict it.' Alan Kay") (p body "Our system can be imagined as a next-generation " (a "SqueakOS" SqueakObjectModelOverview) " or " (a "Croquet OS" "https://croquet.io/croquet-os/") " built over next-generation Named-Data-Network (e.g. " (a "Metax" MetaxOverview) ").") (p body "The HW layer can be based on motherboards with a central FPGA instead of an SoC, with user-made CPU/DSP fabric running inside the FPGA, similar to the " (a "Project Oberon" NWirthProjectOberonPortal) " (e.g. see the " (a "Oberon Station" OberonStationOverview) "). Similarly to Oberon's " (a "Logic Language" NWirthLogicLanguage) ", our system HW is entirely programmed in it's own programming language (more precisely - a subset of our language that is synthesizable into RTL). The same language is used to build a self-hosting Named-Data-Networking OS Kernel (e.g. see " (a "Urbit.org" UrbitOSOverview) ").") (p body "Therefore our System augments the Squeak OS both upwards - from single-computer OS to network scale OS, like Croquet.io or Urbit, and downwards - to user-made and user-controlled hardware layers, initially based on FPGA, like Oberon Station, and eventually real HW - like " (a "Open Titan" "https://opentitan.org/") " or " (a "Green Array Chips" GreenArrayEvalBoard) ".") (p body "It does, nevertheless, maintain the fundamental " (a "self-hosting" "https://en.wikipedia.org/wiki/Self-hosting_(compilers)") " and " (a "self-aware" ReflectionInSmalltalk) " properties of the " (a "Smalltalk" ReflectiveProgramming) ". Including other fundamental features such as " (a "image-based computing" ImageBasedLanguageConcept) " as opposed to " (a "edit-compile-run" EditCompileRunVsImageBased) " loop, and " (a "unrolling the world" MetaCircularEvaluator) " from the " (a "eval/apply ying/yang" EvalApplyLecture) " (aka " (a "Maxwell's Equations of Software" LispAsMES) ").") (h1 body "Rationale") (h2 body "Epistemological Gap") (p body "In early days of personal computing people were buying computer parts separately or as a " (a "kit" "https://en.wikipedia.org/wiki/List_of_early_microcomputers#Kits") ", and " (a "were programming" "https://en.wikipedia.org/wiki/COSMAC_ELF#Software") " a " (a "Forth" CreateYourOwnForthCompiler) " or " (a "Lisp" BuildYourOwnLisp) " or other simple language compiler for it, then using that to create software. They were true owners of their machine in " (a "Zamm" TheZammBook) " sense. Today's engineers are educated and operate in the abstraction layer created by modern high-level programming languages, operating systems and frameworks, and many of them do not hope to ever overcome the epistemological gap between themselves and their tools, which turns them into users, rather than engineers, because if any of the underlying tools breaks - they cannot fix it - they have to call customer support.") (h2 body "Affordable Open Source Software") (p body "The " (a "Worldwide Web" "https://en.wikipedia.org/wiki/History_of_the_World_Wide_Web") " as well as the networking and computer usage in general was born in cooperative environemnt (cross university network, researchers sharing their articles, educators sharing their text-books). " (a "Authentication" "https://en.wikipedia.org/wiki/Authentication") ", " (a "Encryption" "https://en.wikipedia.org/wiki/Encryption") ", " (a "Mandatory Access Control" "https://en.wikipedia.org/wiki/Mandatory_access_control") ", " (a "Single Sign On" "https://en.wikipedia.org/wiki/Single_sign-on") ", " (a "Firewalls" "https://en.wikipedia.org/wiki/Firewall_(computing)") ", etc have been created later, as add-on protocols over " (a "TCP/IP" "https://en.wikipedia.org/wiki/Internet_protocol_suite") ". As a consequence, cyber security became one of the essential aspects and pillars of digital ecosystems.") (p body "Our underlying doctrine for security engineering is «affordable open source».") (p body "Having access to the Source code of the SW enables thorough security audit, but that is not enough. 300M LOC is not possible to audit, even if the entire source code is available. E.g. Firefox or GCC, or GNU Libc or Linux kernel are open-source systems, but each of these alone has far more than 300K LOC code, and they cannot be adopted by small-medium enterprises or devleoping country governments, because they cannot afford own cyber-security audit of that amount of source code. On the contrary: a small team of engineers can fully audit 300K LOC upon adoption, and one or two engineers are sufficient to audit the daily patches/updates. ") (h2 body "Root of Trust") (p body "The famous Turing Aaward " (a "lecture" KenThompsonTuringLectureOnRootOfTrust) " by Ken Thompson speaks about root of trust in compiler tool-chain, thanks to which (as well as government-supported " (a "spying" TotalInformationAwarenessSpyingProgram) "), the projects like " (a "Stage0 bootstrap" Stage0CleanBootstreapProject) ", " (a "Maxwell's Equations of Software" GNUMESProject) ", and the GNU/Linux Distros like " (a "GUIX" "https://guix.gnu.org/") " become increasingly actual and even necessary. And the self-compiling compiler or meta-circular interpreter bootstrap process needs to handle this aspect of the security. See also " (a "this funny article" ProgrammersWorstNightmareStory) " on programmer's worst nightmare. However, as said above, very quickly the system after stage0 turns into unmanagable 300M LOC. And the goal of our system is to combine such the " (a "clean bootstrapping" NotesOnStage0) " with the managability of entire system.") (p body "Furthermore, the usage of FPGA as central piece would allow us to build MAC layers of the I/Os in RTL, rather than purchasing 3rd party PHY+MAC for Ethernet, USB and other I/Os. Our PCB will have only 3rd party PHYs for I/Os, the MACs will be auditable: managable free/open-source RTL code for FPGA or MCU fabrics. This would also feed into RTL/EDA curricula of corresponding faculties/chairs in Instigate Academy network.") (h2 body "Efficiency") (quotation body "'Software is getting slower more rapidly" \n "than hardware becomes faster' Niklaus Wirth") (p body "First of all, we would like to adhere to Stepanov's " (a "principle" StepanovPrinciple) ", underlying the STL, according to which the complexity of algorithm is part of it's interface specification, not an implementation detail.") (p body "Secondly, the personal computers with modern GUI (X11, Windows) became widespread in 199x when the RAM on a typical machine was ~8MB and typcial PC hard drive capacity was ~1GB. And to manage a linked-data across a named-data network, with modest image/video resolutions that are just sufficient for field-applications, we can implement modern Information Management Systems we do not need multi-Ghz CPUs and multi-GB memories, nor GBps network bandwidth. The relatively slow GPIO offered by modern FPGA is more than enough for implementing most of our system.") (p body "Last but not least: with fixed amount of hex-code (mainly the interpreter and runtime environment), with the LISP / Smalltalk principle of code = data, and with simple fact that 200byte C source compiles into 200KB+ binary on modern x86-64, we have unexpected efficiency gains, that are unimaginable for the compiler-based modern systems. E.g. modern AMD servers have bigger L1 cache than we need for the binary part of our OS kernel and interpreter. Most of our Runtime environment and Framework code could fit in L2 cache of modern CPUs. Therefore we expect our system run on modern servers in emulation mode as fast as compiled code or better.") (p body "Good evidence of how wasteful is modern computing world is the " (a "TCCBOOT" TCCBOOOTLinuxInInterpreter) " demo project by " (a "Fabrice Bellard" "https://en.wikipedia.org/wiki/Fabrice_Bellard") ", which boots Linux 2.4 in a VM such as " (a "QEMU" "https://qemu.org/") " (another project by the same author) in interpreted mode. The entire Linux 2.4 kernel code is parsed in 15 seconds by " (a "TinyCC" TinyCCompilerByFabriceBellard) " a tiny interpreter of ISO C99, (another project by the same author). " (a "QuickJS" TinyJSCompilerByFabriceBellard) " has by order of magnitude lower LOC than NodeJS, and it's startup time for tiny scripts is faster than NodeJS. It uses only interpreter, not a JIT compiler but in many use cases for web-back-end it is faster. And yet, industry is unable to switch to it. Of course it opens up possibility for new businesses, and they " (a "do get created" NewJSEngineStartup) ", because new " (a "Javascript/Typescript engines" NewJSEngineEffort) " and " (a "new Python engines" NewPythonEngine) " are being developed. Even new languages have to be (and are being) designed, because the bloatware is rooted in the design of language itself, and not just its compiler. Pop industry has seen new languages (" (a "Go" "https://go.dev/") ", " (a "Rust" "https://www.rust-lang.org/") ", " (a "Swift" "https://developer.apple.com/swift/") ") but there are " (a "less known" "https://clojure.org/") " and " (a "more impressive" ZigLanguage) " ones, too. And " (a "Crhis Lattner" "https://en.wikipedia.org/wiki/Chris_Lattner") " is another champion programmer who brakes the evil loop of establishment by designing such new languages.") (p body "But decades before them and still unsurpassed by many aspects is " (a "SqueakNOS" SqueakOSOnBareHW) " which boots entire kernel whith GUI and IDE and Office Suite in QEMU in few seconds on a modern laptop. The GUI and Office suite have orthogonal design, e.g. a title of a window can be edited with same tool as the image in a presentation inside that window.") (p body "See also " (a "Smalltalk" SmalltalkEmulatorInBrowser) " and " (a "Oberon" OberonEmulatorInBrowser) " booting in a browser in few seconds. Compared to that, the Windows kernel " (a "takes minutes to boot" PCEmulatorInBrowserBootingWindows) " inside a " (a "browser-based VM" BellardsTinyVMInJS) " (see also " (a "Tiny RISC-V Emulator" "https://bellard.org/tinyemu/") " - another beautiful project by Fabrice Bellard).") (h2 body "Massive parallel reconfigurable computing") (p body "The decomposition of the computing world into pure CPU, pure FPGA (LUT/DFF fabric), pure RAM, and pure GPGPU is only meaningful for encyclopedic purposes. In reality the modern compute fabrics have mix of these elements at various levels of granularity, abstraction, with various topologies and mixes.") (p body "As it comes to our own HW: we compensate the simplicity and lack of cache in our CPUs by the massive-parallel nature of our compute fabric, which is made to match the structure of modern FPGAs: multiple DSP and DPSRAM blocks injected in the FPGA fabrics are used to form our ALUs, and Memory blocks. The language is designed to permit effective HLS into such fabric, as opposed to C++ based efforts, which are trying to make sense of an inherently sequential C/C++ code written for a Von Neumann machine, and automatically 'extract parallelism' from that code, to map it to inherently parallel FPGA fabrics. Such task requires human intelligence, to ignore the actual C code and go back to original intentions of the computation, and build a completely new code for the FPGA or GPGPU. In other words - " (a "it doesn't work" MythsAboutHLS4FPGA) ". The main evidence of this is the fact that GPGPU world became possible only after " (a "paradigm-shift" ShiftingToDistributedMemoryModel) " from Von Neumann compute model into OpenCL/CUDA compute model, where the user explicitly takes care of interconnect between compute units and kernels.") (p body "Bottom line: By making our system less CPU centric, simplifying the HW elements such as CPU pipelines, we loose tactical points in efficiency but gain dividents at strategic and doctrine levels in efficiency/cost ratio for the overall system, both when mapping to existing compute fabrics, and when designing our own hardware.") (h1 body "Strategic directions") (h2 body "Modern FPGA devices programming and integration") (p body "We believe that the full potential of modern FPGAs is yet to be unleashed. Main hindering factors being:") (let ((ol (ordered_list body))) (sequentially (list_item ol "The heterogeneous nature of the modern FPGA systems, integrating not only the DFF/LUT but complex DSP/BlockRAM, HBM, AXI Bus, ARM CPU Cores, GPU cores capable of OpenCL, all together requiring multidisciplinary teams to collaborate on a single system.") (list_item ol "The quest for 'holy graal' push-button solution to magic high-level synthesis from an inherently VonNeumann style C/C++ to FPGA, denying the simple fact that even relatively less drastic move to GPGPU required paradigm shift in language design.") (list_item ol "The " (a "misfortune" "https://dl.acm.org/doi/pdf/10.1145/359576.359579") " of mainstream computer science based on Fortran/Algol and not Lisp, Smalltalk, APL or other sufficiently high-level programming language. For example in APL-style tacit-programming the { average := (compose divide (compose2nd reduce +), length) } is a program that computes the average value of an array, and all the operations in the sequence are built-in high-level array operations, and the array is a biult-in first-class type. It is qualitatively easier to understand the programmer's intention behind this code and to extract parallelism for mapping to various fabrics.") )) (p body "The important evidence of this is a relative success in real-world applications by " (a "Simulink" Simulink2FPGA) " and " (a "LabView" LabView2FPGA) ", who have shown non-trivial cases of using HLS for FPGA by actual customers, without help of the original vendors. In all cases this was done on expense of a complete paradigm shift into their own realm (dataflow computing), away from C/C++/VonNeumann realms.") (p body "Therefore, our FPGA related faculty will have to learn RTL, including inference of DP SRAM blocks and DSP macros, but should not take HLS seriously, i.e. learn it as an example of what not to do, if you want to build high-level IDE/Tool-chain for out-of-house usage of FPGA by good engineers, and even by students.") (h2 body "HLS for heterogeneous systems") (p body "We're striving for general parallel computing paradigm, which would abstract away not only from the DFF/LUT and DSP/DPRAM fabrics of modern FPGAs, but also cover higher levels of integration of heterogeneous systems, such as combination of CPU, GPGPU, FPGA, AI Engine, Tensor Processors, DPUs, and other systems into a single HPC fabric.") (p body "Therefore " (a "Data-Flow processing" "https://en.wikipedia.org/wiki/Dataflow_programming") ", " (a "Functional Programming" "https://en.wikipedia.org/wiki/Functional_programming") ", " (a "Communicating Sequential Processes" CSPModelInPtholemyII) ", " (a "Kahn Process Networks" KPNModel) ", etc are important theoretical basis for development of our general parallel computing paradigm. And everything new is a well forgotten old. We just have to re-learn and re-use the Message Passing Interfaces paradigm, the " (a "Synchronous Data Flow" SDFModelInPtholemyII) " and " (a "Dynamic Data Flow paradigms" DDFModelInPtholemyII) " and " (a "their combinations" KPNDFCompositeModel) ", and even re-evaluate the original idea of UNIX, neglected by the mainstream, to view the system as set of processes communicating via file-pipes, and sockets API made compatible with file and shared memory FIFOs.") (p body "Our language design is based on this world-view, and we believe that it will enable efficient HLS strategies and technologies.") (h2 body "Place & Route for heterogeneous massive parallel systems") (p body "The Synthesis/HLS is equivalent to compilation, and the P&R is an equivalent to linking. As in software - dynamic and static linking are possible. Dynamic linking is performed by OS kernel schedulers and binary object linkers & loaders, including GPGPU runtimes and modern FPGAs supporting partial reconfiguration at runtime.") (p body "This direction of our research is based on support of " (a "fat-binaries" "https://en.wikipedia.org/wiki/Fat_binary") " to make systems less platform dependent. Traditionally HPC is a platform-dependent domain, and that is one of the main hindering factors of it's mainstream adoption. The fat-binary combined with dynamic P&R is a strategy to sort out logistics and achieve the level of comfort for developers, that is expected in the industry today.") (p body "In this department student will learn about intrinsics of HLS flows, and methodological aspects of design and programming of heterogeneous massive parallel reconfigurable architectures.") (h2 body "MPI or FTL as fundamental underlying paradigm") (p body "Instigate has developed a runtime environment and an underlying methodology for FIFO-to-FIFO transfer layer (FTL), which allows to specify transformation of data by sequential processes, communicating via message-passing interfaces to each other. This system was originally developed as a commercial product by ProximusDA, Instigate's daughter company. In 2022 the ProximusDA kernel was " (a "donated" ProximusOSKernel) " to this project, and published under open-source/free license. Since then it became one of the foundations projects for our " (a "research" InstigateAcademyXUPPortal) ".") (p body "Later it was discovered that Smalltalk kernel is more appropriate level of abstraction than low-level FTL, and we have decided to build the next generation system at this level, which is also known in network computing world as RPC. System consists of objects. Object contains state and behavior. Behavior is invoked by passing it messages (sending Requests and receiving Response from a service). Objects are managed in the network by the decentralized OS kernel. This is basic paradigm behind Croquet.io, the decentralized descendant of Smalltalk.") (p body "In this department students will learn cooperative multithreading kernels such as " (a "QuickThreads" "https://www.sandia.gov/qthreads/") " (also known as co-routines), and details of memory and cache optimization in " (a "modern computers" ComputerOrganizationBook) ", " (a "NUMA-aware" NumaAwareProgramming) " programming, etc, when implementing the system for modern amd64 and arm64 architectures.") (h2 body "Introspection based framework") (p body "Introspection means that every piece of data in the memory of the computer has a pointer to it's type. It's an extreme case of C/C++ runtime-type-information, where every object is decorated with full type info. Moreover, in Smalltalk like systems type information itself is a first-class citizen - like any other piece of data (or object). Type specification itself has properties, methods, and child-elements (like DOM in Javascript).") (p body "Since 2006 Instigate has been developing introspection based framework for C++, which was " (a "donated to public-domain" InstigateAppFramework3) " in 2012 under name Instigate Application Framework. It brings in some of Smalltalk's capabilities to the world of C++, and GTK+ UI Framework.") (p body "In 2016-22 the " (a "new generation" InstigateManifestFramework) " of the framework was implemented for the programming language Javascript and WebKit UI frameowrk, with a singificantly higher level of self-hosting and reflection, closer to what was achieved in Smalltalk/Squeak.") (p body "The new version built in the scope of STEPS 2.0 will be based on it's own programming language. And this document is touching some fundamentals of that upcoming system: it will be a combination of all technologies mentioned in this chapter, simplified down to sub 100K LOC fully self-hosted and self-aware sytem.") (p body "In this department students will learn model-based design, object-oriented RPC and DB frameworks.") (h2 body "Decentralized object model") (p body "Synchronization of decentralized massively scaleable databases is a separate topic in computer science. Pioneers in this sphere are " (a "Leslie Lamport" "https://www.youtube.com/watch?v=tw3gsBms-f8") " and Dave Reed, who's " (a "research" "https://dspace.mit.edu/handle/1721.1/16279") " have been used in Croquet.io and many modern decentralized systems.") (p body "Instigate's daughter company " (a "Leviathan" "https://leviathan.am") " has developed a decentralized peer-to-peer end-to-en-encrypted key-value storage called " (a "Metax" "https://leviathan.am/#60dd155a-ad84-446c-b06a-986ff5b150b9") ", which was donated to public domain and also became an essential part of our research. Currently it is " (a "being ported" MetaxAlveoWorkingDoc) " to Xilinx ALVEO platform, and other parallel compute fabrics with help of Proximus runtime.") (p body "In 2022 Instigate Academy has started development of a next generation P2P E2E kernel, which lifts the abstraction from key-value data store to an object-oriented decentralized store, which is combined with the Smalltalk-like runtime environment, thus turning it into a distributed version of Smalltalk, with its own simplified OO/MPI syntax.") (p body "Students in this department will learn decentralized p2p computing, security, data synchronization, built-in version control, mandatory access control and other aspects of modern system design.") (p body "The overwhelming layers of HW and SW optimizations in modern systems create an impression that a self-made machine can only be used in education. But we do not care. Anyway, if you read to this point, you have a bonus: open the source code of this HTML file and see how to implement your own LISP compiler in ~300 lines of code, and how to add a standard library for it that provides automation for web-page construction, in ~300 lines. This article was created as a fully self-contained HTML which includes its it's own framework, that is part of the page source code itself (like in image based computing). Try to modify it so that it allows to edit it's own source code and you'll learn how to make image-based computing frameworks. Or stay tuned for the next report, which will have a more complete VM and language model under the hood.")