Size: a a a

2021 February 13

M(

MIT/Yardanico (alt) in ru.nim.talks
могу помочь
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
если есть код
источник

V

Victor in ru.nim.talks
Сейчас напишу
источник

V

Victor in ru.nim.talks
MIT/Yardanico (alt)
если есть код
Выловил наконец-то. Тест состоит из двух файлов:
источник

V

Victor in ru.nim.talks
to_parse.txt
start  192.168.0.100
end  192.168.0.199
opt  lease  7200
opt  dns  192.168.0.1
opt  router  192.168.0.1
opt  subnet  255.255.255.0
static_lease  11:22:33:44:55:66 192.168.0.1
interface  br0
max_leases  100
auto_time  7200
lease_file  /tmp/wr841n/udhcpd.leases
pidfile  /tmp/wr841n/udhcpd.pid
источник

V

Victor in ru.nim.talks
test.nim
import strutils
import tables

proc extractConfig(): Table[string, string] =
 var lan_ip = ""
 var data = initTable[string, string]()

 for line in lines("to_parse.txt"):
   let splitted = line.splitWhitespace()
   if (splitted[0] == "opt") and (splitted[1] == "router"):
     lan_ip = splitted[2]
     data["lan_ip"] = lan_ip
   if (splitted[0] == "static_lease") and (splitted[2] == lan_ip):
     data["bssid"] = splitted[1]
 return data

echo extractConfig()
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
вижу
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
разницу
источник

V

Victor in ru.nim.talks
Здесь происходит перезапись переменной lan_ip
источник

V

Victor in ru.nim.talks
MIT/Yardanico (alt)
разницу
Интересно, что если не оборачивать это всё в процедуру, то всё ОК
источник

V

Victor in ru.nim.talks
Собирал так:
nim c -r --gc:arc --opt:size --checks:off --assertions:off --debuginfo:off --stackTrace:off --lineTrace:off test.nim
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
ну это да, тут просто --gc:arc хватает
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
вижу, ща попробую упростить
источник

A

Alexander in ru.nim.talks
Victor
Кто-нибудь натыкался на серьёзные баги при сборке с --gc:arc ?
Да, там проблема была с move в цикле, но исправили очень быстро
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
а, я уже понял, с чем баг связан
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
пока ещё до конца не упростил
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
Victor
Собирал так:
nim c -r --gc:arc --opt:size --checks:off --assertions:off --debuginfo:off --stackTrace:off --lineTrace:off test.nim
можешь компилить с --cursorInference:off
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
тогда бага не будет
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
он из-за этой оптимизации
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
и да, не нужно делать var data = xxx и потом return data, можно просто через result :)
источник