Permalink
Commits on Jan 5, 2012
  1. Bump npm version -> 0.6.4

    committed Jan 5, 2012
  2. Use accessor for `current` instead

    This is measurably faster in the case of accessing `current` once per
    context swap.
    committed Jan 5, 2012
  3. Documentation updates

    - Remove old node 0.4.x information
    - Link to wiki for projects using node-fibers
    committed Jan 5, 2012
Commits on Nov 6, 2011
  1. Improve speed of Future.wait()

    A lot of unnecessary and expensive JS stuff was happening here.
    committed Nov 6, 2011
  2. Add shortcut for Future.prototype.wait()

    Bypassing Future.wait() and just returning if the future has already
    been resolved saves a pretty good bit of time.
    committed Nov 6, 2011
Commits on Oct 24, 2011
  1. SunOS build support

    Added the appropriate make configs for SunOS platforms, and fixed a tiny
    issue with the usage of `file` that SunOS wasn't happy with.
    
    Fixes gh-38
    committed Oct 24, 2011
Commits on Oct 8, 2011
  1. Clean up messy makefiles

    There was still a lot of build cruft sitting around from the node 0.4.x
    branch which required the LD_PRELOAD hook. Since LD_PRELOAD is no longer
    needed there's no reason to build coroutine.cc as a shared library.
    
    Fixes gh-37
    committed Oct 8, 2011
Commits on Aug 28, 2011
  1. Fix build for node 0.5.4

    `node --vars` no longer does anything. It doesn't seem like this is
    coming back as there's radio silence on nodejs/node-v0.x-archive#1536 and 0.5.5 has
    been tagged with the missing flag. This is just a build tweak to pull
    installation information from the `process` object inside of node.
    committed Aug 28, 2011
  2. Fix `future` test require problem

    If you're testing from a repo and not npm this one will fail because of
    NODE_PATH nuttiness.
    committed Aug 28, 2011
Commits on Aug 13, 2011
  1. Documentation updates

    Update README to mention differences between node-fibers 0.5 and 0.6.
    Until node 0.5 becomes stable I'll have to maintain both versions.
    
    Also remove bin/node-fibers from the npm install package (but leave the
    empty wrapper for now)
    committed Aug 13, 2011
  2. CORO_PTHREAD compatibility

    If for some reason UCONTEXT and SJLJ don't work, you can change the
    CORO_WHATEVER definition in src/platform.mk to CORO_PTHREAD and it will
    use pthreads and pthread_cond_wait to simulate fibers which should be
    pretty resilient against v8 changes. This isn't being used for now but
    it only needed a few hooks to get this compatibility in.
    committed Aug 13, 2011
  3. Removal of node-fibers wrapper

    The wrapper script is no longer needed because we're not depending on
    any LD_PRELOAD magic anymore. A few build peculiarities had to be taken
    care of, and the bootstrapping in coroutine.cc was changed slightly.
    Also SJLJ in libcoro seems to hang on Linux for me, so I'm specifying
    UCONTEXT (old method) for Linux builds now.
    committed Aug 13, 2011
  4. Compatibility with node-0.5.2

    This includes a greatly simplified coroutine implementation with no
    pthread hooks at all. This is compatible with the recent v8 changes
    which node pulled in, but unfortunately not compatiable with older v8
    versions.
    committed Aug 13, 2011
Commits on Aug 11, 2011
  1. Unit tests

    Long overdue to have a process for these. I went through and found some
    of the historic failures and made tests for them. This will make
    testing more reliable when new Node versions come out.
    committed Aug 11, 2011
