<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Nov 12, 2013, at 1:53 AM, Jean-Daniel Dupas <<a href="mailto:devlists@shadowlab.org">devlists@shadowlab.org</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br class="Apple-interchange-newline">* How realistic is it to implement a windows libc? A couple things that come to mind are:</div><div> - What is the "lowest level" interface that the libc is going to be built on top of (I'm clueless about windows, but for example Linux has a documented and stable syscall ABI, which is trivial to interoperate with; is there an equivalent of that on Windows? or Mac?)</div><div> - Are those interfaces stable and documented?</div></div></div></div></blockquote><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br></div><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;">At least on Darwin, I never saw any guarantee that the syscall will not change from one release to an other (IIRC, they already did it in the past). And I'm not even mentioning the mach syscalls.</span></div></div></blockquote><div><br></div><div>Right. A new libc for Darwin is far more complex than for Linux or FreeBSD, and Apple wouldn’t be interested in such a thing anyway. The syscall interface (among other details) is considered a private implementation detail and definitely changes release-to-release.</div></div><div><br></div><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">* Try to explore the realistic benefits of having our own libc. I'm not entirely convinced that having our own libc will be a huge win, or at least not enough to justify the huge amount of work it would entail. We seem to get along just fine (?; at least in my experience) without having to "own" the libc. What are the "pain points" that would be soothed by having our own libc, and on what platforms?</div></div></div></blockquote><br><div>Just MHO: In the abstract, it would be great for LLVM to have its own libc implementation: it makes it provide a more “out of the box” set of abstractions, and even if it *just* worked to make windows more “unix like”, it could be quite useful.</div><div><br></div><div>That said, before it would be accepted back into <a href="http://llvm.org">llvm.org</a>, it would have to have a clear purpose and a strong driving force behind it. Even projects that are clearly in scope for llvm (e.g. the “flang” fortran frontend) are expected to get to a point of critical mass before becoming an official part of llvm. We wouldn’t want to start such a big project to start out with a few motivated contributors, have them get distracted or pulled off onto other projects, then have it fizzle, and bitrot.</div><div><br></div><div>Particularly given that there are a number of high quality libc’s available from other sources, this seems low priority (again, this is my personal opinion, YMMV). OTOH, if some existing and established libc wanted to join LLVM, that could be really interesting.</div><div><br></div><div>-Chris</div></body></html>