iodine 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of iodine might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/ext/iodine/mempool.h +13 -10
- data/lib/iodine/version.rb +1 -1
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: ba4e058f674e3984cdee2cff5cb107c1b2563ecf
         | 
| 4 | 
            +
              data.tar.gz: 6d733dd6ab5daea3464b2a2f2e1567e9781361a8
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2acca1d13ceb9bfa682fe1f7aa1175349d3d092c15747b700785f9ad5117f7714ee851ac5e61cebf93c31bee793f4af38ecff504d780fdd65c575c42ab3c04a7
         | 
| 7 | 
            +
              data.tar.gz: 8f182b7d745804676f2f7837f36f92419fdd7c1c740cd1a3f9fbfc66c25dbf16eb0c2f11b8454d6ecc30e4be5992c7a0c77f707e3c6f2a52962dbf4979f16fe2
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -8,6 +8,12 @@ Please notice that this change log contains changes for upcoming releases as wel | |
| 8 8 |  | 
| 9 9 | 
             
            ***
         | 
| 10 10 |  | 
| 11 | 
            +
            Change log v.0.2.9
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            **Fix**: fixed a gcc-4.8 compatibility issue that prevented iodine 0.2.8 from compiling on Heroku's cedar-14 stack. This was related to missing system include files in gcc-4.8. It should be noted that Heroku's stack and compiler (which utilizes Ubuntu 14) has known issues and / or limited support for some of it's published features... but I should have remembered that before releasing version 0.2.8... sorry about that.
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ***
         | 
| 16 | 
            +
             | 
| 11 17 | 
             
            Change log v.0.2.8
         | 
| 12 18 |  | 
| 13 19 | 
             
            **Memory Performance**: The Websocket connection Protocol now utilizes both a C level memory pool and a local thread storage for temporary data. This helps mitigate possible memory fragmentation issues related to long running processes and long-lived objects. In addition, the socket `read` buffer was moved from the protocol object to a local thread storage (assumes pthreads and not green threads). This minimizes the memory footprint for each connection (at the expense of memory locality) and should allow Iodine to support more concurrent connections using less system resources. Last, but not least, the default message buffer per connection starts at 4Kb instead of 16Kb (grows as needed, up to `Iodine::Rack.max_msg_size`), assuming smaller messages are the norm.
         | 
    
        data/ext/iodine/mempool.h
    CHANGED
    
    | @@ -116,14 +116,11 @@ Memory block allocation | |
| 116 116 | 
             
            /* check for unix support */
         | 
| 117 117 | 
             
            # if __has_include(<unistd.h>) && __has_include(<sys/mman.h>)
         | 
| 118 118 | 
             
            #  define HAS_UNIX_FEATURES
         | 
| 119 | 
            +
            #  include <unistd.h>
         | 
| 119 120 | 
             
            # endif
         | 
| 120 121 | 
             
            #endif
         | 
| 121 122 | 
             
            // clang-format on
         | 
| 122 123 |  | 
| 123 | 
            -
            #ifdef HAS_UNIX_FEATURES
         | 
| 124 | 
            -
            #include <sys/mman.h>
         | 
| 125 | 
            -
            #include <unistd.h>
         | 
| 126 | 
            -
             | 
| 127 124 | 
             
            /* *****************************************************************************
         | 
| 128 125 | 
             
            spnlock.h (can also be embeded instead of included)
         | 
| 129 126 | 
             
            */
         | 
| @@ -133,13 +130,16 @@ spnlock.h (can also be embeded instead of included) | |
| 133 130 | 
             
            Memory slices, tree and helpers
         | 
| 134 131 | 
             
            */
         | 
| 135 132 |  | 
| 133 | 
            +
            struct mempool_reserved_slice_s_offset { /** offset from this slice */
         | 
| 134 | 
            +
              uint32_t reserved1; /* used to make the offset 16 bytes long */
         | 
| 135 | 
            +
              uint32_t ahead;
         | 
| 136 | 
            +
              uint32_t behind;
         | 
| 137 | 
            +
              uint32_t reserved2; /* used to make the offset 16 bytes long */
         | 
| 138 | 
            +
            };
         | 
| 139 | 
            +
             | 
| 136 140 | 
             
            typedef struct mempool_reserved_slice_s {
         | 
| 137 | 
            -
               | 
| 138 | 
            -
             | 
| 139 | 
            -
                uint32_t ahead;
         | 
| 140 | 
            -
                uint32_t behind;
         | 
| 141 | 
            -
                uint32_t reserved2; /* used to make the offset 16 bytes long */
         | 
| 142 | 
            -
              } offset;
         | 
| 141 | 
            +
              /** offset from this slice */
         | 
| 142 | 
            +
              struct mempool_reserved_slice_s_offset offset;
         | 
| 143 143 | 
             
              /** Used for the free slices linked list. */
         | 
| 144 144 | 
             
              struct mempool_reserved_slice_s *next;
         | 
| 145 145 | 
             
              struct mempool_reserved_slice_s *prev;
         | 
| @@ -168,6 +168,8 @@ static struct { | |
| 168 168 | 
             
            /* *****************************************************************************
         | 
| 169 169 | 
             
            Memory Block Allocation / Deallocation
         | 
| 170 170 | 
             
            */
         | 
| 171 | 
            +
            #ifdef HAS_UNIX_FEATURES
         | 
| 172 | 
            +
            #include <sys/mman.h>
         | 
| 171 173 |  | 
| 172 174 | 
             
            #define MEMPOOL_ALLOC_SPECIAL(target, size)                                    \
         | 
| 173 175 | 
             
              do {                                                                         \
         | 
| @@ -204,6 +206,7 @@ static __unused void *mempool_malloc(size_t size) { | |
| 204 206 | 
             
              if (size & 15) {
         | 
| 205 207 | 
             
                size = (size & (~16)) + 16;
         | 
| 206 208 | 
             
              }
         | 
| 209 | 
            +
             | 
| 207 210 | 
             
              size += sizeof(struct mempool_reserved_slice_s_offset);
         | 
| 208 211 |  | 
| 209 212 | 
             
              mempool_reserved_slice_s *slice = NULL;
         | 
    
        data/lib/iodine/version.rb
    CHANGED