Mark,

sync XHR may be a bandaid solution but I think that it should really be a 
last resort.

For info, vim has been ported to the browser by Lu Wang. The challenge was 
similar to yours because the implementation uses blocking calls to read 
from the terminal. The challenge was even higher because the source was in 
C, not JS.

The vim port was done by first transpiling the C to JS with , then hacking 
the JS to add an _ parameters to all async calls, and then transpiling with 
streamline.js. A special C header was used to rename all the async calls so 
that they could be hacked automatically. The result is 
here: http://coolwanglu.github.io/vim.js/web/vim.html

Later on, Lu Wang created his own fork of emscripten with an async 
extension. This allowed him to eliminate the streamline.js pass.

So maybe you should not completely rule out the transpiler route.

Bruno

On Tuesday, October 28, 2014 7:59:07 PM UTC+1, Mark Hahn wrote:
>
> > So Atom pinwheels when the disk is slow?
>
> No.  The disk is fast enough to not notice.  It is node itself that slows 
> down atom, at least compared to an editor written in C++.
>
> On Tue, Oct 28, 2014 at 7:39 AM, Aria Stewart <[email protected] 
> <javascript:>> wrote:
>
>>
>> On Oct 28, 2014, at 1:20 AM, Mark Hahn <[email protected] <javascript:>> 
>> wrote:
>>
>> >  you've only synchronous XHR to do that,
>>
>> You've made me think about this.  I rejected sync XHR out-of-hand because 
>> the user interface would be blocked which of course is a horrible idea.  
>> But the Atom editor only hits the disk to load/save source files and 
>> sometimes to load/save options.  And of course it hits it a lot when the 
>> app is loading.  When editing a source file the disk it silent.  So maybe 
>> sync XHR is worth considering.
>>
>>
>> Makes sense!
>>
>> So Atom pinwheels when the disk is slow?
>>
>> >  it's pretty restricted since all the new features of XHR aren't 
>> allowed in sync mode.
>>
>> What features would I be missing?  I can't imagine anything other than 
>> making normal http requests.
>>
>>
>> Binary data handling and some of the XHR2 features, I believe.
>>
>> -- 
>> Job board: http://jobs.nodejs.org/
>> New group rules: 
>> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
>> Old group rules: 
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> --- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "nodejs" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/nodejs/oMNRWXwASOU/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/nodejs/469BEE26-2A5A-4AA8-AE82-F20EC0B5C964%40nbtsc.org
>>  
>> <https://groups.google.com/d/msgid/nodejs/469BEE26-2A5A-4AA8-AE82-F20EC0B5C964%40nbtsc.org?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/f358a7b2-3152-47f6-86ed-b4d235d436fc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to