diff --git a/LICENCE.md b/LICENCE.md index 851205e..51ae63a 100644 --- a/LICENCE.md +++ b/LICENCE.md @@ -1,360 +1,360 @@ -# GNU GENERAL PUBLIC LICENSE - -Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - - - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -## Preamble - -The licenses for most software are designed to take away your freedom -to share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if -you distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, -we want its recipients to know that what they have is not the -original, so that any problems introduced by others will not reflect -on the original authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at -all. - -The precise terms and conditions for copying, distribution and -modification follow. - -## TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -**0.** This License applies to any program or other work which -contains a notice placed by the copyright holder saying it may be -distributed under the terms of this General Public License. The -"Program", below, refers to any such program or work, and a "work -based on the Program" means either the Program or any derivative work -under copyright law: that is to say, a work containing the Program or -a portion of it, either verbatim or with modifications and/or -translated into another language. (Hereinafter, translation is -included without limitation in the term "modification".) Each licensee -is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the Program -(independent of having been made by running the Program). Whether that -is true depends on what the Program does. - -**1.** You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a -fee. - -**2.** You may modify your copy or copies of the Program or any -portion of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - -**a)** You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - - -**b)** You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any part -thereof, to be licensed as a whole at no charge to all third parties -under the terms of this License. - - -**c)** If the modified program normally reads commands interactively -when run, you must cause it, when started running for such interactive -use in the most ordinary way, to print or display an announcement -including an appropriate copyright notice and a notice that there is -no warranty (or else, saying that you provide a warranty) and that -users may redistribute the program under these conditions, and telling -the user how to view a copy of this License. (Exception: if the -Program itself is interactive but does not normally print such an -announcement, your work based on the Program is not required to print -an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -**3.** You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - -**a)** Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections 1 -and 2 above on a medium customarily used for software interchange; or, - - -**b)** Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your cost of -physically performing source distribution, a complete machine-readable -copy of the corresponding source code, to be distributed under the -terms of Sections 1 and 2 above on a medium customarily used for -software interchange; or, - - -**c)** Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is allowed -only for noncommercial distribution and only if you received the -program in object code or executable form with such an offer, in -accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -**4.** You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt otherwise -to copy, modify, sublicense or distribute the Program is void, and -will automatically terminate your rights under this License. However, -parties who have received copies, or rights, from you under this -License will not have their licenses terminated so long as such -parties remain in full compliance. - -**5.** You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -**6.** Each time you redistribute the Program (or any work based on -the Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -**7.** If, as a consequence of a court judgment or allegation of -patent infringement or for any other reason (not limited to patent -issues), conditions are imposed on you (whether by court order, -agreement or otherwise) that contradict the conditions of this -License, they do not excuse you from the conditions of this License. -If you cannot distribute so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, -then as a consequence you may not distribute the Program at all. For -example, if a patent license would not permit royalty-free -redistribution of the Program by all those who receive copies directly -or indirectly through you, then the only way you could satisfy both it -and this License would be to refrain entirely from distribution of the -Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -**8.** If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -**9.** The Free Software Foundation may publish revised and/or new -versions of the General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Program does not specify a -version number of this License, you may choose any version ever -published by the Free Software Foundation. - -**10.** If you wish to incorporate parts of the Program into other -free programs whose distribution conditions are different, write to -the author to ask for permission. For software which is copyrighted by -the Free Software Foundation, write to the Free Software Foundation; -we sometimes make exceptions for this. Our decision will be guided by -the two goals of preserving the free status of all derivatives of our -free software and of promoting the sharing and reuse of software -generally. - -**NO WARRANTY** - -**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - -END OF TERMS AND CONDITIONS - -## How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - -To do so, attach the following notices to the program. It is safest to -attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - one line to give the program's name and an idea of what it does. - Copyright (C) yyyy name of author - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License - as published by the Free Software Foundation; either version 2 - of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see . - -Also add information on how to contact you by electronic and paper -mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details - type `show w'. This is free software, and you are welcome - to redistribute it under certain conditions; type `show c' - for details. - -The hypothetical commands \`show w' and \`show c' should show the -appropriate parts of the General Public License. Of course, the -commands you use may be called something other than \`show w' and -\`show c'; they could even be mouse-clicks or menu items--whatever -suits your program. - -You should also get your employer (if you work as a programmer) or -your school, if any, to sign a "copyright disclaimer" for the program, -if necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright - interest in the program `Gnomovision' - (which makes passes at compilers) written - by James Hacker. - - signature of Moe Ghoul, 1 April 1989 - Moe Ghoul, President of Vice - -This General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, -you may consider it more useful to permit linking proprietary -applications with the library. If this is what you want to do, use the -[GNU Lesser General Public -License](https://www.gnu.org/licenses/lgpl.html) instead of this -License. +# GNU GENERAL PUBLIC LICENSE + +Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +## Preamble + +The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if +you distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + +We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, +we want its recipients to know that what they have is not the +original, so that any problems introduced by others will not reflect +on the original authors' reputations. + +Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at +all. + +The precise terms and conditions for copying, distribution and +modification follow. + +## TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +**0.** This License applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work +based on the Program" means either the Program or any derivative work +under copyright law: that is to say, a work containing the Program or +a portion of it, either verbatim or with modifications and/or +translated into another language. (Hereinafter, translation is +included without limitation in the term "modification".) Each licensee +is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does. + +**1.** You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a +fee. + +**2.** You may modify your copy or copies of the Program or any +portion of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + +**a)** You must cause the modified files to carry prominent notices +stating that you changed the files and the date of any change. + + +**b)** You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any part +thereof, to be licensed as a whole at no charge to all third parties +under the terms of this License. + + +**c)** If the modified program normally reads commands interactively +when run, you must cause it, when started running for such interactive +use in the most ordinary way, to print or display an announcement +including an appropriate copyright notice and a notice that there is +no warranty (or else, saying that you provide a warranty) and that +users may redistribute the program under these conditions, and telling +the user how to view a copy of this License. (Exception: if the +Program itself is interactive but does not normally print such an +announcement, your work based on the Program is not required to print +an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +**3.** You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + +**a)** Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections 1 +and 2 above on a medium customarily used for software interchange; or, + + +**b)** Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your cost of +physically performing source distribution, a complete machine-readable +copy of the corresponding source code, to be distributed under the +terms of Sections 1 and 2 above on a medium customarily used for +software interchange; or, + + +**c)** Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is allowed +only for noncommercial distribution and only if you received the +program in object code or executable form with such an offer, in +accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +**4.** You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and +will automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + +**5.** You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +**6.** Each time you redistribute the Program (or any work based on +the Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +**7.** If, as a consequence of a court judgment or allegation of +patent infringement or for any other reason (not limited to patent +issues), conditions are imposed on you (whether by court order, +agreement or otherwise) that contradict the conditions of this +License, they do not excuse you from the conditions of this License. +If you cannot distribute so as to satisfy simultaneously your +obligations under this License and any other pertinent obligations, +then as a consequence you may not distribute the Program at all. For +example, if a patent license would not permit royalty-free +redistribution of the Program by all those who receive copies directly +or indirectly through you, then the only way you could satisfy both it +and this License would be to refrain entirely from distribution of the +Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +**8.** If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +**9.** The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation. + +**10.** If you wish to incorporate parts of the Program into other +free programs whose distribution conditions are different, write to +the author to ask for permission. For software which is copyrighted by +the Free Software Foundation, write to the Free Software Foundation; +we sometimes make exceptions for this. Our decision will be guided by +the two goals of preserving the free status of all derivatives of our +free software and of promoting the sharing and reuse of software +generally. + +**NO WARRANTY** + +**11.** BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +**12.** IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + +END OF TERMS AND CONDITIONS + +## How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + +To do so, attach the following notices to the program. It is safest to +attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + one line to give the program's name and an idea of what it does. + Copyright (C) yyyy name of author + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . + +Also add information on how to contact you by electronic and paper +mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details + type `show w'. This is free software, and you are welcome + to redistribute it under certain conditions; type `show c' + for details. + +The hypothetical commands \`show w' and \`show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than \`show w' and +\`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the program, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright + interest in the program `Gnomovision' + (which makes passes at compilers) written + by James Hacker. + + signature of Moe Ghoul, 1 April 1989 + Moe Ghoul, President of Vice + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, +you may consider it more useful to permit linking proprietary +applications with the library. If this is what you want to do, use the +[GNU Lesser General Public +License](https://www.gnu.org/licenses/lgpl.html) instead of this +License. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5f87d34 --- /dev/null +++ b/LICENSE @@ -0,0 +1,12 @@ +MIT License + +Copyright 2025 Carle-Margueritte Alexandre + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this documentation to deal in the Documentation without restriction, +including without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Documentation, and to +permit persons to whom the Documentation is furnished to do so, subject to +the following conditions: + +THE DOCUMENTATION IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. diff --git a/server.go b/server.go new file mode 100644 index 0000000..a6a4db5 --- /dev/null +++ b/server.go @@ -0,0 +1,17 @@ +package main + +import ( + "log" + "net/http" +) + +func main() { + fs := http.FileServer(http.Dir("./sterling")) + http.Handle("/", fs) + + log.Println("Serving at http://localhost:8080") + err := http.ListenAndServe(":8080", nil) + if err != nil { + log.Fatal(err) + } +} diff --git a/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav b/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav deleted file mode 100644 index d496086..0000000 Binary files a/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav and /dev/null differ diff --git a/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav:Zone.Identifier b/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav:Zone.Identifier deleted file mode 100644 index f1dcde8..0000000 --- a/sleepeesoftware.fr/assets/DJ_Ten_MagnetoSphere.wav:Zone.Identifier +++ /dev/null @@ -1,4 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=https://notube.lol/ -HostUrl=https://s54.notube.lol/download.php?token=5f15cd14334e4930e9c79f9d74ad31da&key=amwl7fyh9dhxt2au diff --git a/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav b/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav deleted file mode 100644 index 6e8b347..0000000 Binary files a/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav and /dev/null differ diff --git a/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav:Zone.Identifier b/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav:Zone.Identifier deleted file mode 100644 index cb217e8..0000000 --- a/sleepeesoftware.fr/assets/Michael_Cassette_Crocketts_Theme.wav:Zone.Identifier +++ /dev/null @@ -1,4 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=https://notube.lol/ -HostUrl=https://s43.notube.lol/download.php?token=23a13a3144dd96cdd58f3b64daebea4c&key=7pxuaym283gtz06u diff --git a/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav b/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav deleted file mode 100644 index 403c4e1..0000000 Binary files a/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav and /dev/null differ diff --git a/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav:Zone.Identifier b/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav:Zone.Identifier deleted file mode 100644 index 6745514..0000000 --- a/sleepeesoftware.fr/assets/National_Aerobic_Championship_Theme.wav:Zone.Identifier +++ /dev/null @@ -1,4 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=https://notube.lol/ -HostUrl=https://s44.notube.lol/download.php?token=88de54461ec0988ec579bb2164ec06ed&key=6wi22j8j1ccduili diff --git a/sleepeesoftware.fr/assets/Project_2.ogg b/sleepeesoftware.fr/assets/Project_2.ogg deleted file mode 100644 index d6907d9..0000000 Binary files a/sleepeesoftware.fr/assets/Project_2.ogg and /dev/null differ diff --git a/sleepeesoftware.fr/assets/RpdC.gif:Zone.Identifier b/sleepeesoftware.fr/assets/RpdC.gif:Zone.Identifier deleted file mode 100644 index 5c80612..0000000 --- a/sleepeesoftware.fr/assets/RpdC.gif:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -HostUrl=https://i.gifer.com/embedded/download/RpdC.gif diff --git a/sleepeesoftware.fr/assets/neon-dreams-vice-city-theme.mp3 b/sleepeesoftware.fr/assets/neon-dreams-vice-city-theme.mp3 deleted file mode 100644 index b3ea99c..0000000 Binary files a/sleepeesoftware.fr/assets/neon-dreams-vice-city-theme.mp3 and /dev/null differ diff --git a/sleepeesoftware.fr/icon/apple-touch-icon.png:Zone.Identifier b/sleepeesoftware.fr/icon/apple-touch-icon.png:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/apple-touch-icon.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/favicon-96x96.png:Zone.Identifier b/sleepeesoftware.fr/icon/favicon-96x96.png:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/favicon-96x96.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/favicon.ico:Zone.Identifier b/sleepeesoftware.fr/icon/favicon.ico:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/favicon.ico:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/favicon.svg:Zone.Identifier b/sleepeesoftware.fr/icon/favicon.svg:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/favicon.svg:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/site.webmanifest:Zone.Identifier b/sleepeesoftware.fr/icon/site.webmanifest:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/site.webmanifest:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/web-app-manifest-192x192.png:Zone.Identifier b/sleepeesoftware.fr/icon/web-app-manifest-192x192.png:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/web-app-manifest-192x192.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sleepeesoftware.fr/icon/web-app-manifest-512x512.png:Zone.Identifier b/sleepeesoftware.fr/icon/web-app-manifest-512x512.png:Zone.Identifier deleted file mode 100644 index 3d7126c..0000000 --- a/sleepeesoftware.fr/icon/web-app-manifest-512x512.png:Zone.Identifier +++ /dev/null @@ -1,3 +0,0 @@ -[ZoneTransfer] -ZoneId=3 -ReferrerUrl=C:\Users\emilia\Downloads\favicon(1).zip diff --git a/sterling/assets/IosevkaSS15-Regular.ttf b/sterling/assets/IosevkaSS15-Regular.ttf new file mode 100644 index 0000000..da77b4c Binary files /dev/null and b/sterling/assets/IosevkaSS15-Regular.ttf differ diff --git a/sterling/css/base.css b/sterling/css/base.css new file mode 100644 index 0000000..6e0c2ce --- /dev/null +++ b/sterling/css/base.css @@ -0,0 +1,138 @@ +:root { + --bg-color: #0f1117; + --fg-color: #f4f4f4; + --accent-color: #00ffe0; + --code-bg: #1a1c22; + --section-gap: 4rem; +} + +body { + margin: 0; + font-family: 'Iosevka SS14', monospace; + background-color: var(--bg-color); + color: var(--fg-color); + transition: background 0.3s, color 0.3s; + display: flex; +} + +header { + background: #000; + padding: 1rem; + color: var(--fg-color); + text-align: center; + position: sticky; + top: 0; + width: 100%; + z-index: 10; + box-shadow: 0 0 10px #0008; + display: flex; + align-items: center; + justify-content: space-around; +} + +h1, h2, h3 { + color: var(--accent-color); +} + +header h1 { + margin: 0; + font-size: 1.5rem; + color: var(--accent-color); +} + +#searchInput { + display: block; + position: relative; + top: 100%; + right: 1rem; + padding: 0.5rem; + border: 1px solid var(--fg-color); + z-index: 5; + width: 200px; + background: none; + color: var(--fg-color); +} + +.controls { + background: #111; + padding: 1rem; + border-top: 1px solid #333; + display: flex; + gap: 1rem; + justify-content: center; +} + +.controls button { + background: none; + border: 1px solid var(--fg-color); + color: var(--fg-color); + padding: 0.5rem 1rem; + cursor: pointer; +} + +main { + flex-grow: 1; + padding: 2rem; +} + +.section { + padding-bottom: 2rem; +} + +.section h2 { + color: var(--accent-color); + font-size: 1.25rem; + cursor: pointer; +} + +.section-content { + display: none; + margin-top: 1rem; +} + +.section.open .section-content { + display: block; +} + +pre { + background: var(--code-bg); + padding: 1rem; + overflow-x: auto; +} + +code { + /*display: block;*/ + background: var(--code-bg); + /*padding: 1rem;*/ + margin: 1rem 0; + white-space: pre-wrap; + color: #aaffaa; +} + +a { + color: #00ffe0; +} + +footer { + display: flex; + /*flex-flow: column;*/ + align-items: center; + justify-content: space-around; + background: var(--code-bg); +} + +footer section{ + position: relative; + display: block; + padding: 2em; +} + +footer h4 { + text-align: center; +} + +@media print { + .controls, #searchDropdown, #searchToggle { + display: none !important; + } +} diff --git a/sterling/html/back-end.html b/sterling/html/back-end.html new file mode 100644 index 0000000..e69de29 diff --git a/sterling/html/exemple.html b/sterling/html/exemple.html new file mode 100644 index 0000000..e69de29 diff --git a/sterling/html/start.html b/sterling/html/start.html new file mode 100644 index 0000000..e69de29 diff --git a/sterling/index.html b/sterling/index.html new file mode 100644 index 0000000..536b442 --- /dev/null +++ b/sterling/index.html @@ -0,0 +1,451 @@ + + + + + + + + Language Documentation + + + +
+
+

