Recently, pull request #987 was merged, moving the Tock C userland into its own repository: libtock-c. This puts the C runtime for userland applications on the same footing as the growing Rust userland, and further emphasizes the kernel-userspace separation present in Tock.
Developing, testing, and using C applications should be the same as before the split. The repository changed, but the build system is the same.
Tock App Repository
The primary concern about splitting C apps into their own repository is it
places a new hurdle in front of new Tock users to get code up and running
quickly. To try to alleviate this, a new feature was added to Tockloader to
allow it to grab a Tock application (
.tab file) from the tockos.org website,
and install it to a board. This, for example, allows someone to verify that they
can get their board to blink without actually having to compile the blink app.
Doing this is straightforward:
$ tockloader install blink
This is very preliminary support for a remote app repository, but we expect it to expand in the future.
Loose Ends with the Move
The C userland and the kernel have been coupled since Tock was started to be developed, and many references and pointers in the documentation were intertwined between them. We have found and tried to straighten out most of these, but almost certainly there are lingering links or sentences that do not quite fit anymore. If you find one, please let us know through a pull request, issue, or on IRC.
Part of a Larger Push
As Tock matures, certain components have matured to the point where they are useful outside of Tock, are shared with multiple individual projects, or need their own repository and issue tracker. The C userland is one example, but there are others as well:
- elf2tab, the tool that converts normal .elf files to Tock apps, is shared between the C and Rust userlands and now has its own repository.
- The Tock Register Interface is being moved to its own crate so other projects can use it.
- The various
cell-like types that Tock uses will likely move to their own crate so they can be more easily used as well.