Rust Lang Team
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
      • Invitee
    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Sharing URL Help
Menu
Options
Versions and GitHub Sync Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
Invitee
Publish Note

Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

Your note will be visible on your profile and discoverable by anyone.
Your note is now live.
This note is visible on your profile and discoverable online.
Everyone on the web can find and read all notes of this public team.
See published notes
Unpublish note
Please check the box to agree to the Community Guidelines.
View profile
Engagement control
Commenting
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
  • Everyone
Suggest edit
Permission
Disabled Forbidden Owners Signed-in users Everyone
Enable
Permission
  • Forbidden
  • Owners
  • Signed-in users
Emoji Reply
Enable
Import from Dropbox Google Drive Gist Clipboard
   owned this note    owned this note      
Published Linked with GitHub
Subscribed
  • Any changes
    Be notified of any changes
  • Mention me
    Be notified of mention me
  • Unsubscribe
Subscribe
--- title: Triage meeting 2023-01-31 tags: triage-meeting --- # T-lang meeting agenda * Meeting date: 2023-01-31 ## Attendance * Team members: nikomatsakis, Josh, Scott, Felix, Tyler * Others: simulacrum ## Meeting roles * Action item scribe: simulacrum * Note-taker: nikomatsakis ## Scheduled meetings - Defer planning meeting until 2023-02-08 (Niko and Felix can't attend on the 1st) ## Announcements or custom items ### Planning meeting * Will hold planning meeting Feb 8 * Please file your issue! ### Governance draft josh triplett: Draft Governance RFC has gone around \[to all@rust-lang.org -ed.\]. There have been updates, working to make it shorter. We're anticipating trying to make it public in the next few weeks, deferred to incorporate more feedback. Reach out to me or simulacrum or one of the others who sent out the mail to supply feedback. ## Action item review * [Action items list](https://hackmd.io/gstfhtXYTHa3Jv-P_2RK7A) ## Pending lang team project proposals None. :tada: ## PRs on the lang-team repo None. :tada: ## RFCs waiting to be merged None. :tada: ## Proposed FCPs **Check your boxes!** ### "Edition Based Method Disambiguation: Preventing inference ambiguity breakages with extension trait methods" rfcs#3240 - **Link:** https://github.com/rust-lang/rfcs/pull/3240 - [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3240#issuecomment-1377748067): > Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [ ] @Amanieu > * [ ] @BurntSushi > * [ ] @dtolnay > * [x] @joshtriplett > * [ ] @m-ou-se > * [ ] @nikomatsakis > * [ ] @pnkfelix > * [ ] @scottmcm > * [ ] @tmandry > > No concerns currently listed. > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3240#issuecomment-1377748031): > @rfcbot merge ### "unsafe attributes" rfcs#3325 - **Link:** https://github.com/rust-lang/rfcs/pull/3325 - [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3325#issuecomment-1396911253): > Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @joshtriplett > * [ ] @nikomatsakis > * [ ] @pnkfelix > * [ ] @scottmcm > * [x] @tmandry > > No concerns currently listed. > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3325#issuecomment-1396911218): > @rfcbot merge ### "RFC: UTF-8 characters and escape codes in (byte) string literals" rfcs#3349 - **Link:** https://github.com/rust-lang/rfcs/pull/3349 - [**Tracking Comment**](https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747916): > Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @joshtriplett > * [ ] @nikomatsakis > * [ ] @pnkfelix > * [ ] @scottmcm > * [ ] @tmandry > > Concerns: > > * raw-byte-strings-with-unicode (https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747889) > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rfcs/pull/3349#issuecomment-1396747889): > I do think we should permit `br"¥¥¥"`, but I don't think we should make any of the other changes proposed in that table, for the reasons @m-ou-se stated. > > I'm going to go ahead and propose FCP for this. This does *not* preclude making further changes to how this information is presented. > > @rfcbot merge > > @rfcbot concern raw-byte-strings-with-unicode ### "Tracking issue for RFC 2515, "Permit impl Trait in type aliases"" rust#63063 - **Link:** https://github.com/rust-lang/rust/issues/63063 - [**Tracking Comment**](https://github.com/rust-lang/rust/issues/63063#issuecomment-1360043090): > Team member @nikomatsakis has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @cramertj > * [x] @joshtriplett > * [x] @nikomatsakis > * [ ] @pnkfelix > * [ ] @scottmcm > > Concerns: > > * ~~~~ resolved by https://github.com/rust-lang/rust/issues/63063#issuecomment-1361432898 > * docs (https://github.com/rust-lang/rust/issues/63063#issuecomment-1364525286) > * function-defining-uses (https://github.com/rust-lang/rust/issues/63063#issuecomment-1385946789) > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rust/issues/63063#issuecomment-1360043060): > @rfcbot fcp merge > > This has been a long-time coming. Let's Do This! > > [Stabilization report in this comment.](https://github.com/rust-lang/rust/issues/63063#issuecomment-1354392317) ### "Tracking Issue for "C-unwind ABI", RFC 2945" rust#74990 - **Link:** https://github.com/rust-lang/rust/issues/74990 - [**Tracking Comment**](https://github.com/rust-lang/rust/issues/74990#issuecomment-1363474839): > Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @joshtriplett > * [x] @nikomatsakis > * [ ] @pnkfelix > * [x] @scottmcm > * [x] @tmandry > > Concerns: > > * docs (https://github.com/rust-lang/rust/issues/74990#issuecomment-1364528477) > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rust/issues/74990#issuecomment-1363474832): > Shall we stabilize the `extern "C-unwind"` and other `-unwind` calling conventions? This change will leave `extern "C"` unchanged for now, but have the existing feature gate continue to opt into the new behavior on nightly. We'll do a separate change later to make `extern "C"` and similar not permit unwinding. > > @rfcbot merge ### "Stabilise inline_const" rust#104087 - **Link:** https://github.com/rust-lang/rust/pull/104087 - [**Tracking Comment**](https://github.com/rust-lang/rust/pull/104087#issuecomment-1350231887): > Team member @scottmcm has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @cramertj > * [x] @joshtriplett > * [x] @nikomatsakis > * [ ] @pnkfelix > * [x] @scottmcm > > Concerns: > > * expectations-around-panics-in-inline-const (https://github.com/rust-lang/rust/pull/104087#issuecomment-1379582240) > * post-monomorphization-errors (https://github.com/rust-lang/rust/pull/104087#issuecomment-1409927203) > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rust/pull/104087#issuecomment-1350231871): > Restarting the FCP from https://github.com/rust-lang/rust/pull/104087#issuecomment-1315946122 > > @rfcbot fcp merge tmandry: Just posted a [comment](https://github.com/rust-lang/rust/pull/104087#issuecomment-1410921524) to the thread about the fact that we don't error if there's a const eval error on an unused function, since the const blocks never get evaluated. I think we should error. But how do we make transition? This is existing behavior. Also a question of whether it should block inline const stabilization. My recommendation is that we should add a lint and make it an error in the edition. I wouldn't block stabilization on it, but it is higher priority because of inline const. joshtriplett: Can you clarify what you mean by not blocking? tmandry: Don't have to wait for this lint to be implemented before stabilizing inline const. joshtriplett: If we were proposing to do it as a lint, I'd agree, but I think it should just be an error. If we want it to be an error, I don't think we can reasonably do that later, it'd be a breaking change. scottmcm: It's already a breaking change. tmandry: Right, unless we limit it to inline const blocks, if that's even possible. That's why I advocated for changing behavior over an edition. garyguo: I think there's two aspects of this. Dead code, and opt related. Oli has a PR to address the behavior in terms of "monomorphizing check mode" that does some of this. I think this should prob be in a design meeting with oli/ralf/me and other interested parties. joshtriplett: +1, I think it suffices for this meeting to say that current behavior isn't in consensus on shipping scottmcm: I like the point that making mono smarter or less smart is potentially a breaking change in the current rules. Moving towards a world where we can't accidentally break code because we monomorphized more makes sense to me. Lint that we start doing seems entirely reasonable. garyguo: Not sure if it's breaking, since we do have the stable "link dead code" option, might be something we can do with a crater run. nikomatsakis: who will file design meeting? tmandry: could lump this in with the general post-monomorphization error meeting I intend to follow. nikomatsakis: is it close enough that it makes sense to do together? tmandry: maybe. pnkfelix: comment you wrote in the issue says that, the fact that `-C link-dead-code` can cause an error-- does it consistently cause an error in the example you gave? tmandry: yes. garyguo: eager mode fires an error, but lazy does not. nikomatsakis: +1 to design meeting, prob 1 is enough. tmandry: one is "post monomorphization errors" whereas this is really about functions that are unused and happen to use const. Not really monomorphization specific. garyguo: From compiler perspective, tied to monomorphization. tmandry: right, in compiler, we use monomorphization for dead code even without generics. pnkfelix: we have to be careful, we want to permit working backwards from main and not forcing us to search all the code for potential errors. joshtriplett: we need a clear statement then to define our expectation for reachability. ### "Relax ordering rules for `asm!` operands" rust#105798 - **Link:** https://github.com/rust-lang/rust/pull/105798 - [**Tracking Comment**](https://github.com/rust-lang/rust/pull/105798#issuecomment-1397842231): > Team member @joshtriplett has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @joshtriplett > * [ ] @nikomatsakis > * [ ] @pnkfelix > * [ ] @scottmcm > * [x] @tmandry > > No concerns currently listed. > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rust/pull/105798#issuecomment-1397842217): > Sorry for the delay in reviewing. This looks great! I think this technically needs an FCP (since it changes the stable interface), but I don't expect it to be a controversial one at all. > > @rfcbot merge ### "Properly allow macro expanded `format_args` invocations to uses captures" rust#106505 - **Link:** https://github.com/rust-lang/rust/pull/106505 - [**Tracking Comment**](https://github.com/rust-lang/rust/pull/106505#issuecomment-1402511990): > Team member @scottmcm has proposed to merge this. The next step is review by the rest of the tagged team members: > > * [x] @joshtriplett > * [ ] @nikomatsakis > * [ ] @pnkfelix > * [x] @scottmcm > * [ ] @tmandry > > Concerns: > > * please-link-tests (https://github.com/rust-lang/rust/pull/106505#issuecomment-1402543049) > > Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! > > cc @rust-lang/lang-advisors: FCP proposed for lang, please feel free to register concerns. > See [this document](https://github.com/rust-lang/rfcbot-rs/blob/master/README.md) for info about what commands tagged team members can give me. - [**Initiating Comment**](https://github.com/rust-lang/rust/pull/106505#issuecomment-1402511930): > We discussed this in the lang team meeting today. Broadly we thought that proc macros being able to emit tokens that use captures makes logical sense. Basically, a proc macro *emitting* something as a whole that one could write directly, as in https://github.com/rust-lang/rust/pull/106505/files#diff-868206cf54a88d81468a76d45e639cea40c537f2031d19f06c114e3cb329a426R44, seems entirely fine, though mixing things like `format!(concat!(…))` might still be best to reject. > > So I'll start a > > @rfcbot fcp merge > > but we had some requests to confirm, so... concern potentially resolved! ## Active FCPs None. ## P-critical issues None. ## Nominated RFCs, PRs and issues discussed this meeting ### "Stabilise inline_const" rust#104087 **Link:** https://github.com/rust-lang/rust/pull/104087 Defer to design meeting. ### "Mark RFC 1201 (naked functions) superseded by RFC 2972 (constrained naked functions)" rfcs#3223 **Link:** https://github.com/rust-lang/rfcs/pull/3223 scottmcm to author suggestion then merge. ### "The `#[diagnostic]` attribute namespace" rfcs#3368 **Link:** https://github.com/rust-lang/rfcs/pull/3368 scottmcm: design meeting? joshtriplett: not yet. recently reworked. let's discuss if we're comfortable with this namespace. by a week and a day from now, we'll prob be ready to schedule a design meeting, so let's ask them if they'd like to. I think a lot of this has basically been pitched. The premise is very much "we still review individual proposals for attributes, this is just trying to handle forward compatibility reasonably". **I propose: folks read the RFC and decide if it does what they want it to do, and only use a design meeting if we're not in agreement.** ### "Implement a lint for implicit autoref of raw pointer dereference " rust#103735 **Link:** https://github.com/rust-lang/rust/pull/103735 scottmcm: I commented I was going to unnominate but hadn't, so skip this. ### "Allow only implementing `Read::read_buf`" rust#106643 **Link:** https://github.com/rust-lang/rust/pull/106643 joshtriplett: Un-nominated since we are waiting on a draft. Somebody filed a tracking issue with a detailed description of the behavior. scottmcm: I'm confused about use case. joshtriplett: Specific use case is that people want to stabilize `read_buf` and require people to implement *either* read or read-buf but not both. The issue right now is not if we want to stabilize "must implemented one of". The question ins: how much do we want to see happen before we let anybody stabilize `read_buf` such that there's a dependence on something like this in the stdlib? scottmcm: A few years ago we had a problem where something got stabilized thanks to library. I think we need a reference PR before we can stabilize first method using this. nikomatsakis: Reference PR for what? Not stabilizing the attribute what. We're stabilizing, in effect, a special rule for the read trait? joshtriplett: I get the point that if we are stabilizing something that depends on it -- sounds like you're saying you're fine to apply it in nightly, but you want to block stabilizing. nikomatsakis: Just saying that we don't normally document unstable things, so we would normally document this as a special behavior of the `Read` trait. scottmcm: Yes, this is a visible thing that ought to have something documented, like the const thing we did some time back (but unfortunately didn't document). pnkfelix: Have to make sure that every trait that uses the attribute documents that behavior, right? nikoamtsakis: Yes. May be worth adding some note to the reference that "some traits have this behavior" pnkfelix: Not convinced that's useful, most important thing is to document it on the trait. scottmcm: *something about stability that Niko didn't catch* joshtriplett: Any objection to adding this to nightly now? All objections are related to stabilization, correct? nikomatsakis: I am happy with the tracking issue which was created, it follows our experimental procedure. scottmcm: correct. I'll add a note to the tracking issue for read-buf to note that we want to consider this before stabilizing. nikomatsakis: side note that this situation comes up regularly and would be a nice language feature. ### "Discuss subteam calendars" lang-team#192 **Link:** https://github.com/rust-lang/lang-team/issues/192 joshtriplett: Style team has a calendar. Some subteam meetings show up on t-lang, some have their own. How do we want to handle this? I think it makes sense to say "no subteam meetings appear on t-lang" and have links from the same place for each subteam...? nikomatsakis: I'm in camp "fewer calendars", as people have trouble finding the ones that exist... joshtriplett: ...but other people aren't aware of those meetings... pnkfelix: ...I think T-compiler has just one. tmandry: I can relate to wanting some but not all events on my calendar. joshtriplett: Yes, I wish there were better tools for having all calendars. tmandry: the only way to get other people to know I am busy is to put me on the invite. Doesn't solve that problem. nikomatsakis: what other subteams do we have? joshtriplett: types, opsem, style...? nikomatsakis: I don't care much, but we should at LEAST have a link with the calendars in use by each team. pnkfelix: would be great to have it be part of the teams repo. all: yes. ### "Introduce terminating scope for tail expressions of breakable scopes" rust#106493 **Link:** https://github.com/rust-lang/rust/pull/106493 nikomatsakis: general problem being addressed is... ```rust let f = something().bar(); // where bar is `&self` // ^^^^^^^^^^^ creates a temporary ``` * this temporary is freed at end of the innermost statement * actually a simplification, there are other scopes -- * condition of an if * etc * [documented here](https://doc.rust-lang.org/stable/reference/destructors.html#temporary-scopes) * *unless* it is assigned directly into a local variable, according to various rules * `let f = &something()` * `something()` is a temporary, but because it is clearly assigned into `f`, we extend that to the end of the enclosing block Interesting twist: ```rust { statement1; statement2; tail_expression // <-- } ``` temporary scope in the tail-expression is the same as the temporary scope of the block itself ```rust let x = &{ something() // <-- also create a temporary dropped at the end of the block }; ``` I think this was probably a mistake, but it is what we do now. [Docs on these rules.](https://doc.rust-lang.org/stable/reference/destructors.html#temporary-scopes) I'm worried because there can be really subtle bugs for effectful destructors. Classic bug I'd like to see addressed is this: ```rust match foo().lock().bar { // ^^^^^^^^^^^ dropped at end of statement ... arm => { foo().lock().baz += 1; // deadlock } ... } ``` but that's independent from this PR. Conclusion: this PR changes because of breakable scopes. True best path: we should address these rules for the edition. nikomatsakis: I can at least ping the PR author and see if they're willing to pursue a rationalization here for edition. ### "make &mut !Unpin not dereferenceable, and Box<!Unpin> not noalias" rust#106180 **Link:** https://github.com/rust-lang/rust/pull/106180 *discussion wherein we read the comments* *Conclusion:* jakob-degen's comment [here](https://github.com/rust-lang/rust/pull/106180#issuecomment-1370240291) indicates that this is compiler, in that the idea is to stop optimizing as aggressively because we the current optimization is not sound. It is not deciding language semantics or permissible unsafe code. Therefore, we are happy for the time being with the PR. *Some debate about what our general policy should be.* Niko advocates for 'reliable first', de-optimize until we know when we can, but there is some concern about unsafe code authors relying on the LLVM attributes we emit not to change. This case is specific to Unpin and so affects primarily async + code like Rust For Linux. ### "Tracking issue for deprecation lint `proc_macro_derive_resolution_fallback`" rust#83583 **Link:** https://github.com/rust-lang/rust/issues/83583 pnkfelix: I filed [design mtg proposal](https://github.com/rust-lang/lang-team/issues/193) for this, and removed the I-lang-nominated label. no need to discuss in mtg. ## Nominated RFCs, PRs and issues NOT discussed this meeting ### "RFC: Start working on a Rust specification" rfcs#3355 **Link:** https://github.com/rust-lang/rfcs/pull/3355 ### "inline_const does not evaluate in unused function" rust#106617 **Link:** https://github.com/rust-lang/rust/issues/106617