Sterling Documentation

+ +
+ + + +
+
+ + +
+ +

Version: 0.1.0-alpha

+ +

Preface

+

"An Idiot admire complexity, a genius admire simplicity" Terry A. Davis

+

"Master All, Ace One" Boykisser

+ +

Overview

+

Sterling is a low-level, strongly typed, systems programming language designed for performance, ABI stability, C interoperability, and full control over memory and hardware. It supports metaprogramming, hot-reloading, inline and raw assembly, and is built for multi-file compilation. It also introduces memory safety primitives and modern low-abstraction control flow enhancements.

+ +

This Document is a work in progress, features are not yet implemented and i use this as a design document to stay true to my vision

+ +

File Extensions (subject to change)

+
    +
  • Source files: .stg
  • +
  • Header files: .sth
  • +
+
+

Function

+
+ +

Qualifiers

+

Every function must declare its linkage explicitly:

+ +

+fn 		//globally visible, default linkage
+fn_static	//translation unit-local only
+fn_inline	//inline-only, no symbol emitted
+fn_asm		//raw assembly function, globally visible
+fn_static_asm	//raw assembly function, TU-local only
+fn_inline_asm	//inline-only asm, no symbol emitted
+fn_async	//for fiber (coroutine) ??
+
+ +

Syntax

