Comments (3)
I'm working on a layer diagram to clarify what is a VM/runtime feature and what is buit on top of that. Here are my thoughts so far:
VM and runtime
- Provide the low-level features like memory management, process management, security, I/O, etc.
- Message passing and queuing are OS features.
- How about a decent event model that makes Obj-C style KVO possible?
- TCP/IP stack in here somewhere.
HTTP Utilities
- No Nginx; HTTP server written in L to take advantage of the process model. Look at Go's HTTP server or Tornado for inspiration.
- I like the idea of a REST API for loading processes. Sort of an S3 for computation. Something like:
POST /<USER_FINGERPRINT>/process
to upload; returns the process's URI. Body can be source or binary.GET /<PROCESS_ID>
to inspect process; representation includes URIs for output streams and event queues.GET /<PROCESS_ID>/<STREAM_NAME>
to read output stream; use Comet / HTTP streaming for output streams (client opens an HTTP connection and just sits there).
- System configuration can include a callback URI: the server will make REST calls to another server to log certain events.
- PubSubHubub or similar protocol.
Obviously I need to think some things over. I suggest we use the comments here to stage ideas and use the issue body (if it is in fact editable) for a draft spec that I'll move to the actual repo once we start to feel good about it.
Here are some open questions; I don't have answers, but maybe strong opinions. First, I recognize the effectiveness of using off-the-shelf components for getting a proof-of-concept together, but also remember that I'm a minimalist. We should weigh the amount of work required to cut away all the fat, vs. write components from scratch. Maybe my point is that we shouldn't be afraid to, for example, write a scheduler from scratch while using a minimally modified memory manager. Again, how much is in L and how much is compiled C is an open question.
from l.
The idea behind using a stripped down linux kernel and OTS components is that we can replace things with custom ones as we want / need to. There's a lot of moving parts in this -- so I figure we take as many ones that work as we can to sort of get it together and get a dev. environment going.
I've written a scheduler before (part of an OS course) and it's really not that difficult.
I think we should implement as much in L as possible -- but obviously there will be custom C components.
from l.
You're totally right. Using an OTS kernel, etc. makes sense. Though some components will definitely have to be customized. The scheduler, for example will be pretty custom. Eventually replacing lower and lower level components in the stack...
How about a BSD kernel?
How much can we avoid GNU components?
from l.
Related Issues (19)
- First thoughts
- Syntax HOT 1
- Interesting REPLs to learn from
- Research Lua's hashmap implementation
- Alternate syntax for objects? HOT 1
- Equality comparisons in match blocks don't work HOT 1
- Add guard expressions to match blocks HOT 2
- Matching fails when variants are used HOT 1
- Function application chaining either breaks the stack or misapplies HOT 3
- Types should not use global namespace HOT 1
- Empty parens need a better error message
- Prefix operators should bind tighter than call HOT 1
- Infix method invocations on union instances resolve incorrectly
- Destructuring an empty array binds incorrectly
- Templates with multiple elipses should result in a MatchError
- Parse Error Using Records in a Template Match
- Move project to yarn
- Specify date formatting library
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from l.