Import from clipboard

Paste your markdown or webpage here...

Advanced permission required

Your current role can only read. Ask the system administrator to acquire write and comment permission.

This team is disabled

Sorry, this team is disabled. You can't edit this note.

This note is locked

Sorry, only owner can edit this note.

Reach the limit

Sorry, you've reached the max length this note can be.
Please reduce the content or divide it to more notes, thank you!

Import from Gist

Import from Snippet

or

Export to Snippet

Are you sure?

Do you really want to delete this note?
All users will lose their connection.

Create a note from template

Create a note from template

Oops...
This template has been removed or transferred.
Upgrade
All
  • All
  • Team
No template.

Create a template

Upgrade

Delete template

Do you really want to delete this template?
Turn this template into a regular note and keep its content, versions, and comments.

This page need refresh

You have an incompatible client version.
Refresh to update.
New version available!
See releases notes here
Refresh to enjoy new features.
Your user state has changed.
Refresh to load new user state.

Sign in

Forgot password

or

By clicking below, you agree to our terms of service.

Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
Wallet ( )
Connect another wallet

New to HackMD? Sign up

Help

  • English
  • 中文
  • Français
  • Deutsch
  • 日本語
  • Español
  • Català
  • Ελληνικά
  • Português
  • italiano
  • Türkçe
  • Русский
  • Nederlands
  • hrvatski jezik
  • język polski
  • Українська
  • हिन्दी
  • svenska
  • Esperanto
  • dansk