+

All functions must explicitly declare their return type. The only exception is void, which may be omitted for brevity when no return value is intended.

+ +

+fn u32 add(u32 a, u32 b) {
+	return (a + b);
+}
+
+fn_inline u32 max(u32 a, u32 b) {
+	return ((a > b) ? a : b);
+}
+
+fn exit() {
+	// equivalent to fn void exit()
+}
+
+ +

Assembly

+

Write raw x86_64 assembly using fn_asm or fn_static_asm. Symbol, section, and global declaration are implicit.(placeholder)

+ +

+fn_asm void* memset(void* dst, u8 value, u64 size) {
+	test rdx, rdx
+	je .done
+
+	mov rax, rsi
+	mov rdi, rdi
+	mov rcx, rdx
+
+	rep stosb
+
+.done:
+	mov rax, rdi
+	ret
+}
+
+
+
+ +
+

Syscalls

+
+

System calls are allowed via fn_asm or wrapped using concrete ABI-aware interfaces. Example: (placeholder)

+

+fn_asm void exit() {
+	mov rax, 60   ; syscall: exit
+	mov rdi, 0    ; exit code
+	syscall
+	ret
+}
+
+
+
+ +
+

Register Access

+
+

Sterling exposes raw CPU registers as language-level primitives. This is intended for kernel, embedded, and runtime-critical tasks.

