Links
Tags
apache
armenia
books
bsd
c
c++
chips
cinema
concurrency
cooking
database
dragonfly
erlang
filesystem
freebsd
fun
hardware
java
javascript
json
languages
linux
lyric
mac_osx
mail
math
misc
music
personal
poems
presentation
programming
python
references
ruby
rubyjs
scm
software
spiking_neural_net
study
sysadm
sysarch
technology
testing
travel
virtualization
web
wee
windows
If I’d design a new language including the runtime-system, that language should be/have:
- A very small core.
- Mixed run/compile-time typing. Many types can be infered at compile-time and fast running code can be generated. If not, fall back to runtime typing.
- The compiler is part of the system. Why do you want to generate binary code? Just ship the source code (of course you can obfuscate it; well, Java byte code can be disassembled back to Java source code very well!) and the compiler will compile it on-the-fly to machine code.
- Structural subtyping. No tag-types as in Java. Tag-typing (typing based on simple names like “Array” or inheritance-relationship) can be simulated by special structure values, e.g. {tag_type: ‘Array’}.
- Compacting non-conservative GC. A GC that never leads to memory leaks!
- Region inference. What is the life cycle of a memory object? Is it local to a method/function? Allocate memory based on this information.
- Keyword arguments.
- Kind of selector-namespaces
- No global variables (can be easily simulated by a singleton class).
- Maybe Multiple heaps (thread local heaps), so that GC can run in parallel.