Some work has been done to configure this track.
It has only one exercise (hello-world
).
If you wish to work on this track, please post in the Exercism Community Forum to discuss it with the team.
Exercism exercises in Arm64 Assembly.
Home Page: https://exercism.org/tracks/arm64-assembly
License: MIT License
Some work has been done to configure this track.
It has only one exercise (hello-world
).
If you wish to work on this track, please post in the Exercism Community Forum to discuss it with the team.
Each track needs a file that contains track-specific instructions on how to get help. The contents of this document are only presented to the student when using the CLI. This file lives at exercises/shared/.docs/help.md
. You almost certainly already have this information, but need to move it to the correct place.
For v2 tracks, this information was (usually) included in the readme template found at config/exercise_readme.go.tmpl
. As such, tracks can extract the help instructions from the config/exercise_readme.go.tmpl
file to the exercises/shared/.docs/help.md
file.
See https://github.com/exercism/csharp/pull/1557/files for an example PR.
In Exercism v3, we're introducing a new (optional) tool: the representer. The goal of the representer is to take a solution and returning a representation, which is an extraction of a solution to its essence with normalized names, comments, spacing, etc. but still uniquely identifying the approach taken. Two different ways of solving the same exercise must not have the same representation.
Each representer is track-specific. When a new solution is submitted, we run the track's representer, which outputs two JSON files that describe the representation.
Once we have a normalized representation for a solution, a team of vetted mentors will look at the solution and comment on it (if needed). These comments will then automatically be submitted to each new solution with the same representation. A notification will be sent for old solutions with a matching representation.
The representer is an optional tool though, which means that if a track does not have a representer, it will still function normally.
Build a representer for your track according to the spec. Check this page to help you get started with building a representer.
Note that the simplest representer is one that merely returns the solution's source code.
It can be very useful to check how other tracks have implemented their representer.
If your track already has a working representer, please close this issue and ensure that the .status.representer
key in the track config.json
file is set to true
.
There is some overlap between the goals of the representer and the analyzer. If you want to build both, we recommend starting by building the representer for the following reasons:
This issue is part of the migration to v3. You can read full details about the various changes here.
The configlet tool has a lint
command that checks if a track's configuration files are properly structured - both syntactically and semantically. Misconfigured tracks may not sync correctly, may look wrong on the website, or may present a suboptimal user experience, so configlet's guards play an important part in maintaining the integrity of Exercism.
We're updating configlet to work with v3 tracks, which have a different set of requirements than v2 tracks.
The full list of rules that will be checked by the linter can be found in this spec.
โ Note that only a subset of the linting rules has been implemented at this moment. This means that while your track may be passing the checks at this moment, it might fail later. We thus strongly suggest you keep this issue open until we let you know otherwise.
Ensure that the track passes all the (v3 track) checks defined in configlet lint
.
To help verify that the track passes all the linting rules, the v3 preparation PR has added a GitHub Actions workflow that automatically runs configlet lint
.
It is also possible to run configlet lint
locally by running the ./bin/fetch-configlet
(or ./bin/fetch-configlet.ps1
) script to download a local copy of the configlet binary. Once downloaded, you can then do ./bin/configlet lint
to run the linting on your own machine.
This issue is part of the migration to v3. You can read full details about the various changes here.
There are several new features in Exercism v3 for tracks to build. To selectively enable these features on the Exercism v3 website, each track must keep track of the status of the following features:
The status of these features is specified in the top-level "status"
field in the track's config.json
, as specified in the spec.
The "status"
field in the config.json
file should be updated to indicate the status of the features for this track. The list of features is defined in the spec.
{
"status": {
"concept_exercises": true,
"test_runner": true,
"representer": false,
"analyzer": false
}
}
This issue is part of the migration to v3. You can read full details about the various changes here.
To get your track ready for Exercism v3, the following needs to be done:
This issue may be automatically added to over time. While track maintainers should check off completed items, please do not add/edit items in the list.
This repository's main
branch currently does not pass all CI checks.
This makes detecting issues in PRs harder and might result in a broken track, and so is an important thing to fix.
The following CI workflows are currently failing:
https://github.com/exercism/arm64-assembly/runs/3066717664
The track's config.json
file must have a non-empty blurb
property. This property should contain a short description (less than or equal to 400 characters) of the language. See https://github.com/exercism/docs/blob/main/building/tracks/config-json.md.
Hello ๐
Over the last few months we've been transferring all our CI from Travis to GitHub Actions (GHA). We've found that GHA are easier to work with, more reliable, and much much faster.
Based on our success with GHA and increasing intermittent failures on Travis, we have now decided to try and remove Travis from Exercism's org altogether and shift everything to GHA. This issue acts as a call to action if your track is still using Travis.
For most CI checks this should be a transposing from Travis' syntax to GHA syntax, and hopefully quite straightforward (see this PR for an example). However, if you do encounter any issues doing this, please ask on Slack where lots of us now have experience with GHA, or post a comment here and I'll tag relevant people. This would also make a good Hacktoberfest issue for anyone interested in making their first contribution ๐
If you've already switched this track to GHA, please feel free to close this issue and ignore it.
Thanks!
Edit this issue to keep track of the tasks you're working on towards launch.
We have a rough guide for how to launch a track, which is sorely outdated but
quite possibly better than nothing (I'm so sorry, I'm waaaay behind on getting
documentation updated).
https://github.com/exercism/docs/blob/master/language-tracks/launch/README.md
Check out https://github.com/orgs/exercism/teams/track-maintainers/discussions/1
for details about the #maintainers channel in the exercism-team Slack workspace.
Please ask if you have any questions or if anything is confusing!
This issue is part of the migration to v3. You can read full details about the various changes here.
In Exercism v3, students can now choose to work on exercises directly from their browser, instead of having to download exercises to their local machine. The track-specific settings for the in-browser editor are defined in the top-level "online_editor"
field in the track's config.json
file. This field is defined as an object with two fields:
"indent_style"
: the indent style, either "space" or "tab"."indent_size"
: the indent size, which is an integer (e.g. 4).You can find a full description of these fields in the spec.
The "online_editor"
field should be updated to correspond to the track's best practices regarding indentation.
"online_editor": {
"indent_style": "space",
"indent_size": 4
}
This issue is part of the migration to v3. You can read full details about the various changes here.
In Exercism v3, each track must specify exactly six "key features". Exercism uses these features to highlight the most interesting, unique or "best" features of a language to a student.
Key features are specified in the top-level "key_features"
field in the track's config.json
file and are defined as an array of objects, as specified in the spec.
The "key_features"
field in the config.json
file should be updated to describe the six "key features" of this track. See the spec.
{
"key_features": [
{
"icon": "features-oop",
"title": "Modern",
"content": "C# is a modern, fast-evolving language."
},
{
"icon": "features-strongly-typed",
"title": "Cross-platform",
"content": "C# runs on almost any platform and chipset."
},
{
"icon": "features-functional",
"title": "Multi-paradigm",
"content": "C# is primarily an object-oriented language, but also has lots of functional features."
},
{
"icon": "features-lazy",
"title": "General purpose",
"content": "C# can be used for a wide variety of workloads, like websites, console applications, and even games."
},
{
"icon": "features-declarative",
"title": "Tooling",
"content": "C# has excellent tooling, with linting and advanced refactoring options built-in."
},
{
"icon": "features-generic",
"title": "Documentation",
"content": "Documentation is excellent and exhaustive, making it easy to get started with C#."
}
]
}
This issue is part of the migration to v3. You can read full details about the various changes here.
In Exercism v3, we're introducing a new (optional) tool: the representer. The goal of the representer is to take a solution and returning a representation, which is an extraction of a solution to its essence with normalized names, comments, spacing, etc. but still uniquely identifying the approach taken. Two different ways of solving the same exercise must not have the same representation.
Each representer is track-specific. When a new solution is submitted, we run the track's representer, which outputs two JSON files that describe the representation.
Once we have a normalized representation for a solution, a team of vetted mentors will look at the solution and comment on it (if needed). These comments will then automatically be submitted to each new solution with the same representation. A notification will be sent for old solutions with a matching representation.
Each track should build a representer according to the spec. For tracks building a representer from scratch, we have a starting guide.
The representer is an optional tool though, which means that if a track does not have a representer, it will still function normally.
In Exercism v3, we are making increased use of our v2 analyzers. Analyzers automatically assess student's submissions and provide mentor-style commentary. They can be used to catch common mistakes and/or do complex solution analysis that can't easily be done directly in a test suite.
Each analyzer is track-specific. When a new solution is submitted, we run the track's analyzer, which outputs a JSON file that contains the analysis results.
In v2, analyzer comments were given to a mentor to pass to a student. In v3, the analyzers will normally output directly to students, although we have added an extra key to output suggestions to mentors. If your track already has an analyzer, the only requisite change is updating the outputted copy to be student-facing.
Each track should build an analyzer according to the spec. For tracks building an analyzer from scratch, we have a starting guide.
The analyzer is an optional tool though, which means that if a track does not have an analyzer, it will still function normally.
Build a representer for your track according to the spec. Check this page to help you get started with building a representer.
Note that the simplest representer is one that merely returns the solution's source code.
It can be very useful to check how other tracks have implemented their representer.
Build an analyzer for your track according to the spec. Check this page to help you get started with building an analyzer.
It can be very useful to check how other tracks have implemented their analyzer.
If you want to build both, we recommend starting by building the representer for the following reasons:
This issue is part of the migration to v3. You can read full details about the various changes here.
In Exercism v3, one of the biggest changes is that we'll automatically check if a submitted solution passes all the tests.
We'll check this via a new, track-specific tool: the Test Runner. Each test runner is track-specific. When a new solution is submitted, we run the track's test runner, which outputs a JSON file that describes the test results.
The test runner must be able to run the tests suites of both Concept Exercises and Practice Exercises. Depending on the test runner implementation, this could mean having to update the Practice Exercises to the format expected by the test runner.
Build a test runner for your track according to the spec.
If you are building a test runner from scratch, we have a starting guide and a generic test runner that can be used as the base for the new test runner.
If a test runner has already been built for this track, please check if it works on both Concept Exercises and Practice Exercises.
It can be very useful to check how other tracks have implemented their test runner.
This issue is part of the migration to v3. You can read full details about the various changes here.
In Exercism v3, tracks can be annotated with tags. This allows searching for tracks with a certain tag combination, making it easy for students to find an interesting track to join.
Tags are specified in the top-level "tags"
field in the track's config.json
file and are defined as an array of strings, as specified in the spec.
The "tags"
field in the config.json
file should be updated to contain the tags that are relevant to this track. The list of tags that can be used is listed in the spec.
{
"tags": [
"runtime/jvm",
"platform/windows",
"platform/linux",
"paradigm/declarative",
"paradigm/functional",
"paradigm/object_oriented"
]
}
Please check if your documentation files are still up-to-date.
The key documentation files to check are:
docs/ABOUT.md
docs/INSTALLATION.md
docs/LEARNING.md
docs/RESOURCES.md
docs/TESTS.md
exercises/shared/.docs/help.md
exercises/shared/.docs/tests.md
There might be more.
To help identify invalid links, we've automatically checked the links of all *.md
files in this repo.
This is the report of that check:
๐ Summary --------------------- ๐ Total............3 โ Successful.......3 โณ Timeouts.........0 ๐ Redirected.......0 ๐ป Excluded.........0 ๐ซ Errors...........0
This issue is part of the migration to v3. You can read full details about the various changes here.
Concept Exercises can have a status specified in their "status"
field in their config.json
entry, as specified in the spec. This status can be one of four values:
"wip"
: A work-in-progress exercise not ready for public consumption. Exercises with this tag will not be shown to students on the UI or be used for unlocking logic. They may appear for maintainers."beta"
: This signifies active exercises that are new and which we would like feedback on. We show a beta label on the site for these exercise, with a Call To Action of "Please give us feedback.""active"
: The normal state of active exercises"deprecated"
: Exercises that are no longer shown to students who have not started them (not usable at this stage).The "status"
key can also be omitted, which is the equivalent of setting it to "active"
.
The "status"
field of Concept Exercises in the config.json
file should be updated to reflect the status of the Concept Exercises. See the spec for more information.
If your track doesn't have any Concept Exercises, this issue can be closed.
{
"exercises": {
"concept": [
{
"uuid": "93fbc7cf-3a7e-4450-ad22-e30129c36bb9",
"slug": "cars-assemble",
"name": "Cars, Assemble!",
"concepts": ["if-statements", "numbers"],
"prerequisites": ["basics"]
},
...
]
}
}
{
"exercises": {
"concept": [
{
"uuid": "93fbc7cf-3a7e-4450-ad22-e30129c36bb9",
"slug": "cars-assemble",
"name": "Cars, Assemble!",
"concepts": ["if-statements", "numbers"],
"prerequisites": ["basics"],
"status": "active"
},
...
]
}
}
Each track needs a file that contains track-specific instructions on how to manually run the tests. The contents of this document are only presented to the student when using the CLI. This file lives at exercises/shared/.docs/tests.md
. You almost certainly already have this information, but need to move it to the correct place.
For v2 tracks, this information was (usually) included in the readme template found at config/exercise_readme.go.tmpl
. As such, tracks can extract the test instructions from the config/exercise_readme.go.tmpl
file to the exercises/shared/.docs/tests.md
file.
See https://github.com/exercism/csharp/pull/1557/files for an example PR.
TL;DR; At the end of Jan 2021, all tracks will enter v3 staging mode. Updates will no longer sync with the current live website, but instead sync with the staging website. The ARM64 Assembly section of the v3 repo will be extracted and PR'd into this track (if appropriate). Further issues and information will follow over the coming weeks to prepare ARM64 Assembly for the launch of v3.
Over the last 12 months, we've all been hard at work developing Exercism v3. Up until this point, all v3 tracks have been under development in a single repository - the v3 repository. As we get close to launch, it is time for us to explode that monorepo back into the normal track repos. Therefore, at the end of this month (January 2021), we will copy the v3 tracks contents from the v3 repository back to the corresponding track repositories.
As v3 tracks are structured differently than v2 tracks, the current (v2) website cannot work with v3 tracks. To prevent the v2 website from breaking, we'll disable syncing between track repositories and the website. This will effectively put v2 in maintenance mode, where any changes in the track repos won't show up on the website. This will then allow tracks to work on preparing for the Exercism v3 launch.
Where possible, we will script the changes needed to prepare tracks for v3. For any manual changes that need to be happening, we will create issues on the corresponding track repositories. We will be providing lots of extra information about this in the coming weeks.
We're really excited to enter the next phase of building Exercism v3, and to finally get it launched! ๐
This issue is part of the migration to v3. You can read full details about the various changes here.
Exercism v3 introduces a new type of exercise: Concept Exercises. All existing (V2) exercises will become Practice Exercises.
Concept Exercises and Practice Exercises are linked to each other via Concepts. Concepts are taught by Concept Exercises and practiced in Practice Exercises. Each Exercise (Concept or Practice) has prerequisites, which must be met to unlock an Exercise - once all the prerequisite Concepts have been "taught" by a Concept Exercise, the exercise itself becomes unlocked.
For example, in some languages completing the Concept Exercises that teach the "String Interpolation" and "Optional Parameters" concepts might then unlock the two-fer
Practice Exercise.
Each Practice Exercise has two fields containing concepts: a practices
field and a prerequisites
field.
The practices
key should list the slugs of Concepts that this Practice Exercise actively allows a student to practice.
strings
). In those cases we recommend choosing a few good exercises that make people think about those Concepts in interesting ways. For example, exercises that require UTF-8, string concatenation, char enumeration, etc, would all be good examples.The prerequisites
key lists the Concept Exercises that a student must have completed in order to access this Practice Exercise.
strings
, optional-params
, implicit-return
.loops
or recursion
), the maintainer should choose the one approach that they would like to unlock the Exercise, considering the student's journey through the track. For example, the loops/recursion example, they might think this exercise is a good early practice of loops
or that they might like to leave it later to teach recursion. They can also make use of an analyzer to prompt the student to try an alternative approach: "Nice work on solving this via loops. You might also like to try solving this using Recursion."Although ideally all Concepts should be taught by Concept Exercises, we recognise that it will take time for tracks to achieve that. Any Practice Exercises that have prerequisites which are not taught by Concept Exercises, will become unlocked once the final Concept Exercise has been completed.
The "practices"
field of each element in the "exercises.practice"
field in the config.json
file should be updated to contain the practice concepts. See the spec.
To help with identifying the practice concepts, the "topics"
field can be used (if it has any contents). Once prerequisites have been defined for a Practice Exercise, the "topics"
field should be removed.
Each practice concept should have its own entry in the top-level "concepts"
array. See the spec.
The "prerequisites"
field of each element in the "exercises.practice"
field in the config.json
file should be updated to contain the prerequisite concepts. See the spec.
To help with identifying the prerequisites, the "topics"
field can be used (if it has any contents). Once prerequisites have been defined for a Practice Exercise, the "topics"
field should be removed.
Each prerequisite concept should have its own entry in the top-level "concepts"
array. See the spec.
{
"exercises": {
"practice": [
{
"uuid": "8ba15933-29a2-49b1-a9ce-70474bad3007",
"slug": "leap",
"name": "Leap",
"practices": ["if-statements", "numbers", "operator-precedence"],
"prerequisites": ["if-statements", "numbers"],
"difficulty": 1
}
]
}
}
In line with our new org-wide policy, the master
branch of this repo will be renamed to main
. All open PRs will be automatically repointed.
GitHub will show you a notification about this when you look at this repo after renaming:
In case it doesn't, this is the command it suggests:
git branch -m master main
git fetch origin
git branch -u origin/main main
You may like to update the primary branch on your forks too, which you can do under Settings->Branches and clicking the pencil icon on the right-hand-side under Default Branch:
We will post a comment below when this is done. We expect it to happen within the next 12 hours.
In Exercism v3, we are making increased use of our v2 analyzers. Analyzers automatically assess student's submissions and provide mentor-style commentary. They can be used to catch common mistakes and/or do complex solution analysis that can't easily be done directly in a test suite.
Each analyzer is track-specific. When a new solution is submitted, we run the track's analyzer, which outputs a JSON file that contains the analysis results.
In v2, analyzer comments were given to a mentor to pass to a student. In v3, the analyzers will normally output directly to students, although we have added an extra key to output suggestions to mentors. If your track already has an analyzer, the only requisite change is updating the outputted copy to be student-facing.
The analyzer is an optional tool though, which means that if a track does not have an analyzer, it will still function normally.
Build an analyzer for your track according to the spec. Check this page to help you get started with building an analyzer.
It can be very useful to check how other tracks have implemented their analyzer.
If your track already has a working analyzer, please close this issue and ensure that the .status.analyzer
key in the track config.json
file is set to true
.
There is some overlap between the goals of the representer and the analyzer. If you want to build both, we recommend starting by building the representer for the following reasons:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.