fastled 1.1.41__tar.gz → 1.1.61__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. {fastled-1.1.41 → fastled-1.1.61}/PKG-INFO +29 -24
  2. {fastled-1.1.41 → fastled-1.1.61}/README.md +28 -23
  3. {fastled-1.1.41 → fastled-1.1.61}/examples/FxEngine/FxEngine.ino +1 -1
  4. {fastled-1.1.41 → fastled-1.1.61}/examples/NoisePlusPalette/NoisePlusPalette.ino +1 -1
  5. {fastled-1.1.41 → fastled-1.1.61}/examples/wasm/wasm.ino +1 -1
  6. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/__init__.py +1 -1
  7. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/parse_args.py +172 -172
  8. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/project_init.py +9 -2
  9. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/PKG-INFO +29 -24
  10. {fastled-1.1.41 → fastled-1.1.61}/tests/test_ino/bad/bad.ino +1 -1
  11. {fastled-1.1.41/tests/test_ino/wasm → fastled-1.1.61/tests/test_ino/embedded}/wasm.ino +1 -1
  12. {fastled-1.1.41/tests/test_ino/embedded → fastled-1.1.61/tests/test_ino/wasm}/wasm.ino +1 -1
  13. {fastled-1.1.41 → fastled-1.1.61}/.aiderignore +0 -0
  14. {fastled-1.1.41 → fastled-1.1.61}/.github/workflows/build_multi_docker_image.yml +0 -0
  15. {fastled-1.1.41 → fastled-1.1.61}/.github/workflows/lint.yml +0 -0
  16. {fastled-1.1.41 → fastled-1.1.61}/.github/workflows/test_macos.yml +0 -0
  17. {fastled-1.1.41 → fastled-1.1.61}/.github/workflows/test_ubuntu.yml +0 -0
  18. {fastled-1.1.41 → fastled-1.1.61}/.github/workflows/test_win.yml +0 -0
  19. {fastled-1.1.41 → fastled-1.1.61}/.gitignore +0 -0
  20. {fastled-1.1.41 → fastled-1.1.61}/.pylintrc +0 -0
  21. {fastled-1.1.41 → fastled-1.1.61}/.vscode/launch.json +0 -0
  22. {fastled-1.1.41 → fastled-1.1.61}/.vscode/settings.json +0 -0
  23. {fastled-1.1.41 → fastled-1.1.61}/.vscode/tasks.json +0 -0
  24. {fastled-1.1.41 → fastled-1.1.61}/LICENSE +0 -0
  25. {fastled-1.1.41 → fastled-1.1.61}/MANIFEST.in +0 -0
  26. {fastled-1.1.41 → fastled-1.1.61}/build_exe.py +0 -0
  27. {fastled-1.1.41 → fastled-1.1.61}/clean +0 -0
  28. {fastled-1.1.41 → fastled-1.1.61}/docs/fastled.js +0 -0
  29. {fastled-1.1.41 → fastled-1.1.61}/docs/fastled.wasm +0 -0
  30. {fastled-1.1.41 → fastled-1.1.61}/docs/index.css +0 -0
  31. {fastled-1.1.41 → fastled-1.1.61}/docs/index.html +0 -0
  32. {fastled-1.1.41 → fastled-1.1.61}/docs/index.js +0 -0
  33. {fastled-1.1.41 → fastled-1.1.61}/examples/Blink/Blink.ino +0 -0
  34. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/Chromancer.ino +0 -0
  35. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/detail.h +0 -0
  36. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/gary_woos_wled_port/gary_woos_wled_ledmap.h +0 -0
  37. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/gary_woos_wled_port/presets.json +0 -0
  38. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/gary_woos_wled_port/presets.min.json +0 -0
  39. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/gen.py +0 -0
  40. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/mapping.h +0 -0
  41. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/net.h +0 -0
  42. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/output.json +0 -0
  43. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/ripple.h +0 -0
  44. {fastled-1.1.41 → fastled-1.1.61}/examples/Chromancer/screenmap.json.h +0 -0
  45. {fastled-1.1.41 → fastled-1.1.61}/examples/ColorPalette/ColorPalette.ino +0 -0
  46. {fastled-1.1.41 → fastled-1.1.61}/examples/ColorTemperature/ColorTemperature.ino +0 -0
  47. {fastled-1.1.41 → fastled-1.1.61}/examples/Cylon/Cylon.ino +0 -0
  48. {fastled-1.1.41 → fastled-1.1.61}/examples/DemoReel100/DemoReel100.ino +0 -0
  49. {fastled-1.1.41 → fastled-1.1.61}/examples/Esp32Rmt51/Esp32Rmt51.ino +0 -0
  50. {fastled-1.1.41 → fastled-1.1.61}/examples/EspI2SDemo/EspI2SDemo.ino +0 -0
  51. {fastled-1.1.41 → fastled-1.1.61}/examples/Fire2012/Fire2012.ino +0 -0
  52. {fastled-1.1.41 → fastled-1.1.61}/examples/Fire2012WithPalette/Fire2012WithPalette.ino +0 -0
  53. {fastled-1.1.41 → fastled-1.1.61}/examples/FirstLight/FirstLight.ino +0 -0
  54. {fastled-1.1.41 → fastled-1.1.61}/examples/Noise/Noise.ino +0 -0
  55. {fastled-1.1.41 → fastled-1.1.61}/examples/NoisePlayground/NoisePlayground.ino +0 -0
  56. {fastled-1.1.41 → fastled-1.1.61}/examples/OctoWS2811/OctoWS2811.ino +0 -0
  57. {fastled-1.1.41 → fastled-1.1.61}/examples/Pacifica/Pacifica.ino +0 -0
  58. {fastled-1.1.41 → fastled-1.1.61}/examples/Pride2015/Pride2015.ino +0 -0
  59. {fastled-1.1.41 → fastled-1.1.61}/examples/TwinkleFox/TwinkleFox.ino +0 -0
  60. {fastled-1.1.41 → fastled-1.1.61}/examples/Video/Gfx2Video/Gfx2Video.ino +0 -0
  61. {fastled-1.1.41 → fastled-1.1.61}/examples/WasmScreenCoords/WasmScreenCoords.ino +0 -0
  62. {fastled-1.1.41 → fastled-1.1.61}/examples/Water/Water.ino +0 -0
  63. {fastled-1.1.41 → fastled-1.1.61}/examples/XYMatrix/XYMatrix.ino +0 -0
  64. {fastled-1.1.41 → fastled-1.1.61}/install +0 -0
  65. {fastled-1.1.41 → fastled-1.1.61}/lint +0 -0
  66. {fastled-1.1.41 → fastled-1.1.61}/pyproject.toml +0 -0
  67. {fastled-1.1.41 → fastled-1.1.61}/requirements.testing.txt +0 -0
  68. {fastled-1.1.41 → fastled-1.1.61}/setup.cfg +0 -0
  69. {fastled-1.1.41 → fastled-1.1.61}/setup.py +0 -0
  70. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/app.py +0 -0
  71. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/assets/example.txt +0 -0
  72. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/cli.py +0 -0
  73. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/client_server.py +0 -0
  74. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/compile_server.py +0 -0
  75. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/compile_server_impl.py +0 -0
  76. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/docker_manager.py +0 -0
  77. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/filewatcher.py +0 -0
  78. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/keyboard.py +0 -0
  79. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/live_client.py +0 -0
  80. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/open_browser.py +0 -0
  81. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/paths.py +0 -0
  82. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/select_sketch_directory.py +0 -0
  83. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/settings.py +0 -0
  84. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/sketch.py +0 -0
  85. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/spinner.py +0 -0
  86. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/string_diff.py +0 -0
  87. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/test/examples.py +0 -0
  88. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/types.py +0 -0
  89. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/util.py +0 -0
  90. {fastled-1.1.41 → fastled-1.1.61}/src/fastled/web_compile.py +0 -0
  91. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/SOURCES.txt +0 -0
  92. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/dependency_links.txt +0 -0
  93. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/entry_points.txt +0 -0
  94. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/requires.txt +0 -0
  95. {fastled-1.1.41 → fastled-1.1.61}/src/fastled.egg-info/top_level.txt +0 -0
  96. {fastled-1.1.41 → fastled-1.1.61}/test +0 -0
  97. {fastled-1.1.41 → fastled-1.1.61}/tests/test_api.py +0 -0
  98. {fastled-1.1.41 → fastled-1.1.61}/tests/test_bad_ino.py +0 -0
  99. {fastled-1.1.41 → fastled-1.1.61}/tests/test_cli.py +0 -0
  100. {fastled-1.1.41 → fastled-1.1.61}/tests/test_compile_server.py +0 -0
  101. {fastled-1.1.41 → fastled-1.1.61}/tests/test_docker_linux_on_windows.py +0 -0
  102. {fastled-1.1.41 → fastled-1.1.61}/tests/test_embedded_data.py +0 -0
  103. {fastled-1.1.41 → fastled-1.1.61}/tests/test_examples.py +0 -0
  104. {fastled-1.1.41 → fastled-1.1.61}/tests/test_filechanger.py +0 -0
  105. {fastled-1.1.41 → fastled-1.1.61}/tests/test_ino/embedded/data/bigdata.dat +0 -0
  106. {fastled-1.1.41 → fastled-1.1.61}/tests/test_project_init.py +0 -0
  107. {fastled-1.1.41 → fastled-1.1.61}/tests/test_server_and_client_seperatly.py +0 -0
  108. {fastled-1.1.41 → fastled-1.1.61}/tests/test_webcompile.py +0 -0
  109. {fastled-1.1.41 → fastled-1.1.61}/upload_package.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastled
