CRAN Package Check Results for Package RcppMsgPack

Last updated on 2018-10-21 11:48:05 CEST.

Flavor Version Tinstall Tcheck Ttotal Status Flags
r-devel-linux-x86_64-debian-clang 0.2.2 39.74 57.38 97.12 OK
r-devel-linux-x86_64-debian-gcc 0.2.2 33.55 46.56 80.11 OK
r-devel-linux-x86_64-fedora-clang 0.2.2 132.56 NOTE
r-devel-linux-x86_64-fedora-gcc 0.2.2 124.97 OK
r-devel-windows-ix86+x86_64 0.2.2 142.00 186.00 328.00 ERROR
r-patched-linux-x86_64 0.2.2 41.89 52.49 94.38 OK
r-patched-solaris-x86 0.2.2 48.20 ERROR
r-release-linux-x86_64 0.2.2 37.95 53.40 91.35 OK
r-release-windows-ix86+x86_64 0.2.2 102.00 184.00 286.00 NOTE
r-release-osx-x86_64 0.2.2 NOTE
r-oldrel-windows-ix86+x86_64 0.2.2 93.00 120.00 213.00 ERROR
r-oldrel-osx-x86_64 0.2.2 NOTE

Check Details

Version: 0.2.2
Check: installed package size
Result: NOTE
     installed size is 10.2Mb
     sub-directories of 1Mb or more:
     include 7.0Mb
     libs 2.8Mb
Flavors: r-devel-linux-x86_64-fedora-clang, r-devel-windows-ix86+x86_64, r-release-windows-ix86+x86_64, r-release-osx-x86_64, r-oldrel-windows-ix86+x86_64, r-oldrel-osx-x86_64

