Doug Thompson
03/06/2024, 1:13 PMDoug Thompson
03/06/2024, 1:14 PMDoug Thompson
03/06/2024, 1:14 PMstd::io::Result<T>
.
◦ The available types should include those that application programmers want to get I/O'd data into ASAP: scalars, arrays, maps, tuples/structs/enums (the latter of which should be Rusty).
◦ We would certainly require encapsulation, and (possibly) higher-kinded facilities like mixins.
◦ All data in this system should be represented this way, including programs themselves.
▪︎ This means that program source code is "already an AST".
▪︎ Plain text would not be used for source code.
▪︎ UI development for these 'structured languages' must be improved. (maybe I should've said Scratch was an influence? 😏)
▪︎ These ASTs should be transformed by the OS into machine code (which can also be represented with this model: a .s
file becomes an array of instruction enums).
▪︎ Eventually, the OS running this should be able to self-host in this way.
◦ Applications should barely ever concern themselves with any kind of binary data, though this is of course impossible to prevent in a Turing-complete environment.
• Data, as stored, should be content-addressable:
◦ has plenty of reasons why this is a good idea (especially for greenfield).
◦ The equivalent of a 'filesystem' for this ecosystem would instead be what is effectively a hashmap with wear leveling.
▪︎ Or, Optane could be revived (some hope). Would be nice to design around this possibility.
◦ 'Files', now more accurately 'objects', are stored by a hash of their contents.
▪︎ Important note: this is not object-oriented computing. We don't want to be piping vtables.
◦ The need for encapsulation means that our 'filesystem' effectively becomes a Merkle tree.
◦ In order to prevent massive hash cascades when writing to storage, we would need to employ mutable references (in a similar manner to symlinks).
◦ Fast random-access updates to very large objects could be achieved with a hasher suited to incremental verification, such as BLAKE3.Doug Thompson
03/06/2024, 1:15 PMgit pull
.
• Core web technologies such as HTTP, HTML, CSS & JavaScript are no longer kosher, because they are based on plaintext.
◦ "This obsoletes the web" is a silly thing to say, but could be fun in the pitch.
◦ All of these formats could be transformed into the strongly-typed model presented above, though.
• Tabs vs spaces is no longer a concern, because formatting is no longer a concern for plaintext. That's now the UI's responsibility.
• Entire classes of attack should be all but eliminated (eg. injection).
• The types used in the data model can themselves be represented in the data model, and we can relatively easily implement internationalisation for code:
◦ Here's a horrible illustration: Enum Type { i8, i16, i32, i64, u8, u16, u32, u64, Array<Type>, Map<Type, Type>, Tuple<Type, ...>, Enum<Array<Type>> }
◦ These types don't have canon names, and I don't think they should.
◦ They do have hashes, though. So we can refer to types by their hash.
◦ We can then map human translations for these types and their encapsulated members in any number of natural languages: Map Translations<Tuple<[Locale, Type]>, Array<String>>
Doug Thompson
03/06/2024, 1:15 PMDoug Thompson
03/06/2024, 1:19 PMKonrad Hinsen
03/06/2024, 5:40 PMDaniel Garcia
03/10/2024, 2:41 AMKonrad Hinsen
03/10/2024, 7:56 AMDoug Thompson
03/11/2024, 9:46 AMLeonard Pauli
03/11/2024, 5:09 PMKonrad Hinsen
03/12/2024, 7:02 AMDuncan Cragg
03/12/2024, 10:36 AMDuncan Cragg
03/12/2024, 10:39 AM