Create new track for Func

FunC is a smart contracts language for The Open Network.

  1. FunC is a domain-specific, C-like, statically typed language.
  2. FunC programs are compiled into Fift assembler code, which generates corresponding bytecode for the TON Virtual Machine.
  3. Further this bytecode (actually a tree of cells, like any other data in the TON Blockchain) can be used for creating smart contracts in the blockchain or can be run on a local instance of TVM.

As it becoming more popular, I think exercism should have a path related to it.

All the tracks are created and maintained by volunteers. It would be lovely to have more tracks … but that needs someone to put in the work to build and maintain them :slight_smile: Are you interested in building a new Func track?


Yeah, I’ve read rules of establishing the new track.

I’m happy to maintain it, regarding building, I think I would include some Func/TON community contributors to help me with that :ok_hand:

1 Like

The maintainer tends to own and lead the track building. Are you interested in building the track and asking for collaborators or asking if someone else wants to step forward and build the track?

I would own and build the track involving TON dev community.

@IsaacG what else I need to do, to get this track authorized?

@chakzefir Great that you’re happy to build this thanks.

The first step is to decide on the set up for your hello-world exercise and test suite. Hello world is a standardised first exercise in all languages. You can see it’s specification here. Creating this helps us determine what work needs to go into building the track from the Exercism staff’s perspective. Once we’ve got that agreed, we’ll create you a repository and can start adding code into that on GitHub.

Could you provide a sample Hello World solution and test suite for it in this forum thread pls?

I’m guessing using C as your basis is best, in which case look at these three files:

Thank you!

Long time no see :wink:

I have created the basic repo, which includes first hello_world.fc smart-contract, deploy scripts, tests and readme.

Where should I go next? Should I create a PR to exercism or I need to wait for something else. Could you please guide me?


Hey @iHiD
Could you please highlight the next step please :pray:


OK, thanks for getting that together. So, it looks like Hello World isn’t a very natural fit with the lack of strings etc. Could you suggest 10 exercises from Problem Specifications that you think would be good. You don’t need to do the implementations (although seeing one that fits more naturally would be great) but it would be good to understand what you’re thinking of the track looking like. And then we can get it bootstrapped for you.


Hi there,

I think, it would be more useful to cover the basics of Func, to give an understanding of the main patterns. We could use cookbook as guide/inspiration to cover key aspects of Func lang: FunC Cookbook | The Open Network

I’ve checked the Problem Specifications, as a candidate for the last task I could recommend bank account, as it is pretty close to wallet smart-contract.


Seems like the previous comment was not a reply. Making this second one just to pop up the thread.

In addition, I do think that it would be helpful to show more common practices and patterns then exercises, as Func is blockchain specific language, so the concepts and patterns are crucial to understand it.

That’s why I would rather focus on cookbook and just add a pinch of exercises (like one or two) in the end of the course.

@iHiD kind reminder, any thoughts? :wink:

Hey. Sorry. I need to have a think and chat to @ErikSchierboom about this when he’s working on Wed/Thus. We tend to discourage tracks that don’t use our normal sets of exercises as they normally end up being a huge amount of work and never getting launched. We’ve had many aborted attempts! Part of the beauty of exercism is that the consistency of exercises makes it relatively easy to get a language built. Building a new one from scratch will likely take hundreds of hours, so it’s a big commitment.

I’ll speak to Erik when he’s in and get back to you then! :slight_smile:

I see, ok, please make sure to check the cookbook as I think it’s one of the best ways to explain the main concepts.

Will wait for your input :wink:

@iHiD @ErikSchierboom hey folks, any updates?

If it will help, I can choose more tasks from Problem Specifications to apply for the track. However we should add more tasks from cookbook to make this track efficient and helpful for those who would like to learn Func.

Let me know what I can do to make it published, as we are not moving forward for 6 months :smiley:

Having looked at the cookbook, those explanations are basically excellent source material for Concept Exercises, but wouldn’t make for good Practice Exercises. For any new track, we require at least 20+ Practice Exercises, and after that tracks could add Concept Exercises. Do you think you’d be able to implement 20+ Practice Exercises from the Problem Specifications data? Creating the Concept Exercises is much more work and should be postponed until after the Practice Exercises are implemented.

Sorry for the slow response. I was off last week.

@ErikSchierboom will be creating a track for you shortly.

As Erik says, the first step will be to add 20 practice exercises from Problem Specifications (starting with hello-world), and building out a Test Runner. Then we can look at Concept Exercises! :slight_smile:

Alrighty, the repo is up:

@chakzefir is your GitHub username the same as your username here? I will need to add you to the team that has write access to the repo.

Hey Katrina,

Yes, the username is the same сhakzefir