+

+fn u64 get_rbp() {
+	return rbp;
+}
+
+fn void set_rsp(u64 val) {
+	rsp = val;
+}
+
+

Supported registers: rax, rbx, rcx, rdx, rsi, rdi, rsp, rbp, r8..r15.

+
+
+ +
+

Types

+
+ +

+i8, i16, i32, i64	// signed integers
+u8, u16, u32, u64	// unsigned integers
+f32, f64		// 32-bit and 64-bit IEEE floats
+bool			// 1-byte boolean, 0 or 1 only//maybe but not a fan of them
+char			// 1-byte character (UTF-8)
+
+

+T*			// Pointer to type T
+ptr*			// Special pointer with implicit coercion allowed
+void*			// Opaque pointer with explicit cast required
+
+ +

+typedef struct {
+	u32 x = 5;
+	u32 y;
+} vec2u;
+
+vec2u a = {};	// x = 5, y = 0
+vec2u b = {0};	// x = 0, y = 0
+vec2u c;	// x = 0, y = 0
+
+

+u32 raw_val @raw; // raw_val = ? can be poopoo data
+
+
+
+ +
+

Memory Model

+
+

Manual memory management by default. Variables are zero-initialized unless marked @raw. All layout is predictable and cache-friendly. Custom allocators are encouraged.

