From 5930103a959f00d7cc2ba19513939f03e1b3ef66 Mon Sep 17 00:00:00 2001 From: acheney Date: Mon, 3 Mar 2025 12:03:40 -0500 Subject: [PATCH 1/5] Add module organization suggestion doc Suggest one method to keep slang modules organized in the file system. Closes #4841 --- docs/assets/moduletree.png | Bin 0 -> 75342 bytes .../04-modules-and-access-control.md | 37 ++++++++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 docs/assets/moduletree.png diff --git a/docs/assets/moduletree.png b/docs/assets/moduletree.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8c099a319c4f6bd13b8b620fa3daaaafe826b3 GIT binary patch literal 75342 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 Z0ll7PQi~kN!Wkt_ucLdZ-`=?ZCL@0 zOGEV#Es?H}U&7+SwP{P7i8@~156U~*-wz&z{*d5%J-*;}=;(?2coIg=U{~sV7wYRg zub3_NEP@K0GU;JC{o`%XsVL&vc3!E-W?Lw1#-vHSbnMQdJE2ID~ObN zh4q?~cf}9LQ%S3SEpzrM4oM?z_@r8Rqjn*nez9j#K)`0bJ&$*2PTTpKjsLj8#DWdl z`&QRbH(@F5ECovBI4M}g@-A&Bxkbs-d>_dCfDhYu_`Ahj)rp zu4kBL3ccCtC5n6K=C_{TI*j}Je&*60Ui|=DM({Pi6=wOzHlthrD@~i85}u2pwi)+} zF;7B?Fran{d8P!mRuzZ-wEBZNS((dr~98%)2QYRz}96@j8ct~0yMlXhpr>fpy)ltG{BAGQ0CgFpL$0$M~oTwGG+xRi*=!K-+x zRX{@~ZO8k%?>z+X8f-PQs@%5S1T{xXopn|_Y!xgwO#W4vhKbd&Dq=%-p;W?@@4E;5uaSFLw2FjK}ot@bj|+k%sc zDeYUDfjqr3n@rjhx{|_b@(!+4$ZI|P)CDBg`67UEWN2hBD?&ZFV}&3t*^p}nM<;bD zOFd0PL)K8aLSz=;=#>!1&N8s57VOjN)4R9ih2!@6Q8pVE7Iu@GBE;aiXc_ind|~vt z#WY2FCeZHJR*3v%aK-ms+kFg+9L`$p)07bC=r!qajWN@vpj+{G!FFwos*uD_&}NbX zkrsD+Yzuf`AbEq+L$uZ!Rj9qsQ>fiQo|~%t(*OC4r%H27%Q60fXVSWal&Utps-})~ zW7)ET%bZ6dBTo@>Jf88vG1lALCu6^1{XS7lJD}3sM}r z`}af;Hwj;Q_^%Hw%9>DXt&4!u;jK*%S$Y&JGI!L6ky7P&p!|p_I-2|gjYc6UD7-K% z)}lc0vp1PwTYnMUEw^4Rb)H=u(@Dfi>J3A=N1PUX;aJ#ZwlU#;tz2sTI8%vf$I50# zf`~h?oVAX9O)u^LFf0BEy8M$Je{RpY4;CtW0o011=8OY}3Vx=OrLe>6TvG$Go|5s& zrv+5cegR3)H(Gm_2Dp?KXu%G&X8g_1V+exdT;)k0l(yjmx1@1V$daI1!3u8DR|+A=3+7W-#@QFVto^;BvspFDU)TgEvAAB05%HX;t94ADMB~ z~#E8ZCKN5q9#A&xjn-YQ;+S8@Fi+hwF<6jofo)Sc=*KJLqrhw45NucGg zV#B9v1+xuou?-v&Zi^%pcUeG2<=Mz~O2tE&{155!?*ucnOr1=c0_cOzGW5+KQfUzB z>QWN{=J6Vp`8^ldlkW)pyv+}Q7XKgY8tDaGO4E$k_=Hd6OS2UUd5V>W-G7WAPK@ba zl|uG2$C+!L$iF|5?slxR(NUW5sbr;%RHXxDfBO^rv%NEZ6!8^IqLzBEx3G}L&_Ia- ziyS{R`Hjwv%609obDmjPj-tSSaE`QsyjKG#j2Q&v4>Ro;)}SBaQUW7V{6NFKOTGUa z*PtnZGsFKrUr}-W50(nY3ars<`Zp6u90m|5U}W #### Note #### -> Future versions of the Slang system will support loading of modules from pre-compiled binaries instead of source code. -> The same `import` keyword will continue to work in that case. - ## Access Control Slang supports access control modifiers: `public`, `internal` and `private`. The module boundary plays an important role in access control. @@ -195,6 +191,39 @@ The Slang compiler enforces the following rules regarding access control: - Type definitions themselves cannot be `private`, for example, `private struct S {}` is not valid code. - `interface` requirements cannot be `private`. +## Organizing Systems of Modules + +Slang does not seek to impose any specific organization of modules. However, there are some conventions that have emerged as being useful. + +### Module Organization Suggestions + +- Top-level modules are those that are `import`ed by user code. +- The implementation details of the module are placed in the lower levels of the tree. + +This has the benefit that it is easy for a user to distinguish the public API from the implementation details. + +### Module Organization Example + +Module organization tree diagram + +### Module Organization Example + +The above diagram shows a module organization example. + +Top-level modules such as `utils.slang` are those that are directly `import`ed by user code. The implementation details of the module are placed in the lower levels of the tree. + +In this example, the `utils.slang` module needn't contain anything more than a module declaration and a list of included sub-modules, with optional `import` statement(s) to pull in any external dependencies, e.g. + +``` +module utils; +import slangpy; + +__include "utils/accumlator.slang"; +__include "utils/tonemap.slang"; +__include "utils/fill.slang"; +``` + +Here, all the symbols defined in `accumlator.slang`, `tonemap.slang`, and `fill.slang` are visible to the user of the `utils` module, and these helper modules do not need to clutter the top-level file hierarchy. ## Legacy Modules From 363a6e78c23aacd589fc9bf9786a61186012e218 Mon Sep 17 00:00:00 2001 From: acheney Date: Mon, 3 Mar 2025 13:20:36 -0500 Subject: [PATCH 2/5] Update TOC --- docs/user-guide/toc.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/user-guide/toc.html b/docs/user-guide/toc.html index 01e9d09b06..51faebb7ec 100644 --- a/docs/user-guide/toc.html +++ b/docs/user-guide/toc.html @@ -58,6 +58,7 @@
  • Defining a Module
  • Importing a Module
  • Access Control
  • +
  • Organizing Systems of Modules
  • Legacy Modules
  • @@ -265,4 +266,4 @@ - \ No newline at end of file + From e071f4cb4ead896b6a94fed61eda53c7b9326879 Mon Sep 17 00:00:00 2001 From: acheney Date: Mon, 3 Mar 2025 13:39:50 -0500 Subject: [PATCH 3/5] Update toc.html --- docs/user-guide/toc.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/toc.html b/docs/user-guide/toc.html index 51faebb7ec..5462cd4b4e 100644 --- a/docs/user-guide/toc.html +++ b/docs/user-guide/toc.html @@ -266,4 +266,4 @@ - + \ No newline at end of file From 99f8e409a8d6450497e3607343c6b0da55b53761 Mon Sep 17 00:00:00 2001 From: acheney Date: Mon, 3 Mar 2025 14:31:01 -0500 Subject: [PATCH 4/5] Update wording --- docs/user-guide/04-modules-and-access-control.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/user-guide/04-modules-and-access-control.md b/docs/user-guide/04-modules-and-access-control.md index 0f8a559ea3..0b4d44e0d4 100644 --- a/docs/user-guide/04-modules-and-access-control.md +++ b/docs/user-guide/04-modules-and-access-control.md @@ -191,14 +191,14 @@ The Slang compiler enforces the following rules regarding access control: - Type definitions themselves cannot be `private`, for example, `private struct S {}` is not valid code. - `interface` requirements cannot be `private`. -## Organizing Systems of Modules +## Organizing File Structure of Modules Slang does not seek to impose any specific organization of modules. However, there are some conventions that have emerged as being useful. ### Module Organization Suggestions -- Top-level modules are those that are `import`ed by user code. -- The implementation details of the module are placed in the lower levels of the tree. +- The top-level directory contains modules that would be `import`ed by user code. +- The implementation details of the modules are placed in files at lower levels of the tree. This has the benefit that it is easy for a user to distinguish the public API from the implementation details. @@ -210,9 +210,9 @@ This has the benefit that it is easy for a user to distinguish the public API fr The above diagram shows a module organization example. -Top-level modules such as `utils.slang` are those that are directly `import`ed by user code. The implementation details of the module are placed in the lower levels of the tree. +Top-level module files such as `utils.slang` are those that are directly `import`ed by user code. The implementation details of the module are placed in the lower levels of the tree, organized into similarly named subdirectories for clarity. -In this example, the `utils.slang` module needn't contain anything more than a module declaration and a list of included sub-modules, with optional `import` statement(s) to pull in any external dependencies, e.g. +Modules like `utils.slang` needn't contain anything more than a module declaration and a list of included files, with optional `import` statement(s) to pull in any external dependencies, e.g. ``` module utils; @@ -223,7 +223,7 @@ __include "utils/tonemap.slang"; __include "utils/fill.slang"; ``` -Here, all the symbols defined in `accumlator.slang`, `tonemap.slang`, and `fill.slang` are visible to the user of the `utils` module, and these helper modules do not need to clutter the top-level file hierarchy. +Here, all the public symbols defined in `accumlator.slang`, `tonemap.slang`, and `fill.slang` are visible to the user of the `utils` module, and these constituent helper files do not need to clutter the top-level file hierarchy. ## Legacy Modules From 7f38050c17ef21c8d20dc03840370a7e0f89ece9 Mon Sep 17 00:00:00 2001 From: acheney Date: Mon, 3 Mar 2025 14:32:13 -0500 Subject: [PATCH 5/5] Update TOC --- docs/user-guide/toc.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/user-guide/toc.html b/docs/user-guide/toc.html index 5462cd4b4e..8a314d6887 100644 --- a/docs/user-guide/toc.html +++ b/docs/user-guide/toc.html @@ -58,7 +58,7 @@
  • Defining a Module
  • Importing a Module
  • Access Control
  • -
  • Organizing Systems of Modules
  • +
  • Organizing File Structure of Modules
  • Legacy Modules