Thanks Jan for clearing things up, I couldn't have answered better
myself! And thanks everybody else for the feedback so far.

>> That clears it up, One more question if I may. In use would this
>> QueryServer replacement module be an adjacent process to the CouchDB
>> process, or is there some linking fu to make CouchDB and CouchChakra one
>> process?
>
> I haven’t looked to closely, but how I understand it, this is a separate
> process. Just like it with CouchDB today (you have a beam[.smp] process
> and zero or more couchjs processes).

It currently takes exactly the same approach as couchjs - one beam
process, zero or more couchjs processes, that's why I called it a
drop-in replacement. In theory you could switch out couchjs by
couch-chakra and everything should work like before.

> While it is absolutely possible to link everything into one process,
> that’s usually not done.

Actually that's what I tried in the very beginning, writing a NIF to
wrap the ChackraCore API to Erlang functions. While in theory this
would be possible it's however heavily discouraged by the Erlang gods
to write NIFs with non-deterministic timing. So I quickly stepped back
from the NIF idea and instead implemented couch-chakra.

Also, like Garren said in a mail before, there has been a couple of
attempts to redesign the Query Server Protocol and the process model
for the javascript query server. It looks as if there were different
opinions on this, and it also looks like it could become a lot of
work. Personally I'd love to see a binary communication protocol
between couchdb and the query server and thought that BERT and
BERT-RPC [1] might be a viable option. I'd also love to exploit the
rental threading model of ChakraCore like it is explained in the
article on how Chakra is used in DocumentDB [2]: "In other words, a
runtime only operates on one thread at a time, but its thread affinity
is free to change from time to time."

Add libuv to the sauce and we might win the next buzzword-bingo
contest with distinction, but that's what this project currently
represents for me: A playground to explore weird ideas and to have
some fun hacking on in my free-time.

Best,
Daniel

[1] http://bert-rpc.org/
[2] 
https://azure.microsoft.com/en-us/blog/the-road-ahead-for-azure-documentdb-with-chakracore/

> Best
> Jan
> --
>
>
>>
>> On Tue, Jan 24, 2017 at 6:28 AM, Jan Lehnardt <j...@apache.org> wrote:
>>
>>> Nice work Daniel!
>>>
>>> On 24 Jan 2017, at 02:22, Paul Hammant <p...@hammant.org> wrote:
>>>>
>>>> I'm going to be a dumbass here and attempt to paraphrase - pls fix mine
>>> up
>>>> so that I may understand it.
>>>>
>>>> You've written a CouchDB clone on top of MS's ChakraCore stack,
>>>
>>> He’s re-written the Query Server component of CouchDB in ChakraCore,
>>> Microsoft’s Open Source JavaScript engine.
>>>
>>> The current implementation uses Mozilla’s SpiderMonkey JavaScript engine.
>>>
>>>> but it
>>>> isn't perfect because a) JavaScript modernized since CouchDB picked and
>>>> implementation (and maybe CouchDB should modernize too),
>>>
>>> This is where the ChakraCore port is ahead of CouchDB, that’s a good
>>> thing™ ;)
>>>
>>>> and b) it is somehow only the 'Query Server' side of CouchDB anyway.
>>>
>>> That’s what this is all about anyway, so it’s not a downside either.
>>>
>>> Hope this clears it up :)
>>>
>>> Best
>>> Jan
>>> --
>>>
>>>>
>>>>
>>>> - Paul
>>>>
>>>> On Mon, Jan 23, 2017 at 4:56 PM, Daniel Munch <dani.mu...@gmail.com>
>>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I just wanted to throw this out into the wild. It is merely a long
>>>>> week-end hack mainly for learning and fun and I was really happy that
>>>>> it turned out so nicely so I thought why not sharing it. There isn't
>>>>> any real intention on using this in production and I rather see it as
>>>>> a playground for some funny low-level things. But in case anybody
>>>>> finds this interesting, I'm open for feedback, questions and
>>>>> suggestions.
>>>>>
>>>>> You can find more information and the code at
>>>>> https://github.com/dmunch/couch-chakra
>>>>>
>>>>> Thanks for reading and happy hacking,
>>>>> Daniel
>>>>>
>>>
>>> --
>>> Professional Support for Apache CouchDB:
>>> https://neighbourhood.ie/couchdb-support/
>>>
>>>
>
> --
> Professional Support for Apache CouchDB:
> https://neighbourhood.ie/couchdb-support/
>

Reply via email to