Rumba Language Support for VS Code
Syntax highlighting and language support for Rumba (.rum) - a purpose-built systems language for cryptographic implementations.
Features
The extension provides full syntax highlighting for Rumba source files including keywords (fn, local, const, type, struct, if, for, while), fixed-width types (u8, u16, u32, u64, bool, bytes), bitwise operators (and, or, xor, not, rotr, rotl, shr, shl), annotations (@always_inline, @constant_time, @target), test and benchmark blocks, and both line (--) and block (--[[ ]]) comments.
The extension also includes language configuration for auto-closing brackets and quotes, comment toggling, proper indentation rules, and code folding.
Installation
Download the .vsix file from releases, then in VS Code press Ctrl+Shift+P (or Cmd+Shift+P on Mac), type "Install from VSIX", select the file, and reload.
To build from source:
cd rumba-vscode
npm install
npm run package
Theme
The extension includes Rumba Dark, a theme designed for cryptographic code with a dark background (#202227) for reduced eye strain, clear distinction between keywords, types, and functions, and bright numbers for easy constant identification.
To activate: Preferences > Color Theme > Rumba Dark
| Element |
Hex |
| Background |
#202227 |
| Text |
#bcbec8 |
| Keywords |
#eb7973 |
| Numbers |
#f2ba2a |
| Strings |
#8ee9b6 |
| Comments |
#6a6f81 |
| Types |
#528bff |
| Functions |
#fae4aa |
| Built-ins |
#8fb4ff |
| Annotations |
#70c0e8 |
Example
--[=[
SHA-256 Cryptographic Hash Function
Sizes:
Block: 64 bytes
Digest: 32 bytes
]=]
module sha256
type Word = u32
type State = [Word; 8]
const H_INIT: State = [
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
]
fn S0(x: Word) -> Word
return (x rotr 2) xor (x rotr 13) xor (x rotr 22)
end
@constant_time
secret fn ct_compare(a: secret [u8; 32], b: secret [u8; 32]) -> bool
local diff: u8 = 0
for i = 0, 31 do
diff = diff or (a[i] xor b[i])
end
return diff == 0
end
test "S0 known value" do
assert S0(0x6a09e667) == 0xce20b47e
end
bench "compression" do
sample 10000
warmup 100
compress(H_INIT, block)
end
License
MIT