3
- Version: 1.1.41
3
+ Version: 1.1.61
4
4
  Summary: FastLED Wasm Compiler
5
5
  Home-page: https://github.com/zackees/fastled-wasm
6
6
  Maintainer: Zachary Vorhies
@@ -33,8 +33,7 @@ Compiles an Arduino/Platformio sketch into a wasm binary that can be run directl
33
33
 
34
34
  [![Build and Push Multi Docker Image](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml)
35
35
  [![Build Executables](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml)
36
- [![Create Version Tag](https://github.com/zackees/fastled-wasm/actions/workflows/create_version_tag.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/create_version_tag.yml)
37
- [![Build and Publish Release](https://github.com/zackees/fastled-wasm/actions/workflows/build_release.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_release.yml)
36
+ [![Publish Release](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml)
38
37
 
39
38
 
40
39
  # About
@@ -88,7 +87,7 @@ You can also spawn a server in one process and then access it in another, like t
88
87
  ```bash
89
88
  fastled --server # server will now run in the background.
90
89
  # now launch the client
91
- fastled examples/wasm --local # local will find the local server use it do the compile.
90
+ fastled examples/wasm --local # local will find the local server and use it to do the compile.
92
91
  ```
93
92
 
94
93
  After compilation a web browser windows will pop up. Changes to the sketch will automatically trigger a recompilation.
@@ -184,7 +183,7 @@ with Api.server() as server:
184
183
 
185
184
  ## Hot reload by default
186
185
 
187
- Once launched, the compiler will remain open, listening to changes and recompiling as necessary and hot-reloading the sketch into the current browser.
186
+ Once launched, the compiler will remain open, listening to changes and recompiling as necessary, hot-reloading the sketch into the current browser.
188
187
 
189
188
  This style of development should be familiar to those doing web development.
190
189
 
@@ -193,19 +192,19 @@ This style of development should be familiar to those doing web development.
193
192
  If you launch `fastled` in the FastLED repo then this tool will automatically detect this and map the src directory into the
194
193
  host container. Whenever there are changes in the source code from the mapped directory, then these will be re-compiled
195
194
  on the next change or if you hit the space bar when prompted. Unlike a sketch folder, a re-compile on the FastLED src
196
- can be much longer, for example if you modify a header file.
195
+ can be much longer, for example, if you modify a header file.
197
196
 
198
197
  ## Big Data in `/data` directory won't be round-tripped
199
198
 
200
199
  Huge blobs of data like video will absolutely kill the compile performance as these blobs would normally have to be shuffled
201
200
  back and forth. Therefore a special directory `data/` is implicitly used to hold this blob data. Any data in this directory
202
- will be replaced with a stub containing the size and hash of the file during upload. On download these stubs are swapped back
201
+ will be replaced with a stub containing the size and hash of the file during upload. On download, these stubs are swapped back
203
202
  with their originals during decompression.
204
203
 
205
- The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest and can be used
204
+ The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest which can be used
206
205
  in your wasm sketch using an emulated SD card system mounted at `/data/` on the SD Card. In order to increase load speed, these
207
- files will be asynchroniously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
208
- immediately injected in the app before setup() is called and can be used immediatly in setup() in their entirety.
206
+ files will be asynchronously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
207
+ immediately injected in the app before setup() is called and can be used immediately in setup() in their entirety.
209
208
 
210
209
  All other files will be streamed in. The `Video` element in FastLED is designed to gracefully handle missing data streamed in through
211
210
  the file system.
@@ -214,30 +213,30 @@ For an example of how to use this see `examples/SdCard` which is fully wasm comp
214
213
 
215
214
  ## Compile Speed
216
215
 
217
- The compile speeds for this compiler have been optimized pretty much to the max. There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will aggressively optimize for size. The speed difference between `--release` and `--quick` seems negligable. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step through debugging. It works better than expected, but don't expect to have gdb or msvc debugger level of debugging experience.
216
+ There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will optimize for size, although the speed difference between `--release` and `--quick` seems negligible. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step-through debugging. In my personal tests it works better than expected, but don't expect to have gdb or msvc debugger level of the debugging experience.
218
217
 
219
- We use `ccache` to cache object files. This seems actually help a lot and is better than platformio's method of tracking what needs to be rebuilt. This works as a two tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
218
+ We use `ccache` to cache object files. This seems actually help a lot and is better than Platformio's method of tracking what needs to be rebuilt. This works as a two-tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
220
219
 
221
- The compilation to wasm will happen under a lock. Removing this lock requires removing the platformio toolchain as the compiler backend which enforces it's own internal lock preventing parallel use.
220
+ The compilation to wasm will happen under a lock. Removing this lock requires removing the Platformio toolchain as the compiler backend which enforces its own internal lock preventing parallel use.
222
221
 
223
222
  ## Sketch Cache
224
223
 
225
- Sketchs are aggressively finger-printed and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
226
- printing while the actual source files are sent to compiler to preserve line numbers and file names.
224
+ Sketches are aggressively fingerprinted and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
225
+ printing while the actual source files are sent to the compiler to preserve line numbers and file names.
227
226
 
228
- This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments even if the compiler is executing under it's lock.
227
+ This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments.
229
228
 
230
229
  ## Local compiles
231
230
 
232
- If the web-compiler get's congested then it's recommend that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launching a webserver and then connecting to it with the client once it's been up.
231
+ If the web compiler gets congested then it's recommended that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launch a webserver, and then connect to it with the client once it's been up.
233
232
 
234
233
  ## Auto updates
235
234
 
236
- In server mode the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long running instance to stay updated.
235
+ In server mode, the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long-running instance to stay updated.
237
236
 
238
- ## Compatibility with Arduino sketchs
237
+ ## Compatibility with Arduino sketches
239
238
 
240
- The compatibility is actually pretty good. Most simple sketchs should compile out of the box. Even some of the avr platform includes are stubbed out to make it work. The familiar `digitalWrite()`, `Serial.println()` and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
239
+ The compatibility is pretty good. Most simple sketches should compile out of the box. Even some of the AVR platforms are stubbed out to make it work. For Arduino, the familiar `digitalWrite()`, `Serial.println()`, and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
241
240
 
242
241
  ### Faqs
243
242
 
@@ -245,21 +244,27 @@ Q: How often is the docker image updated?
245
244
  A: It's scheduled for rebuild once a day at 3am Pacific time, and also on every change to this repo.
246
245
 
247
246
  Q: How can I run my own cloud instance of the FastLED wasm compiler?
248
- A: Render.com (which fastled is hosted on) or DigialOcean can accept a github repo and auto-build the docker image.
247
+ A: Render.com (which fastled is hosted on) or DigialOcean can accept a GitHub repo and auto-build the docker image.
249
248
 
250
249
  Q: Why does FastLED tend to become choppy when the browser is in the background?
251
250
  A: FastLED Wasm currently runs on the main thread and therefor Chrome will begin throttling the event loop when the browser is not in the foreground. The solution to this is to move FastLED to a web worker where it will get a background thread that Chrome / Firefox won't throttle.
252
251
 
253
252
  Q: Why does a long `delay()` cause the browser to freeze and become sluggish?
254
- A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect main thread performance of the browser.
253
+ A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect the main thread performance of the browser.
255
254
 
256
255
 
257
256
  Q: How can I get the compiled size of my FastLED sketch smaller?
258
- A: A big chunk of space is being used by unnecessary javascript `emscripten` is bundling. This can be tweeked by the wasm_compiler_settings.py file in the FastLED repo.
259
-
257
+ A: A big chunk of space is being used by unnecessary javascript `emscripten` bundling. The wasm_compiler_settings.py file in the FastLED repo can tweak this.
260
258
 
261
259
  # Revisions
262
260
 
261
+ * 1.1.61 - Excluded non compiling examples from the Test object as part of the api - no sense in having them if they won't compile.
262
+ * 1.1.60 - Platform executables (macos-arm/macos-x86/windows/linux-x86) now auto building with each release. Add tests.
263
+ * 1.1.52 - Add linux-arm
264
+ * 1.1.49 - Try again.
265
+ * 1.1.46 - Add mac x86 exe
266
+ * 1.1.45 - Another try for web publishing from github.
267
+ * 1.1.42 - Second test for web publishing from github.
263
268
  * 1.1.41 - Platform executable (through pyinstaller) now enabled.
264
269
  * 1.1.40 - Remove `sketch_directory` from Api object. This was only needed before we had a client/server architecture.
265
270
  * 1.1.39 - Added `LiveClient`, `fastled.Api.live_server()` will spawn it. Allows user to have a live compiling client that re-triggers a compile on file changes.
@@ -10,8 +10,7 @@ Compiles an Arduino/Platformio sketch into a wasm binary that can be run directl
10
10
 
11
11
  [![Build and Push Multi Docker Image](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_multi_docker_image.yml)
12
12
  [![Build Executables](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/test_build_exe.yml)
13
- [![Create Version Tag](https://github.com/zackees/fastled-wasm/actions/workflows/create_version_tag.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/create_version_tag.yml)
14
- [![Build and Publish Release](https://github.com/zackees/fastled-wasm/actions/workflows/build_release.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/build_release.yml)
13
+ [![Publish Release](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml/badge.svg)](https://github.com/zackees/fastled-wasm/actions/workflows/publish_release.yml)
15
14
 
16
15
 
17
16
  # About
@@ -65,7 +64,7 @@ You can also spawn a server in one process and then access it in another, like t
65
64
  ```bash
66
65
  fastled --server # server will now run in the background.
67
66
  # now launch the client
68
- fastled examples/wasm --local # local will find the local server use it do the compile.
67
+ fastled examples/wasm --local # local will find the local server and use it to do the compile.
69
68
  ```
70
69
 
71
70
  After compilation a web browser windows will pop up. Changes to the sketch will automatically trigger a recompilation.
@@ -161,7 +160,7 @@ with Api.server() as server:
161
160
 
162
161
  ## Hot reload by default
163
162
 
164
- Once launched, the compiler will remain open, listening to changes and recompiling as necessary and hot-reloading the sketch into the current browser.
163
+ Once launched, the compiler will remain open, listening to changes and recompiling as necessary, hot-reloading the sketch into the current browser.
165
164
 
166
165
  This style of development should be familiar to those doing web development.
167
166
 
@@ -170,19 +169,19 @@ This style of development should be familiar to those doing web development.
170
169
  If you launch `fastled` in the FastLED repo then this tool will automatically detect this and map the src directory into the
171
170
  host container. Whenever there are changes in the source code from the mapped directory, then these will be re-compiled
172
171
  on the next change or if you hit the space bar when prompted. Unlike a sketch folder, a re-compile on the FastLED src
173
- can be much longer, for example if you modify a header file.
172
+ can be much longer, for example, if you modify a header file.
174
173
 
175
174
  ## Big Data in `/data` directory won't be round-tripped
176
175
 
177
176
  Huge blobs of data like video will absolutely kill the compile performance as these blobs would normally have to be shuffled
178
177
  back and forth. Therefore a special directory `data/` is implicitly used to hold this blob data. Any data in this directory
179
- will be replaced with a stub containing the size and hash of the file during upload. On download these stubs are swapped back
178
+ will be replaced with a stub containing the size and hash of the file during upload. On download, these stubs are swapped back
180
179
  with their originals during decompression.
181
180
 
182
- The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest and can be used
181
+ The wasm compiler will recognize all files in the `data/` directory and generate a `files.json` manifest which can be used
183
182
  in your wasm sketch using an emulated SD card system mounted at `/data/` on the SD Card. In order to increase load speed, these
184
- files will be asynchroniously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
185
- immediately injected in the app before setup() is called and can be used immediatly in setup() in their entirety.
183
+ files will be asynchronously streamed into the running sketch instance during runtime. Files named with *.json, *.csv, *.txt will be
184
+ immediately injected in the app before setup() is called and can be used immediately in setup() in their entirety.
186
185
 
187
186
  All other files will be streamed in. The `Video` element in FastLED is designed to gracefully handle missing data streamed in through
188
187
  the file system.
@@ -191,30 +190,30 @@ For an example of how to use this see `examples/SdCard` which is fully wasm comp
191
190
 
192
191
  ## Compile Speed
193
192
 
194
- The compile speeds for this compiler have been optimized pretty much to the max. There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will aggressively optimize for size. The speed difference between `--release` and `--quick` seems negligable. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step through debugging. It works better than expected, but don't expect to have gdb or msvc debugger level of debugging experience.
193
+ There are three compile settings available to the user. The default is `--quick`. Aggressive optimizations are done with `--release` which will optimize for size, although the speed difference between `--release` and `--quick` seems negligible. But `--release` will produce a ~1/3 smaller binary. There is also `--debug`, which will include symbols necessary for debugging and getting the C++ function symbols working correctly in the browser during step-through debugging. In my personal tests it works better than expected, but don't expect to have gdb or msvc debugger level of the debugging experience.
195
194
 
196
- We use `ccache` to cache object files. This seems actually help a lot and is better than platformio's method of tracking what needs to be rebuilt. This works as a two tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
195
+ We use `ccache` to cache object files. This seems actually help a lot and is better than Platformio's method of tracking what needs to be rebuilt. This works as a two-tier cache system. What Platformio misses will be covered by ccache's more advanced file changing system.
197
196
 
198
- The compilation to wasm will happen under a lock. Removing this lock requires removing the platformio toolchain as the compiler backend which enforces it's own internal lock preventing parallel use.
197
+ The compilation to wasm will happen under a lock. Removing this lock requires removing the Platformio toolchain as the compiler backend which enforces its own internal lock preventing parallel use.
199
198
 
200
199
  ## Sketch Cache
201
200
 
202
- Sketchs are aggressively finger-printed and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
203
- printing while the actual source files are sent to compiler to preserve line numbers and file names.
201
+ Sketches are aggressively fingerprinted and stored in a cache. White space, comments, and other superficial data will be stripped out during pre-processing and minimization for fingerprinting. This source file decimation is only used for finger
202
+ printing while the actual source files are sent to the compiler to preserve line numbers and file names.
204
203
 
205
- This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments even if the compiler is executing under it's lock.
204
+ This pre-processing done is done via gcc and special regex's and will happen without a lock. This will allow you to have extremely quick recompiles for whitespace and changes in comments.
206
205
 
207
206
  ## Local compiles
208
207
 
209
- If the web-compiler get's congested then it's recommend that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launching a webserver and then connecting to it with the client once it's been up.
208
+ If the web compiler gets congested then it's recommended that you run the compiler locally. This requires docker and will be invoked whenever you pass in `--local`. This will first pull the most recent Docker image of the Fastled compiler, launch a webserver, and then connect to it with the client once it's been up.
210
209
 
211
210
  ## Auto updates
212
211
 
213
- In server mode the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long running instance to stay updated.
212
+ In server mode, the git repository will be cloned as a side repo and then periodically updated and rsync'd to the src directory. This allows a long-running instance to stay updated.
214
213
 
215
- ## Compatibility with Arduino sketchs
214
+ ## Compatibility with Arduino sketches
216
215
 
217
- The compatibility is actually pretty good. Most simple sketchs should compile out of the box. Even some of the avr platform includes are stubbed out to make it work. The familiar `digitalWrite()`, `Serial.println()` and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
216
+ The compatibility is pretty good. Most simple sketches should compile out of the box. Even some of the AVR platforms are stubbed out to make it work. For Arduino, the familiar `digitalWrite()`, `Serial.println()`, and other common functions work. Although `digitalRead()` will always return 0 and `analogRead()` will return random numbers.
218
217
 
219
218
  ### Faqs
220
219
 
@@ -222,21 +221,27 @@ Q: How often is the docker image updated?
222
221
  A: It's scheduled for rebuild once a day at 3am Pacific time, and also on every change to this repo.
223
222
 
224
223
  Q: How can I run my own cloud instance of the FastLED wasm compiler?
225
- A: Render.com (which fastled is hosted on) or DigialOcean can accept a github repo and auto-build the docker image.
224
+ A: Render.com (which fastled is hosted on) or DigialOcean can accept a GitHub repo and auto-build the docker image.
226
225
 
227
226
  Q: Why does FastLED tend to become choppy when the browser is in the background?
228
227
  A: FastLED Wasm currently runs on the main thread and therefor Chrome will begin throttling the event loop when the browser is not in the foreground. The solution to this is to move FastLED to a web worker where it will get a background thread that Chrome / Firefox won't throttle.
229
228
 
230
229
  Q: Why does a long `delay()` cause the browser to freeze and become sluggish?
231
- A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect main thread performance of the browser.
230
+ A: `delay()` will block `loop()` which blocks the main thread of the browser. The solution is a webworker which will not affect the main thread performance of the browser.
232
231
 
233
232
 
234
233
  Q: How can I get the compiled size of my FastLED sketch smaller?
235
- A: A big chunk of space is being used by unnecessary javascript `emscripten` is bundling. This can be tweeked by the wasm_compiler_settings.py file in the FastLED repo.
236
-
234
+ A: A big chunk of space is being used by unnecessary javascript `emscripten` bundling. The wasm_compiler_settings.py file in the FastLED repo can tweak this.
237
235
 
238
236
  # Revisions
239
237
 
238
+ * 1.1.61 - Excluded non compiling examples from the Test object as part of the api - no sense in having them if they won't compile.
239
+ * 1.1.60 - Platform executables (macos-arm/macos-x86/windows/linux-x86) now auto building with each release. Add tests.
240
+ * 1.1.52 - Add linux-arm
241
+ * 1.1.49 - Try again.
242
+ * 1.1.46 - Add mac x86 exe
243
+ * 1.1.45 - Another try for web publishing from github.
244
+ * 1.1.42 - Second test for web publishing from github.
240
245
  * 1.1.41 - Platform executable (through pyinstaller) now enabled.
241
246
  * 1.1.40 - Remove `sketch_directory` from Api object. This was only needed before we had a client/server architecture.
242
247
  * 1.1.39 - Added `LiveClient`, `fastled.Api.live_server()` will spawn it. Allows user to have a live compiling client that re-triggers a compile on file changes.
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include <FastLED.h>
7
7
 
8
- #include "fx/2d/noisepalette.hpp"
8
+ #include "fx/2d/noisepalette.h"
9
9
  #include "fx/2d/animartrix.hpp"
10
10
  #include "fx/fx_engine.h"
11
11
  #include "fx/storage/sd.h"
@@ -15,7 +15,7 @@
15
15
  #if COMPILE_NOISEPLUSPALETTE
16
16
 
17
17
  #include <FastLED.h>
18
- #include "fx/2d/noisepalette.hpp"
18
+ #include "fx/2d/noisepalette.h"
19
19
  #include "fl/ui.h"
20
20
 
21
21
  #define LED_PIN 3
@@ -13,7 +13,7 @@
13
13
  #include <string>
14
14
 
15
15
  #include <FastLED.h>
16
- #include "fx/2d/noisepalette.hpp"
16
+ #include "fx/2d/noisepalette.h"
17
17
  #include "fl/json.h"
18
18
  #include "fl/slice.h"
19
19
  #include "fx/fx_engine.h"
@@ -9,7 +9,7 @@ from .compile_server import CompileServer
9
9
  from .live_client import LiveClient
10
10
  from .types import BuildMode, CompileResult, CompileServerError
11
11
 
12
- __version__ = "1.1.41"
12
+ __version__ = "1.1.61"
13
13
 
14
14
 
15
15
  class Api: