Skip to content

Commit e98a935

Browse files
committed
Initial commit
0 parents  commit e98a935

File tree

3 files changed

+93
-0
lines changed

3 files changed

+93
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Scala Native Improvement Proposals
2+
3+
This repository contains the Scala Native Improvement Proposal - a list of Scala Native future improvements, similar to the [Scala Improvement Proposals](https://github.com/scala/improvement-proposals) dedicated to the core Scala-lang.
4+
5+
Currently, Scala Native Improvement Process is not well defined, like [SIPs](https://docs.scala-lang.org/sips), however, they can be approved or discarded by the Scala Native core team. SNIPs, similarly to [RFC](https://en.wikipedia.org/wiki/Request_for_Comments) can be treated as a form of public discussion to share, comment and review new possible Scala Native improvements, before starting actual work on the given ideas.

proposals/.keep

Whitespace-only changes.

snip-template.yaml

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
---
2+
layout: sip
3+
stage: implementation
4+
status: waiting-for-implementation
5+
title: SNIP-NN - Title of the Proposal
6+
---
7+
8+
**By: Author A and Author B and Author C**
9+
10+
## History
11+
12+
| Date | Version |
13+
|---------------|--------------------|
14+
| Feb 19th 2022 | Initial Draft |
15+
| Feb 20th 2022 | Alteration Details |
16+
17+
## Summary
18+
19+
A summary of the proposed changes. This should be no longer than 3 paragraphs. It is intended to serve in two ways:
20+
21+
- For a first-time reader, a high-level overview of what they should expect to see in the proposal.
22+
- For returning readers, a quick reminder of what the proposal is about.
23+
24+
## Motivation
25+
26+
A high-level overview of the proposal with:
27+
28+
- An explanation of the problems or limitations that it aims to solve,
29+
- A presentation of one or more use cases as running examples, with code showing how they would be addressed *using the status quo* (without the feature), and why that is not good enough.
30+
31+
This section should clearly express the scope of the proposal. It should make it clear what are the goals of the proposal, and what is out of the scope of the proposal.
32+
33+
## Proposed solution
34+
35+
This is the meat of your proposal.
36+
37+
### High-level overview
38+
39+
A high-level overview of the proposed changes, and how they allow to better solve the running examples. This section should be example-heavy, and not dive into corner cases.
40+
41+
Example:
42+
43+
~~~ scala
44+
// This is an @main method
45+
@main def foo(x: Int): Unit =
46+
println(x)
47+
~~~
48+
49+
### Specification
50+
51+
A specification for the proposed changes, as precise as possible. This section should address difficult interactions with other language features, possible error conditions, and corner cases as much as the good behavior.
52+
53+
For example, if the syntax of the language is changed, this section should list the differences in the grammar of the language. If it affects the type system, the section should explain how the feature interacts with it.
54+
55+
### Compatibility
56+
57+
A justification of why the proposal will preserve backward binary and NIR compatibility. Changes are backward binary compatible if the bytecode produced by a newer compiler can link against library bytecode produced by an older compiler. Changes are backward NIR compatible if the NIR files produced by older compilers can be read, with equivalent semantics, by the newer tooling.
58+
59+
If it doesn't do so "by construction", this section should present the ideas of how this could be fixed (through deserialization-time patches and/or alternative binary encodings). It is OK to say here that you don't know how binary and TASTy compatibility will be affected at the time of submitting the proposal. However, by the time it is accepted, those issues will need to be resolved.
60+
61+
This section should also argue to what extent backward source compatibility is preserved. In particular, it should show that it doesn't alter the semantics of existing valid programs.
62+
63+
### Other concerns
64+
65+
If you think of anything else that is worth discussing about the proposal, this is where it should go. Examples include interoperability concerns, cross-platform concerns, implementation challenges.
66+
67+
### Open questions
68+
69+
If some design aspects are not settled yet, this section can present the open questions, with possible alternatives. By the time the proposal is accepted, all the open questions will have to be resolved.
70+
71+
## Alternatives
72+
73+
This section should present alternative proposals that were considered. It should evaluate the pros and cons of each alternative, and contrast them to the main proposal above.
74+
75+
Having alternatives is not a strict requirement for a proposal, but having at least one with carefully exposed pros and cons gives much more weight to the proposal as a whole.
76+
77+
## Related work
78+
79+
This section should list prior work related to the proposal, notably:
80+
81+
- A link to the Pre-SNIP discussion that led to this proposal,
82+
- Any other previous proposal (accepted or rejected) covering something similar as the current proposal,
83+
- Whether the proposal is similar to something already existing in other languages,
84+
- If there is already a proof-of-concept implementation, a link to it will be welcome here.
85+
86+
## FAQ
87+
88+
This section will probably initially be empty. As discussions on the proposal progress, it is likely that some questions will come repeatedly. They should be listed here, with appropriate answers.

0 commit comments

Comments
 (0)