+
    +
  • Stack: locals
  • +
  • Heap: explicit alloc/free
  • +
  • Inline: structs passed by value
  • +
+
+
+ + + +
+

Control Flow

+
+ +

Loop

+

Sterling introduces tagged loops and escape blocks for structured yet flat nested loop + behavior:

+ +

+loop_outer: loop {
+	loop_inner: loop {
+		if (should_exit_inner()) break loop_inner;
+		if (should_exit_outer()) break loop_outer;
+	}
+}
+
+loop {
+	i32 i;//default init at 0
+
+	while() {
+		do
+	}
+}
+
+loop {
+	i32 i;
+	while() {
+		do
+	}
+}
+
+for_each (tmp : array(T)) {
+}?
+
+

This allows control without stack-nesting or excessive flags.

+ +

Branching

+

+ +

+
+fn u32 test(u32 x, u32 y) {
+	if (x == y) {
+
+	}
+	if (x == 0) {
+
+	}
+	if (y == 0) {
+
+	}
+
+	switch (data) {
+		(a) {
+			break;
+		}
+		(b) {
+			break;
+		}
+		default: {
+			break;
+		}
+	}
+
+	block search {
+		loop delta {
+			i32 i;
+			while() {
+
+			}
+		}
+	}
+}
+
+
+ +
+
+ +
+

