<nuki>
findlib: [WARNING] Interface topdirs.cmi occurs in several directories: /usr/lib/ocaml, /usr/lib/ocaml/compiler-libs
<nuki>
Ok
<nuki>
just reinstlal ocamlfind :)
<nuki>
Thanks perfect (no more @@@ocaml.ppx.content) !
bytbox has quit [Ping timeout: 264 seconds]
bytbox has joined #ocaml
malo has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
ygrek has joined #ocaml
kdef has quit [Quit: peace]
dmiles_afk has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
kakadu has quit [Remote host closed the connection]
madroach has quit [Ping timeout: 250 seconds]
madroach has joined #ocaml
<struktured>
I'm still trying to figure out the best way to publish ocaml project documentation on the web..is there some connection between the opam repo and automatic documentation publishing?
<struktured>
to be clear, I mean the docs generated via ocamldoc from the source code
<whitequark>
it publishes the docs to whitequark.github.io/ppx_deriving
<struktured>
whitequark: hm that's not bad at all, although I don't have any custom makefiles at the moment.
<struktured>
I could use script it and run when I tag
<struktured>
*just
<whitequark>
yes
avsm has quit [Quit: Leaving.]
ygrek has joined #ocaml
natrium1970 has joined #ocaml
<natrium1970>
I’ve seen a few instances where someone discourages using the Stream module, but I can’t find any specific raitonale for that. Any ideas?
waneck_ has joined #ocaml
<whitequark>
Drup: where was your Stream writeup? can't find it on mantis
<Drup>
(the third answer is to move your types to a type-only module)
<Drup>
(this is a quite common solution)
<natrium1970>
Re: Streams. I really don’t need the full functionality that the module provides. My needs are simple enough that I can write it myself. I was just trying to avoid reinventing the wheel.
<whitequark>
natrium1970: opam install gen
<joncfoo>
type only module. hmm, so then I'd do an include from any .ml file where I need it?
<Drup>
open, not include.
<joncfoo>
ah righ
<joncfoo>
thanks
<whitequark>
Drup: wow
<Drup>
?
<whitequark>
I pulled a few seconds before github delivered mail about that PR
<whitequark>
for a moment I wondered how come the change is already there
<Drup>
Well, it's obvious
<Drup>
I traveled through time to apply the patch
<Drup>
duh.
<whitequark>
of course
<Drup>
:D
WraithM has quit [Remote host closed the connection]
<joncfoo>
I've got type foo = { x:string } in bar.mli & bar.ml. In crux.ml I'm trying to access foo.x & I get warnings about "It is not visible in the current scope..."
<joncfoo>
how do y'all deal with this?
<Drup>
I personally don't and disable this warning, but some disagree >_>
<joncfoo>
would declaring a module called Type in bar.mli & sticking foo={...} in there work? along with open Bar.Type in crux.ml?
<whitequark>
that's one way to do it, although ugly
<joncfoo>
what would you recommend?
<whitequark>
disabling the warning
<joncfoo>
haha, really? is that what most people do?
<whitequark>
why not?
<Drup>
a bit of context about this warning may be needed: the desambiguation is a recent feature but some people find it dangerous (the compile guess what the field by looking through module boundaries) so it was decided to add an enabled-by-default warning
<joncfoo>
I suppose the compiler will halt if it really runs into some disambiguity
<Drup>
I personally consider this feature perfectly fine.
<whitequark>
of course
MrScout_ has joined #ocaml
<joncfoo>
gotcha
<joncfoo>
so basically turn off warnings 40 & 42
MrScout has quit [Ping timeout: 272 seconds]
MrScout_ has quit [Ping timeout: 240 seconds]
rand000 has quit [Quit: leaving]
darkf has joined #ocaml
travisbrady has quit [Quit: travisbrady]
SomeDamnBody has joined #ocaml
antegallya has quit [Ping timeout: 265 seconds]
darkf has quit [Ping timeout: 258 seconds]
ljs has quit [Quit: None]
darkf has joined #ocaml
darkf has quit [Changing host]
darkf has joined #ocaml
chambart has quit [Ping timeout: 244 seconds]
lordkryss has quit [Quit: Connection closed for inactivity]
rgrinberg has quit [Quit: Leaving.]
ontologiae has quit [Ping timeout: 245 seconds]
mcc has joined #ocaml
mcc has quit [Quit: This computer has gone to sleep]
<whitequark>
the domain suggests it could be something incredibly vain.
natrium1970 has joined #ocaml
<natrium1970>
When I copy text from a book book source and paste into utop, I get complaints about the encoding, and it just doesn’t work. Pasting into TexstEdit.app works fine (in the sense that the text appears correct). Is there some way on Mac to copy from PDF and paste into utop?
<whitequark>
encoding?
<whitequark>
oh, it probably has non-breaking spaces or something
<natrium1970>
Things like “type ‘a t” turn into “type a?? t”
<natrium1970>
Oops turns into “type a??a t"
<whitequark>
right, the quotes
<whitequark>
the book is broken.
<whitequark>
it should put ' (apostrophe) in the field where PDF stores copyable text
<nojb>
if val f = fun x y -> …, does currying (f x) allocate anything ?
<whitequark>
yes
<whitequark>
two words, to be specific
<whitequark>
I mean, you have to put x somewhere.
<nojb>
sure - just checking :)
<nojb>
thanks
<whitequark>
sorry, three words I think. caml_curry1, x, f
<natrium1970>
It seems like most documents in PDF format use right single quotation mark instead of apostrophe!
<whitequark>
it can even still appear the same, just copy correctly.
<whitequark>
incompetent publishers *shrug*
<natrium1970>
utop really should accept that as a synonym.
<whitequark>
no, it should not
<natrium1970>
*every* place I’m looking in PDF format does
<whitequark>
complain to the publisher.
<natrium1970>
Even Garrigue’s paper on polymorphic variants does it.
<whitequark>
changing language syntax because someone else can't use their tools correctly is absurd.
<whitequark>
it actually copies as complete garbage for me
<whitequark>
garrigue's paper.
nicoo has quit [Ping timeout: 250 seconds]
<natrium1970>
That paper’s code doesn’t paste into utop correctly, but it does paste intto my text editor., but it retains the single right quote instead of the apostrophe.
<whitequark>
it doesn't paste into my text editor as well (on linux via okular)
<natrium1970>
Ah. There’s an HTML version of the O’Reilly book, and it does use apostrophe. I wonder what the original document text was written in.
<rgrinberg>
whitequark: there has to be a better way to spin that
<whitequark>
well, you could add ruby to the benchmark.
<rgrinberg>
good idea. reminds of the old joke
<rgrinberg>
Q: When Nixon visited Moscow, he and Khrushchev had a race around the Kremlin. Nixon came the first. How should our media report on that?
<rgrinberg>
A: As follows: In the international running competition the General Secretary of the Communist Party took the honorable second place, while President Nixon came in next to last.
<whitequark>
lol
nojb has quit [Quit: nojb]
nojb has joined #ocaml
AlexRussia has quit [Ping timeout: 255 seconds]
mcc has quit [Quit: This computer has gone to sleep]
AlexRussia has joined #ocaml
samrat has joined #ocaml
<nullcat>
lol
Submarine has joined #ocaml
nojb has quit [Quit: nojb]
<MercurialAlchemi>
let g:netrw_dirhistmax =10
<MercurialAlchemi>
let g:netrw_dirhist_cnt =1
<MercurialAlchemi>
let g:netrw_dirhist_1='/home/emm/src/ocaml/driver'
<MercurialAlchemi>
grmbl
ontologiae has joined #ocaml
kapil__ has quit [Quit: Connection closed for inactivity]
AlexRussia has quit [Quit: WeeChat 1.1-dev]
topherB has quit [Quit: topherB]
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Submarine has quit [Remote host closed the connection]
Anarchos has joined #ocaml
manud has joined #ocaml
kakadu has joined #ocaml
SomeDamnBody has left #ocaml ["Leaving"]
arj has joined #ocaml
pgas has joined #ocaml
<whitequark>
gasche: I just discovered I can subscribe you to any mantis issues I want. (probably as a side effect as someone marking me a developer on mantis, for whatever reason.) So I will now use that to triage.
<adrien>
evil :P
<whitequark>
but effective (as many evil things are)
dav has quit [Ping timeout: 250 seconds]
dav has joined #ocaml
struktured has joined #ocaml
<companion_cube>
:_
<companion_cube>
:)
manud has quit [Quit: Be back later ...]
<nicoo>
:D
<gasche>
whitequark: I asked Damien to give you mantis rights months ago
<gasche>
(arond the this-poor-folk-volunteers-to-write-ppx-documentation episode)
<gasche>
(in the same vein, companion_cube has commit rights to Batteries)
<whitequark>
ohh, right
<whitequark>
anyway, I wrote five patches today and will write three more
NT__ has joined #ocaml
<gasche>
I've seen that
<whitequark>
this [@@ocaml.warning] hole is VERY deep
<whitequark>
it looks completely trivial.
<NT__>
I'm having an issue with Core.
<NT__>
I did the usual opam install utop core
<gasche>
as a general rule, I don't work on caml during the week, so your triaged bugs will wait
<whitequark>
hm, ok
<gasche>
(you were lucky twice by submitting PRs right during boring meetings)
<NT__>
But now I get a syntax error whenever I run "open Core.Std;;"
<NT__>
Any help guys?
<gasche>
NT__: we need a complete example and the precise error message
kakadu has quit [Remote host closed the connection]
relrod has quit [Ping timeout: 255 seconds]
mfp has quit [Ping timeout: 255 seconds]
mfp has joined #ocaml
relrod_ has joined #ocaml
luigy has joined #ocaml
_5kg has quit [Ping timeout: 256 seconds]
tane has joined #ocaml
<ygu>
Does someone know about htcaml ? When I try to compile, I get: "While finding quotation "html" in a position of "expr": There is no quotation expander available. Camlp4: Uncaught exception: Not_found"
<whitequark>
well, you can sorta do it in a horrible way
<Leonidas>
did I mention that llvm.moe is one of my favorite domains lately? :)
<Leonidas>
horrible is ok, this module is just awful and will have to be rewritten from scratch when we migrate to 3.6
<whitequark>
well
<whitequark>
convert it to int
<whitequark>
(nativeint)
<whitequark>
and make an LLVM function that takes int and casts it to a pointer.
<whitequark>
aaaalternatively, write a C stub that returns 'a and pass it to to_pointer directly.
<whitequark>
either works.
nojb has quit [Quit: nojb]
<Leonidas>
yes, I think I'll take the C stub route
badkins has joined #ocaml
avsm has quit [Quit: Leaving.]
AlexRussia has quit [Ping timeout: 258 seconds]
darkf has quit [Quit: Leaving]
AlexRussia has joined #ocaml
badkins_ has joined #ocaml
badkins has quit [Ping timeout: 256 seconds]
badkins has joined #ocaml
badkins_ has quit [Ping timeout: 264 seconds]
<Leonidas>
whitequark: if I have an lltype, I can use Llvm.size_of to get the size as llvalue, but how can I get out the actual number (probably as nativeint)?
<companion_cube>
Leonidas: what are you compiling again?
<whitequark>
it's actually an API of TargetMachine.
<whitequark>
it's in DataLayout because (crappy) reasons
<whitequark>
hmm, or maybe not, I don't remember
Submarine has quit [Ping timeout: 240 seconds]
Submarine has joined #ocaml
kapil__ has quit [Quit: Connection closed for inactivity]
<Leonidas>
companion_cube: we have a custom compiler that allows running unit tests which is done basically by taking the compiler output, loading it into llvm and executing the test functions.
<companion_cube>
sounds... violent
<whitequark>
... violent?
<whitequark>
I assure you this is not how violence looks.
<whitequark>
I *know*.
<Leonidas>
not the cleanest design *cough* but not my fault, done by someone else who moved on. I have to extend this with some features.
AlexRussia has quit [Ping timeout: 250 seconds]
<Leonidas>
I could rewrite this completely at some point, but I rather get it working in some way now and worry about how to fix the whole design later.
AlexRussia has joined #ocaml
Plazma has quit [Changing host]
Plazma has joined #ocaml
HrafnA has joined #ocaml
MercurialAlchemi has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
Arsenik has joined #ocaml
slash^ has joined #ocaml
_JokerDoom has joined #ocaml
JokerDoom has quit [Ping timeout: 258 seconds]
Yoric has quit [Remote host closed the connection]
samrat has joined #ocaml
Yoric has joined #ocaml
WraithM has joined #ocaml
<Leonidas>
whitequark: when I return a i8* from an LLVM function and use GenericValue.as_nativeint, this should get me the value of the pointer as integer, right?
<whitequark>
either that or assert
<Leonidas>
I'm asking this stupid question, because in the function I print it and it is nonzero, but when I use as_nativeint, I get a zero
<whitequark>
hmmm
<whitequark>
yeah, then it doesn't work properly.
<whitequark>
I don't know the GenericValue API.
<Leonidas>
how likely is it that it is broken? I'm beginning to question my sanity :(
<whitequark>
likely.
<whitequark>
I mean, it's known to be broken for all but basic usage.
Remyzorg has quit [Quit: WeeChat 1.0.1]
<whitequark>
maybe it's broken for basic usage too. that code hasn't been touched in years.
<Leonidas>
ok.
bytbox has quit [Read error: Connection reset by peer]
bytbox has joined #ocaml
octachron has joined #ocaml
nojb has joined #ocaml
axiles has quit [Ping timeout: 264 seconds]
axiles has joined #ocaml
nullcat has joined #ocaml
sheijk has joined #ocaml
shinnya has quit [Ping timeout: 250 seconds]
jonludlam has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Remote host closed the connection]
mcclurmc has joined #ocaml
Hannibal_Smith has joined #ocaml
Plazma has quit [Changing host]
Plazma has joined #ocaml
avsm has joined #ocaml
tharugrim has quit [Ping timeout: 244 seconds]
tharugrim has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
Yoric has quit [Remote host closed the connection]
Yoric has joined #ocaml
mcclurmc has joined #ocaml
avsm has quit [Quit: Leaving.]
robink has quit [Remote host closed the connection]
Yoric has quit [Ping timeout: 244 seconds]
psy has joined #ocaml
robink has joined #ocaml
sheijk has quit [Quit: .]
travisbrady has quit [Quit: travisbrady]
mcclurmc has quit [Remote host closed the connection]
octachron has quit [Quit: Leaving]
travisbrady has joined #ocaml
q66 has joined #ocaml
chambart has quit [Ping timeout: 272 seconds]
matason has quit [Ping timeout: 250 seconds]
englishm_ is now known as englishm
polazarus has joined #ocaml
englishm has quit [Changing host]
englishm has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 264 seconds]
rgrinberg has joined #ocaml
travisbrady has quit [Quit: travisbrady]
psy has quit [Disconnected by services]
psy_ has joined #ocaml
MrScout has joined #ocaml
larhat has quit [Quit: Leaving.]
dmiles_afk has quit [Ping timeout: 245 seconds]
mort___ has quit [Ping timeout: 272 seconds]
ocamlnoob has joined #ocaml
NoNNaN has joined #ocaml
<ocamlnoob>
Hello! As a complete noob, what all should I install to get started? I have installed opam and then switched to ocaml 4.02. Do I need utop? Any other libs which would be beneficial and used by others on a regular basis?
dmiles_afk has joined #ocaml
<ggole>
ocamlnoob: you don't *need* utop, but feel free to install it and play around.
<ocamlnoob>
ggole: Which repl should I install?
<vbmithr>
utop
<vbmithr>
it's not as if you have much choice :p
<ggole>
It's utop or the plain toplevel, up to you
<ggole>
More important to start programming imo
<ocamlnoob>
ggole: I agree. But having a good repl does help a lot. :)
<ocamlnoob>
What other libs do you recommend
<ggole>
I use the plain toplevel from within emacs
<ggole>
And... it's kind of terrible, actually
<ocamlnoob>
:)
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<ggole>
What sort of development are you interested in?
<ocamlnoob>
ggole: Learning ocaml. I am coming from Python world and just want to try my hands at ocaml. In Python, I would always install 'requests' library. I was wondering if their are any such essential and helpful libraries that all ocaml programmers tend to install
<ggole>
There are a couple of (largish) stdlib replacements
<tokenrove>
ocamlnoob: if you're working from emacs, it's worth getting merlin setup as well. speaking as someone who recently came back to ocaml development from a long hiatus, one thing i noticed is that there are a couple of alternative standard libraries that are worth considering.
<ggole>
That's Core and Batteries.
<ocamlnoob>
Core from Jane Street, right?
<ggole>
Yep.
<ocamlnoob>
ok. So merlin, utop, core, batteries. Unless I am doing any specialized dev, this should be what is recommended to have then.
<def`>
(ocp-indent)
<rgrinberg>
ocamlnoob: RWO should have this info as well
<rgrinberg>
although it doesn't really present options. Just tells you what to do
<Drup>
you can always compile to bytecode if you want fast compilation time :)
<companion_cube>
well, maybe there'll be an -O flag
<flux>
well, maybe that's one feature ocaml is lacking from c++
<flux>
horrendous compilation times
<ggole>
Great! That one has been a while in the making.
ocamlnoob has quit [Quit: Page closed]
travisbrady has joined #ocaml
rgrinberg has quit [Quit: Leaving.]
_andre has quit [Quit: leaving]
MrScout has joined #ocaml
tani has joined #ocaml
mcclurmc has joined #ocaml
jwatzman|work has joined #ocaml
tane has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Remote host closed the connection]
larhat has joined #ocaml
travisbrady has quit [Quit: travisbrady]
samrat has quit [Quit: Computer has gone to sleep.]
travisbrady has joined #ocaml
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
MrScout has quit [Remote host closed the connection]
MrScout has joined #ocaml
mcclurmc has joined #ocaml
polazarus has quit [Quit: Page closed]
MrScout has quit [Ping timeout: 258 seconds]
Yoric has joined #ocaml
ggole has quit []
rand000 has quit [Ping timeout: 240 seconds]
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
Yoric has quit [Remote host closed the connection]
Yoric has joined #ocaml
Yoric has quit [Remote host closed the connection]
shinnya has joined #ocaml
thomasga has quit [Quit: Leaving.]
<travisbrady>
Does anyone know if ppx_deriving_yojson is compatible with core? In utop this line “type x = Hi | Bye [@@deriving yojson];;” works normally but if I do “#require “core”;;” then it breaks
<travisbrady>
with Error: Parse error: ";;" expected after [str_item] (in [top_phrase])
nojb has quit [Quit: nojb]
<rgrinberg>
travisbrady: ppx isn't compatible with camlp4
<rgrinberg>
which I think #require "core" could pull in
<travisbrady>
Does that mean a project with a dep that uses camlp4 won’t work at all with ppx?
davine has joined #ocaml
<flux>
it means a single compilation unit cannot use both ppx and campl4 extensions
davine has left #ocaml [#ocaml]
<travisbrady>
Many of my projects use between ~3-12 libraries, so the presence of camlp4 is likely
<flux>
so technically it doesn't depend at all what its dependencies depend on
thomasga has joined #ocaml
<flux>
but in this case it has been configured that requiring core will also require the camlp4 syntax extension
<flux>
but you don't need the camlp4 syntax extension for using core
<flux>
well, based on what I know about core, I haven't actually used it
<flux>
but I doubt the syntax extensions it provides are really -required-
<travisbrady>
flux: thank you. So if I’d like to use ppx I need to find a way to use Core sans the camlp4 bits?
<flux>
yes
<flux>
probably you can find its META file
<flux>
and the META file has part with 'syntax'
<flux>
remove that part and it works
<flux>
perhaps there is some more elegant way
<Drup>
you shouldn't even need that
mcclurmc has quit [Remote host closed the connection]
<Drup>
I think someone got the issue ( struktured ?) and fixed it
<Drup>
so that core should not load camlp4
<travisbrady>
hmmm, I’m on the latest version of core (112.06.00) at least as far as opam is concerned
<companion_cube>
why the hell does core_bench depend on core
mcclurmc has joined #ocaml
<rgrinberg>
companion_cube: youd' think they use their stdlib replacement pervasively
<rgrinberg>
is it problematic?
<companion_cube>
well, it only makes me not wanting to touch any of their libs
nojb has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
<rgrinberg>
why? core_bench is mostly used as an app. dependencies shouldn't matter
<rgrinberg>
luckily for you however, there's alternatives
<rgrinberg>
:)
<companion_cube>
indeed
<companion_cube>
I'm happy with benchmark :p
<companion_cube>
at least type_conv doesn't pull core
<companion_cube>
(have to install it for oasis)
<Drup>
since type_conv is used inside core, that would be slightly backward
<companion_cube>
one never knows
chambart has joined #ocaml
<companion_cube>
o/ chambart
<travisbrady>
rgrinberg: have you given any thought to ppx_deriving_yojson for opium?
<rgrinberg>
travisbrady: i got rid of cow precisely for that
<rgrinberg>
although the json response helper currently uses the jsonm by default
<smondet>
travisbrady: have you tried the same thing with the normal/vintage ocaml toplevel? I think utop loads camlp4, so when you #require "core" the syntax extensions get in use
<companion_cube>
yeah, it's not clear how to combine ppx_deriving and jsonm right now
<travisbrady>
smondet: ahh, I have not. I’ll give that a go
<Drup>
smondet: utop doesn't load camlp4 by default
<Drup>
except if you tell him to
<smondet>
or maybe it is somewhere in a .ocamlinit file?
<Drup>
that's quite possible, if you are following RWO :)
Submarine has quit [Remote host closed the connection]
<struktured>
Drup: my PR for pa_test got merged in but I don't think pa_test got released yet
<Drup>
ok
<travisbrady>
smondet: that worked!
rand000 has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
<companion_cube>
I suppose it's for avoiding duplication of code between Yojson.Basic and Yojson.Safe
<flux>
:)
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
<companion_cube>
Martin Jambon is the creator of cppo, after all
malc_ has quit [Quit: leaving]
<rgrinberg>
i wish there was an easy way to support jsonm and yojson together :/
mcclurmc has quit [Remote host closed the connection]
<companion_cube>
yep :/
<companion_cube>
maybe something like ezjsonm supporting Yojson.Safe.t
<rgrinberg>
what's funny is that they both use polymorphic variants for "compatibility"
<rgrinberg>
i suppose they meant compatibility in theory rather in practice :D
<companion_cube>
well, it works well for [`Error of string | `Ok of 'a]
<Drup>
rgrinberg: no, it means people can be compatible with them, not that they are trying to be compatible with others :wink wink:
<rgrinberg>
*sigh*
mcclurmc has joined #ocaml
<smondet>
it also means you can create compatbility without dependency: you can use jsonm in your lib and provide a function that transforms to a type equal to yojson.basic.t without dependending on the library
<companion_cube>
indeed
<rgrinberg>
Drup: maybe i can implement some dynlink based register for json writers
<rgrinberg>
borrowing a design from a certain project
<rgrinberg>
:D
<Drup>
krkr x)
nojb has quit [Quit: nojb]
<Drup>
it's going to end so well.
<companion_cube>
Drup: can you confirm that dynlink plugins cannot have dependencies themselves?
antegallya has joined #ocaml
<Drup>
sure they can
<Drup>
oh, maybe you mean that you should -linkall
<Drup>
then "yes, probably, I don't know shit about dynlinks technicals"
<smondet>
companion_cube: you can use findlib to follow dependencies
<companion_cube>
eww
<smondet>
but you need to know your own deps to not load them twice is the plugin shares them
<smondet>
s/is/if/
<icicled>
does there exist a http types library?
<icicled>
something that is generic enough to work with that is not tied to a particular implemtnation of a http server?
struktured has quit [Ping timeout: 258 seconds]
<rgrinberg>
icicled: cohttp
nojb has joined #ocaml
nojb has quit [Client Quit]
badkins has quit [Read error: Connection reset by peer]