Giter Site home page Giter Site logo

cabal's Introduction

Cabal

this project has a couple of goals:

  1. break lich into groups of files
  2. prune deadcode
  3. create a way forward for development
  4. provide a bin gem
  5. use more gems to do the heavy lifting instead of own-rolled code

My previous attempts at a complete rewrite have been seriously hampered by MapDB's absolute necessity to navigate the game world in a reasonable manner, and the fact than any Lich API can be called within it. Without a way to isolate and refactor we will never be able to improve.

backwards compatibility with all systems and features is not a design goal

Differences Between Cabal & Lich

  1. the Script class is a true Thread object
  2. Script.run returns a handle to the Script instance
  3. scripts have exit_codes like processes in *nix environments
  4. scripts use significantly fewer threads (has taken my average playing session from 30% memory usage to 18%)
  5. scripts are currently not "pausable"
  6. significantly fewer tight loops
  7. wait_while accepts a timeout: keyword
  8. wait_until accepts a timeout: keyword
  9. ;autostart can optionally use YAML to spin up supervisor trees

Autostart

;autostart is brittle for a variety of advanced use cases (like a Supervisor tree), but still supported unless a autostart/ directory is added to your cabal (lich) folder.

When an autostart/ directory is present, it instead uses YAML.

my autostart/ dir for example:

autostart/
├── _global.yaml
├── ondreian.yaml
├── pixelia.yaml
└── szan.yaml

_global.yaml is a special file that runs before character specific files, it's service-friendly (like Redis).

Example _global.yaml:

gems:
  - Olib

scripts:
  - services/log
  - alias
  - infomon
  - env

Notice that you can also specify gems to require, which happens before any scripts are launched!

cabal's People

Contributors

ondreian avatar

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.