Commit Graph
496 Commits
Author SHA1 Message Date
Jon Meow 4290e1845b Add a not-fully-functional C++ config for darwin (#228) 2020-12-28 14:44:11 -08:00
Chandler CarruthandJon Meow a9c70c1057 Clean up references to the carbon-toolchain repository. (#226)
Now that we've centralized on a monorepo, tidy up some lingering
references.

For the `pr_comments.py` script, I've left the flag in place to select
a repository as it seems useful functionality to have available even if
we don't expect to need it in the near term. That said, I can pull it
out if folks prefer.

I haven't updated any of the *proposals* because it seems better to
leave those as-is from when they were written. The references seem
unlikely to be confusing to me. Happy for suggestions if needed there
though.

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-12-15 16:27:31 -08:00
Sidney HummertandChandler Carruth 73791d4784 Decision for #175: C++ interoperability goals (#200)
* Decision for #175: C++ interoperability goals

* Update proposals/p0175_decision.md

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>

* Prettified suggested changes

* Update table of contents

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2020-12-08 17:22:20 -08:00
Chandler Carruth 8f9609c53b Move to by-value friend comparison operator definitions. (#222)
This is often a (much) better option for this code as we have many types
that are just an integer, pointer, or enum of data that would be much
more efficient as a by-value parameter. It is also a cleaner design in
most cases.

One place can't migrate in this way: iterators that use the LLVM CRTP
library for filling out iterator methods. The CRTP dispatch expects
operators to be actual members, and so those are left as-is in this
patch.
2020-12-08 15:38:46 -08:00
Chandler Carruth c3d951599d Try to move towards the Google style guide declaration order. (#221)
This patch tries to make everything adhere to the Google declaration
order. This is tricky as there doesn't appear to be a `clang-tidy` check
that helps us here at all.

One of the complex cases are the `enum`-wrapping classes we use. These
need to have a *public* conversion operator to the nested `enum` type to support
`switch` statements and the like. However, this makes it impossible to
fully respect the Google declaration order. We need to define the enum
type before the public API in order to use it in contexts like the
conversion operator. Even defining out-of-line won't help avoid this. It
is weird to have a type in the public API that is private, but again
this is only intended to be used for implicit conversions within
a `switch` statement or a `case` label. In one case, we had the
non-conforming order of declaration. I've added a comment to explain why
there. In the other case, the conversion operator is actually *private*
rather than public, which doesn't actually work in practice. I've made
this public and moved the declaration order to match with a matching
comment.
2020-12-08 15:35:26 -08:00
Jon Meow 03f77d7b25 Add -g explicitly per https://reviews.llvm.org/D80391 (#224) 2020-12-08 15:12:54 -08:00
Chandler Carruth d4a2d435b8 Enable most relevant clang-tidy checks and fix uncovered issues. (#220)
Most of these were fixed automatically (including things like adding
`[[nodiscard]]` and such). A number of others required manual edits.
I think all of them were pretty nice improvements.

There were a few places where the issues really stem from external
constraints and I've disabled the checks: GoogleTest macros or the
specific LibFuzzer entry points.

The only other places I disabled are the implicit conversions to
a private `enum` in the classes wrapping those `enum`s. These implicit
conversions are necessarily implicit to serve their only purpose:
enabling their use in `switch` statements and `case` labels. When these
were highlighted, it showed that one of these was actually converting to
an *`int`*. I've switched that to use the private `enum` instead as
doing so is important to enable warnings on non-covering `switch`
statements over than `enum`. And indeed, there is a `switch` that was
was implicitly relying on falling through in this way, so I've added the
explicit documentation of the intentional pattern to address that
warning.

Sorry this is so large, all of this somewhat fell out of enabling the
`clang-tidy` checks. If it is too difficult to review as lump, I can
work on breaking it apart as needed. Just let me know.
2020-12-08 14:43:37 -08:00
Jon Meow 2efbe1074e Rename github to github_tools so that modules don't conflict with PyGithub (#223) 2020-12-08 09:06:28 -08:00
Chandler Carruth 0c34e65c1c Fix the clang-tidy naming settings. (#219)
The term "constant" in this setting seems to actually mean anything that
is `const` qualified. For Carbon code, anything that should actually use
`CamelCase` should also use `constexpr` which has its own naming setting
and is correct. With this setting change and making a test variable
`constexpr`, clang-tidy is happy with all the names.
2020-12-08 02:07:06 -08:00
Chandler Carruth 27386db279 Require braces on conditions and loops. (#218)
The rationale and rule for this was added in #194 to the C++ style guide
we are using for Carbon.

I've applied the automated fixes from running `clang-tidy` over all the
code, and then run `clang-format` afterward.

There are a few places where `clang-format` fixed a formatting issue
that snuck through in prior commits. These were rare enough that it
didn't seem worth splitting them out into a separate change.
2020-12-08 02:03:43 -08:00
Chandler Carruth a7b0e71ab2 Add a fresh fuzz corpus for the parse tree. (#217)
This was generated using the same steps as outlined for the lexer:
```
mkdir /tmp/new_corpus
./bazel-bin/parser/parse_tree_fuzzer -jobs=N /tmp/new_corpus
```
After some time, I stopped the fuzzer and then minimized and merged the
corpus:
```
rm parser/fuzzer_corpus/empty
./bazel-bin/parser/parse_tree_fuzzer -merge=1 parser/fuzzer_corpus /tmp/new_corpus
```

I'll add this short version to documentation in another PR.
2020-12-08 01:59:27 -08:00
Chandler CarruthandJon Meow 3512c2218f Merge parser library from the toolchain repository. (#214)
Only change is to update the path to the fuzzer build extension.

Original main commit message:

> Add an initial parser library. (#30)
>
> This library builds a parse tree, very similar to a concrete syntax
> tree. There are no semantics here, simply introducing the basic
> syntactic structure.
>
> The current focus has been on the APIs and the data structures used to
> represent the parse tree, and not on the actual code doing the
> parsing. The code doing the parsing tries to be reasonably efficient
> and reasonably easy to understand recursive descent parser. But there
> is likely much that can be done to improve this code path. A notable
> area where very little thought has been given yet are emitting good
> diagnostics and doing good recovery in the event of parse errors.
>
> Also, this code does not try to match the current under-discussion
> grammar closely. It is only partial and reflects discussions from some
> time ago. It should be updated incrementally to reflect the current
> expected grammar.
>
> The data structure used for the parse tree is unusual. The first
> constraint is that there is a precise one-to-one correspondence
> between the tokens produced by the lexer and the nodes in the parse
> tree. Every token results in exactly one node. In that way, the parse
> tree can be thought of as merely shaping the token stream into a tree.
>
> Each node is also represented with a fixed set of data that is densely
> packed. Combined with the exact relationship to tokens, this allows us
> to fully allocate the parse tree's storage, and to use a dense array
> rather than a pointer-based tree structure.
>
> The tree structure itself is implicitly defined by tracking the size
> of each subtree rooted at a particular node. See the code comments for
> more details (and I'm happy to add more comments where necessary). The
> goal is to minimize both the allocations (one), the working set size
> of the tree as a whole, and optimize common iteration patterns. The
> tree is stored in postorder. This allows depth-first postorder
> iteration as well as topological iteration by walking in reverse.
>
> Building the parse tree in postorder is a natural consequence of the
> grammar being LR rather than LL, which is a consequence of supporting
> infix operators.
>
> As with the Lexer, the parser supports an API for operating on the
> parse tree, as well as the ability to print the tree in both
> a human-readable and machine-readable format (YAML-based). It includes
> significant unit tests and a fuzz tester. The fuzzer's corpus will be
> in a follow-up commit.
>
> This is the largest chunk of code already written by several of us
> prior to open sourcing. (There are a few more pieces, but they are
> significantly smaller and less interesting.) If there are major things
> that folks would like to see happen here, it may make sense to move
> them into issues for tracking. I have tried to update the code to
> follow the style guidelines, but apologies if I missed anything, just
> let me know. We also have issues #19 and #29 to track things that
> already came up with the lexer.

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-12-08 01:52:43 -08:00
Chandler CarruthandJon Meow 3995fc2d6c Merge lexer from the toolchain repository. (#213)
The only change here is to update the fuzzer build extension path.

The main original commit message:

> Add an initial lexer. (#17)
>
> The specific logic here hasn't been updated to track the latest
> discussed changes, much less implement many aspects of things like
> Unicode support.
>
> However, this should lay out a reasonable framework and set of APIs.
> It gives an idea of the overall lexer architecture being proposed. The
> actual lexing algorithm is a relatively boring and naive hand written
> loop. It may make sense to replace this with something generated or
> other more advanced approach in the future, getting the implementation
> right was not the primary goal here. Instead, the focus was entirely
> on the architecture, encapsulation, APIs, and the testing
> infrastructure.
>
> The architecture of the lexer differs from "classical" high
> performance lexers in compilers. A high level summary:
>
> -   It is eager rather than lazy, lexing an entire file.
> -   Tokens intrinsically know their source location.
> -   Grouping lexical symbols are tracked within the lexer.
> -   Indentation is tracked within the lexer.
>
> Tracking of grouping and indentation is intended to simplify the
> strategies used for recovery of mismatched grouping tokens, and
> eventually use indentation.
>
> Folding source location into the token itself simplifies the data
> structures significantly, and doesn't lose any fidelity due to the
> absence of a preprocessor with token pasting.
>
> The fact that this is an eager lexer instead of a lazy lexer is
> designed to simplify the implementation and testing of the lexer (and
> subsequent components). There is no reason to expect Carbon to lex so
> many tokens that there are significant locality advantages of lazy
> lexing. Moreover, if we want comparable performance benefits, I think
> pipelining is a much more promising architecture than laziness. For
> now, the simplicity is a huge win.
>
> Being eager also makes it easy for us to use extremely dense memory
> encodings for the information about lexed tokens. Everything is
> created in a dense array, and small indices are used to identify each
> token within the array.
>
> There is a fuzzer included here that we have run extensively over the
> code, but currently toolchain bugs and Bazel limitations prevent it
> from easily building. I'm hoping myself or someone else can push on
> this soon and enable the fuzzer to at least build if not run fuzz
> tests automatically. We have a significant fuzzing corpus that I'll
> add in a subsequent commit as well.

This also includes the fuzzer whose commit message was:

> Add fuzz testing infrastructure and the lexer's fuzzer. (#21)
>
> This adds a fairly simple `cc_fuzz_test` macro that is specialized for
> working with LLVM's LibFuzzer. In addition to building the fuzzer
> binary with the toolchain's `fuzzer` feature, it also sets up the test
> execution to pass the corpus as file arguments which is a simple
> mechanism to enable regression testing against the fuzz corpus.
>
> I've included an initial fuzzer corpus as well. To run the fuzzer in
> an open ended fashion, and build up a larger corpus:
> ```shell
> mkdir /tmp/new_corpus
> cp lexer/fuzzer_corpus/* /tmp/new_corpus
> ./bazel-bin/lexer/tokenized_buffer_fuzzer /tmp/new_corpus
> ```
>
> You can parallelize the fuzzer by adding `-jobs=N` for N threads. For
> more details about running fuzzers, see the documentation:
> http://llvm.org/docs/LibFuzzer.html
>
> To minimize and merge any interesting new inputs:
> ```shell
> ./bazel-bin/lexer/tokenized_buffer_fuzzer -merge=1 \
>     lexer/fuzzer_corpus /tmp/new_corpus
> ```

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-12-08 01:49:25 -08:00
Chandler Carruth b72294aa57 Merge the diagnostics library from the toolchain repo. (#212)
Main original commit message:

> Add stubs of a diagnostic emission library. (#13)
>
> This doesn't have much wired up yet, but tries to lay out the most
> primitive API pattern.
2020-12-08 01:46:14 -08:00
Chandler CarruthandJon Meow 751ee936a8 Update our CODEOWNERS based on the merging repos. (#206)
We've already started the merge, but this tries to lay out a reasonable
trajectory for things to move along.

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-12-08 01:36:28 -08:00
Chandler Carruth 2ddf0936fd Merge the source library from the toolchain repository. (#210)
This library manages buffers of source code, either in-memory or mapped
from the filesystem. At the moment it is a bit simplistic and assumes
`mmap` is available in its implementation details. We should make this
more portable in the future, but this is currently just a direct copy
from the toolchain repository.
2020-12-04 22:39:11 -08:00
Chandler CarruthandJon Meow d7143521f6 Merge the ignored words from the toolchain repo. (#209)
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-12-04 22:35:43 -08:00
Chandler Carruth def2e65ffa Add .clang-tidy and compile_flags.txt to enable Clang-based tooling. (#208) 2020-12-04 22:32:14 -08:00
Chandler Carruth 6aae31b65b Merge LLVM and Bazel infra from the toolchain repository. (#207)
The Bazel bits are collected into a directory and given less confusing
names (I hope). Other than names, everything is a direct copy from the
toolchain repository without any edits.

A few files needed to be merged in:
- `.gitignore`
- `.pre-commit-config.yaml`

Subsequent commits will add relevant C++ infrastructure and then the
source code itself.
2020-12-04 19:26:07 -08:00
Jon Meow e3584dce01 Switch build/site to build-site in order to keep symlinks working (#211)
The jekyll build keeps top-level without expanding them. So the site works, but the publish copy failed because some symlinks to files that aren't visible through the site (like CONTRIBUTING.md, versus the site's CONTRIBUTING.html) didn't work.
2020-12-04 16:17:36 -08:00
Jon Meow f2d48f1bd0 Move the jekyll sidebar to a python script for consistent generation. (#205)
One implication here is that both proposals/README.md and the website should use basically the same format for their proposal lists. Another subtle change is that the website sidebar was previously sorted by *filename*, and is now sorted by *title*, which seems better because it's something that readers can see.

Enumerating why files change:

- gen_sidebar.py is the centerpiece, with a couple helpful functions for re-use elsewhere
- Delete the old sidebar html includes
- Modify the Makefile to handle gen_sidebar.py reasonably well (let's be honest... I'm not great at Makefiles)
- Move proposal listing out to its own file (proposals.py) for re-use
- Add a few PYTHONPATH things + `__init__.py` files to get modules importing correctly (may be a better way at this, I've hit a wall though).
2020-12-04 08:26:25 -08:00
Jon Meow b2f005c1bb Publish interop goals (#202)
This takes #175 and publishes it as interop goals. I've made a few small editorial changes, but the main addition is the "Offer equivalent support for languages other than C++" non-goal which I thought may be useful (in particular, it can be used to clarify why this directory is "interoperability" and not "interoperability_cpp").
2020-12-03 13:50:04 -08:00
Jon Meow 58554b87ae Fix website dir move from merge (#204) 2020-12-03 13:29:21 -08:00
Chandler Carruth 79ad0bf228 Make the rules for braces on ifs and loops simpler and more strict. (#194)
This simply requires braces and doesn't allow single-line `if`s. There
is some minor readability loss here, but it seems minor and provides
extremely simple rules which I'd value.

I can also trivially get clang-tidy to both check for this and
automatically fix code to conform.

Just sending this as a code review as it seems fully in the direction of
the style guide approved by the core team and I've heard no real
objections. That said, if anyone is concerned, I'm happy to take it
through the proposal process.
2020-12-02 20:07:13 -08:00
Jon Meow cc4211442f Merge carbon-project-tools back into carbon-lang (#203)
As proposed at https://forums.carbon-lang.dev/t/merged-repo-structure/174:

- carbon-lang:/src/jekyll -> carbon-lang:/website/jekyll
- carbon-lang:/src/scripts -> carbon-lang:/proposals/scripts
- carbon-project-tools:/firebase -> carbon-lang:/website/firebase
- carbon-project-tools:/github -> carbon-lang:/github
2020-12-02 09:53:14 -08:00
Jon Meow 1a85ea2225 Decision for: Basic Syntax #162 (#190)
- [Proposal PR](https://github.com/carbon-language/carbon-lang/pull/162)
- [RFC topic](https://forums.carbon-lang.dev/t/rfc-basic-syntax/142)
- [Decision request](https://forums.carbon-lang.dev/t/request-for-decision-basic-syntax-162/165)
- [Decision announcement](https://forums.carbon-lang.dev/t/accepted-basic-syntax-162/170)

Tracking issues filed as part of decision:

- Should there be a function type? #191
- Should types be values? #192

Finalized on 2020-11-24
2020-12-01 13:18:59 -08:00
136a8ae470 Basic Syntax (#162)
* first draft of proposal for basic syntax

* rename proposal

* formating

* fixing typos

* precendence and associativity

* minor edit

* added abstract syntax

* some revisions based on feedback from meeting today

* optional return type

* oops, not optional for function declarations

* replacing abbreviations with full names

* name changes

* Update proposals/p0162.md

Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>

* removed = from precedence table

* for fun decl, back to optional return type, shorthand for void return

* more fiddling with return types

* change base case of statement_list to empty

* added pattern non-terminal

* added  expression style function definitions

* change && to and, || to or

* change  and  to have equal precedence

* updating text to match grammar, fix typo in grammar regarding pattern

* adding trailing comma thing to tuples

* removed 'alt' keyword, not necessary

* flipped expression and pattern

* added period for named arguments and documented the reason

* change alternative syntax to use tuple instead of expression

* comment about abstract syntax

* code block language annotations

* added alternative designs, some cleanup for pre-commit

* spell checking

* filled out the TOC

* minor edits

* minor edit

* trying to fix pre-commit error

* changes from pre-commit?

* changes based on meeting today

* describe alternatives regarding methods

* more rationale in discussion of alternatives

* addressing comments

* typo fix, added text about next steps

* removed *, changed a ! to not

* Update proposals/p0162.md

Co-authored-by: Geoff Romer <gromer@google.com>

* edits from feedback

* pre-commit

* added second reason for period in field initializer

* added executable semantics, fixed misunderstanding regarding associativity

* update README

* added a paragraph about tuples and tuple types

* Update proposals/p0162.md

Co-authored-by: josh11b <josh11b@users.noreply.github.com>

* addressing comments from josh11b

* Update executable-semantics/README.md

Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>

* link to implicit parameters in generics proposal

* added non-terminal for designator as per geoffromer's suggestion

* changed handling of tuples in function call and similar places as per josh11b and zygoloid

* moving code to separate PR

Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: josh11b <josh11b@users.noreply.github.com>
2020-12-01 11:55:48 -05:00
Jon Meow e195b35a73 C++ interoperability goals (#175)
Related threads:

-  From austern, [Initial draft of C++ Interoperability principles doc #62](https://github.com/carbon-language/carbon-lang/pull/62)
-  From me, [Carbon <-> C/C++ interoperability #80](https://github.com/carbon-language/carbon-lang/pull/80)
    - [Doc](https://docs.google.com/document/d/1va8VgvDdA966WG3znJyUrlComYqNfNBV7__hUd9XxxU/edit)
    - [Ideas topic](https://forums.carbon-lang.dev/t/draft-carbon-c-c-interoperability/77)
    - [RFC topic](https://forums.carbon-lang.dev/t/rfc-carbon-c-c-interoperability/89)
- From chandlerc, [Interop implementation strategies](https://forums.carbon-lang.dev/t/interop-implementation-strategies/108)

For this PR:

- [RFC topic](https://forums.carbon-lang.dev/t/rfc-c-interoperability-goals-175/156)
- [Decision topic](https://forums.carbon-lang.dev/t/request-for-decision-c-interoperability-goals/171)
- [Decision announcement](https://forums.carbon-lang.dev/t/accepted-c-interoperability-goals/175)
- [Decision PR](https://github.com/carbon-language/carbon-lang/pull/200)
2020-11-25 09:06:44 -08:00
Sidney HummertandJon Meow 7b7cf1a10b Decision for 0063: Criteria for Carbon to go public (#187)
* Decision for 0063: Going Public

* Update proposals/p0063_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Update proposals/p0063_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Update p0063_decision.md

* Update README.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-11-19 10:41:22 -08:00
Bryce Adelstein Lelbach aka wash b8750e6c4b Criteria for Carbon to go public (#63)
- [Google Doc](https://docs.google.com/document/d/1Uir4sc1HuT5pOzRrFDnbuClzSYBEwE2Unbabr28e8iw/edit)
- [Ideas](https://forums.carbon-lang.dev/t/going-public-doc/139)
- [RFC](https://forums.carbon-lang.dev/t/rfc-criteria-for-carbon-to-go-public/146)
- [Decision announcement](https://forums.carbon-lang.dev/t/accepted-criteria-for-carbon-to-go-public/167)
2020-11-17 14:13:46 -08:00
Jon Meow 79a9b51d07 Update pre-commits, add and address flake8 (#195)
Adopts new copyright and markdown toc checks.

The new toc check generates the toc header, so that's why all the md files changed (this had felt better to me for the long-term, more auto-generated content)
2020-11-13 16:34:23 -08:00
Jon Meow 657bd66b9c Fix proposal script to handle copyright (#197)
`.tmp` -> `.tmp.md` causes the right copyright to be chosen (new issue due to the check-copyright pre-commit)

The `_get_proposals_dir` changes are to allow pytest to be run from any directory.
2020-11-13 16:32:11 -08:00
f44cf22924 Add a C++ style guide for the project (#113)
When writing C++ code for Carbon, we want to keep all of our code consistent,
easy to learn, and help avoid spending undue code review time arguing about
the same core style and idiomatic issues.

This adopts the Google C++ style guide as a baseline, and then makes minimal,
focused additions and adjustments to it to suit the needs of Carbon.

Co-authored-by: Thomas Köppe <tkoeppe@google.com>
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: Geoff Romer <gromer@google.com>
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
Co-authored-by: austern <austern@google.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
2020-11-13 00:49:54 -08:00
Jon Meow 94e065d9d2 Automated fixes using check-google-doc-style (#193)
With one manual ignore in the markdown style proposal, because it's explicitly listing disallowed terms.
2020-11-12 10:31:26 -08:00
Jon Meow bb1ad5478f Decision for: Add a C++ style guide #113 (#181)
-   [Proposal PR](https://github.com/carbon-language/carbon-lang/pull/113)
-   [RFC topic](https://forums.carbon-lang.dev/t/rfc-add-a-c-style-guide/102)
-   [Decision request](https://forums.carbon-lang.dev/t/request-for-decision-add-a-c-style-guide-113/155)
-   [Decision announcement](https://forums.carbon-lang.dev/t/accepted-add-a-c-style-guide-113/161)

Finalized on: 2020-11-10
2020-11-10 16:01:41 -08:00
Richard Smith ee7a108da4 Incorporate proposals #142 and #143 into the design
Add design text based on the contents of two proposals:

#142 Unicode source files
#143 Numeric literals
2020-11-03 16:39:05 -08:00
Jon Meow 8e3b67513a Fix decision filename (#186) 2020-10-30 11:06:13 -07:00
Sidney HummertandChandler Carruth 1721701bc6 Create decision for proposal 149--Change markdown style guide (#165)
* Create p0149_decision.md

Create decision for proposal 149--Change markdown style guide

* Update proposals/p0149_decision.md

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>

* Update proposals/p0149_decision.md

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>

* Run pre-commit

* Update README.md

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2020-10-30 10:34:21 -07:00
10a30f0a77 Decision for p107 "Code and Name Organization" (#174)
* Decision for p107 "Code and Name Organization"

Create initial decision doc.

* Update proposals/p107_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Update proposals/p107_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Update proposals/p107_decision.md

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>

* Update proposals/p107_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

* Update proposals/p107_decision.md

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2020-10-30 09:46:25 -07:00
Jon Meow 5760d807fe Update pre-commit configs and standardize yaml extension (#184) 2020-10-29 10:02:32 -07:00
Richard Smith c197215bca Proposal: Unicode source files (#142)
Factored out of the Lexical Conventions proposal (https://github.com/carbon-language/carbon-lang/pull/173). This proposal covers only the encoding aspect: Carbon text is Unicode, source files are encoded in UTF-8, and we will follow the Unicode Consortium's recommendations to the extent that they make sense to us.
2020-10-28 17:25:20 -07:00
Richard Smith 5312cc9417 Update pre-commit configuration to match changes to prettier (#183)
See https://github.com/prettier/prettier/issues/9459 for details. Unclear whether this is a prettier bug or an npm bug, but pre-commit fails with new repositories without this change.
2020-10-28 08:56:56 -07:00
Richard Smith 2078b8d095 Fix pyenv version number syntax (#182) 2020-10-27 18:59:19 -07:00
Jon Meow b5a4c8eb73 Decision for #142 (unicode source files) (#173)
-   [Proposal PR](https://github.com/carbon-language/carbon-lang/pull/142)
-   [RFC topic](https://forums.carbon-lang.dev/t/rfc-unicode-source-files/119)
-   [Decision topic](https://forums.carbon-lang.dev/t/request-for-decision-unicode-source-files/145)
-   [Decision announcement](https://forums.carbon-lang.dev/t/accepted-unicode-source-files-142/148)

Finalized on 2020-10-27
2020-10-27 11:19:42 -07:00
Jon Meow 5676765375 Pre-commit fix (#180)
Issue introduced by #48
2020-10-27 11:08:27 -07:00
Matt Godbolt 05afb1b1ec Fix markdown around link to BFloat16 (#178) 2020-10-27 09:15:33 -07:00
1b434896b2 Add a workflow to support stacked pull requests. (#48)
There is limited direct or obvious support for working with a stack of
dependent pull requests with clean code review of each incremental
change.

Carbon needs to support high-latency asynchronous code review due to
timezones, schedule differences (especially in an open source project),
and the delays imposed by our proposal process. To this end we need some
solution for doing stacked pull requests with a reasonable code review
experience. This suggests a compromise flow that seems to minimize the
costs of doing this.

Co-authored-by: josh11b <josh11b@users.noreply.github.com>
Co-authored-by: Dmitri Gribenko <gribozavr@gmail.com>
Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
Co-authored-by: austern <austern@google.com>
2020-10-24 19:17:50 -07:00
Chandler Carruth 2ebf7ca0a0 Address a TODO by linking to the code review document. (#177)
The pull request workflow was supposed to connect to the review guidance
anyways, but the link hadn't been added.

Also adds a TOC to the pull request workflow document as it was missing
one.
2020-10-20 18:32:12 -07:00
Jon Meow 7b3608a6c5 Use check-copyright pre-commit (#172) 2020-10-19 10:45:38 -07:00
Chandler CarruthandJon Meow 3bd756c773 Decision for p0143 - Numeric literals (#167)
Adds a decision and rationale for proposal #143.

Co-authored-by: Jon Meow <46229924+jonmeow@users.noreply.github.com>
2020-10-16 14:54:25 -07:00