• ...so this conversation is not really about NeoPixels. Can we change the title to something like Custom builds, of Builds on demand, Selective builds,...? ...and use NeiPixels as (the) practical example for pursuing this effort?

    Old technology used several steps to get 'there': compiling delivers object modules that include meta data which then in a linker were used the put all the stuff together... Tubo Pascal was a great example to get rid of this multi-step process - even the need for multi-pass compiling - to get faster to the executable. I'm not familiar enough with the tool chain/build process of Espruino (and alike), but my guts tell me that something modelled after the old world could work - and it well may already work this way, just named differently.

    Like every module has dependencies, module components could have dependencies... (Classes have dependencies on their members for state (data type classes) and behavior (method used classes). Java (and a lot of alikes) are stuck with atomic-granularity on the class level - matches a file. There are other implementations that go further and allow granularity on the method level: A class can be extended by adding methods without having to subclass (What I have not seen yet is comparable state extensibility). All in all, it would not be composition yet, but comes close... Javascript can do all that at runtime... but I'm looking for a build time for that: compose sources on that level.

    As a concrete idea, a build system could present a catalog of component and sub-components with check-boxes, with dependency support/constraints active. Checking/unchecking a functionality will also pick(indicate check) the minimal dependencies, and at the same time say what the (minimal) hardware requirements are in RAM and EEPROM, and as an icing on the cake: allow assignment of requirment compatible hardware profiles, such as PICO, Standard, ESP8266-xx,...

    If this all could be done in an IDE extension (additional page or left-hand side), why not...

About

Avatar for allObjects @allObjects started