Documents

Help & Tutorial

How to use Book mode

Slide Example

API Docs

Edit in VSCode

Install browser extension

Contacts

Feedback

Discord

Send us email

Resources

Releases

Pricing

Blog

Policy

Terms

Privacy

Cheatsheet

Syntax Example Reference
# Header Header 基本排版
- Unordered List
  • Unordered List
1. Ordered List
  1. Ordered List
- [ ] Todo List
  • Todo List
> Blockquote
Blockquote
**Bold font** Bold font
*Italics font* Italics font
~~Strikethrough~~ Strikethrough
19^th^ 19th
H~2~O H2O
++Inserted text++ Inserted text
==Marked text== Marked text
[link text](https:// "title") Link
![image alt](https:// "title") Image
`Code` Code 在筆記中貼入程式碼
```javascript
var i = 0;
```
var i = 0;
:smile: :smile: Emoji list
{%youtube youtube_id %} Externals
$L^aT_eX$ LaTeX
:::info
This is a alert area.
:::

This is a alert area.

Versions and GitHub Sync
Get Full History Access

  • Edit version name
  • Delete

revision author avatar     named on  

More Less

Note content is identical to the latest version.
Compare
    Choose a version
    No search result
    Version not found
Sign in to link this note to GitHub
Learn more
This note is not linked with GitHub
 

Feedback

Submission failed, please try again

Thanks for your support.

On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

Please give us some advice and help us improve HackMD.

 

Thanks for your feedback

Remove version name

Do you want to remove this version name and description?

Transfer ownership

Transfer to
    Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

      Link with GitHub

      Please authorize HackMD on GitHub
      • Please sign in to GitHub and install the HackMD app on your GitHub repo.
      • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
      Learn more  Sign in to GitHub

      Push the note to GitHub Push to GitHub Pull a file from GitHub

        Authorize again
       

      Choose which file to push to

      Select repo
      Refresh Authorize more repos
      Select branch
      Select file
      Select branch
      Choose version(s) to push
      • Save a new version and push
      • Choose from existing versions
      Include title and tags
      Available push count

      Pull from GitHub

       
      File from GitHub
      File from HackMD

      GitHub Link Settings

      File linked

      Linked by
      File path
      Last synced branch
      Available push count

      Danger Zone

      Unlink
      You will no longer receive notification when GitHub file changes after unlink.

      Syncing

      Push failed

      Push successfully