+1 The important question here I guess is : How do you get these library neutral instrumentations into the node runtime? Which is also what I eluded to asking if would make sense to have people from v8 & node core team together with people from the node-community at the same table and start working out a standardize solution without stepping on each others toes and make node and subsequently v8 a better engine to work with. Imagine the benefits the browsers using v8 could foster from a central orchestration of changes.
Just saying. On 12 November 2014 13:54, Bruno Jouhier <[email protected]> wrote: > TJ Fontaine did a bit of experimentation with node-tracing, and Forrest >> Norvell made CLS. Trevor Norris had also created AsyncListener to track >> changes between async contexts. But all the approaches so far have been too >> naive or simplistic and ultimately flawed. >> > Isn't this a bit of a red herring? > > If you extend the language with an async/await construct (which is what > streamline.js does), then the continuations are captured at the "language" > level and you can instrument the language runtime to propagate a context > across continuations and to track performance counters with "long > stacktrace" semantics. This is completely transparent. The instrumentation > service is provided by the "language" runtime and does not require any > special support from the specific libraries that you are using (although I > haven't tried it this way, streamline-flamegraph recording should work in > the browser). > > If you don't extend the language with async/await then you need ad-hoc > mechanisms. You need special mechanisms in node.js to propagate a context > across continuations. This can be done in APIs like fs that are aligned on > the continuation callback pattern but it won't work with other APIs that > use events for continuation (for example a connect call that continues with > connect/error events, or a read call that continues with readable/error > events). > > I see a lot of effort being put in trying to provide context propagation > features around raw callbacks (domains, long-stacktrace, async listeners). > These APIs are of no use for people like me who are relying on a > "language-level" construct and who get these features for free from their > language runtime. They add complexity and they don't seem to hit their > target (at least so far). > > IMO, raw callbacks should just be raw callbacks. They should be as fast as > possible and they should not try to deal with context propagation. If > developers want context propagation they should use a language extension (a > la async/await) that captures the "continuation threads". They will also > get other benefits (like robust exception handling). > > Better be explicit about what your program means (express your > continuations with async/await) than rely on ad-hoc mechanisms that will > try to reconstruct the continuation semantics from callbacks and special > APIs. > > My 2 cents. > > Bruno > > -- > 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/XYJih9Jv_40/unsubscribe. > To unsubscribe from this group and all its topics, 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/7a021f0f-0f7f-444a-b6e3-e30c27a4871f%40googlegroups.com > <https://groups.google.com/d/msgid/nodejs/7a021f0f-0f7f-444a-b6e3-e30c27a4871f%40googlegroups.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- Mit freundlichen Grüßen, Andreas Marschke. _________________________________________________________ Web: http://www.andreas-marschke.name Blog: http://andreasmarschke.wordpress.com -- 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/CADq4APtj7MW6uJ%2BqipqT_1bBpddYU6ohgNJF1cw2V%3DrebtZbsQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
