-
Notifications
You must be signed in to change notification settings - Fork 563
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
各平臺table.bin通用問題 #121
Comments
只能针对不同平台进行编译,不具有二进制可移植性,也就不存在什么转换工具 |
發現文件大小是相同的,應該有辦法直接轉換。@zhaozg 我說的是方案部署生成的bin。 |
上 flatbuffers,應該就能通用了。 |
你估計是哪塊不通用?leveldb?我想做個各平臺bin轉換的腳本。 |
也許浮點數的格式不一樣,這是最麻煩的 |
这个问题最严重的地方在于,由于iOS第三方输入法有内存限制,iRime无法部署,只能从外部导入bin。而x86架构生成的bin无法在iOS设备上使用,推测应该是只能导入ARM生成的bin。但是没有安卓手机的用户无法通过同文生成这样的bin,这样就会很麻烦。 |
看来可以通过diff看出大概。 |
浮點數不同。這個可以解決。不用就是了,轉換成整數。 |
@Prcuvu 那iRime現在是從哪導入bin的? |
@osfans 可否做個實驗,在不同架構下調用 libmerisa 生成的文件是否全等 |
http://s-yata.github.io/marisa-trie/docs/readme.en.html
看來有希望。目前windows、linux、android、ios都是小端序的?而且32位和64位應該通用。 |
经测试, |
搞好了吗,有新版了吗? |
@lotem |
喔這是當時添加 ARM 支持的時候,不想破壞已有 x86 下詞典文件的二進制兼容才做條件編譯的。 另外浮點數有人研究過嘛? |
噢,這樣啊,我改了之後,arm32和arm64兼容了。 librime/src/rime/dict/mapped_file.h Lines 133 to 136 in 555f990
這一段RIME_ALIGNED不知要不要統一? |
@osfans 我的意見是,先驗證能否做到完全的二進制兼容。代碼統一不代表不同架構下的二進制兼容。如果不能,反而破壞了某一架構下的前後版本兼容,那統一一處代碼就不值得做了。 |
@lotem 測試了下librime中的minimal,arm v7和v8都不 六個bin中,cangjie5.prism.bin cangjie5.reverse.bin cangjie5.table.bin luna_pinyin.prism.bin 四個完全相同。luna_pinyin.reverse.bin luna_pinyin.table.bin這兩個略有差異。 --- v7/reverse.txt 2017-09-06 13:14:07.991668050 +0800
+++ v8/reverse.txt 2017-09-06 13:14:26.671626626 +0800
@@ -6887,7 +6887,7 @@
001cd90 aea4 88bf a79a 988b b9b3 9288 b3b0 bda8
001cda0 b984 b681 b292 9e90 bc82 908f a989 a49c
001cdb0 b6a5 b283 b184 8d8a 9183 0000 0008 0000
-001cdc0 0000 0000 bf96 a300 0000 0000 0000 0000
+001cdc0 0000 0000 0000 0000 0000 0000 0000 0000
001cdd0 0000 0000 0018 0000 0000 0000 0000 0000
001cde0 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -6906,7 +6906,7 @@
001cec0 0000 0000 0000 0000 0000 0000 0019 0000
001ced0 0000 0000 4600 4043 3a3d 3437 2d30 272a
001cee0 2124 1b1e 1518 0f12 090c 0306 0000 0000
-001cef0 0000 0000 0008 0000 0000 0000 bf96 a300
+001cef0 0000 0000 0008 0000 0000 0000 0000 0000
001cf00 0000 0000 0000 0000 0000 0000 0018 0000
001cf10 0000 0000 0049 0000 0000 0000 bf96 a300
001cf20 00bb b7a5 9200 00b2 b0b1 9700 00a9 a8a5
@@ -7595,7 +7595,7 @@
001f9e0 7165 6703 6b68 6961 695b 985b 3875 3a61
001f9f0 253c 2f47 357a 414a 6c61 6c79 a99b 7870
001fa00 974a 6f71 44b4 7975 3674 7814 3e73 6942
-001fa10 0000 0000 0008 0000 0000 0000 7a20 7500
+001fa10 0000 0000 0008 0000 0000 0000 0000 0000
001fa20 0000 0000 0000 0000 0000 0000 00d7 0000
001fa30 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -7627,7 +7627,7 @@
001fbf0 2f6b 5aad babf 2068 b020 6320 6a71 69a7
001fc00 7566 9a67 946a 6803 337f 6568 7a4c 2020
001fc10 8861 6a54 6120 2029 6f73 0000 0008 0000
-001fc20 0000 0000 7a20 7500 0000 0000 0000 0000
+001fc20 0000 0000 0000 0000 0000 0000 0000 0000
001fc30 0000 0000 003d 0000 0000 0000 00c8 0000
001fc40 0000 0000 7a20 7500 7920 6400 6e61 6820
001fc50 2075 0078 6e61 7820 6900 6a20 6569 7820
--- v7/table.txt 2017-09-06 13:14:18.961643738 +0800
+++ v8/table.txt 2017-09-06 13:14:24.714964304 +0800
@@ -535759,7 +535759,7 @@
082e160 7b06 9ec9 a2e1 9e8a 198a b0c0 2c04 521c
082e170 c323 1461 60f4 c280 4a58 3813 2610 218a
082e180 4306 00d2 4282 45e5 1b08 9719 d09a 95ca
-082e190 61f0 b17e e71e 00ad 0000 0000 0007 0000
+082e190 61f0 b17e 001e 0000 0000 0000 0007 0000
082e1a0 007f 0000 218a 0000 0000 0000 51eb 0000
082e1b0 0000 0000 bd83 bde4 e9bf bc00 e9bf 8a00
082e1c0 e9bd bc00 e9bb e500 ba9f 00e9 b9ae 00e9 |
@lotem 驗證了 #156 --- arm-32/cangjie5.reverse.txt 2017-10-25 20:47:40.638676513 +0800
+++ arm-64/cangjie5.reverse.txt 2017-10-25 20:48:18.345120039 +0800
@@ -148140,7 +148140,7 @@
024cd10 8e98 590f e496 0f18 8803 821c 925a 7359
024cd20 11ce a000 23e3 a4a8 0892 f20e 0f90 9241
024cd30 a564 a521 4a4b 7405 e1c0 c8f8 f7f2 8f2c
-024cd40 3c75 53c7 833c 59a5 8963 2021 0000 0000
+024cd40 3c75 53c7 833c 59a5 8963 0021 0000 0000
024cd50 0006 0000 003f 0000 ea04 0000 0000 0000
024cd60 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -150303,7 +150303,7 @@
02554c0 3865 9837 8a13 441c 298e 8801 e101 cf73
02554d0 6530 6416 0569 9904 2912 7591 1ad4 a850
02554e0 d464 cc5b 96ac 10d4 a481 5893 6901 e399
-02554f0 05c0 6dc0 0000 0000 0005 0000 001f 0000
+02554f0 0000 0000 0000 0000 0005 0000 001f 0000
0255500 074e 0000 0000 0000 1245 0000 0000 0000
0255510 7a20 7600 0079 7973 7900 7920 7972 6c00
0255520 0079 7969 2000 6568 0079 7964 6300 0079
--- arm-32/luna_pinyin.table.txt 2017-10-25 20:36:53.069175857 +0800
+++ arm-64/luna_pinyin.table.txt 2017-10-25 20:36:43.782564164 +0800
@@ -525187,7 +525187,7 @@
0804c90 c21d 0062 01f5 311c c36a 813a 2c15 71ec
0804ca0 70e8 8dd4 ec75 b058 f873 1570 78ac 0b10
0804cb0 7c02 4f88 be15 107d 5596 9110 1a07 81c4
-0804cc0 2110 f2d2 10f1 3c16 cb5a e21e 9123 b174
+0804cc0 2110 f2d2 10f1 3c16 cb5a e21e 0003 0000
0804cd0 0000 0000 0009 0000 01ff 0000 8f6b 0003
0804ce0 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -535759,7 +535759,7 @@
082e160 7b06 9ec9 a2e1 9e8a 198a b0c0 2c04 521c
082e170 c323 1461 60f4 c280 4a58 3813 2610 218a
082e180 4306 00d2 4282 45e5 1b08 9719 d09a 95ca
-082e190 61f0 b17e 8e9e 0000 0000 0000 0007 0000
+082e190 61f0 b17e 001e 0000 0000 0000 0007 0000
082e1a0 007f 0000 218a 0000 0000 0000 51eb 0000
082e1b0 0000 0000 bd83 bde4 e9bf bc00 e9bf 8a00
082e1c0 e9bd bc00 e9bb e500 ba9f 00e9 b9ae 00e9
--- arm-32/luna_pinyin.reverse.txt 2017-10-25 20:47:32.218726342 +0800
+++ arm-64/luna_pinyin.reverse.txt 2017-10-25 20:48:22.038431516 +0800
@@ -6860,7 +6860,7 @@
001cbd0 673b 2063 b39f 8cb4 8e8d 9994 9e9a afae
001cbe0 bcba 88be a78f b6a8 a8a6 8c8b a98c 9183
001cbf0 a8a7 9fb1 a8a8 adac b2b1 b991 b185 b49e
-001cc00 0000 0000 0008 0000 0000 0000 9798 b15b
+001cc00 0000 0000 0008 0000 0000 0000 0000 0000
001cc10 0000 0000 0000 0000 0000 0000 0060 0000
001cc20 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -6887,7 +6887,7 @@
001cd90 aea4 88bf a79a 988b b9b3 9288 b3b0 bda8
001cda0 b984 b681 b292 9e90 bc82 908f a989 a49c
001cdb0 b6a5 b283 b184 8d8a 9183 0000 0008 0000
-001cdc0 0000 0000 0cf8 b1cc 0000 0000 0000 0000
+001cdc0 0000 0000 0000 0000 0000 0000 0000 0000
001cdd0 0000 0000 0018 0000 0000 0000 0000 0000
001cde0 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -6906,7 +6906,7 @@
001cec0 0000 0000 0000 0000 0000 0000 0019 0000
001ced0 0000 0000 4600 4043 3a3d 3437 2d30 272a
001cee0 2124 1b1e 1518 0f12 090c 0306 0000 0000
-001cef0 0000 0000 0008 0000 0000 0000 2ef0 f6e1
+001cef0 0000 0000 0008 0000 0000 0000 0000 0000
001cf00 0000 0000 0000 0000 0000 0000 0018 0000
001cf10 0000 0000 0049 0000 0000 0000 bf96 a300
001cf20 00bb b7a5 9200 00b2 b0b1 9700 00a9 a8a5
@@ -7595,7 +7595,7 @@
001f9e0 7165 6703 6b68 6961 695b 985b 3875 3a61
001f9f0 253c 2f47 357a 414a 6c61 6c79 a99b 7870
001fa00 974a 6f71 44b4 7975 3674 7814 3e73 6942
-001fa10 0000 0000 0008 0000 0000 0000 2ef8 f6e1
+001fa10 0000 0000 0008 0000 0000 0000 0000 0000
001fa20 0000 0000 0000 0000 0000 0000 00d7 0000
001fa30 0000 0000 0000 0000 0000 0000 0000 0000
*
@@ -7627,7 +7627,7 @@
001fbf0 2f6b 5aad babf 2068 b020 6320 6a71 69a7
001fc00 7566 9a67 946a 6803 337f 6568 7a4c 2020
001fc10 8861 6a54 6120 2029 6f73 0000 0008 0000
-001fc20 0000 0000 2ef0 f6e1 0000 0000 0000 0000
+001fc20 0000 0000 0000 0000 0000 0000 0000 0000
001fc30 0000 0000 003d 0000 0000 0000 00c8 0000
001fc40 0000 0000 7a20 7500 7920 6400 6e61 6820
001fc50 2075 0078 6e61 7820 6900 6a20 6569 7820 |
linux 64和arm 64的bin可以通用,兩個table.bin差異較大,其餘四個文件完全一樣。 |
@osfans 你是說在不同平臺下生成的 table.bin 不一致,但是可以通用嘛? |
@lotem 是的 不会挂 但是不知是不是有些词序有问题. |
補充一個可能的使用場景,是我最近在實驗的一個東西: 嘗試用 Emscripten 將 Rime 編譯成 WebAssembly / asmjs。動機是可以用網頁版(免安裝)的方式讓用戶體驗不同輸入方案,以及可以將輸入法做成瀏覽器插件。 目前是可以粗糙地運行起來(Demo | Code), 不過在瀏覽器裏部署,一來很慢(超過1分鐘),二來占內存(>128MB),這樣可用性就比較低。因此最好還是要外部先生成 table.bin,然後再提供給 WebAssembly 上的 rime 使用。 目前這個Demo部署的文件是在瀏覽器的內存裏面 (Emscripten 的 Virtual File System) ,我看看有沒有辦法把它生成的 .bin 文件取出來和 x64 / x86 的 .bin 對比一下。 |
@ztl8702 |
传说中的大白云终于要来了? |
在OpenCC遇到了同样的问题BYVoid/OpenCC#656 (comment) |
最近移植了armv8 64位的librime,發現bin跟armv7 32位的也不通用。
有沒有辦法讓各平臺bin通用?是字節序還是位數的問題?
實在不行,要不搞個bin轉換工具?
@Bambooin @lotem
The text was updated successfully, but these errors were encountered: