Releases: GIRA/PhysicalBits
PhysicalBits.v1.0
What's Changed
- Advanced toolbox by @vickyagnelli in #62
- Fix toolbox Adv by @vickyagnelli in #67
- modify names with numbers in the first character by adding an underscore by @vickyagnelli in #68
- Strings by @vickyagnelli in #72
New Contributors
- @vickyagnelli made their first contribution in #62
Full Changelog: v0.7.0...v1.0
PhysicalBits.v0.7.0
Fixed a bug when encoding branch instructions with jumps longer than 7 bits. Apparently we had this bug since the beginning but we found it now because since v0.6.1 we hid the "timer" block and instead we started using the regular "task" with a "forever" block inside, which made the problem more obvious as we now have a jmp instruction at the end of the task. To fix it I added a bunch of primitives that essentially perform the same jumps but taking the offset from the stack instead of the instruction's data. This means we can perform much larger jumps at the cost of a bigger program.
Full Changelog: v0.6.2...v0.7.0
PhysicalBits.v0.6.2
CHANGELOG
- Added new toolbox category "Logic" with a few blocks that were previously placed in "Math"
- Fixed inspector bug when disconnecting the board
Full Changelog: v0.6.1...v0.6.2
PhysicalBits.v0.6.1
CHANGELOG
- The toolbox was rearranged a little to make it easier to understand for beginners.
- Added question marks to the labels of some boolean blocks.
- Implemented setting pin and global values from the inspector panel.
- Small improvements on the output console to avoid unnecessary messages.
Full Changelog: v0.6.0...v0.6.1
PhysicalBits.v0.6.0
CHANGELOG
- Added debugger, with support for setting breakpoints and step-by-step execution.
- Added highlighting of the corresponding code when the user selects a block.
- Added highlighting of the corresponding block when the user selects a section of code.
- Improved code -> block generation.
- Changed parser to support defining numbers using scientific notation.
- Fixed automatic port scanning.
- Added a simple simulator for the DEMO version by compiling the firware to wasm using emscripten.
- Improved ClojureScript support (now almost all of the code could run in node instead of JVM).
- Added an optional event logger to register all user actions in a CSV file.
- Added configurable features (allowing to customize the user interface).
- Many bug fixes and optimizations.
Full Changelog: v0.5.1...v0.6.0
PhysicalBits.v0.5.1
CHANGELOG
- Several improvements to the UDP server.
- Changed config.edn so that pseudo-vars are disabled by default.
PhysicalBits.v0.5
CHANGELOG
Firmware:
- Added a very simple integrity check for incoming programs.
- Improved VM error reporting. Now errors are implemented as bit flags and multiple errors can be reported simultaneously.
- Added primitive support for arrays.
- Added primitive support for LCD displays (still very basic, though).
- Improved memory management. Now instead of reserving a fixed buffer for the stack, it will share the same memory space reserved for the program. This way we make better use of the memory available if the program is large but the stack is shallow (or viceversa).
- Changed the monitor report interval to be updated dynamically based on the VM profiling (very simplistic but seems to work).
- Changed monitor to update the keep alive counter after every message received.
- Changed reporting to avoid sending too much data, instead spreading it over time.
- Changed program layout to include all the instructions in a contiguous array (before each script had its instructions). This simplifies indexing instructions by pc.
- Added a "once" flag to scripts. This allows the VM to stop the script after the first run instead of relying on the compiler to emit a "stop" instruction (which was buggy in some edge cases).
- Reduced the serial timeout from 1s to 100ms.
- Changed VM to avoid context switching after every backward jump. Instead, it now counts the number of loops and yields after this counter surpasses a given threshold (or the duration of the current tick gets longer than 1 ms).
- Added a virtual register to the VM for return values. Before, this was stored in the stack frame wasting stack space.
Middleware:
- Optimized websocket server to send only the data that changed instead of the entire state map every time.
- Added an UDP server that notifies pin and global data to a single client (useful for the godot plugin).
- Implemented new parser using clj-petitparser instead of instaparse. This new parser is much faster.
- Optimized device controller communication by allowing the middleware to specify its desired reporting interval.
- Refactored device controller to use its own thread for the communication with the firmware (instead of a core.async go-loop).
- Refactored http server to use a single thread for polling the controller (instead of a go-loop).
- Added support for "pseudo-vars" (internal data that we show in the GUI for testing purposes).
- Removed reflection and boxing warnings by adding type-hints where needed.
- Updated device protocol with the changes from the firmware.
- Added support for ClojureScript (only the parser and compiler, for now).
- Changed parser to support global variable declarations between or after scripts.
- Added a small configuration module that allows to change some internal settings by editing a file.
- Fixed compiler bug regarding NaN values.
- Changed parser to include the token data in the AST. This allows for better error reports that include the source code.
Uzi libraries:
- Added "List.uzi" to work with lists.
- Added "Array.uzi" to work with fixed sized arrays.
- Added "LCD_I2C.uzi" to work with LCD displays.
GUI:
- Added blocks to work with lists.
- Added hidden block for "yield" statements.
- Improved performance to the uzi.js websocket client.
- Refactored code for the blockly modals.
- Refactored code for JSON encoding/decoding.
- Refactored code for the panel layouts.
- Added a plotter panel that allows to show the values of globals and pins over time.
- Changed i18n.js to allow for null values in the translations file.
- Added some missing translations.
- Added available memory to the inspector panel.
- Added "pseudo vars" to the inspector panel (just for testing).
PhysicalBits.v0.4.1
The main new thing about this release is that it includes a custom JRE so users don't have to install java on their computers.
I also changed the default baud-rate to 9600. It seems to work fine in all the tests I did. And it's also the default baud-rate of the common HC-05 and HC-06 bluetooth modules, so with this change users should be able to use the bluetooth connection out of the box.
Finally, I made some small bug fixes and improvements to the GUI.
PhysicalBits.v0.4.0
Platform | File(s) |
---|---|
Web | PhysicalBITS.v0.4.0-web.zip (Cross-platform) |
Windows | PhysicalBITS.v0.4.0-win32-ia32.zip (32 bits) PhysicalBITS.v0.4.0-win32-x64.zip (64 bits) |
macOS | PhysicalBITS.v0.4.0-darwin-x64.zip |
For older versions visit our releases page.
Installation
Installing Java
Unfortunately, all versions require Java. We're working on removing this dependency but, for now, you'll need it in order to run Physical Bits.
If you already have a version of Java installed on your computer you can skip this step. Otherwise, we recommend you to download and install a version of the OpenJDK.
Installing the firmware
In order for Physical Bits to connect to your Arduino board you'll first need to upload the firmware using the Arduino IDE.
The UziFirmware.ino
can be found on the /firmware
directory inside the zip you just downloaded.
This step needs to be done once for every board you want to use with Physical Bits. We're working on making this step automatic but, for now, you'll need to do it yourself.
Starting the application
The web version should work on all platforms, after unzipping simply run the start.bat
(on Windows) or start.sh
(on Linux or macOS). After a few seconds a browser should open with the Physical Bits IDE.
The desktop versions use electron to provide a native experience but in the background they run the same server as the web version. Simply run the PhysicalBits.exe
(on Windows) or PhysicalBits.app
(on macOS).
PhysicalBITS.v0.3.1
This release includes both web and desktop versions.
The web version should work on all platforms, simply run the start.bat
(on Windows) or start.sh
(on Linux or macOS).
The desktop versions are still experimental, they use electron to provide a native experience but in the background they run the same server as the web version.
Unfortunately, all versions require Java.
Finally, the UziFirmware.ino
can be found on the /firmware
directory. Don't forget to upload it on your arduino board before connecting.
Special thanks to all the people who contributed in some way or another to this project. In no particular order:
- Kristian Kankainen
- Matías Teragni
- Romina Barbosa
- Nicolas Puccio
DISCLAIMER: This is still a work in progress, so expect MANY bugs, experiments, and unfinished features.