pristine:25007abf3dd9a9e61c0ca219d9a912589f3cf475f5e08f2eb4e249f05e100dfa [first version pesco@khjk.org**20210430133800 Ignore-this: affcc56ea78b186008699432d695726e ] hash: 0000022107-e5b3885f6ed2558943a499865ef53c5c6e5aef098c38f15d2a5ef25a019f312a [remove unnecessary setclean pesco@khjk.org**20210502092533 Ignore-this: 75d9afe27d35d50fcf09620853f731cb ] hash: 0000000144-a8270271dd5c49971763431429d60f3a2bd1d489515898607043ec6f96d1495a [make things a bit faster with bitsets pesco@khjk.org**20210511130320 Ignore-this: d07008e04bf872a695ce2a7c0cc5966 ] hash: 0000006495-5b10f705e52e0aeebca134e5da8a1cc48c8300843e5bde027d6e482c34a84c71 [iterate over the bitsets a bit faster pesco@khjk.org**20210511172131 Ignore-this: e2462f23b17fe978ce78e1389292ba2c ] hash: 0000002023-026054dc07d6634256b40a3c312ddcc12f994888558b0ef0890f80ce2ae8ad19 [factor end condition (states added?) out of epsilon_step() pesco@khjk.org**20210514113236 Ignore-this: 1e0fe542d5fc2f660910b4d0450f50b9 ] hash: 0000002173-d502426a58298244db9e4b91870a38d6c0ac0c6b79e6a9071492d7a7b33cbd22 [warm up before benchmark pesco@khjk.org**20210514162953 Ignore-this: 861c7cbbd4c3fdcffce12a63b5282fe4 ] hash: 0000000219-6d7c84945b7c25047d71572c25d2945ab480dabce7b1d5a251eae6397daff4c5 [let epsilon_closure work in-place on act pesco@khjk.org**20210514185325 Ignore-this: be3bbfe1879adccb91bf074074b9e5f0 ] hash: 0000003124-bab628f36fa8529afc97ce74b60f75c058e1d2b9e58c84ba427288eeb4653ee1 [using one bit per "bunch" pesco@khjk.org**20210514193602 Ignore-this: bdeccd53cf0f4bdbcaadae1f88bea0b ] hash: 0000000743-590c82aecdd086e8e788ffebad633d91a89f80171c1307468b6655a6e0795a59 [fix bitset size calculation pesco@khjk.org**20210514193604 Ignore-this: baeca45425310a48872878680f423988 ] hash: 0000000253-5ea69240b30e1514004454bf3bf3dcf496c3ea9d774f8ab8dd142770cd527b1d [answer my own question? pesco@khjk.org**20210517115345 Ignore-this: 52f514b80ae3a3fa28a20ea47362832b ] hash: 0000000372-90749ec826539c06c281cfb31fd006f1a5a3a1e31d73232eaab4e69abcaf2346 [commentation pesco@khjk.org**20210517115402 Ignore-this: 92e0369988738b1c761810352e7a0523 ] hash: 0000000293-636f5c9908ce6bba5133e1b775c03130c0ffe3a29a6e28452506b493aa6e8cb4 [remove unnecessary case for edge_chr < 0 pesco@khjk.org**20210517115416 Ignore-this: c342da928bb7c21587ef0972979c47ac ] hash: 0000000363-b5e7eb368a33ed06acb9f86df61145cbeaa8e26f42545c47d93861899b0a401e [edge_chr is never negative pesco@khjk.org**20210517134535 Ignore-this: 9441e0f60f985f7a00b7540143ce1a22 ] hash: 0000001248-2b1234680d814d1ddb095d3785bbf92e21d04e69a2a4f93c67a46c5b70537f82 [suddenly, the extra arg to epsilon_step no longer matters pesco@khjk.org**20210517134736 Ignore-this: 641bcf1237d3e47c7b0d63075ccbbcbd ] hash: 0000000779-efa847d371ffb8791eed8fc60a10989a749e71f5f98072d0a564dbaf0fcadbff [free state sets after match pesco@khjk.org**20210517151810 Ignore-this: cf4e49ea593d1500e6e85a4ffff2ba2a ] hash: 0000000164-079fbe305e6616beed30c369bf5ae69c82da6dd96db727bc466274a0b891b66e [benchmark output in nanoseconds pesco@khjk.org**20210517160120 Ignore-this: 3dd0239350466af52ecb16f38184a0fe ] hash: 0000000955-21cb904cf4865393c9090de1f0b953b5a0cf2e5258c1f6eee44c85ee85e3e2a2 [do warmup for all benchmarks pesco@khjk.org**20210517160224 Ignore-this: 64637a4a4eae0dffaffca1ce395e1c61 ] hash: 0000000461-aed01bd5a3d8ae5590a72b387d29b673b66f827ae3bf35cf0f83a35cf496d599 [adjust round numbers down a bit pesco@khjk.org**20210517160245 Ignore-this: 851d1629cb2cbb150df2d12c3ff841d3 ] hash: 0000000487-fef11c3f6b41574aa240853291af2a05ea4ba55d1d70f20b6a83478401f3f19d [base/length representation for struct range pesco@khjk.org**20210517202545 Ignore-this: 37144ba333d89786a7691162a1810555 ] hash: 0000002084-40206cd1059cd8fa696452ec3e29d8893bf397767db8e1e30771cc45d8ae9a58 [make END = INT_MAX pesco@khjk.org**20210518133257 Ignore-this: f48c62aeb49f5aa6ed0e4b20aa7197b3 ] hash: 0000000607-c6ecba26071edef8dd737ec4baaeae798f4743b086308dcb1639615954c5e266 [tweak around with symbol representation pesco@khjk.org**20210518201733 Ignore-this: de593e5ea638cab08a2ec75e2f116014 ] hash: 0000000797-1b87bcc9c19d45bb43abf6171ff1d2d8f9331590d4c0c8da655337a3c17e070c [make the empty NFA (.size = 0) valid and let epsilon() return that pesco@khjk.org**20210518201945 Ignore-this: f0031bb7c8531d8fb4f6843e240742 ] hash: 0000001444-4c6d0987f719721d2a8cafd7af3f8dab65143139127e1067a677af82717a5614 [comments about extraneous nops pesco@khjk.org**20210518202034 Ignore-this: d926a30f4c4b83a7c5682c535c1f751c ] hash: 0000000428-e083615702bda78ace9c29b5f2ad1407bf56a733e885f6544796396e8dd4a081 [comment pesco@khjk.org**20210518202319 Ignore-this: 21dc0376e8ca2eb79b1f1ff8f09c1ad1 ] hash: 0000000182-f157762e3627ebd15fb95329eb689584a6210cbda74fd9ec9718d1a4c6f22072 [fix range representation in str() pesco@khjk.org**20210518202326 Ignore-this: 7a2f5c62bd428546aa950722bc10b096 ] hash: 0000000224-2ae439c8b6c818601087ebec51bec4b52d25144253560d5277c43749c72882f6 [choice: collect all the forks in front pesco@khjk.org**20210518204645 Ignore-this: 1550e2316776039330cf1e4a8667f02c ] hash: 0000001136-8f866eae2457bac247e876d486f22e261892bd85f1f2dfc268afd2e07ff7bc4b [eliminate fan-in state at the end of choices pesco@khjk.org**20210519133825 Ignore-this: bc2e400dd6b4a072cda654b5531a73a1 ] hash: 0000001919-c53120f3b8c8ebb8926887767548240d52e21c8d8129bcb0e36df01c3510d88b [only bother looking at edge_eps if edge_chr is also an epsilon edge pesco@khjk.org**20210519175153 Ignore-this: f53e39197b4e46b5083dfc18fca239db ] hash: 0000000846-19c1047edebb120080dbe4a6951336f5ba8c6dcec6224d12ce4cb69eb7af0e32 [avoid marking chains of states that have only epsilon out edges pesco@khjk.org**20210520174704 Ignore-this: 6c9ea755a2e0b507c6823fd716b91f8d ] hash: 0000000874-8f67237e9393d7a5844a2a8c123b0bc404a18b331f45c8219160ad7f7871f04d [only do one malloc in match() pesco@khjk.org**20210520174730 Ignore-this: a170f4c29dec45748f844d352612ddae ] hash: 0000000641-ba55201f53257ff8facd845cb5fc692651bedaac23a3ead353de4a1e1ac9efa4 [factor out nfaprep() to allocate buffers pesco@khjk.org**20210523174227 Ignore-this: fafef9425a4e54ac69a559ad5451abe5 ] hash: 0000001542-01c7bf0eae914408ea8589b4c9f0a969c0d575178d6c8c10d76f57da4bfbd739 [use nfaprep() in benchmark pesco@khjk.org**20210523181713 Ignore-this: 4a2afd8d0f6c8fdc59318c1bf85a88e7 ] hash: 0000000463-e92c5ed663a2ff45bdf353fab36a94531bdbdf03c60ffdc317313e69ac913507 [save the initial active set in prep pesco@khjk.org**20210528132248 Ignore-this: 4949b75d4b94200527d706c51a4875ec ] hash: 0000001170-4f54ecbce45f3e6c5509c76e7b325e30d5b7b6645230c92ce0b657ff4221d8d8 [with BITSET, keep track of which states have epsilon edges at all pesco@khjk.org**20210528132251 Ignore-this: 7c63c310e3d86d5521617a81159ed2db ] hash: 0000001998-09b453d833e648975c75592e467c06f75b526b7e33ffd47cb9ae9584adb171ff [add inner input, workset iteration for epsilon_closure() pesco@khjk.org**20220121143612 Ignore-this: b7f46adac41dbb12a739ffbd99c5438c6c68a15c2c7282437b1dbeee34ef396357abe8972aee92c3 ] hash: 0000010771-e9eb7da1e3200230019d31116470239ec56b8caf5d35abb32f79fea3bf9c699e [add another partial-match test case to benchmark pesco@khjk.org**20220127143200 Ignore-this: 5b626ad8a07b3772a5a311da79f047a38b160dc156506b904687925dceb27508c2236cbcb01e1088 ] hash: 0000000372-5d8e1c51ba0e6a7781de8493b8452b36635d1e434bdca638e12c77f6905b6a67 [optimizations?! pesco@khjk.org**20220127144038 Ignore-this: 5013132bf32a2516fd45db2840276d4ad2adeff9710ce43b0c15a98d3afb283ddfce649c1c97d4f6 ] hash: 0000000620-9d5015a6229a265cedb402fcecbb3c90bb4d1f23c831311ebc60085c63d09eb2 [start of output support pesco@khjk.org**20220127144207 Ignore-this: f73bfdf7df146edcf1ca313cf346026f1e1f8d31592a260bda20a187d04a5d96ddc9fc449e414aa1 ] hash: 0000004555-462f569d966fc6fd88dcf395dae24c2c290e75e5b4b43068d247e020d2022084 [cosmetics and comments pesco@khjk.org**20220127150721 Ignore-this: 4c2cdb48185e5db84181925732145c30d26d46b0e338b0bebc6d2bfaa0f259c3b8c7ca45f3eea568 ] hash: 0000001622-4c230c0c5c70c89aa5e3dbc3f62fcb52a80613cb6f85cd6b14782fc42ccbb51e [explicitly clear final state in epsilon_step pesco@khjk.org**20220127170356 Ignore-this: f31c9fcd7dd25b69340fd314c32af76d2c59007febd5390ca4cb2dc321ffb9e7f1041d910bcafc0f FOREACHSTATE does not cover the final state. ] hash: 0000000409-170f17e4950ac93fb10013338f512a358fbe8952456076b3ae4044b98d4e0a09 [separate sub() and out() pesco@khjk.org**20220128170211 Ignore-this: 76bcf7bd0b484941d1b98cfd3f9fafc376f227e4a748cfa5bdf33b95d2a25de21490ee2fd8313de4 ] hash: 0000004171-7ec282e48135dca3404f7180fb5235d5f75a96acc50ea8c822e0e4a4e0d6ec5a [factor nfa.h and test_nfa.c out of nfa.c pesco@khjk.org**20220208114907 Ignore-this: 78744c9c0986012d3b7b7449c3829072f61ab339eac20be3bf38809482cd14dbf9181c150ef14a13 ] hash: 0000016632-9227c1a95a86647ed84c5da08d824e5f03fc9cac74b7f12923614a2a6f4be805 [run benchmark without printing pesco@khjk.org**20220208115748 Ignore-this: dbd5a14c94c73e3ef01c3bf9d013488c0664be7faccdb97f26683661bff8930276b0880ac10cdaf5 ] hash: 0000001006-22722b45397fe4eaa94888fefd51c9252d70ea81579cb3e47ba00370e5033484 [let test_pcre and test_regex record position of the '@' pesco@khjk.org**20220208115824 Ignore-this: ab1373bc3e54d632d7165a01d84633ca32f8b0f07a18dd925099fcc4a6b556436d37ee78e9732313 ] hash: 0000000373-894ad83bceef44a0097d62ec5fc088d6c89abdbc19e9b8a44b1634b414768db1 [print a cosmetic blank line after the NFA output pesco@khjk.org**20220208120035 Ignore-this: 270f514f58dbddf94621237a79230e4bc0eea715208507cc88698528a9de55ff35f86f6ff5f1d381 ] hash: 0000000218-3695997b8cfb07fc3e5396f312e923f8c87800809cb966df337cf30bbe271adf [nfareset/nfarun/nfacont pesco@khjk.org**20220209185944 Ignore-this: bbef2b8d394be0af5d6f659870247634a21a543055765624f3b73232768c29102086387dfd6d1aca ] hash: 0000002144-efe5855991ef856e85d0585f81d0dd22ada866d7f42fb9545ed4b4519789a4a4 [support suspend / chunked operation (split out END processing) pesco@khjk.org**20220210220446 Ignore-this: 110cd44e773ddbea34f9eb68408c50a37ba8d7100afe0bae7d01b29ae4a868e0ac771e2702f81d69 ] hash: 0000005860-36a2079c8c00ae5e79e2553392113b3f6db54d04bf6485d24e1b8b03d59ee455 [produce output while no input is possible pesco@khjk.org**20220211162510 Ignore-this: e9e072d4d9f2831fcf337a5eeedb804e9af821c7b2fa6bb704a860ce79f4c8f84a90f82182914b3 ] hash: 0000002370-d49208f58bdeb7fb9916bb70d1daf980b30fca7d308973fe9b60ac35089cdba2 [changed my mind; dont do output (or inner input) on chunk edges! pesco@khjk.org**20220211202942 Ignore-this: dfa9d20fa77c09bdf612ac9d9cdcfbf1a67a1867d51674cead5ecbf81c573d9b024edc40f40f5a3d ] hash: 0000001014-869e2550aefda1d48668d7c2939d63bb81655f06d6835ebb9ad6b701131c809b [move print_nfa() to nfa.c as nfaprint() pesco@khjk.org**20220323194318 Ignore-this: 636502b2b4ac766e3c5b19ad71ed006a19703193b4af99a139081deab8d83bf0d86c8c6f987accef ] hash: 0000004190-1d147911d657ab11fd7a76c10fb2fb51a793cd3a5cd62e61ad1508da5c943b1f [comments / style pesco@khjk.org**20220323194612 Ignore-this: 501f2de9596cf27e2374f8c1ac8d3915ea38877ba73560eeb80382453806f832eb375c43071456ef ] hash: 0000000703-33ad946120ab4c8a553adb1f12c1bae5179591fab1a28dda51bc7cfe26cd35a3 [switch to unsigned char pesco@khjk.org**20220324191359 Ignore-this: b27047535e566ce924f0fda9884b0cc7fdec5126df5ceaed8c6433a5a7487bf791e9e528c41332bb note: char can be portably converted to unsigned char (modulo arithmetic) but the converse is not true (undefined behavior)! ] hash: 0000001747-b04b909a5ab2e6bdf126b45dbe073b6829dbd0bbc01e42173c065d818fec9e8c [add outchr() combinator pesco@khjk.org**20220324194954 Ignore-this: 4e8dce1403c9e3dae019069ba8eab8294ee975a048d41b11b0878ab6f4f34bd02ba687cad8d75c48 ] hash: 0000000280-a891978e2a2389345ea8ac28399f54f51060e76883d507d17f5a61082a9e0568 [add 'simcard' example pesco@khjk.org**20220324195237 Ignore-this: cb38b7833daa02ff74af70d9e44ddc5ea60f92d17859a8fe3d7b75b61238f1d13055dbf5998eb542 ] hash: 0000007204-865a10caad46e4fbfc2a36c58549ead73c63e410ec1ca7db7b3c76c99aa9138c