{"id":24511666,"url":"https://github.com/mackenzie-high/autumn","last_synced_at":"2025-09-22T00:00:24.495Z","repository":{"id":19206577,"uuid":"22440240","full_name":"Mackenzie-High/autumn","owner":"Mackenzie-High","description":"Autumn is a new multi-paradigm, compiled, and statically-typed programming language for the JVM. ","archived":false,"fork":false,"pushed_at":"2023-09-05T05:38:02.000Z","size":16302,"stargazers_count":3,"open_issues_count":32,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-22T00:40:02.862Z","etag":null,"topics":["autumn","jvm","programming-language"],"latest_commit_sha":null,"homepage":"http://www.mackenziehigh.com/autumn","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Mackenzie-High.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-30T18:39:00.000Z","updated_at":"2024-01-13T23:52:43.000Z","dependencies_parsed_at":"2022-08-24T13:54:02.342Z","dependency_job_id":null,"html_url":"https://github.com/Mackenzie-High/autumn","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mackenzie-High%2Fautumn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mackenzie-High%2Fautumn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mackenzie-High%2Fautumn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mackenzie-High%2Fautumn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mackenzie-High","download_url":"https://codeload.github.com/Mackenzie-High/autumn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243713389,"owners_count":20335566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autumn","jvm","programming-language"],"created_at":"2025-01-22T00:40:07.977Z","updated_at":"2025-09-22T00:00:24.486Z","avatar_url":"https://github.com/Mackenzie-High.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The Autumn Programming Language\n\nAutumn is a multi-paradigm general-purpose programming language for the JVM.\n\n**Quick Links:**\n+ [Language Specification](#language-specification)\n+ [JavaDoc](https://mackenzie-high.github.io/autumn/javadoc/)\n+ [Code Coverage](https://mackenzie-high.github.io/autumn/jacoco/)\n\n**Notable Features:**\n+ [Compile On-Run](#hello-world---interpreted)\n+ [Compile Ahead-Of-Time](#hello-world---compiled)\n+ [Embeddable in Java Programs](#hello-world---embedded)\n+ Static Type-System\n+ Java Interoperability\n+ [Immutable Structs with Non-Destructive Mutators](specification/Struct_Definition.md)\n+ [Multiple Dispatch](specification/Dispatch_Expression.md)\n+ [Direct Tail-Recursion](specification/Recur_Statement.md)\n\n## History\n\nThe development of Autumn started as a personal project of Mackenzie High in the Spring of 2010.\n\n## Download\n\n```plain\nmackenzie@caprica: cd /tmp\nmackenzie@caprica: wget https://github.com/Mackenzie-High/autumn/releases/download/v2_0/autumn.zip\nmackenzie@caprica: sha256sum autumn.zip\n5a4063f2887e91b114b98c17b408e190183449d3ae0787e09ae33a1e59cf1231  autumn.zip\nmackenzie@caprica: unzip autumn.zip\nmackenzie@caprica: cd autumn/\nmackenzie@caprica: alias autumn='java -jar /tmp/autumn/autumn-2.0.jar'\nmackenzie@caprica: autumn version\nautumn:2.0:20250527.082723\n```\n\nThe alias is created for use in the following examples.\n\n## Hello World on Linux\n\nPrograms written in Autumn can be compiled, interpreted, or embedded.\n\n### Hello World - Compiled\n\n**Step: Create a project.**\n\n```plain\nmackenzie@caprica: autumn create example\nCurrent Directory = /home/mackenzie/Downloads\nProject Name = example\nmackenzie@caprica: \nmackenzie@caprica: cd example/\n```\n\n**Step: Create or edit the `src/Main.leaf` program entrypoint.**\n\n```plain\nmodule Main in program;\n\n@Start\ndefun main (args : String[]) : void\n{\n    F::println (\"Hello World!\");\n}\n```\n\n**Step: Compile the project to generate the `program.jar` file.**\n\n```plain\nmackenzie@caprica: autumn compile\n```\n\n**Step: Add Autumn ands its dependencies to the CLASSPATH.**\n\n```plain\nmackenzie@caprica: export CLASSPATH=\"${CLASSPATH}:$(find /tmp/autumn -type f -exec echo -n {}: \\;)\"\n```\n\n**Step: Add the compiled program to the CLASSPATH.**\n\n```plain\nmackenzie@caprica: export CLASSPATH=\"${CLASSPATH}:program.jar\"\n```\n\n**Step: Run the compiled program.**\n\n```plain\nmackenzie@caprica: java program.Main\nHello World!\n```\n\n-----\n\n### Hello World - Interpreted\n\nAutumn interprets a program by compiling and then dynamically loading the generated bytecode at startup.\n\n**Step: Create a project.**\n\n```plain\nmackenzie@caprica: autumn create example\nCurrent Directory = /home/mackenzie/Downloads\nProject Name = example\nmackenzie@caprica: \nmackenzie@caprica: cd example/\n```\n\n**Step: Create or edit the `src/Main.leaf` program entrypoint.**\n\n```plain\nmodule Main in program;\n\n@Start\ndefun main (args : String[]) : void\n{\n    F::println (\"Hello World!\");\n}\n```\n\n**Step: Run the program.**\n\n```plain\nmackenzie@caprica: java -jar /tmp/autumn/autumn-2.0.jar run\nHello World!\n```\n\n-----\n\n### Hello World - Embedded \n\n**Step: Create a Maven project and add Autumn as a dependency.**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.mackenziehigh\u003c/groupId\u003e\n    \u003cartifactId\u003eautumn\u003c/artifactId\u003e\n    \u003cversion\u003e2.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n**Step: Embed Autumn in the main Java program.**\n\n```java\nimport autumn.lang.compiler.Autumn;\nimport autumn.lang.compiler.AutumnParser;\nimport autumn.lang.compiler.errors.BasicErrorReporter;\nimport java.io.File;\n\npublic final class Main\n{\n    public static void main (final String[] args) throws Throwable\n    {\n        // This is the string of Autumn source code that \n        // will be dynamically compiled and executed.\n        final String code = \"\"\"\nmodule Main in program;\n\n@Start\ndefun main (args : String[]) : void\n{\n    F::println(\"Hello World from inside an Autumn script!\");\n}\n                            \"\"\";\n\n        // This object will be write any compilation errors to stdout.\n        final BasicErrorReporter reporter = new BasicErrorReporter(System.out);\n\n        // Create a parser that can parse Autumn source-code.\n        final AutumnParser parser = new AutumnParser(reporter);\n\n        // This file object does *not* refer to a real file.\n        // The parser requires a file object for reporting syntax errors.\n        final File fake = new File(\"\u003cscript\u003e\");\n\n        // Parse the script in order to obtain an Abstract-Syntax-Tree.\n        final autumn.lang.compiler.ast.nodes.Module tree = parser.parse(code, fake);\n\n        // This object will control compilation and execution.\n        final Autumn autumn = new Autumn();\n        autumn.setErrorReporter(reporter);\n        autumn.src(tree);\n\n        // Compile and execute the script that is written in Autumn.\n        autumn.run(new String[0]);\n    }\n}\n```\n\n## Language Specification\n\n+ **Standard Library**\n    + [API Documentation](https://www.mackenziehigh.com/autumn/javadoc/index.html)\n    + [Special Functions](specification/functions/README.md)\n+ **Language Constructs**\n    + [Module](specification/Module.md)\n    + **Directives**\n        + [Module Directive](specification/Module_Directive.md)\n        + [Import Directive](specification/Import_Directive.md)\n    + **Definitions**\n        + [Annotation Definition](specification/Annotation_Definition.md)\n        + [Exception Definition](specification/Exception_Definition.md)\n        + [Enum Definition](specification/Enum_Definition.md)\n        + [Design Definition](specification/Design_Definition.md)\n        + [Struct Definition](specification/Struct_Definition.md)\n        + [Tuple Definition](specification/Tuple_Definition.md)\n        + [Functor Definition](specification/Functor_Definition.md)\n        + [Function Definition](specification/Function_Definition.md)\n    + **Statements**\n        + **Flow Control**\n            + [Sequence Statement](specification/Sequence_Statement.md)\n            + [If-Then Statement](specification/If_Then_Statement.md)\n            + [When Statement](specification/When_Statement.md)\n            + [Goto Statement](specification/Goto_Statement.md)\n            + [Marker Statement](specification/Marker_Statement.md)\n            + [Branch Statement](specification/Branch_Statement.md)\n            + **Looping**\n                + [While Statement](specification/While_Statement.md)\n                + [Until Statement](specification/Until_Statement.md)\n                + [Do-While Statement](specification/Do_While_Statement.md)\n                + [Do-Until Statement](specification/Do_Until_Statement.md)\n                + [Forever Statement](specification/Forever_Statement.md)\n                + [For Statement](specification/For_Statement.md)\n                + [Foreach Statement](specification/Foreach_Statement.md)\n                + [Break Statement](specification/Break_Statement.md)\n                + [Continue Statement](specification/Continue_Statement.md)\n                + [Redo Statement](specification/Redo_Statement.md)\n        + **Variable Related**\n            + [Var Statement](specification/Var_Statement.md)\n            + [Val Statement](specification/Val_Statement.md)\n            + [Let Statement](specification/Let_Statement.md)\n        + **Exception Handling**\n            + [Throw Statement](specification/Throw_Statement.md)\n            + [Try-Catch Statement](specification/Try_Catch_Statement.md)\n            + **Assertions**\n                + [Assert Statement](specification/Assert_Statement.md)\n                + [Assume Statement](specification/Assume_Statement.md)\n        + **Anonymous Functions**\n            + [Delegate Statement](specification/Delegate_Statement.md)\n            + [Lambda Statement](specification/Lambda_Statement.md)\n        + **Special**\n            + [Nop Statement](specification/Nop_Statement.md)\n            + [Expression Statement](specification/Expression_Statement.md)\n        + **Return**\n            + [Return Void Statement](specification/Return_Void_Statement.md)\n            + [Return Value Statement](specification/Return_Value_Statement.md)\n            + [Recur Statement](specification/Recur_Statement.md)\n    + **Expressions**\n        + **Datums**\n            + [Boolean Datum](specification/Boolean_Datum.md)\n            + [Char Datum](specification/Char_Datum.md)\n            + [Byte Datum](specification/Byte_Datum.md)\n            + [Short Datum](specification/Short_Datum.md)\n            + [Int Datum](specification/Int_Datum.md)\n            + [Long Datum](specification/Long_Datum.md)\n            + [Float Datum](specification/Float_Datum.md)\n            + [Double Datum](specification/Double_Datum.md)\n            + [Big Integer Datum](specification/Big_Integer_Datum.md)\n            + [Big Decimal Datum](specification/Big_Decimal_Datum.md)\n            + [String Datum](specification/String_Datum.md)\n            + [Class Datum](specification/Class_Datum.md)\n            + [Null Datum](specification/Null_Datum.md)\n            + [Variable Datum](specification/Variable_Datum.md)\n        + **Operators**\n            + [Negate Operation](specification/Negate_Operation.md)\n            + [Not Operation](specification/Not_Operation.md)\n            + [Divide Operation](specification/Divide_Operation.md)\n            + [Modulo Operation](specification/Modulo_Operation.md)\n            + [Multiply Operation](specification/Multiply_Operation.md)\n            + [Add Operation](specification/Add_Operation.md)\n            + [Subtract Operation](specification/Subtract_Operation.md)\n            + [Concat Operation](specification/Concat_Operation.md)\n            + [Identity Equality Operation](specification/Identity_Equality_Operation.md)\n            + [Identity Inequality Operation](specification/Identity_Inequality_Operation.md)\n            + [Equality Operation](specification/Equality_Operation.md)\n            + [Inequality Operation](specification/Inequality_Operation.md)\n            + [Greater-Than-OR-Equals Operation](specification/Greater_Than_OR_Equals_Operation.md)\n            + [Less-Than-OR-Equals Operation](specification/Less_Than_OR_Equals_Operation.md)\n            + [Greater-Than Operation](specification/Greater_Than_Operation.md)\n            + [Less-Than Operation](specification/Less_Than_Operation.md)\n            + [And Operation](specification/And_Operation.md)\n            + [Or Operation](specification/Or_Operation.md)\n            + [Xor Operation](specification/Xor_Operation.md)\n            + [Implies Operation](specification/Implies_Operation.md)\n            + [Null Coalescing Operation](specification/Null_Coalescing_Operation.md)\n            + [As Operation](specification/As_Operation.md)\n            + [Is Operation](specification/Is_Operation.md)\n        + **Object Orientation**\n            + [New Expression](specification/New_Expression.md)\n            + [Call Static Method Expression](specification/Call_Static_Method_Expression.md)\n            + [Call Method Expression](specification/Call_Method_Expression.md)\n            + [Set Static Field Expression](specification/Set_Static_Field_Expression.md)\n            + [Get Static Field Expression](specification/Get_Static_Field_Expression.md)\n            + [Set Field Expression](specification/Set_Field_Expression.md)\n            + [Get Field Expression](specification/Get_Field_Expression.md)\n            + [Instance-Of Expression](specification/Instance_Of_Expression.md)\n            + [Dispatch Expression](specification/Dispatch_Expression.md)\n        + [Ternary Conditional Expression](specification/Ternary_Conditional_Expression.md)\n        + [Once Expression](specification/Once_Expression.md)\n        + [Locals Expression](specification/Locals_Expression.md)\n        + [Progn Expression](specification/Progn_Expression.md)\n        + [List Expression](specification/List_Expression.md)\n        + [List Comprehension Expression](specification/List_Comprehension_Expression.md)\n+ **Components**\n    + [Annotation List](specification/Annotation_List.md)\n    + [Annotation](specification/Annotation.md)\n    + [Element List](specification/Element_List.md)\n    + [Element](specification/Element.md)\n    + [Formal Parameter List](specification/Formal_Parameter_List.md)\n    + [Formal Parameter](specification/Formal_Parameter.md)\n    + [Name](specification/Name.md)\n    + [Namespace](specification/Namespace.md)\n    + [Variable](specification/Variable.md)\n    + [Type Specifier](specification/Type_Specifier.md)\n    + [Doc Comment](specification/Doc_Comment.md)\n    + [Doc Comment Line](specification/Doc_Comment_Line.md)\n    + [Comments](specification/Comments.md)\n+ **Type System**\n    + [Type Structure](specification/Type_Structure.md)\n    + [Type Conversions and Assignability](specification/Type_Conversions_and_Assignability.md)\n    + [Accessibility](specification/Accessibility.md)\n    + [Resolution](specification/Resolution.md)\n    + [Variable Scoping](specification/Variable_Scoping.md)\n    + [Compiler Warning Examples](specification/Compiler_Warning_Examples.md)\n\n## Dependencies\n\n+ [ObjectWeb ASM](http://asm.ow2.org/)\n+ [Google Guava](https://github.com/google/guava)\n+ [Snowflake Parser](https://www.mackenziehigh.com/snowflake/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmackenzie-high%2Fautumn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmackenzie-high%2Fautumn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmackenzie-high%2Fautumn/lists"}