sb0 changed the topic of #m-labs to: ARTIQ, Migen, MiSoC, Mixxeo & other M-Labs projects :: fka #milkymist :: Logs http://irclog.whitequark.org/m-labs
Mon_ has joined #m-labs
Mon_ is now known as Guest97642
Guest97642 has quit [Quit: This computer has gone to sleep]
mithro has quit [Remote host closed the connection]
Mon_ has joined #m-labs
Mon_ is now known as Guest83802
Guest83802 has quit [Quit: This computer has gone to sleep]
ylamarre has quit [Ping timeout: 250 seconds]
Mon_ has joined #m-labs
Mon_ is now known as Guest51191
sb0_ has joined #m-labs
<GitHub103> [migen] sbourdeauducq created new (+1 new commit): http://git.io/v888R
<GitHub103> migen/new 7644810 Forest Crossman: build/platforms/mimasv2: Fixed swapped serial pads
<GitHub133> [migen] sbourdeauducq deleted new at 7644810: http://git.io/v888i
travis-ci has joined #m-labs
<travis-ci> m-labs/migen#160 (new - 7644810 : Forest Crossman): The build has errored.
travis-ci has left #m-labs [#m-labs]
<GitHub135> [migen] sbourdeauducq pushed 1 new commit to master: http://git.io/v888D
<GitHub135> migen/master ed762aa Forest Crossman: build/platforms/mimasv2: Fixed swapped serial pads
travis-ci has joined #m-labs
<travis-ci> m-labs/migen#161 (master - ed762aa : Forest Crossman): The build passed.
travis-ci has left #m-labs [#m-labs]
<GitHub77> [misoc] sbourdeauducq pushed 3 new commits to master: http://git.io/v88Bc
<GitHub77> misoc/master 2963296 Yann Sionneau: Fix CSRBankArray
<GitHub77> misoc/master 127edc0 Yann Sionneau: replace Counter in Converters
<GitHub77> misoc/master 45a36c2 Sebastien Bourdeauducq: wishbone: update TODO
travis-ci has joined #m-labs
<travis-ci> m-labs/misoc#17 (master - 45a36c2 : Sebastien Bourdeauducq): The build passed.
travis-ci has left #m-labs [#m-labs]
sb0_ has quit [Quit: Leaving]
rohitksingh has joined #m-labs
<sb0> why does ipython use zeromq for straightforward two-process communication?
<whitequark> and the next one
<sb0> ah, so it's not straightforward 2-process
<whitequark> yeah
<sb0> "broadcast all side effects" - does zmq allow initialization? afaict it doesn't
<sb0> if you subscribe too late, your data is corrupted
<whitequark> uh, corrupted?
<whitequark> if you subscribe too late, you don't get the earlier messages. this is a deliberate facet of 0mq's design
<sb0> yes, so inappropriate for synchronizing data structures
<whitequark> 0mq is, roughly speaking, a replacement for sockets, not for a consensus protocol
<sb0> i don't understand why zmq sockets are that great, the publish/subscribe stuff is just "for client in clients: client.write(message)"
<sb0> it makes sense if you're using a language like C, but if your language easily supports lists of whatever, the zmq stuff becomes pretty redundant
<whitequark> yeah, except you have to handle: DNS resolution, authentication, transport-layer encryption, network erros, ...
<sb0> python libs do that as well
<sb0> again, useful with C, but doesn't make sense with python
<whitequark> I haven't seen a way to do that in python that's as simple and efficient as using zmq
<sb0> a zmq-like publish server is ~15 lines of code with asyncio
<whitequark> with authentication and encryption?
<sb0> there are SSL features in asyncio, so maybe. I haven't tried them.
<whitequark> lol, SSL
<whitequark> that's a really bad answer
<sb0> why?
<whitequark> it's very hard to use correctly
<whitequark> e.g. how do you deploy PFS?
<whitequark> what ciphers do you use?
<whitequark> how do you prevent amplification attacks if you use UDP?
<sb0> so ZMQ is a suckless openssl then?
<whitequark> it provides a solution for transport layer encryption that's far better than openssl, yes
<whitequark> but that's not all; the socket layer has other useful functionality
<whitequark> reconnection with exponential backoff, queueing, etc
<whitequark> mind you I have some complaints about zmq as well, e.g. last time I looked, authentication errors were very opaque
<sb0> doesn't SSLv3 support PFS?
<whitequark> if you set your ciphersuites just right, yes
<whitequark> do you know how to do it correctly offhand?
<sb0> that sounds less painful than pulling the zmq dependency and configuring it
<whitequark> yeah, and then you have to deal with X.509 to do authentication
<sb0> and zmq is better there?
<whitequark> sure, you generate a curve25519 keypair. the authentication function gets the public key of the client. done
<whitequark> and while we're on it, generating a curve25519 keypair involves taking 40 random bytes.
<whitequark> that's all.
<sb0> well, isn't it possible to do something similar with X.509?
<whitequark> I'm not sure what your point is. there's a decent solution that works and you want to muck with openssl because installing libzmq is apparently too hard?
<whitequark> I've done what you suggest, though not with asyncio but with EventMachine and Ruby. zeromq is incomparably more convenient to work with
<sb0> SSL is standard and support for it ships with Python. dependencies and especially C/C++ ones can be messy, see how cr1901 struggled with the h5py install...
<whitequark> SSL is still an extension, and in fact you need libopenssl-dev
<sb0> will that play nice with quamash?
<whitequark> hmm, good question
<whitequark> oh
<whitequark> don't use that
<whitequark> use the streams API: https://aiozmq.readthedocs.org/en/0.6/stream.html
<whitequark> then it will run on top of quamash event loop just fine.
<whitequark> well, or if you don't want to, use this: https://aiozmq.readthedocs.org/en/0.6/core.html#aiozmq.create_zmq_connection
aeris_ has joined #m-labs
aeris has quit [Quit: en a pas]
aeris_ is now known as aeris
aeris has quit [Quit: Leaving]
aeris has joined #m-labs
<sb0> i wonder what the point of publishing kernel outputs are in ipython... multiple views of the same notebook in jupyter are not synchronized
<sb0> (since it's the same kernel, variables etc. are, but you can achieve that without this complicated messaging system)
aeris has quit [Quit: Leaving]
aeris has joined #m-labs
aeris has quit [Client Quit]
aeris has joined #m-labs
rohitksingh has quit [Ping timeout: 260 seconds]
<sb0> I really don't see what purpose this multi-socket mess inflicted by zmq serves
<sb0> a simple two-way stream of messages, similar to the usual python stdin+stdout, would work just as well
<whitequark> that's a different question
<sb0> everything is sequential and all
<sb0> yes, but seeing this mess does not improve my skepticism of zmq
<sb0> I actually tried to use it last year to implement what became artiq.protocols.sync_struct, and even this simple task does not fit into the zmq model
<sb0> you can pub/sub changes, but then you have a race condition with the initialization that needs to use a different socket
<whitequark> um, yeah
<whitequark> pub/sub model does not work if you have implicit state
<sb0> "At present, embedding IPython cannot be done from inside IPython. Run the code samples below outside IPython."
<sb0> i wonder what problem zmq solves, exactly. had they used file descriptor inheritance for IPC, I guess this would not be a problem.
<sb0> maybe their qt console widget can be recycled for artiq gui, but i really don't dig the rest
bentley` has quit [Ping timeout: 272 seconds]
<sb0> this thing opens no fewer than 5 TCP ports
<sb0> just for the "kernel"
Guest51191 has quit [Quit: This computer has gone to sleep]
<whitequark> can't use that on windows...
<whitequark> btw, new zmq has "resources" so you don't have to open five ports
<whitequark> (new = 4+)
<sb0> you can use that on windows with the msvcrt trick (used in myhdl) that I mentioned a while ago
mithro has joined #m-labs
rohitksingh has joined #m-labs
Mon_ has joined #m-labs
Mon_ is now known as Guest55711
Guest55711 has quit [Quit: This computer has gone to sleep]
rohitksingh has quit [Ping timeout: 250 seconds]
rohitksingh has joined #m-labs
mumptai has joined #m-labs
ylamarre has joined #m-labs
bentley` has joined #m-labs
rohitksingh has quit [Quit: Leaving.]
hozer has quit [Remote host closed the connection]
mumptai has quit [Quit: Verlassend]
aeris has quit [Read error: Connection reset by peer]
aeris has joined #m-labs