Dynamic Arrays with Aligned Layout

+
+

Runtime-initialized aligned linear arrays can be used to simulate array-of-array structures, where all memory layout is controlled explicitly with offsets:

+

+struct ArrayView {
+	u8* data;
+	u32 stride;
+	u32 count;
+};
+
+

Insertions and deletions move memory explicitly, re-aligning if needed.

+
+
+ +
+

Dynamic Linking

+
+

Sterling does not rely on dynamic linking by default. Static linking is favored for OS and runtime simplicity. Dynamic linking may be optionally implemented via host-defined facilities in the future.

+
+
+ +
+

Metaprogramming

+
+

also i am not thinking of having something as close as what jai have, if you want solid meta programming look out for when jai become open beta

+ +

Metaprogramming

+

Sterling supports compile-time metaprogramming via the meta keyword. Meta constructs are evaluated at compile time and allow structured code generation, reflection, and type introspection.

+ +

Capabilities

+
    +
  • Generate code at compile-time (functions, structs, constants)
  • +
  • Inspect type properties: size, alignment, fields
  • +
  • Enumerate over struct fields, enum variants, function parameters
  • +
  • Branch compile-time logic via meta if, meta match
  • +
  • Define metafunctions using meta fn (not emitted at runtime)
  • +
  • Support platform/target-specific compilation logic
  • +
+ +

Restrictions

+
    +
  • Meta code must be side-effect free (pure, deterministic)
  • +
  • No runtime reflection or dynamic codegen
  • +
  • No access to I/O, filesystem, or arbitrary memory
  • +
  • All meta-expansions must type-check
  • +
  • Expansion depth and iteration count are bounded
  • +
+ +

Example

+

+meta fn print_fields_of(T) {
+	for (field : fields(T)) {
+		print("Field: ", field.name, " of type ", field.type);
+	}
+}
+
+meta if sizeof(T) > 64 {
+	fn_inline void fast_copy(T* dst, T* src) { ... }
+}
+
+ +

Compiler Meta API (proposed)

+

+meta_typeof(expr)
+meta_sizeof(T)
+meta_alignof(T)
+meta_fields_of(T)
+meta_fn_params(fn)
+meta_platform() // e.g., "linux", "windows"
+meta_codegen(name, ast_block) // gated for advanced use
+
+ +
+
+ +
+

ABI and Interop

+
+

TODO: Specify ABI model (System V AMD64), calling convention details, struct/pointer representation rules. C interaction, emiting ELF/COFF/Mach-O symbol tables .o

+
+
+ +
+

Threading

+
+

TODO: Describe standard threading model, scheduler integration, context switching, green threads API.

+ +

Fiber (Coroutine)

+

Using user managed stack that is allocated (usefull for userland threading)