Version: 0.2.2
Check: running tests for arch ‘i386’
Result: ERROR
     Running 'simpleTests.R' [0s]
     Running 'tests.r' [15s]
    Running the tests in 'tests/tests.r' failed.
    Complete output:
     > # Tests for testing out the functionality of the package, to make sure it isn't broken
     >
     > # some references
     >
     > # //https://github.com/msgpack/msgpack-c/blob/401460b7d99e51adc06194ceb458934b359d2139/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
     > # //https://stackoverflow.com/questions/44725299/messagepack-c-how-to-iterate-through-an-unknown-data-structure
     > # //https://stackoverflow.com/questions/37665361/how-to-determine-the-class-of-object-stored-in-sexp-in-rcpp
     > # //https://stackoverflow.com/questions/12954852/booststatic-visitor-with-multiple-arguments
     > # //https://stackoverflow.com/questions/25172419/how-can-i-get-the-sexptype-of-an-sexp-value
     > # //https://github.com/wch/r-source/blob/48536f1756a88830076023db9566fbb2c1dbb29b/src/include/Rinternals.h#L1178-L1214
     > # //https://stackoverflow.com/questions/16131462/how-to-use-boost-library-in-c-with-rcpp
     >
     >
     > library(RcppMsgPack)
     >
     > # stopifnot <- function(...) cat(..., "\n")
     >
     > # Test atomic types
     >
     > # integer
     > xpk <- msgpack_pack(1L)
     > stopifnot(identical(msgpack_unpack(xpk), 1L))
     >
     > # double
     > xpk <- msgpack_pack(1.54)
     > stopifnot(identical(msgpack_unpack(xpk), 1.54))
     >
     > # string
     > xpk <- msgpack_pack("sdfsdf")
     > stopifnot(identical(msgpack_unpack(xpk), "sdfsdf"))
     >
     > # raw
     > xpk <- msgpack_pack(as.raw(c(0x28, 0x4F)))
     > stopifnot(identical(msgpack_unpack(xpk), as.raw(c(0x28, 0x4F))))
     >
     > # boolean
     > xpk <- msgpack_pack(T)
     > stopifnot(msgpack_unpack(xpk))
     >
     > # nil
     > xpk <- msgpack_pack(NULL)
     > stopifnot(is.null(msgpack_unpack(xpk)))
     >
     > # ext
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_unpack(xpk), x))
     >
     >
     > if (Sys.info()[['sysname']] != "Windows") {
     + ## unicode or something characters - note this doesn't always work if you copy/paste into a terminal because of how terminals encode text, but if you source this file it works
     + x <- list('å<c2><9b>¾ä¹¦ï¼<c2><8c>é<c2><80><c2><9a>常å<c2><9c>¨ç<c2><8b>­ä¹<c2><89>ä¸<c2><8a>ç<c2><9a><c2><84>ç<c2><90><c2><86>解æ<c2><98>¯å¸¦æ<c2><9c><c2><89>æ<c2><96><c2><87>å­<c2><97>å<c2><92><c2><8c>å<c2><9b>¾å<c2><83><c2><8f>ç<c2><9a><c2><84>纸张ç<c2><9a><c2><84>é<c2><9b><c2><86>å<c2><90><c2><88>ã<c2><80><c2><82>书é<c2><80><c2><9a>常ç<c2><94>±å¢¨æ°´ã<c2><80><c2><81>纸张ã<c2><80><c2><81>ç¾<c2><8a>ç<c2><9a>®çº¸æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä»<c2><96>æ<c2><9d><c2><90>æ<c2><96><c2><99>å<c2><9b>ºå®<c2><9a>å<c2><9c>¨ä¹¦è<c2><84><c2><8a>ä¸<c2><8a>ç»<c2><84>æ<c2><88><c2><90>ã<c2><80><c2><82>ç»<c2><84>æ<c2><88><c2><90>书ç<c2><9a><c2><84>ä¸<c2><80>张纸称为ä¸<c2><80>å¼ ï¼<c2><8c>ä¸<c2><80>å¼ ç<c2><9a><c2><84>ä¸<c2><80>é<c2><9d>¢ç§°ä¸ºä¸<c2><80>页ã<c2><80><c2><82>ä½<c2><86>é<c2><9a><c2><8f>ç<c2><9d><c2><80>ç§<c2><91>å­¦æ<c2><8a><c2><80>æ<c2><9c>¯ç<c2><9a><c2><84>å<c2><8f><c2><91>å±<c2><95>ï¼<c2><8c>ç<c2><8b>­ä¹<c2><89>å<c2><9b>¾ä¹¦ç<c2><9a><c2><84>æ¦<c2><82>念ä¹<c2><9f>å<c2><9c>¨æ<c2><89>©å±<c2><95>ï¼<c2><8c>å<c2><88>¶ä½<c2><9c>书ç<c2><9a><c2><84>æ<c2><9d><c2><90>æ<c2><96><c2><99>ä¹<c2><9f>å<c2><9c>¨æ<c2><94>¹å<c2><8f><c2><98>ï¼<c2><8c>å¦<c2><82>ç<c2><94>µå­<c2><90>æ ¼å¼<c2><8f>ç<c2><9a><c2><84>ç<c2><94>µå­<c2><90>书ã<c2><80><c2><82>ä»<c2><8e>广ä¹<c2><89>ç<c2><90><c2><86>解ç<c2><9a><c2><84>å<c2><9b>¾ä¹¦ï¼<c2><8c>å<c2><88><c2><99>æ<c2><98>¯ä¸<c2><80>å<c2><88><c2><87>ä¼ æ<c2><92>­è®¯æ<c2><81>¯ç<c2><9a><c2><84>åª<c2><92>ä»<c2><8b>ã<c2><80><c2><82>书ä¹<c2><9f>æ<c2><8c><c2><87>æ<c2><96><c2><87>å­¦ä½<c2><9c>å<c2><93><c2><81>æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä¸­ç<c2><9a><c2><84>ä¸<c2><80>é<c2><83>¨å<c2><88><c2><86>ã<c2><80><c2><82>å<c2><9c>¨å<c2><9b>¾ä¹¦é¦<c2><86>ä¿¡æ<c2><81>¯å­¦ä¸­ï¼<c2><8c>书被称为ä¸<c2><93>è<c2><91><c2><97>ï¼<c2><8c>以å<c2><8c>ºå<c2><88>«äº<c2><8e>æ<c2><9d><c2><82>å¿<c2><97>ã<c2><80><c2><81>å­¦æ<c2><9c>¯æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><81>æ<c2><8a>¥çº¸ç­<c2><89>è¿<c2><9e>è½½æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><82>æ<c2><89><c2><80>æ<c2><9c><c2><89>ç<c2><9a><c2><84>书é<c2><9d>¢ä½<c2><9c>å<c2><93><c2><81>ï¼<c2><88>å<c2><8c><c2><85>æ<c2><8b>¬å<c2><9b>¾ä¹¦ï¼<c2><89>ç<c2><9a><c2><84>主ä½<c2><93>æ<c2><98>¯æ<c2><96><c2><87>å­¦ã<c2><80><c2><82>å<c2><9c>¨å°<c2><8f>说å<c2><92><c2><8c>ä¸<c2><80>äº<c2><9b>ç±»å<c2><9e><c2><8b>ï¼<c2><88>å¦<c2><82>ä¼ è®°ï¼<c2><89>中ï¼<c2><8c>书å<c2><8f>¯è<c2><83>½è¿<c2><98>è¦<c2><81>å<c2><88><c2><86>æ<c2><88><c2><90>å<c2><8d>·ã<c2><80><c2><82>对书ç<c2><89>¹å<c2><88>«å<c2><96><c2><9c>ç<c2><88>±ç<c2><9a><c2><84>人被称为ç<c2><88>±ä¹¦è<c2><80><c2><85>æ<c2><88><c2><96>è<c2><97><c2><8f>书家ï¼<c2><8c>æ<c2><9b>´é<c2><9a><c2><8f>æ<c2><84><c2><8f>ç<c2><9a><c2><84>称å<c2><91>¼æ<c2><98>¯ä¹¦è<c2><99>«æ<c2><88><c2><96>è<c2><80><c2><85>书å<c2><91><c2><86>å­<c2><90>ã<c2><80><c2><82>买书ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹å<c2><8f>«ä¹¦åº<c2><97>ï¼<c2><8c>å<c2><9b>¾ä¹¦é¦<c2><86>å<c2><88><c2><99>æ<c2><98>¯å<c2><8f>¯ä»¥å<c2><80><c2><9f>é<c2><98><c2><85>书ç±<c2><8d>ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹ã<c2><80><c2><82>2010å¹´ï¼<c2><8c>è°·æ­<c2><8c>å<c2><85>¬å<c2><8f>¸ä¼°è®¡ï¼<c2><8c>ä»<c2><8e>å<c2><8d>°å<c2><88>·æ<c2><9c>¯å<c2><8f><c2><91>æ<c2><98><c2><8e>è<c2><87>³ä»<c2><8a>ï¼<c2><8c>大æ¦<c2><82>å<c2><87>ºç<c2><89><c2><88>äº<c2><86>ä¸<c2><80>亿ä¸<c2><89>å<c2><8d><c2><83>ä¸<c2><87>æ<c2><9c>¬ä¸<c2><8d>å<c2><90><c2><8c>书å<c2><90><c2><8d>ç<c2><9a><c2><84>书ç±<c2><8d>ã<c2><80><c2><82>[1]')
     + xpk <- msgpack_pack(x)
     + xu <- msgpack_unpack(xpk)
     + stopifnot(identical(x, xu))
     + }
     >
     > # Complex nested object with lists and map
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xmap <- msgpack_map(key=letters[1:10], value=1:10)
     > xmap$value[[3]] <- list(NULL)
     > xmap$value[[4]] <- as.list(1:10)
     > xmap$value[[4]][[3]] <- xmap
     > xmap$value[[5]] <- x
     > y <- 1:10
     > names(y) <- letters[1:10]
     > x <- list(1:10, y, "a", list(3,raw(4)), xmap)
     > x <- msgpack_format(x)
     > xpk <- msgpack_pack(x)
     > xu <- msgpack_unpack(xpk)
     >
     > xs <- msgpack_simplify(x)
     > xus <- msgpack_simplify(xu)
     >
     > stopifnot(identical(xs, xus))
     >
     > # named list can be used directly as input - should come out to a map, simplify to get a named vector
     > x <- list(a=1L, b=2L)
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_simplify(msgpack_unpack(xpk)),c(a=1L, b=2L)))
     >
     > # multiple objects
     > xpk <- msgpack_pack(1,2,3,5,"a", msgpack_format(1:10))
     > xu <- msgpack_unpack(xpk)
     > stopifnot(identical(msgpack_simplify(xu[[6]]), 1:10))
     >
     > # speed test
     > if (requireNamespace("microbenchmark", quietly=TRUE)) {
     + x <- as.list(1:1e6)
     + print(microbenchmark::microbenchmark(xpk <- msgpack_pack(x), times=10)) # 500 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk), times=10)) # 150 ms
     + stopifnot(identical(xu, x))
     +
     + ## vector input
     + x <- 1:1e7
     + print(microbenchmark::microbenchmark(xpk2 <- msgpack_pack(x), times=10)) # 50 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk2, simplify=T), times=10)) # 50 ms
     + stopifnot(identical(xu, x))
     + }
     Unit: milliseconds
     expr min lq mean median uq max
     xpk <- msgpack_pack(x) 714.0415 879.7569 1167.913 1214.397 1439.798 1532.738
     neval
     10
     Unit: microseconds
     expr min lq mean median uq max neval
     xu <- msgpack_unpack(xpk) 29.054 29.612 36.7433 30.4505 31.149 91.911 10
     Error: identical(xu, x) is not TRUE
     Execution halted