Commits on Aug 9, 2011
  1. Fix leaky error messages

    Uncaught error should be toString'd first because RangeError doesn't
    console.log() very well, and there are probably other example of this.
    Also, make toString() on FiberFutures more useful.
    committed Aug 9, 2011
  2. Update package compatibility; broken on node-0.5.2

    In v8:r7575 (tagged at 3.2.10) v8 changed their internal mechanism for
    detecting context changes. Instead of using pthread_self() they are now
    using pthread_getspecific(). Ultimately this makes it considerably
    easier to build fibers into v8, but the current method is broken.
    
    Node updated v8 from 3.1.8 to 3.4.8 in e5564a3f (tagged at 0.5.2). Thus,
    this version of fibers only works on version of node <= 0.5.1.
    committed Aug 9, 2011
Commits on Aug 6, 2011
  1. Documentation updates

    - Fibonacci generator example
    - Various clean up
    committed Aug 6, 2011
  2. Add Future.prototype.proxy

    I end up using this pattern frequently when embedding callback-based
    code inside a future-based sandwich.
    committed Aug 6, 2011
Commits on Jul 27, 2011
  1. Bump npm version -> 0.5.0

    committed Jul 27, 2011
  2. Documentation updates

    - Include documentation for Future
    - Minor updates
    committed Jul 27, 2011
  3. Basic fiber-aware futures library

    This includes a packaged copy of the "futures" implementation I've been
    using with fibers. The library is quite simple but makes working with
    fibers much more manageable.
    committed Jul 27, 2011
Commits on Jul 25, 2011
  1. Use libcoro to get away from ucontext for Lion

    ucontext in Lion is straight up buggy. These functions have been marked
    as deprecated for a while so it's not totally surprising, but still
    ridic. libcoro has implemented a very similar API using setjmp and
    longjmp internally (among other configurable backends). Switching over
    to setjmp\longjmp, along with the pthread* hook changes fixes fiber
    support in Lion.
    
    Closes gh-28
    committed Jul 25, 2011
Commits on Jul 24, 2011
  1. More pthread hook fixing in Lion

    The approach from the last commit wasn't totally good enough. It seems
    v8 implements "fast TLS" in some cases which uses inline assembly to
    get at thread locals and there's no way we can hook this. But this is
    only being used for Isolates so they don't need to be fiber-specific.
    To solve the problem when setting a local in FLS it also sets the local
    in FLS. ** This means that in fibers GetExistingThreadLocal and
    GetThreadLocal will have conflicting results ** but so far I haven't
    had any problems.
    committed Jul 24, 2011
Commits on Jul 22, 2011
  1. Fix OS X Lion (almost)

    dlsym() in Lion now calls pthread_key_create() which breaks an
    assumption coroutine.cc had made, causing infinite recursion. This
    modifies the primordial pthread hooks to work under the new
    constraints. This fix isn't complete as there is still segfaulting I
    haven't quite tracked down yet.
    committed Jul 22, 2011
  2. Fix building when node is a symlink

    `file` will just say "this is a symlink" and then node may be compiled
    with the wrong bits. There's a flag to force `file` to always follow
    symlinks (the default is not consistent on different platforms).
    committed Jul 22, 2011
Commits on May 3, 2011
  1. Bump npm version -> 0.2.6

    committed May 3, 2011
  2. Fix `node-fibers debug`

    node's debugger is built as a node process which spawns another node
    process. There was an issue where the spawned node process (which runs
    the client code) was not getting shimmed, because coroutine.cc attempts
    to clean up its environment. So I moved the environment cleanup code
    to fibers.js which actually simplified some of the logic there.
    
    Closes gh-25
    committed May 3, 2011
  3. Make the startup script call exec instead of forking a child.

    This change makes it easier to use node-fibers with node-supervisor,
    or any other tool that monitors the health of the node process.  It
    also results in a simpler process structure, and makes "node-fibers"
    closer to a true drop-in replacement for "node".
    ef4 committed with May 3, 2011
  4. fixed broken pipe error

    ybogdanov committed with Apr 8, 2011
Commits on Apr 23, 2011
  1. Documentation updates

    - Better installation details with npm>=1.0 instructions
    - Note about fs.readFile + fs.writeFile `length` property
    
    Closes gh-17
    Closes gh-18
    committed Apr 23, 2011