c mt199377是什么鬼

Keyboard Shortcuts?
Next menu item
Previous menu item
Previous man page
Next man page
Scroll to bottom
Scroll to top
Goto homepage
Goto search(current page)
Focus search box
Change language:
Brazilian Portuguese
Chinese (Simplified)
mt_srand & Seeds the Mersenne Twister Random Number Generator
Description
void mt_srand
([ int $seed
[, int $mode = MT_RAND_MT19937
Note: There is no need
to seed the random number generator with
mt_srand() as this is done automatically.
Parameters
An arbitrary
seed value.
Use one of the following constants to specify the implementation of the algorithm to use.
Return Values
No value is returned.
Example #1 mt_srand() example
&?php//&seed&with&microsecondsfunction&make_seed(){&&list($usec,&$sec)&=&explode('&',&microtime());&&return&$sec&+&$usec&*&1000000;}mt_srand(make_seed());$randval&=&mt_rand();?&
- Generate a random value via the Mersenne Twister Random Number Generator
- Show largest possible random value
- Seed the random number generator
Looks like mt_rand() gives same result for different seeds when the lowest bits are different only. Try this:#!/usr/bin/php -q&?php$min = -17;$max = $min + 48; for ($testseed=$min; $testseed&$max; $testseed++){& & mt_srand( $testseed );& & $r = mt_rand();& & printf("mt_srand( 0x%08x ): mt_rand() == 0x%08x == %d\n", $testseed, $r, $r);}?&This is a snapshop of the results:...mt_srand( 0xfffffffc ): mt_rand() == 0x0a223d97 == mt_srand( 0xfffffffd ): mt_rand() == 0x0a223d97 == mt_srand( 0xfffffffe ): mt_rand() == 0x350a9509 == mt_srand( 0xffffffff ): mt_rand() == 0x350a9509 == mt_srand( 0x ): mt_rand() == 0x == mt_srand( 0x ): mt_rand() == 0x == mt_srand( 0x ): mt_rand() == 0x4e0a2cdd == mt_srand( 0x ): mt_rand() == 0x4e0a2cdd == ...I found this occationally. I have no idea if it is a bug or not. In my real life I do not intend to use sequentional seeds. However, probably this may be important for somebody.
@& fasaxc at yahoo dot com:If you want truly random numbers, use a truly random source. Your system is rather unwieldy when you can simply call openssl_random_pseudo_bytes() for good randomness. Don't use microtime as a source of randomness.
"Better still: Use a 31-bit hash of microtime() as the seed. "Correct me if i am wrong, but woudlnt using microtime() still limit the total seeds to 1,000,000 again? Since the 31-bit hash will always give the same hash for the same number, and in the microtime() function you could have 1,000,000 or less numbers. So in effect your still no better off at all :-pBest regards,scottPS: I actually agree that PHP has pretty much resolved the issue and got as close as anyones going to get to solving the seeding issue by introducing the "Mersenne Twister" algorithm which creates a much larger pool than 1,000,000 numbers. Just because the mt_srand() function exists doesnt mean you HAVE-) use it if you NEED a specific list of the same numbers (comes in handy for encrypt-)
If you are new with seeding read my note.I now understood seeding as a start-state of an algorithm. This algorithm generates a series of -following- pseudorandom numbers.If you start generating from the same startvalue twice, you get the same series of random numbers twice in a row.mt_srand(10); //start of your algorithm equals seeding set to 10for($i=0;$i&10;$i++){& & echo mt_rand();}echo "&BR&";mt_srand(10); //start of your algorithm equals seeding set back to 10for($i=0;$i&10;$i++){& & echo mt_rand();}Output is like:&BR&My conclusion: Don't preset your seed to the same number all the time if you want "alternating random numbers"Greetings
used the little script from mrcheezy at hotmail dot com and got much better results usingmt_srand(crc32(microtime()));
I think Joe was a little confused by the wording.& The note meant that implementations of mt_rand() before the change would generate a different set of pseudorandom numbers than would implementations of mt_rand() after the change for the same seed.That's how it reads for me, anyway.
to : l_rossato@libero.itdoing ...list($usec,$sec)=explode(" ",microtime());$unique = mt_srand($sec * $usec);theoretiaclly, makes just as much sense as list($usec,$sec)=explode(" ",microtime());$unique = $usec + 0;Once every while, depending on the microsecond resolution of your computer, the millisecond value will be a zero (0), and as I hope you know, in mathematics, any number multiplied by a zero becomes a zero itself.(x * 0 = 0)In real life, on a good machine, with a resolution to 1 million miliseconds per each second (i.e: Win2k server), you will be reduplicating your unique ID each million's ID issued. This means if you use it as your cookie encryption algorithm or a visitor ID, you will not exceed some million instances.Futhermore, if that would be for a software development that you re-distribuite, installed on some weird old PC, where resolution can be as small as 100 milliseconds per second - a code with this uniqueness algorithm just wouldn't last any long.Good Luck,Maxim Maletsky
mt_srand effectively performs a modulo %
on positive integers over 32 bits, but with negative integers it instead adds
to the value it gets.Seeds with equal results: == 1 == 0 == -1 - == 2- == 1- == 0Importantly though, seeding with anything less than - will always yield the same result as seeding with zero.
What about this for an example... (sorry for the funky line breaks but I have oncemore reported the bug on this issue of word wrapping to no avail)Intending to use it in passing a "semi-guaranteed"properly seeded random number to a client, then to capture input from the user which must be encrypted client side before being sent to the server again & a) during the same session and, & b) within a set time limit.for more reading also see:& AES Rijndael enc/dec routines for javaScript& developed and tested by Herbert Hanewinkel, & &?phpfunction SHA256($str, $keyval=""){& & if ($keyval!==""){$sHash = mhash(Constant('MHASH_SHA256'),$str, $keyval);& & }else{& & & & $sHash = mhash(Constant('MHASH_SHA256'),$str);& & }& & return implode(unpack('H*',$sHash),'');}function local_prgn($retMin = 0, $retMax = 0){$sSrv = session_id(); $sSrv = implode(unpack($_SERVER['SERVER_NAME'].& & & & & && $_SERVER['SERVER_ADDR'].$sSrv),'');$sReq = implode(unpack($_SERVER['REMOTE_ADDR'].& & & & & && $_SERVER['REQUEST_TIME']),'');$sSeed = SHA256($sSrv,$sReq); mt_srand($sSeed); if ($retMin & $retMax){ & & $rx = $retMax; $retMax = $retMin; $retMin = $rx; & & } else if ($retMin == $retMax){& & $retMin = 0; $retMax = 0;& & }if ((($retMax == 0)&&($retMax = mt_getrandmax))||($retMin==$retMax)){& & & & return mt_getrandmax();& & }else{& & & & return mt_getrandmax($retMin,$retMax);& & }}?&
To slonmron:Seed for random numbers generator should be initialized only once, before calling proper rand function. After that you give pseudorandom sequence by multiple calling rand. Initialization of random seed is used if 1) You have better source of random seed than implemented algorithm or 2) if You need always the same sequence of pseudorandom numbers. Example given by You shows only that first rand result strongly depends on seed, what is by definition. It is not a bug.
Very good points above on seeds, thank you. If you would like to test a seed try using the code below. It will take between 5 and 20 seconds depending on your system and then will spit out the number of reused keys out of 100,000 attempts.;& for ($i=0; $i&100000; $i++) {;& & mt_srand(hexdec(substr(md5(microtime()), -8)) & 0x7fffffff);;& & $rand = mt_rand();;;& & ($arr[$rand] == '1') ? $k++ : $arr[$rand] = '1';;& }
Sorry for the error in the previous...Due to the glitch with the wordwrap I got annoyed and lost focus on the copy and paste move.The last part of the actual function should read.&?phpif ((($retMax == 0)&&($retMax = mt_getrandmax))||($retMin==$retMax)){& & & & return mt_rand();& & }else{& & & & return mt_rand($retMin,$retMax);& & }?&And Nothing else of course...
try this instead(!):&?phpfunction randomizeProcessSeed(){& & static $thisProcessHasBeenInitialized;& & if( $thisProcessHasBeenInitialized )& & list($usec, $sec) = explode(' ', microtime());& & mt_srand( ( * (float)$usec) ^ (float)$sec );& & & & $thisProcessHasBeenInitialized = true;} randomizeProcessSeed();?&
In fact, here's an even better function than the one below assuming your install provides a random entropy daemon and you're running *nix (to check for the former type "head -c 6 /dev/urandom" on the command line if available - if you get 6 random characters you're set). N.B. php must be able to find the head program so it must be in your path and allowed if you're running safe mode.The functions db_set_global() and db_get_global() I use to set/get a variable from a central database but you could save/restore the variable from a file instead or just use the function get_random_word().&?###################################### returns a random 32bit integer.## Passing a parameter of True gives a better random## number but relies on the /dev/random device## which can block for a long time while it gathers## enough random data ie. DONT USE IT unless##&& a) You have an entropy generator attatched to## your computer set to /dev/random -OR-##&& b) Your script is running locally and generating## a good random number is very important####################################function get_random_word($force_random=False) {& & if ($force_random) {& & & & $u='';& & } else {& & & & $u='u';& & }& & $ran_string=shell_exec("head -c 4 /dev/{$u}random");& & $random=ord(substr($ran_string,0,1))&&24 |& & & & & & ord(substr($ran_string,1,1))&&16 |& & & & & & ord(substr($ran_string,2,1))&&8 |& & & & & & ord(substr($ran_string,3,1));& & return $}--EITHER - IF YOU'VE SET UP A DATABASE OF GLOBAL VARIABLES--## If the seed is found in the databaseif ($seed=db_get_global('seed')) {& & # use mt_rand() to get the next seed& & mt_srand($seed);& & # then XOR that with a random word& & $seed=(mt_rand() ^ get_random_word());} else {## Make a completely new seed (First Run)& & # Generate the seed as a proper random no using /dev/random& & $seed=get_random_word(True);& & mt_srand($seed);}db_set_global('seed',$seed);--OR JUST--mt_srand(get_random_word());?&
The best way to ensure a random seed is to do the following:To start:&& 1) get your initial seed with mt_srand(microtime() * 1000000)&& 2) generate a random no. $random=mt_rand()&& 3) save this number in a file (or database or whatever so that it is available next time the page is loaded) Now, for each time your script is loaded :&& 1) load the value you saved above and do $new_seed=($random+(microtime() * 1000000))%pow(2,32)&& 2) mt_srand($new_seed);&& 3) generate a new random no. $random=mt_rand()&& 4) save that number back in the file/databaseThis procedure takes advantage not only of the randomness of microtime() but of all the previous calls to microtime() so your seed becomes better and better with time. It also generates good seeds even on platforms where microtime() doesn't take all the values it can.Just using microtime() * 1000000 only results in 1000000 possible seeds (and less on some platforms as noted) - the function above gives 2^32 seeds with an avelanche effect accross multiple executions.
I have spent the last couple of hours trying to track down a bug which affects mt_rand/rand and mt_srand/mt_rand.OS is Debian 5.0.4 "Lenny".PHP version is 5.3.2-0.dotdeb.1 with Suhosin-Patch (cli) (built: Mar& 9 :01).I have tried to fix the issue by appending the following lines into the .htaccess / apache2 main config file:& & & & php_value suhosin.mt_srand.ignore Off& & & & php_value suhosin.srand.ignore OffThis has helped a bit, stabilizing the beggining of the pseudo random number sequence, but the generator still fails after a fair number of iterations (roughly around 1K~3K.*** Removing the Suhosin extension has resolved this issue, I am waiting for an official extension build that will work with 5.3.x so that I can reattach it into the php configuration. ***Here is the code which ought to replicate the problem:& & $len = 100000;& & $min = 0;& & $max = 99;& & $t = (int)(microtime(true)*0xFFFF);& & $a = array();& & srand( $t );& & for ( $i = 0; $i & $ $i ++ )& & & & $a[$i] = rand( $min, $max );& & $b = array();& & srand( $t );& & for ( $i = 0; $i & $ $i ++ )& & & & $b[$i] = rand( $min, $max );& & for ( $i = 0; $i & $ $i ++ )& & & & if ( $a[$i] !== $b[$i] )& & & & & & die( 'Pseudo-random sequence borked at #'.$i.'th iteration!');& & echo 'Your pseudo-random sequencer is working correctly.';& & exit( 0 );
It's better to use the following method instead of the one in the documentation metioned:&?phpmt_srand((double)(microtime() ^ posix_getpid()));?&Otherwise people requesting the script at the same time could get the same generated number.
list($usec,$sec) = explode(" ",microtime());/* Test: Each get rand sequence are 10time. *//* ex) 5.3point meaning 5point integer + 3point decimal */// case A:// 5.0point - 1time// 6.0point - 9time$rand = (double)microtime()*1000000;// case B:// 8.6point - 1time// 9.4point - 1time// 9.5point - 7time// 10.3point - 1time$rand = (double)$sec * $// My case A:// 8.0point - 10time$rand = explode(".",$usec * $sec);$rand = (double)substr($rand[0]*$rand[1],0,8);// My case B:// 9.0point - 9time// 10.0point - 1time$rand = explode(".",$usec * $sec);$rand = $rand[0] + $rand[1];mt_srand($rand);srand($rand);// P.S& My previous note is has wrong lines, sorry about it.& This is right.
The range of unique seeds using this method is a bit over 2 billion.& This approach also prevents re-seeding.function seed_mt_rand() {牋static $牋if (!$done) {牋牋$hash = md5(microtime());牋牋$length = ((substr($hash,0,1) & '8') ? 8 : 7 );牋牋mt_srand((int)base_convert(substr($hash,0,$length),16,10));牋牋$done = TRUE;牋}}
Something we discovered in Sydney running BBS Systems before the net advent was here, if we didn't seed of another BBS we would going in circles in our System Physicality Abstraction Layers.. The important thing is to seed from a remote system and easy way at the Centroidal Plexus of the web (Chronolabs Cooperative) we offer a seed feed and the following code will randomise you out of the number cycle:See in PHP both the letters and numbers are seedable as letters are treated as numbers as well. You can always use individual tokens by extracting the Element with DOM.. But below is equally effective!&?phpmt_srand(file_get_contents('')); ?&
I can鈥檛 stress how important it is to seed your randomisation process in code! better still something we found in the BBS Days was if we didn鈥檛 seed from a token from outside our systems abstraction layer we would go in circles and so would our users. Here at chronolabs we offer a feed of randomly changing token on each impression, it also randomly displays a different number of them this is from
in the example below I use DOM to load the XML, Extract the randomisation tokens and then with mt_srand and srand seed the random selecting processes! The following function when you call it will seed your random selection process in both the old and new random selection routines all you need to do is call the function! This will work with any version of PHP 5 and any earlier with DOM Objectivity.function makeRandomSeeded() {& & $file = '';& & $doc = new DOMDocument();& & $doc-&loadHTMLFile($file);& & $skip = array('This feed can', 'Current mode is');& & $elements = $doc-&getElementsByTagName('description');& & foreach($elements as $element) {& & & & $seed = $element-&nodeV& & & & $found =& & & & foreach($skip as $find) {& & & & & & if (substr($seed, 0, strlen($find))==$find) {& & & & & & & & $found =& & & & & & }& & & & }& & & & if ($found==false)& & & & & & $seeds[] = $& & }& & shuffle($seeds);& & mt_srand($seeds[mt_rand(0, count($seeds)-1)]);& & srand($seeds[mt_rand(0, count($seeds)-1)]);}Remember when PHP says an integer this also include any character of the Ascii chart if you would like to see an example of this do the following:&?php&& $a = "000A";&& while($a!="001B") {& & & echo $a;& & & $a++;&& }?&FluffOS 中文站
FluffOS-3更新日志(使用google进行翻译)
最新版本3.0-alpha7.4
Yucong Sun ()
请提交问题/fluffos/fluffos.
与2.x版本的对比.
FluffOS已使用C++语言,C++11 (G++ 4.6+, CLANG 2.9+).
FluffOS现在使用C++的try/catch 替换了setjmp/longjmp 修复LPC的错误(wodan)
FluffOS现在使用自动配置(autoconf)来初始化编译.
使用Libevent2.0+的epoll()来替换老的select()(alpha6).
所有的.c文件被重命名为.cc,_spec.c被重命名为.spec(alpha6)
函数和扩展的变化
外部函数上限限制到65535个(alpha2)
unique_mapping() 不会在出现内存泄漏问题.
使用 c++11 mt19937_64 来作为随机数生成的引擎.
PACKAGE_CONTRIB:store_variable | fetch_variable accept an object as 3rd last argument. (Lonely@NT)
PACKAGE_CRYPTO: build fixes and enhancements. ()
PACKAGE_SHA1: Fix incorrect sha1() hash generation, verified with tests. ()
* enable_commands() now accept a int argument, which default to 0, same as old behavior.
When passing 1, driver will setup actions by calling init on its environment, sibling, inventory objects. (in that order).
新的编译选项和扩展
PACKAGE_TRIM: (zoilder), rtrim, ltrim, trim函数增加,用来去掉字符串两侧多余的空格.
POSIX_TIMERS:better time preceision tracking for eval cost. ()
CALLOUT_LOOP_PROTECTION: protect call_out(0) loops. ()
SANE_SORTING:使用速度更快的 sort_array() 来实现排序.
REVERSE_DEFER: fifo execution order for defer() efun (default to lifo)
FluffOS现在支持64位LPC运行,包括32位系统(Linux,cygwin)
addr_server现在已经过时和删除(alpha6).
DEBUG_MACRO现在总是返回true.
一些bug修复.
LPC新的预定义 __ CXXFLAGS__
文档内容更新(详见doc目录)
独立LPC运行库
Mulit-threading支持.
不在支持SQLITE2.(支持SQLITE3)
bundle with google-glog library.
LPC JIT compiler (bundle with LLVM).
使用automake
"-MAX_INT" is not parsed correctly in LPC(pre-existing bug), see
src/testsuite/single/tests/64bit.c for details.
更新日志详情
FluffOS 3.0 alpha7.4
* PACKAGE_DB :PACKAGE_DB: MYSQL NewDecimal Type This is needed in my system for read
a column SUM(xxx) in a SELECT. (Zoilder)
*Various time tracking efun uses real world time as it should be.
*驱动程序现会自动调用reclaim_objects()
*默认堆栈已经提高到6000
*现在发送字符串通过UDP端口不包含结尾的\0
*Moved many internal options to options_internal.
*查找缓存优化,增加了默认缓存大小.(CPU saver!)
*新tick_event()循环和回调.
*调整 backend() 循环.
*增加32位编译模式下的测试。
*various compile fixing, althrough not complete, but should be compileable under
CYGWIN64 and freebsd using gcc 4.8.
FluffOS 3.0 alpha7.3
*用户命令执行现在已集成到事件循环。
(至少节省10%的CPU时间和用户反馈的平衡) 。
*修正unique_mapping()崩溃时,回调函数返回的新objects/array等。
*修正了内存损坏问题,不支持Telnet环境negoation 。
*阅读0长度的文件时,固定内存损坏。
*在自动测试恢复USE_ICONV 。
*移动多个选项放入options_internal.h ,所有的local_options覆盖仍然有效。
edit_source会打印出“额外”的定义local_options包含。
这样铺路用于减少在未来options.h的复杂性。
* ALLOW_INHERIT_AFTER_FUNCTION现在是默认的,没有死机了。
*以前,如果一个用户对象被破坏,将失去在缓冲区中的消息。
现在,驱动程序会正确地发送出来终止连接前。
FluffOS 3.0 alpha7.2
*当回调函数返回一个非共享字符串unique_mapping ( )崩溃。
*将一些过时的文档到/ DOC /归档。
*一些格式变化EFUN /应用文档。
FluffOS 3.0 alpha7.1
* disable_commands ( )变化是回归了,没有想到过。
* enable_commands ( )现在接受一个int,而不是(见3.0对2.0 )
FluffOS 3.0的alpha7
*在配置过程中检查的C + +11的能力。
*新的LPC预定义__ CXXFLAGS__ 。
*修正CMUD / zmud问题TCP_NODELAY与MCCP 。
*新的调试宏“ - dadd_action ”,以示add_action相关的日志。
* disable_commands ()现在接受一个int参数。 (见上文) 。
FluffOS 3.0 alpha6.4
*修正外部函数存在( )问题与结尾的数字对象标识,补充测试。
FluffOS 3.0 alpha6.3
*修正了内存损坏问题PACKAGE_CRYPTO ,增加了测试。
FluffOS 3.0 alpha6.2
*修正了内存损坏问题store_variable ( ) ,加入测试。
*启用TCP_NODELAY用户接口和LPC接口的默认。
FluffOS 3.0 alpha6.1
主要材料:
* libevent的2.0集成: epoll()的用户和LPC插座!
*异步DNS :驱动器将直接做异步的dns , addr_server支持,现在已经过时并被删除。
*所有* 。 c文件已被更改为* 。毫升。所有的* _spec.c文件已更改为
*规格。 (如果您维护了树的补丁,请注意! )
* DEBUG_MACRO现在总是真, functionaltiy被规范化为内置
行为。你可以运行“ 。 /驱动器-D的 ”,以示在驱动程序vairous调试消息。 (或调用
EFUN在debug.c ,控制台支持迟些时候) 。
的电流选择,包括:
* “ - dconnections ” ,显示所有的播放器连接相关的事件。
* “ - devent ” ,显示内部事件循环的消息。
* “ - DDNS ” ,显示了异步DNS解析的消息。
* “ - dsockets ” ,显示所有的LPC接口相关的消息。
* “ - DLPC ” ,显示当前LPC的执行信息。
* “ - dLPC_line ” ,显示正在执行目前的LPC线。
* “ - DFILE ” ,显示了一些文件相关的消息。
*空(亦称“-D” ) ,这个目前显示连接+ DNS +插座的消息,将在以后更改。
*其他调试消息尚未完全分类,如“ - DFLAG ” 。
*使用c + +11 mt19937_64作为随机数生成器引擎。
* PACKAGE_CONTRIB : store_variable | fetch_variable接受一个对象作为第三个最后一个参数。 (寂寞@ NT)
*还原“泥IP ”配置线测试套件,以及固定插座相关的代码是IP无关。
*删除所有旧win32/windows代码。和obsolote malloc实现,唯一的选择就是现在
SYSMALLOC (首选) , 32bitmalloc和64bitmalloc 。
*大部分的内部插座相关的代码现在是IP无关。
*力创造矮人-2的调试信息格式。
*请new_user_handler ( )从LPC错误安全( ) 。
*新增配置检查的C + + 11 。
*允许通过CXXFLAGS来build.FluffOS 。
*发送通过LPC接口0长度消息时修复崩溃。
*修正缓冲区欠载的存在( “1”) 。
*的文件删除的文本/ html版,移动版的nroff到/文档。
*重新添加“ - FLTO ”编译选项。
FluffOS 3.0 ALPHA5
REVERSE_DEFER , FIFO执行的延迟( )
改写unique_mapping ( ) ,没有更多的内存泄漏。
添加一个测试unique_mapping 。
使调试驱动程序跳过优美崩溃程序。
修复的bug LTRIM ( zolider ) ,增加更多的测试案例。
修复损坏的get_usec_clock ( time_expression ) 。
还删除了一些过时的信号代码。
修正建立与PCRE , MYSQL , PGSQL , SQLITE3 。
FluffOS 3.0 alpha4
PACKAGE_TRIM : ( zoilder ) , RTRIM , LTRIM和修剪字符串裁剪。
FluffOS已切换到使用autoconf兼容性检测。
这导致了去除代码的edit_source.c近一半
注:建立正确的做法仍然是首先启动/ build.FluffOS 。
然后进行。
其他通用代码质量imporvements ,不少老工艺已被删除。
FluffOS 3.0将只支持mondern linux发行版。
FluffOS 3.0 ALPHA3
FluffOS已切换到C + +语言。
使用try / catch语句,而不是longjmp的。 (渥丹)
代码质量的改良效果。
修正了使用DEBUG没有DEBUGMALLOC_EXTENSIONS导致内存损坏。
FluffOS 3.0的α2
基准重调至2.27由渥丹释放。
建立将会失败年初时local_options丢失。
使用astyle有关执行源格式。
命令( )外部函式将返回正确的eval成本。
不速之客14 ,防撞返回数组类型时。
测试现在执行随机。
DEBUGMALLOC将填补记忆与魔法值。
FluffOS 3.0 - ALPHA1
新的编译选项:
POSIX_TIMERS :更好的时间preceision跟踪的EVAL成本。 (
CALLOUT_LOOP_PROTECTION :保护call_out ( 0 )循环。 (
SANE_SORTING :使用快速排序实现“ sort_array ()” ,但需要
LPC码,返回符合要求的结果。
构建脚本的改进和编译/预警修正。
32位环境下建立现在是支持的。
Cygwin下建立现在是支持的。
多重破碎机/内存泄漏是固定的。
文件已被移动到根目录。
让特拉维斯CI自动化测试/构建每次提交。
自动打印回溯转储时,驱动程序崩溃。
在启动时打印警告,如果核心转储极限是0。
编译db.c修复不PACKAGE_ASYNC 。 (
通用代码质量的改善。
PACKAGE_CRYPTO :构建修复和增强。 (
PACKAGE_SHA1 :修正不正确SHA1 ( )哈希生成,与试验验证。
“做试验”将推出测试套件并报告任何问题。
DEBUGMALLOC , DEBUGMALLOC_EXTENSIONS和CHECK_MEMORY现在工作。
广泛的64位运行时测试被添加。
切换运营商的测试。
标杆和自动不速之客改进措施
相关MUD列表
测试MUD fluffos.net 5555(lib重写中)

我要回帖

更多关于 mt19937 的文章

 

随机推荐