1. d52a099 less derpy environment "sandboxing" for shell.execute, instead tracking events per thread now, and removing those of dead threads; thus, programs are now run in their own coroutines, which also allows emulation of cc's yield behavior (pulling events = signals); no label = null instead of empty string now by Florian Nücke · 11 years ago
  2. 7cf9fad allow settings fs label on construction and added read-only flag (used to forbid label change on ro systems); forbid setting label on volatile systems (in particular tmpfs); added program to manipulate fs labels; added program to display disk usage by Florian Nücke · 11 years ago
  3. c51d551 cleaned up lua stuff a bit; split off unicode stuff into extra table; some fixes (fs.exists for non-existent virtual objects, `less` program, other stuff i forgot); added mount and umount programs by Florian Nücke · 11 years ago
  4. 78a426c metric ton of fixes. somehow the number of touches files feels too low... anyway, also added option to LuaCallback annotation to mark callbacks as asynchronous (meaning they will be called directly from the executor thread) and synchronized the sh*t out of the network manager in the hopes that not all will crumble to pieces due to sending messages around while someone meddles with the network (program calls sth while player places/breaks block e.g.); oh, and we now take the memory baseline after loading the libs, meaning 32k is enough to run a computer again. also, loading libs is done asynchronously now, since it's loaded from the rom and nobody else should be able to access that anyway, meaning fast boot-times; command line program to manipulate redstone output and read input by Florian Nücke · 11 years ago
  5. a7ec5c0 things are slowly beginning to work again... it's still all a big mess, though by Florian Nücke · 11 years ago
  6. c556f40 simplified redstone driver (just using the message source as the redstone input/output provider) by Florian Nücke · 11 years ago
  7. 1454512 pcall for event error handler; super-hacky low-level boot progress feedback (as soon as any gpu in the pc has been bound, so it'll only work after the first boot and if the hardware doesn't change between boots, but hey!); keeping leading / in absolute paths in fs.canonical; prefixing paths specified to shell.path with a / if there is none already (making them explicitly absolute); moved file handle gc to the file stream, which is more logical; increased width of minimal resolution a bit (mainly so that the lua copyright notice fits into one line :P); made more gpu driver functions return a true boolean if they were called successfully; limiting the number of open handles a single computer can have per filesystem by Florian Nücke · 11 years ago
  8. a628822 changed garbage collection of file handles a bit. although it was working, in hindsight i'm really not quite sure *how*, or rather: Lua seems to be smarter than I already gave it credit for. it apparently realized that a new reference to the object to be gc'ed was created in its finalizer, so it let it live. however, i'm not quite sure why that didn't lead to a pseudo-infinite loop. now we just keep the stream as an upvalue for the timer callback that actually closes the stream; also, removed the checks if event.timer exists. if people remove that it's really their own problem by Florian Nücke · 11 years ago
  9. 4a664bb some cleanup; automatically restarting the shell if it stops (avoids the occasional ctrl+c shutting down the computer); added os.sleep and extended event.wait to take a filter, which basically makes it similar to cc's pullEvent with an optional timeout; determining io buffer size based on current free ram and added a minimum size; some better "sandboxing" for programs (which really isn't that, just making automatic listener cleanup as consistent as possible); using error messages in (uncaught) exceptions where possible, making for some nicer error messages, for example for out of memory errors when pushing results from the host side; made difftime a lua function; properly initializing text renderer on multi-screens; added program for paged file viewing by Florian Nücke · 11 years ago
  10. a8288b2 ctrl+d for soft and ctrl+c for hard abort in term.read, resulting in 'nil' being read, signalling an eof and thus allowing the lua program to be quit that way; removed the exit() function from the lua function; added `shell.parse` for rudimentary argument parsing (anything starting with `-` is treated as an option or a list of option (each option name must be exactly one char); added key state tracking and keyboard library by Florian Nücke · 11 years ago
  11. e9f2fac cleaned up some on the lua side, moving a couple of things in to 'lib' files that they belong to (in particular io api moved over from the filesystem driver, os api reimplementation stuff and base api); switched from a set of resolutions to a maximum resolution per tier; removed the magic ram bonus that was used to avoid standard lib stuff hitting the ram requirements too much, but that got too wonky. downside is that right now we need 96k to boot a computer, will either have to bump the ram module sizes or try to reduce that. by Florian Nücke · 11 years ago
  12. 010e4cc fixed screen.fill; corrected screen aspect ratio and added code for stretched rendering by Florian Nücke · 11 years ago
  13. 95e9997 fixed two string.* functions (were still bxxx instead of uxxx); fixed tmp not being cleared properly. again; stripped some implementations from api traits, to make it easier to transition them to Java (which I think we should do in the long run, after all) by Florian Nücke · 11 years ago
  14. e6bbfdc multi-tier screens and gpus. three tiers, with increasing resolutions and (at some point) color starting with the second tierl; custom "Ordering" implementation so we can just sort screens by their coordinates one by one instead of hashing them; Tuple (and untested Seq) return values supported for driver callbacks (converted to tables); added a field called "n" to all "arrays" returned from driver calls (so also tuples and seqs) mimicking Lua's table.pack by Florian Nücke · 11 years ago
  15. a3c0ae6 define languages via pack.mcmeta (not hardcoded in proxy) by Florian Nücke · 11 years ago
  16. 519afa4 minor tweaks to alias programs by Florian Nücke · 11 years ago
  17. d25c824 multi dir ls and -l option for ls; using shell.execute for autorun; aliases for shell; fixed interval not being cleared from shell.exec'd programs; immediately show cursor blink again when moving the cursor (left, right, home, end), makes navigating easier by Florian Nücke · 11 years ago
  18. 60118f1 lua program can now be quit using 'exit()' function by Florian Nücke · 11 years ago
  19. b52cc44 eris fixes (remind me to also compile for linux later...) by Florian Nücke · 11 years ago
  20. d083f34 some more and init cleanup by Florian Nücke · 11 years ago
  21. 9785ab4 proper shell and a bunch of utility programs by Florian Nücke · 11 years ago
  22. e582fe6 changed the Persistable interface a bit to now use names "compatible" with tile entities (readFromNBT and writeToNBT) and made the overrides in the Node trait abstract. this way tile entities will *have* to implement these two functions, making it less likely to ... forget calling save on nodes. the only negative is that one still has to manually call the two different "super" implementations, the one on the tile entity explicitly (in our case usually super[Rotatable].read/write...) in addition to the usual super call. seems to work so far. by Florian Nücke · 11 years ago
  23. ccf53d6 defaulting to standard lua string functions and making unicode ones available prefixed with a u (uchar, ulen, usub, ureverse); fixed event erroring being weird; fixed wrong case check order in kernel; fixed error when netsplitting a component from a computer; fixed localization for disk drive; config for name to provide when running command in command block; increased range of keyboards; adapter blocks re-use the same addresses for the blocks attached to them to avoid computers losing track of those nodes after reloading by Florian Nücke · 11 years ago
  24. 728b428 made screen background (non-gui) ever so slightly less pitch-black, so it doesn't look like a black hole that much... by Florian Nücke · 11 years ago
  25. 0320935 progress on multi-block screens by Florian Nücke · 11 years ago
  26. cbfbc2f refactored screen env into screen's companion object (same as already done with computer); keeping track of pressed keys client-side to send char on key-up (lwjgl doesn't seem to properly provide that, code and char always seem to be 0 on key up) and to send key up events for all still pressed keys when closing the gui. server will have to keep track of all key presses (and the players that did them) at some point, too, since clients may just disconnect, for example (or be malicious) by Florian Nücke · 11 years ago
  27. db139a1 using slot's built-in background icon functionality in computer gui now by Florian Nücke · 11 years ago
  28. 8ed4875 disk drive and floppy disks (disk drives are mountable and act as a "proxy" for the item in them); minor refactoring; by Florian Nücke · 11 years ago
  29. c3ae449 update method in node; adapter is a computercraft peripheral now (untested obviously since cc isn't 1.64 yet); some more access options for network cards by Florian Nücke · 11 years ago
  30. 2dadc4b adapter block and driver for command block by Florian Nücke · 11 years ago
  31. 1e8d48c added textures for power blocks and reworked rendering of tile entity overlays a little (better way of ignoring lighting now) by Florian Nücke · 11 years ago
  32. 266732f new node concept: computer visibility. this allows components to be visible across the network but not pop up as components in computers (`component_added` signal), which is useful for a couple of components, such as power related stuff or the newly added network cards; network cards! kind of trivial with all the networking infrastructure already in place; renamed network.connect/disconnect to system.connect/disconnect to make the network.* "namespace" usable for network cards by Florian Nücke · 11 years ago
  33. ac833cf implemented os.tmpname and io.tmpfile (sort of as they should be) by Florian Nücke · 11 years ago
  34. 6485dca introduced modification time for file systems; using that to do some checks when synchronizing a real file system with a virtual file system (won't overwrite or delete newer files anymore); cleanup up vfs implementation a little by Florian Nücke · 11 years ago
  35. ee5a8a0 fixed line buffer mode; removed term.screen, term.gpu and term.keyboard and introduced the concept of "primary" components in the component api (via component.isAvailable and component.primary) as a replacement; renamed coroutine.sleep to event.wait and changed the logic so that passing math.huge waits indefinitely (will never return); documented config entries more extensively; added basememory to kernel memory so that it's hidden from os.totalMemory; rs and gpu apis that use the primary redstone/gpu component to avoid having to pass the address everywhere by Florian Nücke · 11 years ago
  36. db0e649 labels for disks by Florian Nücke · 11 years ago
  37. dfde3d9 fixed shell crashing when monitor was removed; fixed empty entries being added to history when monitor was removed by Florian Nücke · 11 years ago
  38. 22ae984 buffered file systems (only save data to disk when the world is saving); the data stored to disk directly is really just a copy of the data, which is also stored in the world, since we use a virtual file system for that (same as for /tmp) by Florian Nücke · 11 years ago
  39. 9459366 fixed some issues with file:seek; added a virtual file system implementation that keeps all files in memory, used for a volatile /tmp mount in computers for now (512KB of writable memory that gets wiped on reboot) by Florian Nücke · 11 years ago
  40. 7b4e15c redstone cards are working, both input and output. i think. mostly, anyway. by Florian Nücke · 11 years ago
  41. e4ef181 fixed capacity adjustment when creating dirs; copy implementation; fixed bug when opening multiple files at once by Florian Nücke · 11 years ago
  42. fa2052e hard drive tooltips (if initialized; added mkdir to fs driver on lua side; fixed recursive delete (folders) by Florian Nücke · 11 years ago
  43. 2888ba5 some fixes and folder renaming; keeping the rom mounted as root now by Florian Nücke · 11 years ago
  44. acd5603 re-added clipboard pasting (now for term.read()) and fixed clipboard being sent twice (only on key down again now) by Florian Nücke · 11 years ago
  45. 6544161 fixed option stringness check in file:read; key up is now sent; much improved input handler, available as term.read, which supports side scrolling, arbitrary length history via a passable table, cursor movement to edit in-line, and general awesomeness; using that reader as the backend for stdin's chunk reader and using io.read() in sh by Florian Nücke · 11 years ago
  46. d460fe9 properly returning nil when at eof when reading from files in lua; fixed binary read by Florian Nücke · 11 years ago
  47. d363d03 changed os.clock to be the actual cpu time of the computer and introduced os.uptime as the replacement of the old functionality; dofile now properly throws when loading fails; graphicscard now stores the screen its bound to in the component, which allows for the computer to display messages after it crashed (by sending a display request to neighbors -> graphicscards installed in it); fixed potential timeout in os.signal; wrappers for pcall and xpcall to enforce timeout when they return, too by Florian Nücke · 11 years ago
  48. a73ed00 fixed io.type by Florian Nücke · 11 years ago
  49. 9886e64 better lua default io lib emulation (with stdin and stdout); fixed idling to use infinite sleep instead of busy idling; some other small fixes on the lua side of things by Florian Nücke · 11 years ago
  50. 9ca87be underped derped synchronized calls by Florian Nücke · 11 years ago
  51. 4d7c960 minor renaming by Florian Nücke · 11 years ago
  52. 5c29bd9 file system cleanup; access to total and used space for capped file systems by Florian Nücke · 11 years ago
  53. 9805828 allowing to return stuff from multi-receiver network messages again; capactiy for file systems and saving handles in fs node; some other minor fixes by Florian Nücke · 11 years ago
  54. 0441f10 hard drive graphics by Florian Nücke · 11 years ago
  55. 0b9be15 buffered writing by Florian Nücke · 11 years ago
  56. 25b9f28 not automounting rom; error message for invalid listdirs; autorun for automounted file systems by Florian Nücke · 11 years ago
  57. 7ef9798 made checkarg a kernel provided function again after all; cleaned up some by Florian Nücke · 11 years ago
  58. e85afe8 hard drives. writable frikkin hardrives. next up: limiting their capacity... by Florian Nücke · 11 years ago
  59. 0927f07 some more prep work for writable file systems based in save dir; reworked computer code structure a bit, moving more semi-internal stuff into the environment trait by Florian Nücke · 11 years ago
  60. 6689fda fixed computer top texture when on; not sending item tag info to clients anymore (usually only the associated node's address. generally nothing the client needs to know); removed neighbor logic from item component nodes since that is taken care of in sentToVisible now; improved screen rendering performance a bit by caching the display list and updating it when the screen's display changes and not rendering at all when too far away or looking at the screen from a direction where it's impossible to see the text; added some classes that guava needs to compile in scala (only needed at compile time afaik) by Florian Nücke · 11 years ago
  61. f4f7bd5 fixed event.timer ids; fixed file __gc; fixed render glitch when calling up the interpreter history; fixed folders not being postfixed with "/" in file based filesystem; better error messages (no java class part in the message) by Florian Nücke · 11 years ago
  62. 1a20aed increased ram sizes by one bit shift (reading files - and loading them as scripts - takes quite a bit of ram); network fixes; filesystem fixes by Florian Nücke · 11 years ago
  63. 90bbdc2 more work on filesystem stuff by Florian Nücke · 11 years ago
  64. 59febb0 network rewrite to use uuids as node addresses. this way we won't have to expect addresses to change on network merges, which make a lot of things a much easier (in particular on the Lua side) by Florian Nücke · 11 years ago
  65. f2f6d0f some preparation for file system stuff; changed the way item components are stored (more generic, automatically save on world save, no more manual updating in node.address_=) by Florian Nücke · 11 years ago
  66. b248174 added some textures for items; added german localization file; pulled resource pack name into a constant (may split later to natively support texture packs or something, but mainly for when the mod name changes) by Florian Nücke · 11 years ago
  67. bb491ec some more minor refactoring; preparing memory items by Florian Nücke · 11 years ago
  68. 92b8a28 removed flicker for command "history"; little hello message on interpreter by Florian Nücke · 11 years ago
  69. abddfae some more refactoring; switched up driver loading a bit: they're now loaded from the kernel, by it requesting the list of drivers. this way they're loaded into the sandbox (with the network sending function available, in addition to what the normal sandbox can do); doing primary init of kernel in computer init to get a better idea of how much memory our os stuff needs, in particular the driver table; saving the kernel size now, since the baseline is primarily dependent on the kernel, not what we provide aside from that. this way the "user" memory that comes free is now limitable to 16k with much less variance (init takes around 9k, apparently, the rest is free) by Florian Nücke · 11 years ago
  70. d24f726 os.reboot() and os.shutdown(); term.keyboardId to control which keyboard's input to listen to; added network "visibility" flag for nodes, controls which other nodes receive connect/reconnect messages from them; some more validation of network node validation (i.e. not sending to / receiving from nodes with address < 1 or visibility == none); fixed margin rendering for screen gui; always injecting the address of a sender for a signal received via the network; fixed item localization; made computers start/stop/queryable via network; major overhaul of multi-threading in computer class, not relying on future.cancel anymore (which apparently didn't interrupt running threads even though it should have) and centralized the state switching a bit (no longer any in signal() for example). removed the saveMonitor (if someone calls us from something other than the server thread its their fault). by Florian Nücke · 11 years ago
  71. 90f4b2d lua allocator memory tracking fix; mutliitem (multiple items sharing same id) by Florian Nücke · 11 years ago
  72. d7905fe timer implementation on the lua side (driven via event.fire) by Florian Nücke · 11 years ago
  73. 12da32b started working on redstone interfacing; improved term.write performance by caching the screen's resolution and added a signal for screen size changes by Florian Nücke · 11 years ago
  74. 484dfd6 allowing "control characters" in text buffer, too, now (it only works on chars so it really doesn't care, plus our renderer does, too); since java works on unicode strings and conversions are a pain lua will have to live with those. added a couple of unicode-aware replacements for string lib functions, the more complex ones are still todo by Florian Nücke · 11 years ago
  75. 887a219 redid font texture to include all ascii chars, even special chars for control characters since there was padding anyway and in particular umlaut chars and such; simplified initialization of renderer a tad, too by Florian Nücke · 11 years ago
  76. 86b7b84 moved event handlers to a more local scope; some fixes in lua scripts; fixed background worker being spawned twice when starting a computer (automatically triggered via first signal, no need to start one manually) by Florian Nücke · 11 years ago
  77. 4dfa9ab yet more network related fixes by Florian Nücke · 11 years ago
  78. 6ce3da2 fixed underscore being too under (was cut off); a couple of tweaks for the command line; clipboard support by Florian Nücke · 11 years ago
  79. 5936c0d hell yeah, interactive command line is working by Florian Nücke · 11 years ago
  80. 75ec692 yet more network reworking and starting to work on the Lua side again by Florian Nücke · 11 years ago
  81. 2b1d410 some eris fixes; compiling with /02 instead of /Ox seems to have solved remaining crashes, we'll see...; yet another lib move, the final one I think by Florian Nücke · 11 years ago
  82. 29a79b5 rudimentary keyboard input is working by Florian Nücke · 11 years ago
  83. 48cf012 messages working it would seem (screen printing works again, some quirks still) by Florian Nücke · 11 years ago
  84. f337371 allowing message handlers to return results, which allows for messages with results (e.g. to query information from nodes such as a gpu's current resolution) by Florian Nücke · 11 years ago
  85. 5871731 working on network layer, to replace most driver api logic: everything will be "networked", no direct references to anything anywhere, callbacks will all be via network messages; changed library folder structure and keeping everything in a single library now to avoid issues with dependencies (in particular under linux where dlopen tries to be clever) by Florian Nücke · 11 years ago
  86. 0e218d9 updated eris and added (untested!) linux libraries by Florian Nücke · 11 years ago
  87. a99f7f0 computer gui by Florian Nücke · 11 years ago
  88. 20028c9 fixes in monospace font renderer and gui for screen by Florian Nücke · 11 years ago
  89. 93a38a3 minor cleanup in driver wrapping code by Florian Nücke · 11 years ago
  90. acd00aa fixed driver callback persistence by Florian Nücke · 11 years ago
  91. 5b817e3 couple of fixes here and there; tile entity renderers for computer (environment light independent "on" light) and screen (text, for testing / preparation for multiblock screens). hardly efficient at this time, display lists will come later. by Florian Nücke · 11 years ago
  92. 8fed193 screen block textures by Florian Nücke · 11 years ago
  93. 551fd3b remembered that blocks' metadata is only four bit, so moved rotation logic to a tileentity base class and also made it more flexible (supporting all 6 facings via pitch/yaw); added block textures for for computer (different for on/off) by Florian Nücke · 11 years ago
  94. b98b029 localization in file; fixed ascii font texture (was missed one char, 223 i think); switched from multiple "real" blocks to one proxy block with many sub-blocks, so we only need one block ID (todo: same for items, if possible) by Florian Nücke · 11 years ago
  95. ae0a865 monospace font (mix of bitstream vera and andale mono) and renderer, renders at half scale for antialiased font by Florian Nücke · 11 years ago
  96. 2b25bc2 happy shuffling... let's see. moved textbuffer from graphicscard to screen on the server side, because it a) makes sense b) makes it much less painful to synchronize server and client screens. expanded networking a bit, with a sender and handler class for server and client. centralized for now, until I can think of an elegant, symmetric way of decentralizing it. initializing screens on client side when created. dynamically retrieving component instances when needed (not storing them anywhere) which *should* work around any issues related to installed block components living in unloaded chunks. by Florian Nücke · 11 years ago
  97. c5e3b7e textbox tweaks by Florian Nücke · 11 years ago
  98. 87892c3 basic 'write' implementation for lua (writing stuff to the screen); fixed/added array return value support (jnlua only supports tables -> java, not the other way around as it turns out) by Florian Nücke · 11 years ago
  99. 9e2c19a fixed a lot of stuff regarding driver callbacks and wrapped exceptions to hide java part of them on the lua side; screen updates are properly sent to the client by Florian Nücke · 11 years ago
  100. 92d58f7 component ids and installation/uninstallation of block components by Florian Nücke · 11 years ago