jemc changed the topic of #ponylang to: Welcome! Please check out our Code of Conduct => https://github.com/ponylang/ponyc/blob/master/CODE_OF_CONDUCT.md | Public IRC logs are available => http://irclog.whitequark.org/ponylang | Please consider participating in our mailing lists => https://pony.groups.io/g/pony
patroclos has quit [Ping timeout: 246 seconds]
gokr has quit [Ping timeout: 240 seconds]
khan has quit [Quit: khan]
khan has joined #ponylang
jemc has quit [Ping timeout: 246 seconds]
khan has quit [Client Quit]
khan has joined #ponylang
jemc has joined #ponylang
SenasOzys has quit [Ping timeout: 252 seconds]
Praetonus has quit [Quit: Leaving]
jemc has quit [Ping timeout: 260 seconds]
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
jemc has joined #ponylang
endformationage has quit [Quit: WeeChat 1.9.1]
jemc has quit [Ping timeout: 240 seconds]
gokr has joined #ponylang
patroclos has joined #ponylang
patroclos has quit [Ping timeout: 256 seconds]
dipin has quit [Quit: dipin]
khan has quit [Remote host closed the connection]
codec1 has joined #ponylang
codec1 has quit [Quit: Leaving.]
codec1 has joined #ponylang
SenasOzys has joined #ponylang
SenasOzys has quit [Read error: Connection reset by peer]
inoas has joined #ponylang
SenasOzys has joined #ponylang
codec1 has quit [Quit: Leaving.]
alxs has joined #ponylang
inoas has quit [Ping timeout: 246 seconds]
codec1 has joined #ponylang
inoas has joined #ponylang
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
alxs has joined #ponylang
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
alxs has joined #ponylang
inoas has quit [Quit: inoas]
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
kolb has left #ponylang [#ponylang]
dipin has joined #ponylang
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
inoas has joined #ponylang
alxs has joined #ponylang
jemc has joined #ponylang
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
gokr has quit [Ping timeout: 256 seconds]
alxs has joined #ponylang
aturley has quit [Quit: aturley]
aturley has joined #ponylang
aturley has quit [Read error: Connection reset by peer]
aturley_ has joined #ponylang
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
inoas has quit [Quit: inoas]
patroclos has joined #ponylang
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
user10032 has joined #ponylang
aturley_ has quit [Quit: aturley_]
codec1 has quit [Read error: Connection reset by peer]
aturley has joined #ponylang
codec1 has joined #ponylang
alxs has joined #ponylang
kal has joined #ponylang
kal has quit [Client Quit]
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
alxs has joined #ponylang
xllndr has joined #ponylang
khan has quit [Quit: khan]
khan has joined #ponylang
alxs has quit [Quit: Computer's gone to sleep. ZZZzzz…]
khan has quit [Client Quit]
khan has joined #ponylang
alxs has joined #ponylang
alxs has quit [Ping timeout: 240 seconds]
<strmpnk> Are there good examples for the AmbientAuth being used with a more specific capability?
<strmpnk> I see it in places like HTTPClient but I'm not sure I see the intention there.
<strmpnk> It seems like it could have interesting limits on the runtime expression of an API but I wonder why it was applied here is all.
<strmpnk> I guess I could ask a more pointed question: are object capabilities intended to be used here to create certain guarantees around API expression, including security?
<strmpnk> Theoretically meaning I could have a pony library that can't to random IO without explicit passing of one kind of authority or another which can build the required authority.
alxs has joined #ponylang
<jemc> yes, I think that's a reasonable understanding of the intention
<jemc> Pony has roots in capabilities-based security: https://en.wikipedia.org/wiki/Capability-based_security
<jemc> there's a basic example of this in `net/auth.pony`: https://github.com/ponylang/ponyc/blob/master/packages/net/auth.pony
<jemc> basically, creating a tree of primitives that can only be accessed if you have one of the permissions higher up the tree
<jemc> so that capabilities can only decay, and never escalate, as enforced by the type system
<strmpnk> Cool. I've read about E and I've built capability based APIs but the static guarantees are interesting so I wasn't sure if there were more reasons for this feature.
<jemc> there's also a more complex example in `FileAuth`, where holding an object grants you authority to do some file-based operations on a specific path, and subpaths of it: https://github.com/ponylang/ponyc/blob/master/packages/files/file_path.pony
<strmpnk> Random second question, since classes allocate space for a descriptor, I assume there is no way to allocate a collection of classes without the descriptor. With that assumption, is it frowned upon to use structs outside of the FFI when I might want more specific memory layout?
<strmpnk> Ah. I like the FilePath example.
<jemc> I'm curious - what context outside of FFI do you want a specific memory layout?
alxs has quit [Ping timeout: 264 seconds]
<strmpnk> Well, not entirely free of the FFI but it'd be useful to have contiguous memory for structs for things which are lazily serialized.
<strmpnk> The lack of tags unfortunately monomorphize the structs but an example where this is handy is an mmaped file with relative offsets for data (lets say, a big graph).
<jemc> hm, I may be misremembering, but I *think* that an Array of structs will give you a contiguous memory of struct *pointers*, but the struct members themselves won't be in contiguous memory
<strmpnk> Yeah. I've been told they work like "in C".
<strmpnk> sidenote: Though I do see some problems with the FFI on windows (set aside for now since I have other things to look into). I'll work on getting something here but I think LLVM is generating invalid calls even though the 64bit calling convention should be compatible.
<strmpnk> (lldb is unfortunately not very capable on windows, so I need to find another way to debug that issue)
alxs has joined #ponylang
<strmpnk> On linux though, it works like I've been told.
<jemc> ah, interesting
<jemc> if you can file a ticket with more info, we can ask somebody from the windows side of our community to help you take a look
<jemc> meanwhile, if your goal is to have a specific memory layout, I don't think it's an anti-pattern to use structs
<jemc> it's usually an anti-pattern when someone wants to do so for a different reason
<jemc> but just remember that with structs you miss out on a few type system features
alxs has quit [Ping timeout: 264 seconds]
<strmpnk> Yeah. Lots of polymorphism goes out the window since safety is required.
<strmpnk> Tweeting about Pony I get followers like: https://mobile.twitter.com/carolinetowning Lots of pretty horse art.
xllndr has quit [Quit: Leaving]
khan has quit [Quit: khan]
khan has joined #ponylang
endformationage has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Quit: khan]
khan has joined #ponylang
codec1 has quit [Quit: Leaving.]
khan has quit [Quit: khan]
khan has joined #ponylang
khan has quit [Client Quit]
khan has joined #ponylang
user10032 has quit [Quit: Leaving]
khan has quit [Read error: Connection reset by peer]
khan has joined #ponylang
patroclos has quit [Ping timeout: 264 seconds]