3 ms·
Pretty easy to get llvm segfaults, I got that with pony also in development versions. The difference to rust is that this happens with rust compiled binaries al
by rurban 5y ago
Pretty easy to get llvm segfaults, I got that with pony also in development versions. The difference to rust is that this happens with rust compiled binaries also at run-time, in pony very rarely.
https://github.com/rust-lang/rust/issues?q=is%3Aissue+SIGSEGV https://github.com/rust-lang/rust/issues?q=is%3Aissue+SIGSEG... => 87 + 291
vs https://github.com/ponylang/ponyc/issues?q=is%3Aissue+SIGSEGV https://github.com/ponylang/ponyc/issues?q=is%3Aissue+SIGSEG... => 11 + 50
Now compare that to a safe systems language, e.g. sbcl: https://bugs.launchpad.net/sbcl/+bugs?field.searchtext=SIGSEGV https://bugs.launchpad.net/sbcl/+bugs?field.searchtext=SIGSE... => 1 (invalid)
or clisp: https://sourceforge.net/p/clisp/bugs/?q=%7B%22status%22%3A+%7B%22%24nin%22%3A+%5B%22closed%22%2C+%22closed-accepted%22%2C+%22closed-duplicate%22%2C+%22closed-fixed%22%2C+%22closed-invalid%22%2C+%22closed-out-of-date%22%2C+%22closed-postponed%22%2C+%22closed-rejected%22%2C+%22closed-remind%22%2C+%22closed-wont-fix%22%2C+%22closed-works-for-me%22%5D%7D%7D&limit=25&page=0&sort=ticket_num%20desc&filter=%7B%22_milestone%22%3A%5B%22segfault%22%5D%7D&columns-0.name=ticket_num&columns-0.sort_name=ticket_num&columns-0.label=Ticket%20Number&columns-0.active=on&columns-1.name=summary&columns-1.sort_name=summary&columns-1.label=Summary&columns-1.active=on&columns-2.name=_milestone&columns-2.sort_name=custom_fields._milestone&columns-2.label=Milestone&columns-2.active=on&columns-3.name=status&columns-3.sort_name=status&columns-3.label=Status&columns-3.active=on&columns-4.name=assigned_to&columns-4.sort_name=assigned_to_username&columns-4.label=Owner&columns-4.active=on&columns-5.name=reported_by&columns-5.sort_name=reported_by&columns-5.label=Creator&columns-5.active=on&columns-6.name=created_date&columns-6.sort_name=created_date&columns-6.label=Created&columns-6.active=on&columns-7.name=mod_date&columns-7.sort_name=mod_date&columns-7.label=Updated&columns-7.active=on&columns-8.name=labels&columns-8.sort_name=labels&columns-8.label=Labels&columns-8.active=&columns-9.name=_priority&columns-9.sort_name=_priority&columns-9.label=Priority&columns-9.active=on https://sourceforge.net/p/clisp/bugs/?q=%7B%22status%22%3A+%...
=> 15
- woodruffw 5y agoNot to besmirch Pony (I think it's a very interesting language), but isn't some of this a base sampling error? There are probably a few orders of magnitude more engineers writing Rust (and therefore running `rustc`), so we'd expect crashes in Rust to surface more frequently.
- rurban 5y agoNot in memory safe languages, sorry.
- woodruffw 5y agoI'm not sure I understand. Rust is memory safe, and the memory unsafety happening here isn't in Rust itself: an IR generation bug in Rust is causing memory unsafety in LLVM, which is written in C++. (Besides: If GitHub's stats are correct, `ponyc` seems to be >60% C and C++?)
- saghm 5y agoCompilers for memory-safe languages can't have bugs in them?
- 3836293648 5y agoCompilers for memory safe languages written in the same memory safe languages should be expected to have to same guarantees as any other program written in that language
- UncleEntity 5y agoI think that’s the fifth Futamura projection — compiling a compiler with itself cancels out bugs.
- gpm 5y ago> The difference to rust is that this happens with rust compiled binaries also at run-time, The list of issues you linked in an apparent attempt to support this claim are almost all (or maybe even all) compile time crashes not runtime crashes...
- ergl 5y agoPony committer here, I don't think this comparison is very fair, Rust has way more users, and thus way more eyes looking at it and reporting bugs. We've also had a few runtime segfauts before due to LLVM (mainly when porting to new platforms, like Apple's M1), and we try hard to fix them when we find them.