= TODO LIST = == Interpreter kernel == * number literals hexadecimal, octal * integer to hexadecimal, octal * format hexadecimal, octal * hexadecimal, octal representation to integer * hexadecimal representation of binary data * bin, oct, hex convenience functions * left shift, right shift * minor issues with tracebacks of callback functions * in a coroutine let all exit paths perform a loop as "yield; return empty" (resume after a last yield and return empty immediately) * delete temporary variables after use * coroutines * continuations, call/cc * custom detstructors * sandbox security model for file access * a security model by functions that can be called only once * interning literals of type Long * in range to iterator/list: start/end of type Long * mutable upvalues? * a slice data type? * -i option search path * dynamic loading Rust modules (plugin interface) == Library == * reverse iterator * iterator: tee * graphics === Linear algebra === * polymorphic arrays * array to list * homogeneous arrays * BLAS compatible interface * inv, det by Gaussian elimination === Network, Cryptography == * SHA3-256 interface * AES-256 interface * ECDH interface * sockets * TLS-1.3 sockets * https interface == Audits == * more automated tests * again, more automated tests * with particular emphasis, more automated tests * break 'r in vm.rs: replace vs. clone * overflow by integer arithmetic * overflow by type conversion * search for "as usize", "as isize", "as i32", "as u32", etc. = Problems = * getattr(x,key) cannot differentiate between null and non-existence. * m.(key) looks like m(key), but behaves differently. The former raises an exception, the latter returns null if a key is not found. Maybe m.[key] is a better syntax. = DONE = == Language == * a comfortable way to state the domain of allowed named arguments == Interpreter kernel == * format strings * try-catch * exception objects * load a module only once, then Rc::clone * floating point range to list * operator overloading * multiple dispatch in operator overloading * env-pointer in Interface::to_string * interface objects in hash tables * assert statement * search paths * get property or null == Library == * zip * cycling iterator * extend for objects * long * hash for Long * powmod * cartesian power * Iterable.join * rotate a list * regular expressions === Linear Algebra === * shape order should the same as in notation * polymorphic arrays * scalar product * absolute value of a vector * matrix multiplication === OS interface === * change directory * list files, subdirectories * file output