Flavor: r-devel-windows-ix86+x86_64

Version: 0.2.2
Check: running tests for arch ‘x64’
Result: ERROR
     Running 'simpleTests.R' [0s]
     Running 'tests.r' [12s]
    Running the tests in 'tests/tests.r' failed.
    Complete output:
     > # Tests for testing out the functionality of the package, to make sure it isn't broken
     >
     > # some references
     >
     > # //https://github.com/msgpack/msgpack-c/blob/401460b7d99e51adc06194ceb458934b359d2139/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
     > # //https://stackoverflow.com/questions/44725299/messagepack-c-how-to-iterate-through-an-unknown-data-structure
     > # //https://stackoverflow.com/questions/37665361/how-to-determine-the-class-of-object-stored-in-sexp-in-rcpp
     > # //https://stackoverflow.com/questions/12954852/booststatic-visitor-with-multiple-arguments
     > # //https://stackoverflow.com/questions/25172419/how-can-i-get-the-sexptype-of-an-sexp-value
     > # //https://github.com/wch/r-source/blob/48536f1756a88830076023db9566fbb2c1dbb29b/src/include/Rinternals.h#L1178-L1214
     > # //https://stackoverflow.com/questions/16131462/how-to-use-boost-library-in-c-with-rcpp
     >
     >
     > library(RcppMsgPack)
     >
     > # stopifnot <- function(...) cat(..., "\n")
     >
     > # Test atomic types
     >
     > # integer
     > xpk <- msgpack_pack(1L)
     > stopifnot(identical(msgpack_unpack(xpk), 1L))
     >
     > # double
     > xpk <- msgpack_pack(1.54)
     > stopifnot(identical(msgpack_unpack(xpk), 1.54))
     >
     > # string
     > xpk <- msgpack_pack("sdfsdf")
     > stopifnot(identical(msgpack_unpack(xpk), "sdfsdf"))
     >
     > # raw
     > xpk <- msgpack_pack(as.raw(c(0x28, 0x4F)))
     > stopifnot(identical(msgpack_unpack(xpk), as.raw(c(0x28, 0x4F))))
     >
     > # boolean
     > xpk <- msgpack_pack(T)
     > stopifnot(msgpack_unpack(xpk))
     >
     > # nil
     > xpk <- msgpack_pack(NULL)
     > stopifnot(is.null(msgpack_unpack(xpk)))
     >
     > # ext
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_unpack(xpk), x))
     >
     >
     > if (Sys.info()[['sysname']] != "Windows") {
     + ## unicode or something characters - note this doesn't always work if you copy/paste into a terminal because of how terminals encode text, but if you source this file it works
     + x <- list('å<c2><9b>¾ä¹¦ï¼<c2><8c>é<c2><80><c2><9a>常å<c2><9c>¨ç<c2><8b>­ä¹<c2><89>ä¸<c2><8a>ç<c2><9a><c2><84>ç<c2><90><c2><86>解æ<c2><98>¯å¸¦æ<c2><9c><c2><89>æ<c2><96><c2><87>å­<c2><97>å<c2><92><c2><8c>å<c2><9b>¾å<c2><83><c2><8f>ç<c2><9a><c2><84>纸张ç<c2><9a><c2><84>é<c2><9b><c2><86>å<c2><90><c2><88>ã<c2><80><c2><82>书é<c2><80><c2><9a>常ç<c2><94>±å¢¨æ°´ã<c2><80><c2><81>纸张ã<c2><80><c2><81>ç¾<c2><8a>ç<c2><9a>®çº¸æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä»<c2><96>æ<c2><9d><c2><90>æ<c2><96><c2><99>å<c2><9b>ºå®<c2><9a>å<c2><9c>¨ä¹¦è<c2><84><c2><8a>ä¸<c2><8a>ç»<c2><84>æ<c2><88><c2><90>ã<c2><80><c2><82>ç»<c2><84>æ<c2><88><c2><90>书ç<c2><9a><c2><84>ä¸<c2><80>张纸称为ä¸<c2><80>å¼ ï¼<c2><8c>ä¸<c2><80>å¼ ç<c2><9a><c2><84>ä¸<c2><80>é<c2><9d>¢ç§°ä¸ºä¸<c2><80>页ã<c2><80><c2><82>ä½<c2><86>é<c2><9a><c2><8f>ç<c2><9d><c2><80>ç§<c2><91>å­¦æ<c2><8a><c2><80>æ<c2><9c>¯ç<c2><9a><c2><84>å<c2><8f><c2><91>å±<c2><95>ï¼<c2><8c>ç<c2><8b>­ä¹<c2><89>å<c2><9b>¾ä¹¦ç<c2><9a><c2><84>æ¦<c2><82>念ä¹<c2><9f>å<c2><9c>¨æ<c2><89>©å±<c2><95>ï¼<c2><8c>å<c2><88>¶ä½<c2><9c>书ç<c2><9a><c2><84>æ<c2><9d><c2><90>æ<c2><96><c2><99>ä¹<c2><9f>å<c2><9c>¨æ<c2><94>¹å<c2><8f><c2><98>ï¼<c2><8c>å¦<c2><82>ç<c2><94>µå­<c2><90>æ ¼å¼<c2><8f>ç<c2><9a><c2><84>ç<c2><94>µå­<c2><90>书ã<c2><80><c2><82>ä»<c2><8e>广ä¹<c2><89>ç<c2><90><c2><86>解ç<c2><9a><c2><84>å<c2><9b>¾ä¹¦ï¼<c2><8c>å<c2><88><c2><99>æ<c2><98>¯ä¸<c2><80>å<c2><88><c2><87>ä¼ æ<c2><92>­è®¯æ<c2><81>¯ç<c2><9a><c2><84>åª<c2><92>ä»<c2><8b>ã<c2><80><c2><82>书ä¹<c2><9f>æ<c2><8c><c2><87>æ<c2><96><c2><87>å­¦ä½<c2><9c>å<c2><93><c2><81>æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä¸­ç<c2><9a><c2><84>ä¸<c2><80>é<c2><83>¨å<c2><88><c2><86>ã<c2><80><c2><82>å<c2><9c>¨å<c2><9b>¾ä¹¦é¦<c2><86>ä¿¡æ<c2><81>¯å­¦ä¸­ï¼<c2><8c>书被称为ä¸<c2><93>è<c2><91><c2><97>ï¼<c2><8c>以å<c2><8c>ºå<c2><88>«äº<c2><8e>æ<c2><9d><c2><82>å¿<c2><97>ã<c2><80><c2><81>å­¦æ<c2><9c>¯æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><81>æ<c2><8a>¥çº¸ç­<c2><89>è¿<c2><9e>è½½æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><82>æ<c2><89><c2><80>æ<c2><9c><c2><89>ç<c2><9a><c2><84>书é<c2><9d>¢ä½<c2><9c>å<c2><93><c2><81>ï¼<c2><88>å<c2><8c><c2><85>æ<c2><8b>¬å<c2><9b>¾ä¹¦ï¼<c2><89>ç<c2><9a><c2><84>主ä½<c2><93>æ<c2><98>¯æ<c2><96><c2><87>å­¦ã<c2><80><c2><82>å<c2><9c>¨å°<c2><8f>说å<c2><92><c2><8c>ä¸<c2><80>äº<c2><9b>ç±»å<c2><9e><c2><8b>ï¼<c2><88>å¦<c2><82>ä¼ è®°ï¼<c2><89>中ï¼<c2><8c>书å<c2><8f>¯è<c2><83>½è¿<c2><98>è¦<c2><81>å<c2><88><c2><86>æ<c2><88><c2><90>å<c2><8d>·ã<c2><80><c2><82>对书ç<c2><89>¹å<c2><88>«å<c2><96><c2><9c>ç<c2><88>±ç<c2><9a><c2><84>人被称为ç<c2><88>±ä¹¦è<c2><80><c2><85>æ<c2><88><c2><96>è<c2><97><c2><8f>书家ï¼<c2><8c>æ<c2><9b>´é<c2><9a><c2><8f>æ<c2><84><c2><8f>ç<c2><9a><c2><84>称å<c2><91>¼æ<c2><98>¯ä¹¦è<c2><99>«æ<c2><88><c2><96>è<c2><80><c2><85>书å<c2><91><c2><86>å­<c2><90>ã<c2><80><c2><82>买书ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹å<c2><8f>«ä¹¦åº<c2><97>ï¼<c2><8c>å<c2><9b>¾ä¹¦é¦<c2><86>å<c2><88><c2><99>æ<c2><98>¯å<c2><8f>¯ä»¥å<c2><80><c2><9f>é<c2><98><c2><85>书ç±<c2><8d>ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹ã<c2><80><c2><82>2010å¹´ï¼<c2><8c>è°·æ­<c2><8c>å<c2><85>¬å<c2><8f>¸ä¼°è®¡ï¼<c2><8c>ä»<c2><8e>å<c2><8d>°å<c2><88>·æ<c2><9c>¯å<c2><8f><c2><91>æ<c2><98><c2><8e>è<c2><87>³ä»<c2><8a>ï¼<c2><8c>大æ¦<c2><82>å<c2><87>ºç<c2><89><c2><88>äº<c2><86>ä¸<c2><80>亿ä¸<c2><89>å<c2><8d><c2><83>ä¸<c2><87>æ<c2><9c>¬ä¸<c2><8d>å<c2><90><c2><8c>书å<c2><90><c2><8d>ç<c2><9a><c2><84>书ç±<c2><8d>ã<c2><80><c2><82>[1]')
     + xpk <- msgpack_pack(x)
     + xu <- msgpack_unpack(xpk)
     + stopifnot(identical(x, xu))
     + }
     >
     > # Complex nested object with lists and map
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xmap <- msgpack_map(key=letters[1:10], value=1:10)
     > xmap$value[[3]] <- list(NULL)
     > xmap$value[[4]] <- as.list(1:10)
     > xmap$value[[4]][[3]] <- xmap
     > xmap$value[[5]] <- x
     > y <- 1:10
     > names(y) <- letters[1:10]
     > x <- list(1:10, y, "a", list(3,raw(4)), xmap)
     > x <- msgpack_format(x)
     > xpk <- msgpack_pack(x)
     > xu <- msgpack_unpack(xpk)
     >
     > xs <- msgpack_simplify(x)
     > xus <- msgpack_simplify(xu)
     >
     > stopifnot(identical(xs, xus))
     >
     > # named list can be used directly as input - should come out to a map, simplify to get a named vector
     > x <- list(a=1L, b=2L)
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_simplify(msgpack_unpack(xpk)),c(a=1L, b=2L)))
     >
     > # multiple objects
     > xpk <- msgpack_pack(1,2,3,5,"a", msgpack_format(1:10))
     > xu <- msgpack_unpack(xpk)
     > stopifnot(identical(msgpack_simplify(xu[[6]]), 1:10))
     >
     > # speed test
     > if (requireNamespace("microbenchmark", quietly=TRUE)) {
     + x <- as.list(1:1e6)
     + print(microbenchmark::microbenchmark(xpk <- msgpack_pack(x), times=10)) # 500 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk), times=10)) # 150 ms
     + stopifnot(identical(xu, x))
     +
     + ## vector input
     + x <- 1:1e7
     + print(microbenchmark::microbenchmark(xpk2 <- msgpack_pack(x), times=10)) # 50 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk2, simplify=T), times=10)) # 50 ms
     + stopifnot(identical(xu, x))
     + }
     Unit: milliseconds
     expr min lq mean median uq max
     xpk <- msgpack_pack(x) 595.1053 658.2231 946.202 816.1734 1247.179 1468.644
     neval
     10
     Unit: microseconds
     expr min lq mean median uq max neval
     xu <- msgpack_unpack(xpk) 32.127 33.315 40.0473 34.153 34.363 94.495 10
     Error: identical(xu, x) is not TRUE
     Execution halted