+ +
    +
  • Each fiber as:
  • +
      +
    • Its own manually allocated stack
    • +
    • Registers saved/restored on yield and resume
    • +
    • Tracked by a runtime scheduler (or user managed)
    • +
    +
  • fiber_yield() triggers context switch, calling back into a fiber scheduler
  • +
  • Can be pooled, migrated between threads, or used for deterministic execution (e.g., game loops, scripting)
  • +
+ +

Internal Scheduler Model

+
    +
  • A circular queue or priority queue of fiber_ids
  • +
  • fiber_yield() pushes current fiber to back of queue
  • +
  • fiber_resume() pulls next and switches context
  • +
+

This allows async, non-blocking logic to be modeled without system threads.

+ +

Safety and ABI Guarantees

+ +
    +
  • define the fiber stack layout, allowing for precise control (great for embedded targets)
  • +
  • fiber_spawn can return errors if stack is misaligned or exhausted
  • +
  • ABI guarantees for fiber functions: must follow a calling convention you define (e.g., preserved registers)
  • + +

    Thread

    +

    +
      +
    • Created via OS APIs (e.g., pthread, CreateThread, or syscall wrappers)
    • +
    • Each thread runs independently; shares global heap and data structures
    • +
    • You wrap OS threads and assign them entry points via thread_spawn
    • +
    + +

    Thread Primitives

    + +
    
    +fn thread_spawn(void fn() entry_fn) -> thread_id;
    +fn thread_join(thread_id tid);
    +fn thread_exit();
    +
    + +

    Fiber Primitives

    + +
    
    +typedef struct fiber {
    +	void*	stack;
    +	u64	stack_size;
    +	void*	ip;//instruction pointer
    +	u8	flag;
    +}	fiber;
    +
    +fn fiber_spawn(void fn() entry_fn) -> fiber_id;
    +fn fiber_yield();
    +fn fiber_resume(fiber_id id);
    +fn fiber_self() -> fiber_id;//could also be used instead of fork ex main process fibe_self = 0;
    +
    + +

    Optional stack control:

    + +
    
    +fn fiber_spawn_stack(void fn(), void* stack_ptr, u64 size);
    +
    + +
+
+ +
+

Graphics and Rendering

+
+

TODO: Describe native rendering interfaceI have been thinking about supporting amd gpu acceleration with very few set of actual call, very fewer than opengl or other, but i will focus only on one hardware at first

+
+
+ +
+

Build and Compilation Model

+
+

TODO: AOT compilation, linker behavior, multi-file project structure, module system (if any).

+
+
+ +
+
+

email

+

dev@sleepeesoftware.fr

+
+
+

website

+

sleepeesoftware.fr

+
+
+

Copyright @ 2025 Carle-Margueritte Alexandre
Verbatim copying and redistribution of this entire page are permitted provided this notice is preserved.
+Verbatim copying and redistribution of any of the photos in the photos subdirectory is permitted under the MIT License

+ + diff --git a/sterling/js/base.js b/sterling/js/base.js new file mode 100644 index 0000000..b9da8df --- /dev/null +++ b/sterling/js/base.js @@ -0,0 +1,33 @@ +function toggleTheme() { + const root = document.documentElement; + const dark = root.style.getPropertyValue('--bg-color') === '#0f1117'; + root.style.setProperty('--bg-color', dark ? '#ffffff' : '#0f1117'); + root.style.setProperty('--fg-color', dark ? '#000000' : '#f4f4f4'); + root.style.setProperty('--code-bg', dark ? '#f0f0f0' : '#1a1c22'); +} + +function filterContent() { + const query = document.getElementById('searchInput').value.toLowerCase(); + document.querySelectorAll('.section').forEach(section => { + const text = section.innerText.toLowerCase(); + section.style.display = text.includes(query) ? 'block' : 'none'; + }); +} + +function downloadOfflineVersion() { + const blob = new Blob([document.documentElement.outerHTML], { type: 'text/html' }); + const a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = 'SystemsLangDocumentation.html'; + a.click(); +} + +function toggleSection(header) { + const section = header.parentElement; + section.classList.toggle('open'); +} + +function toggleSearch() { + const dropdown = document.getElementById('searchDropdown'); + dropdown.style.display = dropdown.style.display === 'block' ? 'none' : 'block'; +}