Comments (5)
Closed in favour of #122 which i'd like to keep open as it will become necessary at some point if the libraries continue to grow in size.
from crow.
ed note: This whole process could likely be deprecated if some smart person figures out how we can upload lua bytecode to crow directly, rather than manually convert everything into C strings & load them at runtime. The key benefit here is that lua syntax errors will be caught by that process (using
luac
i guess), and perhaps smaller RAM footprint (because the C strings aren't loaded into memory at all).
Would that be something like this? https://github.com/nodemcu/nodemcu-firmware/blob/8d091c476edf6ae2977a5f2a74bf5824d07d6183/docs/compiling.md#compiling-lua-on-your-pc-for-uploading
from crow.
Yes, and specifically the LFS
concept (https://github.com/nodemcu/nodemcu-firmware/blob/8d091c476edf6ae2977a5f2a74bf5824d07d6183/docs/lfs.md) is what we really need I think. The issue being that even if we can precompile the lua libraries, they will currently still be copied from flash into RAM, which saves us nothing but startup time.
After a quick read about LFS, it seems like this is a big endeavour, and likely something that requires another developer to make a reality.
The big benefit is that we would free up a huge amount of RAM (presently Lua takes up over 100kB at boot time, and we only have 256kB total, a good chunk of which is devoted to hardware buffers & runtime processing). In practice we only get access to about 50kB of RAM in the VM before crashes or memory errors occur. If someone takes this project on, it would more than double the free memory available to scripts. This would have the added benefit of enabling support for >8kB userscripts (currently limited by the RAM allocation that happens while uploading & compiling on chip).
from crow.
This conversation seems to belong at #122 rather than here, though even that issue is not quite clear about what needs to occur or what the motivation is. New issue altogether?
from crow.
Yeah, might be better in #122 or as a new issue, although I guess the question remains if anyone would have time to work on it. If we know upfront that won't happen then maybe it's not worth the effort of creating an issue for it.
The items remaining in this issue seem minor, especially since comments are already stripped.
from crow.
Related Issues (20)
- ASL is running at half speed HOT 4
- improve & add documentation HOT 6
- when using `input.mode = 'clock'` sense start/stop
- memory allocation issues with new modules HOT 1
- 'make -j' build successful, but with errors HOT 2
- Updates needed for Disting EX ii support
- `CROW.Q1` gives `ii lines are low` when 2 crows are on bus HOT 4
- ASL modulations HOT 1
- Clear script by self-patching on boot HOT 1
- ceify the metro lib HOT 3
- Clock & Metro libraries are slightly out of sync
- v1.1 hardware changes HOT 8
- v4.0.2RC fails when accessing `input` in druid HOT 2
- Firmware compilation fails under Docker (Windows) with missing GLIBC_2.27 HOT 5
- script clear doesn't seem to purge everything (v4.0.3)
- clock.sync to values less than 1 can cause rapid-firing (v4.0.3) HOT 1
- Crow can fail to boot with Doepfer PSU-3 HOT 3
- Add support for i2c2midi to firmware HOT 7
- tuning issues HOT 2
- simultaneous use of teletype queries and norns crow.send crashes crow HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from crow.