nlib
|
gen-sln.ps1
)を追加しました。 cmake_cafe_ninja.ps1
, cmake_ctr_ninja.ps1
)を追加しました。 nlib_pause()
関数が新たに追加されました。 NLIB_TLS_INVALID
マクロが新たに定義されました。 nlib_atomic_exchangeptr()
関数が新たに追加されました。 nlib_tryonce()
がdeprecatedになりました。この関数は将来のリリースで削除されます。 nlib_mkostemps()
, nlib_fd_fileid()
, nlib_readlink()
を追加しました。 nlib_timer_create()
, nlib_timer_settime()
,nlib_timer_gettime()
,nlib_timer_delete()
を追加しました。 nlib.natvis
ファイルをsetup
ディレクトリからcmake
ディレクトリに移動しました。cmake 3.7以降でプロジェクトの作成時に自動的に含まれるようになります。 heap::CentralHeap
において、メモリ不足時におけるメモリ割り当て方法を改善しました。 oss
ライブラリに収録されているSQLiteをバージョン3.14.1にアップデートしました。 nlib_bitreverse32()
とnlib_bitreverse64()
が実装されました。 nlib_fd_open()
でO_EXCL(NLIB_FD_O_EXCL)
の指定が可能になりました。 nlib_fd_create()
が失敗するように変更しました。 nlib_strcplen2()
がnlib_strcplen()
にリネームされました。nlib_strcplen2()
は暫くのあいだマクロとして提供された後に削除されます。 nlib_popcnt()
がnlib_popcnt32()
にリネームされました。nlib_popcnt()
は暫くのあいだマクロとして提供された後に削除されます。 nlib_clz()
がnlib_clz32()
にリネームされました。nlib_clz()
は暫くのあいだマクロとして提供された後に削除されます。 nlib_ctz()
がnlib_ctz32()
にリネームされました。nlib_ctz()
は暫くのあいだマクロとして提供された後に削除されます。 heap::CentralHeap::FreeWithSize()
, heap::CentralHeap::GetAllocSize()
, heap::CentralHeap::Realloc()
が追加されました。 nmalloc_query()
のクエリにNMALLOC_QUERY_SET_COLOR
, NMALLOC_QUERY_GET_COLOR
, NMALLOC_QUERY_SET_NAME
, NMALLOC_QUERY_GET_NAME
を追加しました。割り当てられた4096バイト以上の任意の領域に対して24bit整数値や文字列を関連付ける機能です。 利用方法はheap
ライブラリのobject_tracking
サンプルを参考にしてください。 NMallocDumpMode
にNMALLOC_DUMP_PAGESUMMARY
を追加しました。 nmalloc
等の動作の不備を改善しました。 nmalloc_setmark1()
, nmalloc_setmark2()
, nmalloc_getmark()
, nmalloc_getobjptr()
がdeprecatedとなりました。将来のリリースで削除されます。 NMALLOC_HEAPOPTION_CHECK_0
, NMALLOC_HEAPOPTION_CHECK_1
がdeprecatedとなりました。将来のリリースで削除されます。 nlib_memcplen()
, nlib_memutf8_to_utf16()
, nlib_memutf16_to_utf8()
, nlib_memutf8_to_utf32()
, nlib_memutf32_to_utf8()
を追加しました。 nlib_strcplen2()
が追加されました。nlib_strcplen()
およびnlib_strcplen_ex()
はdeprecatedとなりました。将来のリリースにおいて削除されます。 nlib_basename()
, nlib_dirname()
を追加しました。 nlib_strlcpy()
を追加しました。 nlib_memccpy()
を追加しました。 nlib_memspn()
, nlib_memcspn()
を追加しました。 nlib_strcat()
, nlib_strncat()
, nlib_wcscat()
, nlib_wcsncat()
がdeprecatedになりました。将来のリリースにおいて削除されます。 nn::nlib::StrCat()
, nn::nlib::StrNcat()
がdeprecatedになりました。将来のリリースにおいて削除されます。 misc
ライブラリからグローバル名前空間で宣言されるCリンケージの関数(nlib_sleep()
など)が分離され、libn
ライブラリとなっています。 lib/cmake/gcc
からlib/cmake/cygwin
に変更されています。 nlib_isalnum()
, nlib_isalpha()
, nlib_iscntrl()
, nlib_isdigit()
, nlib_isgraph()
, nlib_islower()
, nlib_isprint()
, nlib_ispunct()
, nlib_isspace()
, nlib_isupper()
, nlib_isxdigit()
, nlib_tolower()
, nlib_toupper()
が追加されました。 IsAlnum()
等がdeprecatedになりました。 nlib_strto_int32()
, nlib_strto_int64()
, nlib_strto_uint32()
, nlib_strto_int64()
, nlib_strto_double()
, nlib_strto_float()
, nlib_strto_int32_fallback()
, nlib_strto_int64_fallback()
, nlib_strto_uint32_fallback()
, nlib_strto_int64_fallback()
, nlib_strto_double_fallback()
, nlib_strto_float_fallback()
, nlib_strto_int8()
, nlib_strto_int16()
, nlib_strto_uint8()
, nlib_strto_uint16()
が追加されました。 StrTo()
とStrToFallback()
がdeprecatedになりました。 nlib_epochtime_timespec()
, nlib_ticktime_timespec()
, nlib_sleep_timespec()
, nlib_mutex_trylock_for_timespec()
, nlib_semaphore_trywait_for_timespec()
, nlib_cond_wait_for_timespec()
, nlib_cond_wait_until_timespec()
, nlib_rwlock_tryrdlock_for_timespec()
, nlib_rwlock_tryrdlock_until_timespec()
, nlib_rwlock_trywrlock_for_timespec()
, nlib_rwlock_trywrlock_until_timespec()
, nlib_condrwlock_wait_for_timespec()
, nlib_condrwlock_wait_until_timespec()
が追加されました。 nlib_fd_open()
は引数仕様が変更され、最後の引数の型がvoid*
型ではなくint
型になり、アクセス許可を指定するように変更されました。 nlib_thread_setname()
は引数仕様が変更され、名前を変更するスレッドが指定できるようになりました。 heap
ライブラリのheap::CentralHeap
(nmalloc)
の動作を更に改善しました。 lib/cmake/gcc
からlib/cmake/cygwin
に変更されます。 nlib_remove()
, nlib_thread_getname()
が追加されました。 heap
ライブラリのheap::CentralHeap
(nmalloc)
の動作を改善しました。 heap
ライブラリのheap::CentralHeap
(nmalloc)
で比較的大きなサイズ(4KB以上)のメモリを割り当てた場合のフラグメンテーション問題を緩和しました。 oss
ライブラリに収録されているSQLiteをバージョン3.12.2にアップデートしました。また、テンポラリファイルが削除されるようになりました。 nlib_fd_pwrite()
およびnlib_fd_pread()
において、ファイルサイズより大きいオフセットを指定した場合の動作を修正しました。 simd::I64
がdeprecatedになりました。 Crc32
クラスがdeprecatedになりました。nlib_crc32()
またはnlib_crc32c()
を利用してください。 misc
ライブラリにnlib_compiler_version()
関数を追加しました。nlibのコンパイルに利用されたコンパイラのバージョンを返します。 misc
ライブラリにnlib_crc32()
, nlib_crc32c()
関数を追加しました。 simd
ライブラリに以下の関数を追加しました。 simd
ライブラリのNEON版コードの動作速度を改善しました。 oss
ライブラリがnmalloc
ではなくnlib_malloc
を利用するようになりました。 heap
ライブラリのnmalloc_query()
の引数に、NMALLOC_QUERY_UNIFY_FREELIST
を指定できるようになりました。 heap
ライブラリのCentralHeap
が保持するヒープ内のメタデータの断片化を緩和しました。 simd
ライブラリにsimd::I128::PopCntMask8()
, simd::I128::ClzMask8()
, simd::I128::CtzMask8()
を追加しました。 nlib_malloc_size()
が利用できない問題を修正しました。 nlib_is_error()
関数が追加されました。errno_t
やbool
の戻り値に対して、エラー判定の記述を紛らわしくない形で行うことができます。 nlib_getenv()
関数がCAFE及びCTRに対応しました。 IsOk()
, IsError()
関数がdeprecatedになりました。nlib_is_error()
関数かoperator bool()
関数を利用してください。 misc
ライブラリのUtf16InputStream
, Utf32InputStream
, WcharInputStream
, Base64InputStream
, Base64OutputStream
にInit()
メンバ関数が追加されました。 misc
ライブラリのTextReader
, TextWriter
, BinaryReader
, BinaryWriter
クラスの初期化がInit()
とOpen()
の2段階に分割されました。 exi
ライブラリ内のクラスのIsOk()
, IsError()
, Initialize()
, GetErrorValue()
メンバ関数がdeprecatedになりました。 heap
ライブラリ内のクラスのInitialize()
メンバ関数がdeprecatedになりました。 msgpack
ライブラリのCsvReader
クラスの初期化がInit()
とOpen()
の2段階に分割されました。 nmalloc_aligned()
で4096バイトより大きいアラインメントでメモリを割り当てると、クラッシュする場合がある不具合を修正しました。 nmalloc_query(NMALLOC_QUERY_MAX_ALLOCATABLE_SIZE, ...)
が実際に割り当てられるサイズよりも大きいサイズを返す場合がある問題を修正しました。 simd
ライブラリのF128::StoreLoA4()
, F128::StoreHiA4()
がARM プロセッサ上での実行時にクラッシュする場合があるという問題を修正しました。 misc
ライブラリにBase64Encoder
, Base64Decoder
クラスを追加しました。Base64の各種変形版のエンコード及びデコードを行うことができます。 msgpack
ライブラリにmsgpack::JsonStreamGenerator
クラスを追加しました。JSON又はmsgpackを同じコードで出力することができます。 msgpack
ライブラリのmsgpack::JsonWriter
, msgpack::MpWriter
クラスをdeprecatedにしました。msgpack::JsonStreamGenerator
を利用してください。 msgpack
ライブラリのmsgpack::JsonReader
, msgpack::MpReader
クラスをdeprecatedにしました。msgpack::JsonStreamParser
を利用してください。 msgpack
ライブラリのMpObject
がmsgpackの2013-08以降の仕様に対応しました。いくつかの関数が追加され、いくつかの関数がdeprecatedになりました。 InputStream::Read(ptr, nbytes)
がある程度大きなサイズのデータを読む場合に正しく読み込みバッファに書き込まないことがある問題を修正しました。 misc
ライブラリにCurlInputStream
クラスを追加しました。libcurl
を利用してダウンロードしたデータをストリームで扱うためのクラスです。 misc
ライブラリにKeyIdxSortN()
, KeyIdxSort()
を追加しました。オブジェクトから取り出した32bitのキーをソートすることでオブジェクトのソートをより高速に行うことができます。 heap
ライブラリにnmalloc_query()
を追加しました。ヒープの各種状態の問い合わせや設定を行うことができます。同時にnmalloc_query()
に代替されるいくつかの関数がdeprecatedになりました。 msgpack
ライブラリにmsgpack::JsonStreamParser
クラスを追加しました。JSON又はmsgpackをプル形式でパースすることができます。 oss
ライブラリに収録されているSQLiteをバージョン3.9.0にアップデートしました。 InputStream
, OutputStream
がクローズされる際にストリームのエラー状態をリセットするように変更しました。 misc
ライブラリにthreading::LockFreeThreadPool
クラスを追加しました。細粒度のタスクに向いたスレッドプールです。 misc
ライブラリにGroupVarInt32
クラスを追加しました。32bit整数の高速なエンコードとデコードを実現します。 misc
ライブラリにnlib_malloc_size()
を追加しました。 nmalloc()
でアロケートされるメモリのアライメントを、std::max_align_t
のアライメントに合わせるように変更しました。 misc
ライブラリにDynamicAlignedStorage
クラスを追加しました。 misc
ライブラリにLockFreeUnitHeap
クラスを追加しました。 misc
ライブラリにLockFreePipe
クラスを追加しました。 misc
ライブラリにLockFreeStack
クラスを追加しました。 misc
ライブラリにLockFreeQueue
クラスを追加しました。 misc
ライブラリにLockFreeInit()
関数を追加しました。 misc
ライブラリにLockFreePriorityQueue
クラスを追加しました。 misc
ライブラリにLockFreeBroadcastQueue
クラスを追加しました。 nmalloc_aligned()
で4096より大きいアライメントを指定できるようになりました。 nmalloc()
, nrealloc()
で大きすぎるサイズを指定した場合にNULL
以外を返すことがある問題を修正しました。 Crc32
クラスの計算速度の改善を行いました。 nlib_mq_open()
, nlib_mq_send()
, nlib_mq_receive()
等の関数が追加されていて、ブロッキングキュー、ノンブロッキングキュー、ロックフリーキューに対応しています。 nlib_condrwlock
型と関数群を追加しました。リードロック、ライトロックのどちらか一方をアンロックして待つことができます。C++用のクラスはnn::nlib::threading::CondVarForSharedCriticalSection
となります。 nlib_atomic_compare_exchange32()
, nlib_atomic_compare_exchange64()
, nlib_atomic_compare_exchangeptr()
等のアトミック操作関数を追加しました。メモリオーダーの指定に対応しています。 nlib_atomic32_xxxxx()
, nlib_atomic64_xxxxx()
等のアトミック操作関数をdeprecatedとしました。 nlib_ns
を名前空間nn::nlib
のエイリアスとして定義しました。 oss
ライブラリに含まれるLZ4をバージョン1.7.0にアップデートしました。 oss
ライブラリにnn::nlib::oss::Lz4InputStream
及びnn::nlib::oss::Lz4OutputStream
を追加しました。 lz4_nlib
を追加しました。 misc
ライブラリにHandleMaker
クラスを追加しました。ハンドル(32bit整数値)と何らかのオブジェクトの関連付けの実装をサポートするためのクラスです。 misc
ライブラリにnlib_spinlock_init()
, nlib_spinlock_lock()
, nlib_spinlock_trylock()
, nlib_spinlock_unlock()
関数を追加しました。 misc
ライブラリにnlib_thread_exit()
, nlib_thread_exit_cpp()
関数を追加しました。 misc
ライブラリにnlib_thread_attr_setstack()
, nlib_thread_attr_getstack()
関数を追加しました。それに伴い、NLIB_THREAD_ATTR_KEY_STACKADDR
マクロは削除されています。 misc
ライブラリにnlib_error_string()
関数を追加しました。 misc
ライブラリのthreading::ThreadSettings
クラスの仕様が変更になり、nlib_thread_attr
をラップするようになりました。ソースコードレベルの互換性が失われるので関連するコードの修正が必要となります。 NLIB_NMALLOC_DISABLE_TLSCACHE
, NLIB_NMALLOC_HEAPSIZE
, NLIB_NMALLOC_MODE
でカスタマイズできるようになりました。 nmalloc_aligned()
が指定されたアライメントのメモリを割り当てないことがある問題を修正しました。 nmalloc_heaphash()
のハッシュの品質を改善しました。 testing
ライブラリのサンプルがXMLをファイルに出力しなくなった問題を修正しました。 nlib_strerror()
がdeprecatedとなりました。 threading::CondVar::Init()
がdeprecatedとなりました。 oss
ライブラリに含まれるLZ4をバージョン1.6.0にアップデートしました。 testing
ライブラリにASSERT_STRCASEEQ()
, ASSERT_STRCASENE()
, EXPECT_STRCASEEQ()
, EXPECT_STRCASENE()
マクロを追加しました。 testing
ライブラリがGoogle Testがサポートしている環境変数のうちのいくつかを読むようになりました。 misc
ライブラリにnlib_disk_freespace()
関数を追加しました。 misc
ライブラリにnlib_fd_readv()
関数及びnlib_fd_writev()
関数を追加しました。 misc
ライブラリにnlib_fd_preadv()
関数及びnlib_fd_pwritev()
関数を追加しました。 misc
ライブラリのOutputStream
クラスにOutputStream::WriteGather()
メンバ関数を追加しました。 misc
ライブラリのNflags
クラスにNflags::GetBoolFromEnv()
, Nflags::GetInt32FromEnv()
, Nflags::GetInt64FromEnv()
, Nflags::GetDoubleFromEnv()
, Nflags::GetStringFromEnv()
メンバ関数を追加しました。 StringInputStream
がdeprecatedとなりました。 oss
ライブラリのライブラリファイルがOSS毎に分割されました。 スタティックライブラリではなく、DLLやシェアードライブラリではリンク時のデッドコードストリップという手段では該当OSSのバイナリを取り除くことができないことが理由となります。 _d
'がつくようになりました。意図しないDLLやシェアードライブラリをダイナミックリンクしてしまう間違いを避けるための措置です。 msvc
というディレクトリに統一されます。 nx_misc-vc120.lib
, nx_misc-vc120_d.lib
のように命名されます。 LD_LIBRARY_PATH
の設定が不要になります。 DateTime
クラスがasctime
形式の読み書きに対応しました。 array
, unordered_map
, tuple
の読み書きに対応しました。 -fvisiblity=hidden
, -fvisibility-inlines-hidden
オプションを追加しました。 これによりライブラリが公開するシンボルの数が減少しています。 oss
ライブラリに高速な圧縮展開ライブラリLZ4(https://github.com/Cyan4973/lz4)を追加しました。多くの場合、圧縮はzlib
の約20倍、展開はzlib
の約5倍程度(CAFEでは約3倍)で動作します。 OutputDebugString()
での出力, syslog(Linux/FreeBSD)又はイベントログ(Windows), ファイル を指定することが可能です。 errno.h
で定義される)がnlibによって独自に定義される場合、その値をboost
ライブラリ(http://www.boost.org/)のcerrno.hpp(http://www.boost.org/doc/libs/1_57_0/boost/cerrno.hpp)で定義される値と同一の値を定義するように変更しました。nlibをboost
ライブラリと共用する場合の動作が改善されます。 heap
ライブラリ(DLL/shared libraryの場合)の終了(アンロード)処理を改善しました。 heap
ライブラリにおいて、特定の状況でメタデータが破壊されることがあるバグを修正しました。 heap
ライブラリの性能を改善しました。 oss
ライブラリに収録されているSQLiteをバージョン3.8.7にアップデートしました。 heap
ライブラリのサンプルにgameheapサンプルを追加しました。 heap
ライブラリのヒープを用いて実装しています。 heap
ライブラリのnmalloc
のスレッドキャッシュの領域がリークすることがあるバグを修正しました。 exi
ライブラリのテキストのXMLパーサー利用時に、テキストノードの文字列がアロケータの削除以前に無効となる動作を修正しました。 exi
ライブラリのXmlStreamEventLogger を削除しました。 nlib_sock
のtypedefをSOCKET型からint型に変更しました。 simd
ライブラリのNEON用コードを実際のARMアーキテクチャ用クロスコンパイラ(gcc 4.9)でビルドできるようにしました。 simd
ライブラリのコードにAArch64向けのコードを追加しました。 nlib
のセットアップについての説明を改善しました。 nn::nlib::unicode
名前空間内のいくつかの関数をdeprecatedにしました。将来のリリースで削除されます。 misc
ライブラリからnn/nlib/threading/SimpleRingBuffer.hを削除しました。 misc
ライブラリからnn/nlib/threading/Interlocked.hを削除しました。今後はnlib_atomic32_increment()等のCリンケージの関数を直接ご利用ください。 misc
ライブラリからnn/nlib/threading/CallOnce.hを削除しました。 SimpleRingBuffer
クラスの定義をライブラリ本体から misc/threading/simpleringbuffer/simpleringbuffer.cpp サンプルへ移動させました。 simd
ライブラリがCAFEのpaired singleに対応しました。単精度浮動小数点数を用いる計算にpaired singleが用いられるようになりました。 simd
ライブラリにクラスと関数が追加されました。 Frustum
クラスの追加。 exi
ライブラリ(Text xml parser)のトークナイザがXML属性用に確保するバッファの初期サイズを調整しました。 simd
ライブラリにクラスと関数が追加されました。いずれもSSE4.1とNEON及び一般的なアーキテクチャに対応しています。 Sphere
, AxisAlignedBox
, OrientedBox
クラスの追加。それぞれ球, AABB, OBBに対応します。 NLIB_ASSUME()
(__assume()
又は__builtin_unreachable()
を利用)を利用したコードの最適化(主にswitch文)を行いました。 simd
ライブラリ内のいくつかの定数がリンクされない不具合の修正。 Vector3::Rotate()
, Vector3::InvRotate()
のバグを修正。 simd
ライブラリに関数が追加されました。いずれもSSE4.1とNEON及び一般的なアーキテクチャに対応しています。
F128::Exp2()
, F128::ExpE()
の追加 F128::SinH()
, F128::CosH()
, F128::TanH()
の追加 F128::Tan()
の追加 F128::Log2()
, F128::LogE()
の追加 nn::nlib::simd::MergeSortUint32A16()
)が追加されました。 std::sort()
の10倍を超える性能(Visual Studio 2013のリリースビルドにおいて32要素のソートでの計測) searchdata.xml
)を含めるようにしました。 clang-format
とclang-check
の利用に対応しました。詳しくは下記を御覧ください。 nlib
のコーディングルールに関する記述をより明確にしました。 nlib
のコーディングスタイルに対応するclang-format
での変換設定が記述された .clang-format
を新たに収録しました。 compile_commands.json
というファイルが作成されるようになります。これを利用してclang-check
を利用することができます(http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html)。 nlib
のAPIをマウスホバーすることにより、APIの簡単な説明を見られるようにしていきます。現時点では以下のAPIで可能です。 simd
ライブラリのAPI simd
ライブラリが追加されました。 nn::nlib::simd
名前空間に実装されています。 /bigobj
オプションが追加されてビルドされるようになりました。
Nflags::GetStringCommaList()
がstrList
にローカルスタックへのポインタを格納するバグを修正しました。 AsciiReader
, AsciiWriter
が削除されました。 NativePathMapper
クラスを追加しました。 nlib_printf()
等がリダイレクト先に出力をしないバグの修正。 testing
ライブラリで出力をリダイレクトした場合に、コントロール文字列が出力される不具合の修正。 testing
ライブラリのサンプルがテスト結果のファイル出力を失敗する不具合の修正。 NativePathMapper
を利用してパス文字列をプラットフォーム毎に適切に設定するように改良。 oss
ライブラリに収録されているSQLite3をバージョン3.8.4.3に更新しました。 stringutils
サンプルコードにおいてヌル文字を末尾に追加していなかったバグの修正。 nlib_utf16cplen_ex()
を追加しました。 nlib_skipws()
を追加しました。 nlib_swapendian_16()
, nlib_swapendian_32()
, nlib_swapendian_64()
を追加しました。 nn::nlib::msgpack::JsonReader
クラスの高速化 nn::nlib::msgpack::MpObject
クラスの処理速度改善を行いました。 BinaryReader
, BinaryWriter
クラスの処理速度改善を行いました。 nn::nlib::msgpack::MpWriter
クラスの処理速度改善を行いました。 TextReader::ReadUntil()
の引数仕様を変更 TextReader
クラスが継承可能になりました。 nn/nlib/utility.h
, nn/nlib/time.h
, nn/nlib/uriparser.h
が削除されました。 AsciiReader
, AsciiWriter
クラスがdeprecatedになりました。次回リリース以降のいつかの時点で削除されます。 TextReader
, TextWriter
クラスの処理速度改善と高機能化により、ASCII文字列専用のクラスが存在する必要がなくなったと判断しました。 1000%
程度、非SIMD版では最大50 - 300%
程度の速度改善を見込むことができます。 nlib_utf16nlen(), nlib_utf16cpy(), nlib_utf16ncpy()
nlib_utf32nlen(), nlib_utf32cpy(), nlib_utf32ncpy()
nlib_memcmp()
nlib_memchr(), nlib_memrchr(), nlib_memchr_not(), nlib_memchr_mb()
nlib_memchr_range_not(), nlib_memchr_lt(), nlib_memchr_gt()
nlib_strchr(), nlib_strrchr(), nlib_strchr_mb()
nlib_strcplen_ex()
nlib_strlen(), nlib_memcmp()
等各種関数をSSE2を用いて高速化 SmartBitmap
をSSE4.2のPOPCNT命令を用いて高速化(実行マシンがSSE4.2をサポートしている場合) Uri
クラスのパース処理及びURI生成処理の速度改善を行いました。 AsciiReader, AsciiWriter
クラスの処理速度改善を行いました。 TextReader, TextWriter
クラスの処理速度改善を行いました。 TextReader
に対するメンバ関数の追加を行いました。 SizedEnum1, SizedEnum2, SizedEnum4
及び、SizedEnum.h
が削除されました。 samples/cmake/
ディレクトリ内のシェルスクリプトから起動できます。 nn::nlib::move_tag()
を与えると、引数オブジェクトがムーブ(オブジェクトのswap
メンバ関数を利用)されるようになります。 Thread
クラスの引数受け渡し方法の改善しました。 nn::nlib::move_tag()
を引数として渡すことで、引数オブジェクトがムーブされるようになります。 Thread::StartRef()
関数が削除されています。 nn::nlib::msgpack::JsonWriter
の速度を改善しました。 nlib_memcpy(), nlib_memmove()
においてSDKが提供する高速版を利用するよう修正しました。 nlib_strlen(), nlib_wcslen()
を追加しました。プラットフォームによっては標準のものより高速になることがあります。 nmalloc
の動作速度がmalloc
に比べて遅い問題の修正 BinaryReader
で浮動小数を読もうとした場合のバグの修正 heap
ライブラリ内のdeprecatedされたクラスやファイルの削除やクラスの整理 HeapBase, FixedMemoryHeap, FixedMemoryHeapSet
が削除されました。 UnitHeap, FrameHeap
はシングルスレッド専用に変更されました。 heap
ライブラリの改良 CentralHeap
でdouble freeの検出を行う仕組みを実装しました。また、メタデータ内のポインタの書き換えや不正書き換えが難しくなるようにしました。 CachedHeap
内にキャッシュされている再割当て用メモリのリストを構成するポインタをマングルしてメモリの意図しない書き換えや不正書き換えが難しくなるようにしました。 nfree()
後のメモリ書き換えによるCentralHeap
内部への影響を軽減する仕組みを実装しました。 NMALLOC_HEAPOPTION_CHECK_1
オプションを利用してCentralHeap/CachedHeap
を立ち上げることによって、アロケートしたメモリに16bitの付加情報を2つ記述することが可能になりました。 heap
ライブラリのobject_tracking
サンプルではメモリリークしたオブジェクトに対し、オブジェクトの型に対応したデストラクタを呼び出しメモリを解放するコードを示しています。 speeddemo
サンプルを追加しました。 nmalloc()
の速度と速度面の理由でカスタムアロケータを利用すべきケースが理解できるようになっています。 HeapBase::HEAPOPTION_ZEROCLEAR
, HeapBase::DUBUGFILL
の機能は、CentralHeap
, CachedHeap
からは削除されています。 nn::nlib::msgpack::JsonReader
の速度を改善しました。 nn::nlib::oss::BsDiffZ()
, nn::nlib::oss::BsPatchZ()
関数を利用した場合のみ、bsdiff
を利用しているという識別子がCAFE/CTRの実行バイナリに含まれるように修正しました。 nlib_debug_backtrace()
, nlib_debug_backtrace_gettext()
関数を追加しました。 nlib_getenv()
関数を追加しました。 nlib_mutex
の実装を改善しました。CRITICAL_SECTION
を利用できる場合には利用するようになります。 nmalloc
のパフォーマンスが(特にシングルスレッド環境において)改善 Platform.h
を参照してください。 SizedEnum1, SizedEnum2, SizedEnum4
がdeprecated指定されました。次回リリース以降のいつかの時点で削除されます。 nn::nlib::heap::FixedMemoryHeapSet
がdeprecated指定されました。次回リリース以降のいつかの時点で削除されます。 HeapBase::AllocV(), HeapBase::FreeV(), HeapBase::HasPtr()
がdeprecated指定されました。次回リリース以降のいつかの時点で削除されます。 heap
ライブラリに定義されているStackHeap, FrameHeap, UnitHeap, CentralHeap
はnn::nlib::heap::HeapBase
クラスやFixedMemoryHeap
クラスを継承しないクラスとなります。 nn::nlib::heap::FixedMemoryHeap
クラスは将来的に削除される予定です。 nn::nlib::heap::UnitHeap
, nn::nlib::heap::FrameHeap
はマルチスレッド対応版が削除され、クラステンプレートでないシングルスレッド専用版が代わりに提供される予定です。スレッドセーフなUnitHeap
, FrameHeap
を利用するより、nmalloc()
やCachedHeap/CentralHeap
を利用した方が汎用的で効率もよいことが多いためです。 nn/nlib/utility.h
, nn/nlib/time.h
, nn/nlib/uriparser.h
がdeprecated設定されました。次回リリース以降のいつかの時点で削除されます。 __builtin_expect
が利用可能なコンパイラにおいてコンパイラの分岐予測に対する最適化を追加しました。 NULL
引数や戻り値の未チェックに対する警告を行うように設定しました。 oss
ライブラリを追加しました。カテゴリIなので利用の際には必要な手続きにご注意ください。 nlib
のI/F上で構築したもの nlib
内部のメモリアロケーションを、nlib_malloc()
, nlib_free()
等の関数経由にして、メモリアロケーションの処理を切り替えることを可能にしました。 heap
ライブラリのreplace_malloc
サンプルを御覧ください。 nlib_malloc()
はmalloc()
、nlib_free()
はfree()
等になります。 UniquePtr
のデリーターオブジェクトがデータメンバを持つことが可能になりました。 ReallocVec
が内部で利用するアロケータ(reallocと同様の関数)を指定できるようになりました。 ReallocOutputStream
が内部で利用するアロケータ(reallocと同様の関数)を指定できるようになりました。 ZlibInputStream
/ZlibOutputStream
が内部で利用するアロケータ(reallocと同様の関数)を指定できるようになりました。 heap
ライブラリにnn::nlib::heap::nmalloc_size()
を実装しました。 nlib_thread_setaffinity()
関数を追加しました。 nlib_thread_setname()
関数を追加しました。 nrealloc()
で、物理ページを割り当てないことがある不具合の修正を行いました。 Platform.h
及びNMalloc.h
がCコンパイラではコンパイルできない不具合の修正を行いました。 testing
ライブラリのコマンドライン引数に、--ntest_prefix
が追加されました。 uri
サンプルにnn::nlib::UriTemplate
クラスを使うサンプルコードが追加されました。UriTemplate
クラスを利用するとURI Template(RFC6570)を利用することができます。 nlib_write_stdout()
, nlib_write_stderr()
が追加されました。 vsnprintf()
をより安全に扱うための関数である、nlib_vsnprintf()
が追加されました。 strcpy_s()
等に相当するnlib_strcpy()
等の関数が追加されました。 nlib_debug_break()
関数が追加されました。 msgpack
ライブラリ内のグローバルのSimpleCriticalSection
のコンストラクタが不正なタイミングで初期化されてしまうかもしれない問題を修正しました。 testing
ライブラリ以外)。 nn::nlib::g_FSClient
が削除されました。ファイルI/Oを初めて利用する際に内部でクライアントが作成されるようになります。 OSMutex
からOSFastMutex
に、条件変数がOSCond
からOSFastCond
に変更されました。 socket
ライブラリが削除されました。socketに関しては、Win32/Linux/Cygwinにおいてwinsock2又はbsd socketをラップしたものがPlatform.h
に定義されます。 NLIB_PRINTF
が内部でUTF-8をSJISに変換してから表示するように変更されました。 datetime
サンプルが追加されました。nn::nlib::DateTime
クラスの豊富な機能が例示されています。 stringutils
サンプルが追加されました。nn::nlib::StringView
やユニコード文字列の正規化機能の利用方法が示されています。 nflags
サンプルが追加されました。nn::nlib::Nflags
を利用することによってコマンドラインツールのオプション文字列の処理を簡単に行うことができます。 socket
ライブラリ以外のライブラリはBoostを利用せずに利用が可能になった。 Platform.h
に定義されている。 nn::nlib::unicode::Utf8ToUtf32()
, nn::nlib::unicode::Utf8ToUtf16()
の動作速度を改善した。 nn::nlib::unicode::Utf16ToUtf8()
, nn::nlib::unicode::Utf32ToUtf8()
の動作速度を改善した。 CRLF
を含むXMLでパースが正常に行われないことがある不具合の修正 ThreadArg1, ThreadArg2, ThreadArg3, ThreadArg4, ThreadArg5
を削除 char
からwchar_t
に戻した。 exi
ライブラリの改良とバグフィックス ExiChar
がchar
型の場合、要素名がアスキー文字のみでない場合にパースが間違って失敗するかもしれないバグの修正 Nlist
のbegin()
とend()
が一致しないことがあるバグの修正 exi
ライブラリの改良 XmlStreamReader
/XmlStreamWriter
の各インスタンス毎にアロケータを設定することが可能になった。 ExiAllocatorEx
オブジェクトを作成し、XmlStreamReader
/XmlStreawmWriter
のCreate()
関数に渡すことでインスタンス専用のアロケータが利用されるようになります。今までのアロケータとの併用も可能です。 heap
ライブラリ(nmalloc, nfree等)の改良
NLIB_USE_NMALLOC_AS_MALLOC
マクロを記述することで、malloc等の実装をnmallocのものに置き換えることが可能(MSVC以外) VirtualAlloc
, mmap
等を用いたメモリ確保を実装。 nn::os::MemoryBlock
が利用されている。 LD_PRELOAD
環境変数を設定して、既存のプログラムのmallocを動的にnmallocの呼び出しに置き換えてnmallocの信頼性と性能に関するテストを行なっている。 heap
ライブラリのnmalloc
/nfree
の改善 nmalloc_init
の呼び出しが不要になった。 nmalloc_finalize
の呼び出しが不要になった。 nmalloc_finalize_tls()
の呼び出しが、win32, linux, CAFE(PPC)においては不要になった(呼び出しても問題ない)。 nn::nlib::threading::ThreadPool
Future
を利用して取得することができる。 nn::nlib::threading::AsyncFileIo
. 内部実装で非同期I/Oを利用しているかしていないかに関わらず同じAPIを提供している。 socket
ライブラリ以外はboostがなくても動作するようになった。 succinct
ライブラリからstd::vector
, std::string
の使用を取り除いた。 StringView
の実装。 std::string
の一部メンバ関数をコピーや動的なメモリ確保を行わない形で実装している。 ReallocVec
, ReallocQueue
, ReallocCstringVec
を実装 Nqueue
を実装。内部でNlist
を利用している。 ScopedPtr
, ScopedArray
を削除した。 socket
ライブラリを削除した。 __STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS, __STDC_FORMAT_MACROS
が定義されていない場合、Config.h
で定義されるようになった。 INT32_MAX, PRIu64
等の定義を標準ヘッダstdint.h
内の定義を使うようになった。 nn::nlib::threading::SharedMutex
std::shared_mutex
と同じ名前のメンバ関数を持つ(http://isocpp.org/files/papers/N3659.html)。 nn::nlib::threading::CondVarFallback
クラス Semaphore
を2つとSimpleCriticalSection
を1つ使う。 nn::nlib::threading::CondVar
の実装として使われる。 nn::nlib::threading::CriticalSectionFallback
nn::nlib::threading::CriticalSection
の実装として使われる。 nn::nlib::threading::TimedCriticalSection
を実装し、nn::nlib::threading::Mutex
を削除した。 nn::nlib::threading::TimedCriticalSectionFallback
が利用される。 nn::nlib::threading::Future
に対する機能強化。詳しくは、http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3558.pdf を参照のこと。 Then()
メンバ関数を追加した。これは複数の非同期実行を順番に連結していく仕組みで、別スレッドでの実行から複数の戻り値を取り出すのに使うことができる。 WhenFutureComplete
クラスを追加した。これは複数のFuture
の全て又は一部に値が設定された場合に設定されるFuture
を作成するためのクラスで、複数の非同期処理を束ねる用途に使うことができる。 GetError()
関数でエラー状態を取得できるようになり、非同期処理が明示的にエラー状態を返すことができるようになった。 MakeReadyFuture()
関数を追加した。 nn::nlib::threading::Thread
から関数オブジェクトやラムダなどの関数ポインタ以外でスレッドを起動できるように変更した。 nn::nlib::threading::ThreadArg<T1...>
を新設して、ThreadArg1, ThreadArg2, ThreadArg3, ThreadArg4, ThreadArg5
をdeprecatedにした。近い将来のリリースで削除される予定。 boost
ライブラリ認識に対応するためのcmakeスクリプトの修正 msgpack
ライブラリにJSON-RPC 2.0のサポート(client/server)を追加 nn::nlib::msgpack::jsonrpc
名前空間に定義される。 AsciiReader
, AsciiWriter
を実装。ASCIIテキストの場合は、TextReader
, TextWriter
を利用するよりも効率よく動作させることができる。 ThreadSettings
にdetached
フィールドを追加した。true
の場合、スレッドの開始時にデタッチされた状態になる。 nn::nlib::threading::Async
の動作を改善。 testing
ライブラリの改善 --gtest_repeat
コマンドラインオプションの追加 --gtest_break_on_failure
の動作タイミングの改善 ThreadSettings
を設定した場合の誤動作の修正。 StringOutputStream
, VectorOutputStream
が削除された。 ScopedPtr
, ScopedArray
をdeprecatedにした。近い将来のリリースで削除される予定。 sysPrintf
をsysPrintfNoTimeStamp
に変更 nn::nlib::CodePointCount()
関数の追加 nullptr
の衝突問題への対処。nullptr
の定義をnn::nlib
名前空間に移し、nullptr
がマクロ定義されている場合はマクロ定義を利用するようにする。 MpObject
の利用時に14バイト以下のバイト列(文字列)はオブジェクト内のフィールドに畳み込まれるように変更(以前は8バイト以下) StrTo()
関数のフォールバック実装である StrToFallback()
を追加した。 strtol
等を利用しない実装 SnPrintf()
関数のフォールバック実装である SnPrintfFallback()
を追加した。 vsnprintf
, vsnwprintf
等を利用しない実装 nn::nlib::threading::this_thread::Sleep()
が動作するようにした。 nn::nlib::threading::Semaphore
の定義をIOPのシステムソフトウェアに合わせてアップデートした。 Barrier
が動作するように変更。 StrTo()
関数の動作を改善。浮動小数点型も含め利用可能になった。 SnPrintf()
関数の動作を改善 SnPrintf()
関数が利用できるように変更
nn::nlib::DateTime::GetNow()
の実装を行った。 new T[0]
が必ず失敗することに起因する不具合の修正。succinct
ライブラリに影響。 NLIB_HAS_SSCANF
, NLIB_SSCANF
を削除 NLIB_HAS_VSNWPRINTF
を削除 nn::nlib::threading::Future
, nn::nlib::threading::Promise
, nn::nlib::threading::PackagedTask
, nn::nlib::threading::Async
が追加された。それぞれ、C++11標準ライブラリの、future, promise, packaged_task, async
に類似した機能を持っていて、スレッドの実行結果を安全に出力及び取得できるようにしている。 nn::nlib::threading::Thread::Start()
関数のオーバーロードを追加した。 MpObject
に格納しておくように変更。 MpObject
に格納しておくように変更。 nn::nlib::DateTime::ToRfc2822()
で2000年1月1日以前の曜日を正しく出力できないバグの修正 nn::nlib::DateTime::ToW3cDtf()
の文字列変換のバグを修正 nn::nlib::Nlist
のiterator, const_iterator
の実装の改善 nn::nlib::DateTime::GetNow()
が正しく動作しないバグの修正。 nn::nlib::threading::Thread
において、デタッチ後かつスレッド終了前にデストラクタが呼ばれた場合、不正に(早期に)メモリがシステムに返却されていたバグを修正。 MpObject
に8バイト以内の小さなバイトデータ(文字列等)を代入する場合に、MpObject
に既にデータが入っているケースにおいてメモリリークの恐れがあるバグの修正。 ReallocOutputStream
が実装された。 VectorOutputStream, StringOutputStream
をdeprecatedにした。利用した場合は警告が発生する。 nn::nlib::threading::UniqueLock
が新たに実装され、nn::nlib::threading::ScopedLock
はごく単純な実装に変更された。 UniquePtr
が配列データ(new[]
で作成されたオブジェクト)に対応した。例えば、UniquePtr<char[]> ptr(new char[1024])
のようにして利用することができる。 UniquePtr
はScopedPtr
の機能を全て含むので、ScopedPtr
は将来においてdeprecatedになるかもしれない。 XmlStreamWriter
のクローズの際にベースストリームを一緒に閉じてしまう動作の修正(nn::nlib::exi::XmlStreamWriter
はベースストリームを所有していないので、ベースストリームはXmlStreamWriter
から切り離されるだけである必要がある) nn::nlib::msgpack::MpWriter
のクローズの際にベースストリームを一緒に閉じてしまう動作の修正 Pos()
を実行すると0が戻るように変更された。 ScopedLock
, SimpleCriticalSection
, CriticalSection
のメンバ関数名等が一部変更された。 nn::nlib::UniquePtr
はstd::unique_ptr
(template alias) nn::nlib::threading::ScopedLock
はstd::lock_guard
(template alias) nn::nlib::threading::UniqueLock
はstd::unique_lock
(template alias) nn::nlib::threading::SimpleCriticalSection
はstd::mutex
(typedef) nn::nlib::threading::CriticalSection
はstd::recursive_mutex
(typedef) nn::nlib::threading::Mutex
はstd::recursive_timed_mutex
Nlist
の例外安全性の改善 nn::nlib::msgpack::MpWalker
クラスを実装した。 nn::nlib::msgpack::JsonReader
/ nn::nlib::msgpack::JsonWriter
に読み書きオプションを追加 nn::nlib::msgpack::MpObject
, nn::nlib::msgpack::MpReader
, nn::nlib::msgpack::MpWriter
がnn::nlib::Nlist
コンテナとしてサポート documents-ja/API/
に変更 char16_t
, char32_t
) strcpy(), memcpy(), strcat(), isdigit()
等の標準関数をより安全に使うためのラッパー関数をCstring.h
に定義 std::vector<T>
に似たコンテナクラス(nn::nlib::Nlist<T>
)を実装した。 push_back()
操作に関してはstd::vector
並かそれ以上(インプレイスでの初期化が可能なため)の速度 iterator
を利用する場合はstd::vector
並のアクセス速度 operator[](size_t idx)
は、 \(O(\log idx)\)時間で動作 wchar_t
(UTF-16/UTF-32)又はchar(UTF-8)で選択可能にした。 wchar_t
のみだった。 ExiChar
という型にtypedefされている。 nlib
のビルド時に選択可能 msgpack::JsonReader
の改善 double
型のオーバーフローとアンダーフローがエラーになるように変更 msgpack::CsvReader
の改善 double
型のオーバーフローとアンダーフローがエラーになるように変更 Tokenizer
UriTemplate
DateTime
StrTo
nn::nlib::Nflags
を実装した。 ac
, nexiconv
のコマンドラインオプションの仕様を変更。 wf
を追加。検出語と検出除外語のリストからnn::nlib::succinct::WordFilter
オブジェクトのバイナリを作成。 acmatch
を削除。 UriTemplate
の実装。RFC6570(https://tools.ietf.org/html/rfc6570)のLevel3をサポート。 InputConverterStream
, OutputConverterStream
の実装 Utf32InputStream
, Utf16InputStream
, WcharInputStream
の実装 InputStream
, OutputStream
の内部を最適化等 InputStream::Read(ptr, n)
を実行した後に、InputStream::Pos()
が不正になることがあるバグの修正。 InputStream
にInputStream::Skip()
関数を追加 TextReader
から現在読み込んでいる行と桁を取得できるように変更。 strtol(), strtoul(), strtoll(), strtoull(), strtod()
を統一的なコードで安全に利用するためのラッパである、 StrTo()
関数の実装 DateTime
, TimeSpan
を再実装して置き換えた。 DateTime
を設定できるようになった。 StringInputStream
の実装。std::string
に出力するストリームクラス。 unicode
名前空間を新たに作成し、ユニコード関連の機能を追加した。 unicode::WideToUtf8
, unicode::Utf8ToWide
といった変換関数はnn::nlib
名前空間からnn::nlib::unicode
名前空間へ移動 msgpack::CsvReader
の実装。RFC4180(https://www.ietf.org/rfc/rfc4180.txt)に準拠 StringOutputStream
の実装。std::string
に出力するストリームクラス。 TextWriter
の仕様変更 CRLF
からLF
に 変更した。CR, CRLF
はLF
に変換されて出力される。 utf16_t
), UTF-32の文字(utf32_t
) のtypedef
を追加 uint16_t, uint32_t
にtypedef
されている。C++11ではchar16_t, char32_t
にtypedef
される予定 TextWriter
の機能追加 Write
メンバ関数の引数型にutf16_t
, utf32_t
型のオーバーロードを追加。UTF-16とUTF-32のキャラクタを渡すことができる。 SmartBitmap
クラスをnn::nlib
名前空間へ移動, succinct
ライブラリからmisc
ライブラリに移動した。 exi
ライブラリのバグフィックス CR
が含まれる場合、読み込み時に失敗する問題の修正 LF
に変換されるよう修正 testing
ライブラリを追加 ASSERT_EQ
等)の多くが同じように動作 std::ostream
が利用できない環境でも利用可能 succinct
ライブラリの機能追加及び修正 nn::nlib::succinct::WordFilter
/ nn::nlib::succinct::WordFilterBuilder
クラスの追加。検出したい語と例外語を列挙することで大規模なフィルタリングが効率的に実行可能。 nn::nlib::succinct::Sbv
クラスのメモリリークの修正 misc
ライブラリへのクラスの追加 ScopedArray
クラスの追加。ScopedPtr
の配列対応版。 UniquePtr
クラスの追加。release()のついたScopedPtr
。 std::auto_ptr
を利用しないように変更(for C++11) misc
ライブラリからAlarm
クラス、及びmisc/alarmサンプルの削除 TextReader
, TextWriter
のエラー値をerrno_t
型に変更 BinaryReader
, BinaryWriter
のエラー値をerrno_t型に変更 nn::nlib::Utf8ToUtf32
, nn::nlib::Utf8ToUtf16
, nn::nlib::Utf32ToUtf8
, nn::nlib::Utf16ToUtf8
を追加 TextWriter
でマルチバイト文字列を書けるように変更 TaggedTextParser
クラス(XML風タグ付きテキスト用パーサー)の実装 ZlibInputStream
, ZlibOutputStream
の実装によるzlibのサポート nmalloc
でThreadLocalDataを利用するように変更 NullInputStream
, NullOutputStream
の追加 nn::nlib::Crc32
クラスの追加。 FileOutputStream
に追記モードを追加。エラーの戻り値のリファイン。 TextWriter
クラスに書式付き出力メンバ関数(WriteFormat)を追加。 heap
ライブラリのnmalloc_reallocサンプルのため。 TextWriter
が改行でベースストリームをFlushするように修正 ConsoleOutputStream
でClose時にFlushされない不具合の修正 FileInputStream, FileOutputStream
が動作するようになった。 FileOutputStream
の実装とPcFileOutputStream
の廃止(IOPではまだ動作しません) FileInputStream
を実装とPcFileInputStream
の廃止(IOPではまだ動作しません) OutputStream
のエラー値の型をerrno_t
に変更 InputStream
のエラー値の型をerrno_t
型に変更 InputStream
/ OutputStream
で配列データを読み書きする際のエンディアン対応バグの修正 ScopedPtr
が不完全な型に対してエラーになるように修正 © 2012-2017 Nintendo Co., Ltd. All rights reserved.