Coder Social home page Coder Social logo

weyrsdev / blitzmax-extensions Goto Github PK

View Code? Open in Web Editor NEW

This project forked from alexceleste/blitzmax-extensions

0.0 2.0 0.0 188 KB

Aspects and Interfaces and Lambdas, oh my!

License: Other

BlitzMax 89.40% C 2.28% Assembly 7.68% Shell 0.64%

blitzmax-extensions's Introduction

BlitzMax language extensions

This is a selection of "language extensions" that implement what are normally language-level features, missing from BlitzMax, using runtime operations only. While not all of them are as slick as they would be in languages with dedicated syntax, they open up much wider possibilities for BlitzMax-based program design.

Included are:

Most of these involve medding with code generation. There's a lot of hand-written assembly, and the Aspect, Interface and Lambda modules all also do small amounts of JIT compilation to generate method stubs or proxy classes. So be warned, even though these are dynamic, they're still tightly integrated with the compiled language.

Those modules that do involve assembly/JIT are x86-32 only at this time.

Aspects and Interfaces are considered the "flagship" modules in this collection, as they go a long way towards fixing BlitzMax's problems with deep inheritance chains (the base language is very reliant on inheritance as the basis of polymorphism, which is something of an antipattern these days).

Coroutines and Messages are something of a special case: these don't involve any JIT or custom machine code, and are actually pure, high-level, portable BlitzMax modules. However, the coding style they enable is so thoroughly different from vanilla BlitzMax, that I prefer to view them as language rather than library features anyway.

Examples for most cases are provided, some more complete than others.

Possible future candidates for language extension include array programming (K/APL-style fast vectorized composable operations), and region-based memory management (a fast alternative to GC in some circumstances).

These extensions are dedicated to the public domain, by author Alex "Yasha" Gilding.

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.