1. 24 Jan, 2017 1 commit
    • Harris Hancock's avatar
      Implement atomic operations for MSVC · d6d06e54
      Harris Hancock authored
      Reads and writes of volatile aligned words are automatically blessed with
      atomic acquire and release semantics at compile-time by MSVC, leaving only
      CPU operation reordering to worry about. x86 and x64 CPUs will not reorder
      the operations, but MSVC targets Xbox, which notably will reorder them,
      thus I added fences out of an abundance of caution. While Cap'n Proto
      likely will not compile for Xbox as-is, I would hate for someone to port
      it only to have to debug obscure atomic-operation-related crashes later.
      
      I implemented the fences using std::atomic_thread_fence rather than
      MemoryBarrier(), because including windows.h in raw-schema.h is a
      non-starter, and it would be silly to reimplement it with in-line assembly
      and intrinsics for every targeted CPU when <atomic> is available.
      
      Another possible implementation could have been to use the InterlockedXxx
      functions, however they present a few issues:
      
      1. They're defined in windows.h. We could define them in terms of their
         underlying _InterlockedXxx intrinsics, but we'd need more #if blocks to
         handle both 32-bit and 64-bit pointers. If we go this route, it'd
         probably be better to go all-in and define some kj::atomic{Load,Store}
         functions.
      2. We cannot implement atomic load-acquire semantics with them for const
         variables without const_casting.
      d6d06e54
  2. 12 Dec, 2014 1 commit
  3. 30 Nov, 2014 1 commit
  4. 29 Nov, 2014 1 commit
  5. 26 Oct, 2014 1 commit
  6. 25 Oct, 2014 2 commits
  7. 23 Oct, 2014 1 commit
  8. 20 Oct, 2014 1 commit
  9. 17 Oct, 2014 2 commits
  10. 11 Oct, 2014 1 commit
  11. 20 Jun, 2014 1 commit
    • Kenton Varda's avatar
      Change license to MIT. · 889204fe
      Kenton Varda authored
      For portions currently copyright by Kenton (most of it), transfer copyright to Sandstorm Development Group, Inc. (Kenton's company).
      
      The license change is practically meaningless, as MIT and BSD 2-clause are legally equivalent. However, the BSD 2-clause license is sometimes confused for its ugly siblings, BSD 3-clause and BSD 4-clause. The MIT license is more immediately recognizeable for what it is.
      
      Rémy Blank and Jason Choy (the two non-trivial contributors) are on record as approving this change:
      
      https://groups.google.com/d/msg/capnproto/xXDd2HUOCcc/gbe_COIuXKYJ
      889204fe
  12. 06 Dec, 2013 1 commit
  13. 05 Dec, 2013 1 commit
  14. 14 Nov, 2013 1 commit
  15. 02 Oct, 2013 1 commit
  16. 29 Sep, 2013 1 commit
  17. 24 Sep, 2013 1 commit
    • Kenton Varda's avatar
      Revamp generated interface to Object fields. Now there is an… · 2b643930
      Kenton Varda authored
      Revamp generated interface to Object fields.  Now there is an ObjectPointer::{Reader,Builder}.  This will simplify the dynamic API (next change) and also makes it easier to delegate decisions about the object type to a function that doesn't know about the context where the object lives (i.e. by passing an ObjectPointer::Builder).
      2b643930
  18. 30 Aug, 2013 1 commit
  19. 28 Aug, 2013 2 commits
  20. 27 Aug, 2013 1 commit
  21. 23 Aug, 2013 1 commit
  22. 22 Aug, 2013 4 commits
  23. 21 Aug, 2013 3 commits
  24. 20 Aug, 2013 1 commit
  25. 15 Aug, 2013 3 commits
  26. 09 Aug, 2013 1 commit
  27. 20 Jul, 2013 1 commit
  28. 19 Jul, 2013 1 commit
  29. 18 Jul, 2013 2 commits