Please reconsider this. Libuv rocks, and without it, well, you don't really have Node. It's not dependent on v8 in any way, so it makes little sense to not use it.
My initial plan was to provide the node features using Foundation.framework features only. Now, this could turn out to be
more boilerplate code than I intended to write and if it does, I'm
now pretty sure I'd go with libuv.
I'm not quite sure about using libuv from the start, though. My consideration was that a) this is not targeted at server applications, so you don't necessarily need very high performance and b) libuv is a cross-platform library, while I'm targeting darwin only, so it might be a bit overkill.
Do you have experience with libuv? If so, do you have experience regarding footprint / conciseness? Can you confirm/deny my presumptions?
Even the non-server parts of Node are, at a low level, mostly implemented with libuv. And obviously, the APIs in libuv map very closely to Node, so there's less of an impedance mis-match between that and the Foundation framework.
I've written quite a bit in both Node, and in libuv directly, as well as against the Foundation APIs (although less these days, because libuv's APIs are just really, really well done). IMO, you'll write less code, with far less errors, if you decide to build on top of libuv, and you won't lose anything that Foundation gives you (they're both wrappers around the underlying Unix APIs anyway...).
I think you got a very good point there regarding the impedance mismatch between native and js apis.
Really enjoying the uvbook, this got me sold on the libuv api. After skimming through the source and being happy that libuv is indeed just a very thin wrapper around posix, I just integrated libuv with my project and will base all bindings upon that.
My initial plan was to provide the node features using Foundation.framework features only. Now, this could turn out to be more boilerplate code than I intended to write and if it does, I'm now pretty sure I'd go with libuv.
I'm not quite sure about using libuv from the start, though. My consideration was that a) this is not targeted at server applications, so you don't necessarily need very high performance and b) libuv is a cross-platform library, while I'm targeting darwin only, so it might be a bit overkill.
Do you have experience with libuv? If so, do you have experience regarding footprint / conciseness? Can you confirm/deny my presumptions?