GithubHelp home page GithubHelp logo

emerald / welcome Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 10.83 MB

Implementing a WELCOME construct in Emerald

Objective-C 6.15% MATLAB 37.29% Makefile 3.23% Shell 1.35% Yacc 2.25% Mathematica 0.45% Roff 0.04% M 0.12% Limbo 0.10% Batchfile 0.01% Mercury 0.05% TeX 7.08% C 40.73% C++ 0.16% Modula-2 0.22% AMPL 0.02% Python 0.18% Assembly 0.57%

welcome's Introduction

W E L C O M E

About

This is an implementation of Emerald with an added welcome expression and node discovery mechanism.

  • Report.pdf is an edited version of the report containing the new language additions.
  • Welcome_user_guide.pfd is a detailed document explaining the additions.

Added features

  • The welcome expression
  • The welcomable object prefix
  • The mergeWith-operation in the builtin Node-object
  • The setDiscoveredNodeEventHandler-operation in the Node-object
  • The getDiscoveredNodes-operation in the Node-object
  • The getAllDiscoveredNodes-operation in the Node-object
  • Run emx with the option -D to make a node discoverable
  • The debugging-traces welcome and discovery

Requirements

  • make
  • csh
  • 32-bit version of glibc
  • ed, sed, sh, awk

Tested with:

  • intel 64 bit and ARMv7l (32 bit) CPU
  • Linux: Debian, Raspbian and WSL2 with Debian and Ubuntu. Also tested on PlanetLab with computers running Fedora 25.
  • EMERALDARCH set to i386linux (for 32 bit), x86_64linux (for 64 bit) and armv7l (Raspberry Pi)

Project setup

Extract and place your emerald project folder where you want to install it.

Copy the following to your ~/.bashrc file.

EMERALDROOT=PATH/TO/emerald ; export EMERALDROOT
EMERALDARCH=[YOUR ARCH] ; export EMERALDARCH
PATH=$PATH:/$EMERALDROOT/bin/$EMERALDARCH:$EMERALDROOT/bin
  • Valid options for EMERALDARCH are equal to the directory names under bin/ and lib/.

  • NOTE: If you have previously installed a version of Emerald, make sure that your changes in .bashrc has taken effect ( does type ec/emx give a path to your new EMERALDROOT folder?).

Building the project

  • In the Emerald root directory run make build. This will compile the Emerald vm. This copy of Emerald also features a stable version of the compiler.
  • emx: run the Emerald vm
  • ec: run a stable compiler

To compile single parts of Emerald alone, look at the instructions below.

Setup links

  • Navigate to vm/ and and create a new directory with the same name as $EMERALDARCH. Navigate to this new directory.
  • Copy the makefile from vm/src into the new dir and create the links:
cp ../src/Makefile . ;  emmake links

ccalls

  • Navigate to ccalls/ and compile the library:
emmake install

Compiling the runtime system

  • Navigate to vm/$EMERALDARCH and run emmake

Compiling a new compiler

  • Navigate to EC and run newcompiler. This will run the following commands:

    • emmake (Builtins) - Compile builtins
    • emmake install (Builtins) - Update lib/Builtins and lib/opoid
    • emmake fffs - Compile compiler without builtins.
    • newversion - creates CP_qXX
    • useversion - sets the symlink execCP to point to that version
    • emmake bestCP - builds a version that understands the builtin types, called bestCP
    • useversion best - sets the symlink execCP to point to the bestCP version
  • To run your new compiler use xemc

If it is desired to replace the stable compiler with the experimental, carefully run make install in the EC directory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.