Flavor: r-devel-windows-ix86+x86_64

Version: 0.2.2
Check: re-building of vignette outputs
Result: WARN
    Error in re-building vignettes:
     ...
    Quitting from lines 28-34 (vignette.rmd)
    Error: processing vignette 'vignette.rmd' failed with diagnostics:
    object 'xpk' not found
    Execution halted
Flavors: r-devel-windows-ix86+x86_64, r-oldrel-windows-ix86+x86_64

Version: 0.2.2
Check: whether package can be installed
Result: ERROR
    Installation failed.
Flavor: r-patched-solaris-x86

Version: 0.2.2
Check: running tests for arch ‘i386’
Result: ERROR
     Running 'simpleTests.R' [1s]
     Running 'tests.r' [15s]
    Running the tests in 'tests/tests.r' failed.
    Complete output:
     > # Tests for testing out the functionality of the package, to make sure it isn't broken
     >
     > # some references
     >
     > # //https://github.com/msgpack/msgpack-c/blob/401460b7d99e51adc06194ceb458934b359d2139/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
     > # //https://stackoverflow.com/questions/44725299/messagepack-c-how-to-iterate-through-an-unknown-data-structure
     > # //https://stackoverflow.com/questions/37665361/how-to-determine-the-class-of-object-stored-in-sexp-in-rcpp
     > # //https://stackoverflow.com/questions/12954852/booststatic-visitor-with-multiple-arguments
     > # //https://stackoverflow.com/questions/25172419/how-can-i-get-the-sexptype-of-an-sexp-value
     > # //https://github.com/wch/r-source/blob/48536f1756a88830076023db9566fbb2c1dbb29b/src/include/Rinternals.h#L1178-L1214
     > # //https://stackoverflow.com/questions/16131462/how-to-use-boost-library-in-c-with-rcpp
     >
     >
     > library(RcppMsgPack)
     >
     > # stopifnot <- function(...) cat(..., "\n")
     >
     > # Test atomic types
     >
     > # integer
     > xpk <- msgpack_pack(1L)
     > stopifnot(identical(msgpack_unpack(xpk), 1L))
     >
     > # double
     > xpk <- msgpack_pack(1.54)
     > stopifnot(identical(msgpack_unpack(xpk), 1.54))
     >
     > # string
     > xpk <- msgpack_pack("sdfsdf")
     > stopifnot(identical(msgpack_unpack(xpk), "sdfsdf"))
     >
     > # raw
     > xpk <- msgpack_pack(as.raw(c(0x28, 0x4F)))
     > stopifnot(identical(msgpack_unpack(xpk), as.raw(c(0x28, 0x4F))))
     >
     > # boolean
     > xpk <- msgpack_pack(T)
     > stopifnot(msgpack_unpack(xpk))
     >
     > # nil
     > xpk <- msgpack_pack(NULL)
     > stopifnot(is.null(msgpack_unpack(xpk)))
     >
     > # ext
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_unpack(xpk), x))
     >
     >
     > if (Sys.info()[['sysname']] != "Windows") {
     + ## unicode or something characters - note this doesn't always work if you copy/paste into a terminal because of how terminals encode text, but if you source this file it works
     + x <- list('å<c2><9b>¾ä¹¦ï¼<c2><8c>é<c2><80><c2><9a>常å<c2><9c>¨ç<c2><8b>­ä¹<c2><89>ä¸<c2><8a>ç<c2><9a><c2><84>ç<c2><90><c2><86>解æ<c2><98>¯å¸¦æ<c2><9c><c2><89>æ<c2><96><c2><87>å­<c2><97>å<c2><92><c2><8c>å<c2><9b>¾å<c2><83><c2><8f>ç<c2><9a><c2><84>纸张ç<c2><9a><c2><84>é<c2><9b><c2><86>å<c2><90><c2><88>ã<c2><80><c2><82>书é<c2><80><c2><9a>常ç<c2><94>±å¢¨æ°´ã<c2><80><c2><81>纸张ã<c2><80><c2><81>ç¾<c2><8a>ç<c2><9a>®çº¸æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä»<c2><96>æ<c2><9d><c2><90>æ<c2><96><c2><99>å<c2><9b>ºå®<c2><9a>å<c2><9c>¨ä¹¦è<c2><84><c2><8a>ä¸<c2><8a>ç»<c2><84>æ<c2><88><c2><90>ã<c2><80><c2><82>ç»<c2><84>æ<c2><88><c2><90>书ç<c2><9a><c2><84>ä¸<c2><80>张纸称为ä¸<c2><80>å¼ ï¼<c2><8c>ä¸<c2><80>å¼ ç<c2><9a><c2><84>ä¸<c2><80>é<c2><9d>¢ç§°ä¸ºä¸<c2><80>页ã<c2><80><c2><82>ä½<c2><86>é<c2><9a><c2><8f>ç<c2><9d><c2><80>ç§<c2><91>å­¦æ<c2><8a><c2><80>æ<c2><9c>¯ç<c2><9a><c2><84>å<c2><8f><c2><91>å±<c2><95>ï¼<c2><8c>ç<c2><8b>­ä¹<c2><89>å<c2><9b>¾ä¹¦ç<c2><9a><c2><84>æ¦<c2><82>念ä¹<c2><9f>å<c2><9c>¨æ<c2><89>©å±<c2><95>ï¼<c2><8c>å<c2><88>¶ä½<c2><9c>书ç<c2><9a><c2><84>æ<c2><9d><c2><90>æ<c2><96><c2><99>ä¹<c2><9f>å<c2><9c>¨æ<c2><94>¹å<c2><8f><c2><98>ï¼<c2><8c>å¦<c2><82>ç<c2><94>µå­<c2><90>æ ¼å¼<c2><8f>ç<c2><9a><c2><84>ç<c2><94>µå­<c2><90>书ã<c2><80><c2><82>ä»<c2><8e>广ä¹<c2><89>ç<c2><90><c2><86>解ç<c2><9a><c2><84>å<c2><9b>¾ä¹¦ï¼<c2><8c>å<c2><88><c2><99>æ<c2><98>¯ä¸<c2><80>å<c2><88><c2><87>ä¼ æ<c2><92>­è®¯æ<c2><81>¯ç<c2><9a><c2><84>åª<c2><92>ä»<c2><8b>ã<c2><80><c2><82>书ä¹<c2><9f>æ<c2><8c><c2><87>æ<c2><96><c2><87>å­¦ä½<c2><9c>å<c2><93><c2><81>æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä¸­ç<c2><9a><c2><84>ä¸<c2><80>é<c2><83>¨å<c2><88><c2><86>ã<c2><80><c2><82>å<c2><9c>¨å<c2><9b>¾ä¹¦é¦<c2><86>ä¿¡æ<c2><81>¯å­¦ä¸­ï¼<c2><8c>书被称为ä¸<c2><93>è<c2><91><c2><97>ï¼<c2><8c>以å<c2><8c>ºå<c2><88>«äº<c2><8e>æ<c2><9d><c2><82>å¿<c2><97>ã<c2><80><c2><81>å­¦æ<c2><9c>¯æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><81>æ<c2><8a>¥çº¸ç­<c2><89>è¿<c2><9e>è½½æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><82>æ<c2><89><c2><80>æ<c2><9c><c2><89>ç<c2><9a><c2><84>书é<c2><9d>¢ä½<c2><9c>å<c2><93><c2><81>ï¼<c2><88>å<c2><8c><c2><85>æ<c2><8b>¬å<c2><9b>¾ä¹¦ï¼<c2><89>ç<c2><9a><c2><84>主ä½<c2><93>æ<c2><98>¯æ<c2><96><c2><87>å­¦ã<c2><80><c2><82>å<c2><9c>¨å°<c2><8f>说å<c2><92><c2><8c>ä¸<c2><80>äº<c2><9b>ç±»å<c2><9e><c2><8b>ï¼<c2><88>å¦<c2><82>ä¼ è®°ï¼<c2><89>中ï¼<c2><8c>书å<c2><8f>¯è<c2><83>½è¿<c2><98>è¦<c2><81>å<c2><88><c2><86>æ<c2><88><c2><90>å<c2><8d>·ã<c2><80><c2><82>对书ç<c2><89>¹å<c2><88>«å<c2><96><c2><9c>ç<c2><88>±ç<c2><9a><c2><84>人被称为ç<c2><88>±ä¹¦è<c2><80><c2><85>æ<c2><88><c2><96>è<c2><97><c2><8f>书家ï¼<c2><8c>æ<c2><9b>´é<c2><9a><c2><8f>æ<c2><84><c2><8f>ç<c2><9a><c2><84>称å<c2><91>¼æ<c2><98>¯ä¹¦è<c2><99>«æ<c2><88><c2><96>è<c2><80><c2><85>书å<c2><91><c2><86>å­<c2><90>ã<c2><80><c2><82>买书ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹å<c2><8f>«ä¹¦åº<c2><97>ï¼<c2><8c>å<c2><9b>¾ä¹¦é¦<c2><86>å<c2><88><c2><99>æ<c2><98>¯å<c2><8f>¯ä»¥å<c2><80><c2><9f>é<c2><98><c2><85>书ç±<c2><8d>ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹ã<c2><80><c2><82>2010å¹´ï¼<c2><8c>è°·æ­<c2><8c>å<c2><85>¬å<c2><8f>¸ä¼°è®¡ï¼<c2><8c>ä»<c2><8e>å<c2><8d>°å<c2><88>·æ<c2><9c>¯å<c2><8f><c2><91>æ<c2><98><c2><8e>è<c2><87>³ä»<c2><8a>ï¼<c2><8c>大æ¦<c2><82>å<c2><87>ºç<c2><89><c2><88>äº<c2><86>ä¸<c2><80>亿ä¸<c2><89>å<c2><8d><c2><83>ä¸<c2><87>æ<c2><9c>¬ä¸<c2><8d>å<c2><90><c2><8c>书å<c2><90><c2><8d>ç<c2><9a><c2><84>书ç±<c2><8d>ã<c2><80><c2><82>[1]')
     + xpk <- msgpack_pack(x)
     + xu <- msgpack_unpack(xpk)
     + stopifnot(identical(x, xu))
     + }
     >
     > # Complex nested object with lists and map
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xmap <- msgpack_map(key=letters[1:10], value=1:10)
     > xmap$value[[3]] <- list(NULL)
     > xmap$value[[4]] <- as.list(1:10)
     > xmap$value[[4]][[3]] <- xmap
     > xmap$value[[5]] <- x
     > y <- 1:10
     > names(y) <- letters[1:10]
     > x <- list(1:10, y, "a", list(3,raw(4)), xmap)
     > x <- msgpack_format(x)
     > xpk <- msgpack_pack(x)
     > xu <- msgpack_unpack(xpk)
     >
     > xs <- msgpack_simplify(x)
     > xus <- msgpack_simplify(xu)
     >
     > stopifnot(identical(xs, xus))
     >
     > # named list can be used directly as input - should come out to a map, simplify to get a named vector
     > x <- list(a=1L, b=2L)
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_simplify(msgpack_unpack(xpk)),c(a=1L, b=2L)))
     >
     > # multiple objects
     > xpk <- msgpack_pack(1,2,3,5,"a", msgpack_format(1:10))
     > xu <- msgpack_unpack(xpk)
     > stopifnot(identical(msgpack_simplify(xu[[6]]), 1:10))
     >
     > # speed test
     > if (requireNamespace("microbenchmark", quietly=TRUE)) {
     + x <- as.list(1:1e6)
     + print(microbenchmark::microbenchmark(xpk <- msgpack_pack(x), times=10)) # 500 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk), times=10)) # 150 ms
     + stopifnot(identical(xu, x))
     +
     + ## vector input
     + x <- 1:1e7
     + print(microbenchmark::microbenchmark(xpk2 <- msgpack_pack(x), times=10)) # 50 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk2, simplify=T), times=10)) # 50 ms
     + stopifnot(identical(xu, x))
     + }
     Unit: milliseconds
     expr min lq mean median uq max
     xpk <- msgpack_pack(x) 947.0222 1079.502 1111.286 1119.599 1161.018 1239.365
     neval
     10
     Unit: microseconds
     expr min lq mean median uq max neval
     xu <- msgpack_unpack(xpk) 23.396 26.19 34.0404 27.9015 30.101 90.514 10
     Error: identical(xu, x) is not TRUE
     Execution halted
