<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On May 12, 2016, at 9:15 AM, Ankit Agarwal &lt;<a href="mailto:ankit@ankit.im" class="">ankit@ankit.im</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
3. We introduce/rename a new `Basic` module out of `Utility`. This matches a convention used in Clang, Swift, and llbuild for the "base support module". This module will define the "convenient" APIs for system services, shared ADTs, etc. and will sit on top of `libc`, `POSIX`, and `Foundation`. We should try to limit cross-platform adaption code to this layer -- if we need a `Foundation` API, but it is not yet implemented in such a way that use of that API is *syntactically* cross-platform (e.g., it needs different bridging behavior) then we should provide an abstraction in `Basic` that hides that divergence. The goal here is that any code above `Basic` can be written without fear of cross-platform incompatibility (which is a serious burden on developer productivity).<br class=""></blockquote><div class=""><br class=""></div><div class="">I agree with all the points. Do you think its better to create new module Basic off of Utility or just rename Utility to Basic? I think it might get confusing to decide where something goes if there are two such modules. Though if definition of Basic is to provide cross-platform I'd imagine Utility contains things like handy extensions to stdlib types and Basic also depends on Utility.<br class=""></div></div></div></div></div></blockquote><div><br class=""></div>We should basically rename Utility to Basic. How we do that rename is an open question... my inclination is to move each API individually to the "right" place until Utility is empty, then delete it. As part of moving each API we should decide where the right home for it is (POSIX, Basic, or other as-yet-to-be-defined modules).</div><div><br class=""></div><div>&nbsp;- Daniel</div><div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class="">&nbsp;</div></div>-- <br class=""><div class="">Ankit<br class=""><br class=""></div>
</div></div>
</div></blockquote></div><br class=""></body></html>