Flavor: r-oldrel-windows-ix86+x86_64

Version: 0.2.2
Check: running tests for arch ‘x64’
Result: ERROR
     Running 'simpleTests.R' [1s]
     Running 'tests.r' [15s]
    Running the tests in 'tests/tests.r' failed.
    Complete output:
     > # Tests for testing out the functionality of the package, to make sure it isn't broken
     >
     > # some references
     >
     > # //https://github.com/msgpack/msgpack-c/blob/401460b7d99e51adc06194ceb458934b359d2139/include/msgpack/v1/adaptor/boost/msgpack_variant.hpp
     > # //https://stackoverflow.com/questions/44725299/messagepack-c-how-to-iterate-through-an-unknown-data-structure
     > # //https://stackoverflow.com/questions/37665361/how-to-determine-the-class-of-object-stored-in-sexp-in-rcpp
     > # //https://stackoverflow.com/questions/12954852/booststatic-visitor-with-multiple-arguments
     > # //https://stackoverflow.com/questions/25172419/how-can-i-get-the-sexptype-of-an-sexp-value
     > # //https://github.com/wch/r-source/blob/48536f1756a88830076023db9566fbb2c1dbb29b/src/include/Rinternals.h#L1178-L1214
     > # //https://stackoverflow.com/questions/16131462/how-to-use-boost-library-in-c-with-rcpp
     >
     >
     > library(RcppMsgPack)
     >
     > # stopifnot <- function(...) cat(..., "\n")
     >
     > # Test atomic types
     >
     > # integer
     > xpk <- msgpack_pack(1L)
     > stopifnot(identical(msgpack_unpack(xpk), 1L))
     >
     > # double
     > xpk <- msgpack_pack(1.54)
     > stopifnot(identical(msgpack_unpack(xpk), 1.54))
     >
     > # string
     > xpk <- msgpack_pack("sdfsdf")
     > stopifnot(identical(msgpack_unpack(xpk), "sdfsdf"))
     >
     > # raw
     > xpk <- msgpack_pack(as.raw(c(0x28, 0x4F)))
     > stopifnot(identical(msgpack_unpack(xpk), as.raw(c(0x28, 0x4F))))
     >
     > # boolean
     > xpk <- msgpack_pack(T)
     > stopifnot(msgpack_unpack(xpk))
     >
     > # nil
     > xpk <- msgpack_pack(NULL)
     > stopifnot(is.null(msgpack_unpack(xpk)))
     >
     > # ext
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_unpack(xpk), x))
     >
     >
     > if (Sys.info()[['sysname']] != "Windows") {
     + ## unicode or something characters - note this doesn't always work if you copy/paste into a terminal because of how terminals encode text, but if you source this file it works
     + x <- list('å<c2><9b>¾ä¹¦ï¼<c2><8c>é<c2><80><c2><9a>常å<c2><9c>¨ç<c2><8b>­ä¹<c2><89>ä¸<c2><8a>ç<c2><9a><c2><84>ç<c2><90><c2><86>解æ<c2><98>¯å¸¦æ<c2><9c><c2><89>æ<c2><96><c2><87>å­<c2><97>å<c2><92><c2><8c>å<c2><9b>¾å<c2><83><c2><8f>ç<c2><9a><c2><84>纸张ç<c2><9a><c2><84>é<c2><9b><c2><86>å<c2><90><c2><88>ã<c2><80><c2><82>书é<c2><80><c2><9a>常ç<c2><94>±å¢¨æ°´ã<c2><80><c2><81>纸张ã<c2><80><c2><81>ç¾<c2><8a>ç<c2><9a>®çº¸æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä»<c2><96>æ<c2><9d><c2><90>æ<c2><96><c2><99>å<c2><9b>ºå®<c2><9a>å<c2><9c>¨ä¹¦è<c2><84><c2><8a>ä¸<c2><8a>ç»<c2><84>æ<c2><88><c2><90>ã<c2><80><c2><82>ç»<c2><84>æ<c2><88><c2><90>书ç<c2><9a><c2><84>ä¸<c2><80>张纸称为ä¸<c2><80>å¼ ï¼<c2><8c>ä¸<c2><80>å¼ ç<c2><9a><c2><84>ä¸<c2><80>é<c2><9d>¢ç§°ä¸ºä¸<c2><80>页ã<c2><80><c2><82>ä½<c2><86>é<c2><9a><c2><8f>ç<c2><9d><c2><80>ç§<c2><91>å­¦æ<c2><8a><c2><80>æ<c2><9c>¯ç<c2><9a><c2><84>å<c2><8f><c2><91>å±<c2><95>ï¼<c2><8c>ç<c2><8b>­ä¹<c2><89>å<c2><9b>¾ä¹¦ç<c2><9a><c2><84>æ¦<c2><82>念ä¹<c2><9f>å<c2><9c>¨æ<c2><89>©å±<c2><95>ï¼<c2><8c>å<c2><88>¶ä½<c2><9c>书ç<c2><9a><c2><84>æ<c2><9d><c2><90>æ<c2><96><c2><99>ä¹<c2><9f>å<c2><9c>¨æ<c2><94>¹å<c2><8f><c2><98>ï¼<c2><8c>å¦<c2><82>ç<c2><94>µå­<c2><90>æ ¼å¼<c2><8f>ç<c2><9a><c2><84>ç<c2><94>µå­<c2><90>书ã<c2><80><c2><82>ä»<c2><8e>广ä¹<c2><89>ç<c2><90><c2><86>解ç<c2><9a><c2><84>å<c2><9b>¾ä¹¦ï¼<c2><8c>å<c2><88><c2><99>æ<c2><98>¯ä¸<c2><80>å<c2><88><c2><87>ä¼ æ<c2><92>­è®¯æ<c2><81>¯ç<c2><9a><c2><84>åª<c2><92>ä»<c2><8b>ã<c2><80><c2><82>书ä¹<c2><9f>æ<c2><8c><c2><87>æ<c2><96><c2><87>å­¦ä½<c2><9c>å<c2><93><c2><81>æ<c2><88><c2><96>è<c2><80><c2><85>å<c2><85>¶ä¸­ç<c2><9a><c2><84>ä¸<c2><80>é<c2><83>¨å<c2><88><c2><86>ã<c2><80><c2><82>å<c2><9c>¨å<c2><9b>¾ä¹¦é¦<c2><86>ä¿¡æ<c2><81>¯å­¦ä¸­ï¼<c2><8c>书被称为ä¸<c2><93>è<c2><91><c2><97>ï¼<c2><8c>以å<c2><8c>ºå<c2><88>«äº<c2><8e>æ<c2><9d><c2><82>å¿<c2><97>ã<c2><80><c2><81>å­¦æ<c2><9c>¯æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><81>æ<c2><8a>¥çº¸ç­<c2><89>è¿<c2><9e>è½½æ<c2><9c><c2><9f>å<c2><88><c2><8a>ã<c2><80><c2><82>æ<c2><89><c2><80>æ<c2><9c><c2><89>ç<c2><9a><c2><84>书é<c2><9d>¢ä½<c2><9c>å<c2><93><c2><81>ï¼<c2><88>å<c2><8c><c2><85>æ<c2><8b>¬å<c2><9b>¾ä¹¦ï¼<c2><89>ç<c2><9a><c2><84>主ä½<c2><93>æ<c2><98>¯æ<c2><96><c2><87>å­¦ã<c2><80><c2><82>å<c2><9c>¨å°<c2><8f>说å<c2><92><c2><8c>ä¸<c2><80>äº<c2><9b>ç±»å<c2><9e><c2><8b>ï¼<c2><88>å¦<c2><82>ä¼ è®°ï¼<c2><89>中ï¼<c2><8c>书å<c2><8f>¯è<c2><83>½è¿<c2><98>è¦<c2><81>å<c2><88><c2><86>æ<c2><88><c2><90>å<c2><8d>·ã<c2><80><c2><82>对书ç<c2><89>¹å<c2><88>«å<c2><96><c2><9c>ç<c2><88>±ç<c2><9a><c2><84>人被称为ç<c2><88>±ä¹¦è<c2><80><c2><85>æ<c2><88><c2><96>è<c2><97><c2><8f>书家ï¼<c2><8c>æ<c2><9b>´é<c2><9a><c2><8f>æ<c2><84><c2><8f>ç<c2><9a><c2><84>称å<c2><91>¼æ<c2><98>¯ä¹¦è<c2><99>«æ<c2><88><c2><96>è<c2><80><c2><85>书å<c2><91><c2><86>å­<c2><90>ã<c2><80><c2><82>买书ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹å<c2><8f>«ä¹¦åº<c2><97>ï¼<c2><8c>å<c2><9b>¾ä¹¦é¦<c2><86>å<c2><88><c2><99>æ<c2><98>¯å<c2><8f>¯ä»¥å<c2><80><c2><9f>é<c2><98><c2><85>书ç±<c2><8d>ç<c2><9a><c2><84>å<c2><9c>°æ<c2><96>¹ã<c2><80><c2><82>2010å¹´ï¼<c2><8c>è°·æ­<c2><8c>å<c2><85>¬å<c2><8f>¸ä¼°è®¡ï¼<c2><8c>ä»<c2><8e>å<c2><8d>°å<c2><88>·æ<c2><9c>¯å<c2><8f><c2><91>æ<c2><98><c2><8e>è<c2><87>³ä»<c2><8a>ï¼<c2><8c>大æ¦<c2><82>å<c2><87>ºç<c2><89><c2><88>äº<c2><86>ä¸<c2><80>亿ä¸<c2><89>å<c2><8d><c2><83>ä¸<c2><87>æ<c2><9c>¬ä¸<c2><8d>å<c2><90><c2><8c>书å<c2><90><c2><8d>ç<c2><9a><c2><84>书ç±<c2><8d>ã<c2><80><c2><82>[1]')
     + xpk <- msgpack_pack(x)
     + xu <- msgpack_unpack(xpk)
     + stopifnot(identical(x, xu))
     + }
     >
     > # Complex nested object with lists and map
     > x <- as.raw(c(0x28, 0x4F))
     > attr(x, "EXT") <- 1L
     > xmap <- msgpack_map(key=letters[1:10], value=1:10)
     > xmap$value[[3]] <- list(NULL)
     > xmap$value[[4]] <- as.list(1:10)
     > xmap$value[[4]][[3]] <- xmap
     > xmap$value[[5]] <- x
     > y <- 1:10
     > names(y) <- letters[1:10]
     > x <- list(1:10, y, "a", list(3,raw(4)), xmap)
     > x <- msgpack_format(x)
     > xpk <- msgpack_pack(x)
     > xu <- msgpack_unpack(xpk)
     >
     > xs <- msgpack_simplify(x)
     > xus <- msgpack_simplify(xu)
     >
     > stopifnot(identical(xs, xus))
     >
     > # named list can be used directly as input - should come out to a map, simplify to get a named vector
     > x <- list(a=1L, b=2L)
     > xpk <- msgpack_pack(x)
     > stopifnot(identical(msgpack_simplify(msgpack_unpack(xpk)),c(a=1L, b=2L)))
     >
     > # multiple objects
     > xpk <- msgpack_pack(1,2,3,5,"a", msgpack_format(1:10))
     > xu <- msgpack_unpack(xpk)
     > stopifnot(identical(msgpack_simplify(xu[[6]]), 1:10))
     >
     > # speed test
     > if (requireNamespace("microbenchmark", quietly=TRUE)) {
     + x <- as.list(1:1e6)
     + print(microbenchmark::microbenchmark(xpk <- msgpack_pack(x), times=10)) # 500 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk), times=10)) # 150 ms
     + stopifnot(identical(xu, x))
     +
     + ## vector input
     + x <- 1:1e7
     + print(microbenchmark::microbenchmark(xpk2 <- msgpack_pack(x), times=10)) # 50 ms
     + print(microbenchmark::microbenchmark(xu <- msgpack_unpack(xpk2, simplify=T), times=10)) # 50 ms
     + stopifnot(identical(xu, x))
     + }
     Unit: seconds
     expr min lq mean median uq max
     xpk <- msgpack_pack(x) 1.00891 1.177633 1.192605 1.199332 1.229521 1.324794
     neval
     10
     Unit: microseconds
     expr min lq mean median uq max neval
     xu <- msgpack_unpack(xpk) 26.959 27.448 34.5578 28.112 28.915 92.191 10
     Error: identical(xu, x) is not TRUE
     Execution halted
Flavor: r-oldrel-windows-ix86+x86_64