-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extensible Source Inclusion System, Smart Building for Marlin #25332
Extensible Source Inclusion System, Smart Building for Marlin #25332
Conversation
TFT font optimization requires new line in features.ini file for each family type increasing amount of work needed to support it. |
Sorry but you are mistaken. If multiple fonts get supported then you have a configuration option. You can use that to enable multiple features at once, like each font feature.
Launching the GCC compiler for a disabled source file is an unnecessaringly big task. This wastes both time and energy that could be spent on other computational activities. |
This is exactly my point - with the proposed granularity level even small change in UI will render this system outdated and it will fail to build firmware. On the other hand the time saving on excluding fonts file is insignificant at best. So again - proposed level of granularity is not an improvement over the one we already have. |
You have purposefully tested on a fast computer, excluding build speedups on people who just want to build Marlin on their old computers. Do not ignore the people stuck with their AVR processors or using old laptops. While I cannot speak for every computer out there I claim that there are special situations in which build exclusions speed up for good. Also you are ignoring the fact that the build process is much cleaner without those additional source files in the compilation stage. Your assumption that the build files do not result in a larger binary is randomly coincident to the fact that the compiler is smart enough to optimize your definitions away. In the object graph your font data does persist until linking stage. I wouldn't go as far as to rely on compiler optimization too much. Another small advantage of cleaning up the build stage is a cleaner build log. You only see the source files being built that matter, improving on the human maintainability of the Marlin project. If everyone were to include their optional sources... Just imagine what a mess it would become! Anyway, I do not understand your ramsack obstruction over this (maybe minor) software development improvement. |
There is absolutely no coincidence or optimization done by compiler.
"The need to constantly update this system will make development process more time consuming." |
What is actual quantifiable benefit of changed filtering? Does it shave off at least 5% of build time? Guess i'll go get my old netbook to test. |
@jmz52 Since you are so convinced that your multi-font stuff is so necessary for Marlin let me explain to you that many boards already hit their RAM/ROM limit with just one font (MKS Robin E3D V1.1 for example) Do you really it is a good idea? It is not a good idea for everybody. The memory is better spent increasing the framebuffer! Note that multi-font support is possible by making use of the TFT_FONT_* defines set out in this PR. You probably thought it something sinister but you are just mistaken. Please calm down and think, ok? I am not the one making build-speed improvement this big argument. This @jmz52 guy just felt triggered about it. Please look at the software model improvement by proper features.ini parsing instead. I think this is way more worthwhile. Also imagine code that references all the font data, by chance. By disabling the source files we are giving the user no wrong impressions that font data is overcrowding his printer firmware. The optional inclusion as set out by features.ini is giving good developer guidelines for firmware size minimalization. It simply does not appear in the build log, leading to a clean impression of the Marlin firmware building process. Granularity has always been a goal of Marlin firmware. In this discussion a point was made to the contrary but just think about it. There are many GCodes in Marlin that you can enable or disable based on what kind of printer you want. The additional configuration resolution for the firmware is aligned with Marlin's current strategy. @EvilGremlin Please spare yourself the extra work over this minor detail. It resulted from a user making a fuss about something changing related to what he worked on. I have corrected a detail in my post to not raise any wrong expectations! Most of the users will not see a GIANT impact on build speed improvement. But some will appreciate it, even if not always visible. |
https://www.youtube.com/watch?v=3pTu-lXoK6M Here is my statistical proof that Extensible Source Inclusion does save meaningful build time. The test target was the inclusion of the font files: on one end just helvetica was included and on the other all of them. The test results speak for themselves: with minimal fonts:
with maximal fonts:
mean-saving = abs(mean-time(minimal) - mean-time(maximal)) = 9.05 seconds |
40e1292
to
339773d
Compare
e90c213
to
4b9bb85
Compare
faa3233
to
5abfc61
Compare
I am sorry but I have decided to halt my activities on this PR for an indetermined amount of time. You are free to decide whether to continue it yourself. Thank you to the Marlin firmware community for providing this interesting playing ground for testing my ideas and vision. I hope that Marlin will continue to go towards the best 3D printing solution! Hopefully my ideas have inspired you on how to continue this software! |
27df113
to
8d31429
Compare
de391db
to
0f34163
Compare
Co-Authored-By: Martin Turski <[email protected]>
4394ab0
to
68869cd
Compare
Co-Authored-By: Martin Turski <[email protected]>
68869cd
to
046877f
Compare
e24c80d
to
accbf9f
Compare
It's been a busy few months trying to keep up with the Joneses, especially in the area of smoother and faster motion, and of course we want the followup to 2.1.2 to fix any extant issues and be a net improvement, so of course I got obsessed with refactoring. There are still various issues to work out with probing, leveling, and Fixed-Time Motion, but we're getting there. On that note, this PR is one of those helpful refactors that simplifies things, which is exactly the kind of refactor I like. I've just been reviewing the methodology applied in the improved dependencies script, and it all seems clean and robust. So, at last this will get merged for inclusion in 2.1.3. Sorry for the long delay. There are never enough hours in the day… week… month…. Overall, this is a very simple idea and well-implemented, patching a deficiency in PlatformIO that was making it a lot more tedious to do source filtering. I appreciate that you made a video. I would like to make more of those to share my excitement over things I have been building too. I've only made a couple of small tweaks here, notably moving the font dependencies to |
accbf9f
to
5c99e24
Compare
bdc30ae
to
8370c97
Compare
8370c97
to
0a32445
Compare
Thanks again! There are all kinds of elements in this codebase that can benefit from this kind of care and attention, and we have a shortage of capable developers, so your contribution is much appreciated. Lately I have been in the mood to address various deficits and the stratification of ad hoc solutions, and this is starting to bear some fruit. For example, I have a major LCD pins reorganization underway which is beginning to take shape, and I just managed to get rid of those annoying Meanwhile I'm working on improving the configuration documentation at the MarlinDocumentation repo by encapsulating all the settings in YML format, and stealing time to extend the Auto Build Marlin extension with the eventual goal of integrating that configuration tool with the website documentation, and even automating migration. The newest technologies represented by Klipper, Bambu Labs, Prusa Research, and Creality3D are inspiring and challenging us to achieve a higher standard, and that begins with shoring up the foundations of this project, so that is where my focus is increasingly centered. Rather than being overwhelmed by the challenges ahead, I am feeling more exhilarated than ever. And it is gratifying to encounter others who recognize the continuing relevance and potential of venerable old Marlin in a field of shiny new contenders. Onward and upward! |
commit cfbd8a2 Author: thinkyhead <[email protected]> Date: Thu May 4 00:20:30 2023 +0000 [cron] Bump distribution date (2023-05-04) commit 7642bfb Author: Keith Bennett <[email protected]> Date: Wed May 3 14:19:32 2023 -0700 🐛 Fix TFT Touch Calibration overrides (MarlinFirmware#25579) …and other misc. display-related updates Co-authored-by: Scott Lahteine <[email protected]> commit dbed3f1 Author: thinkyhead <[email protected]> Date: Wed May 3 00:20:18 2023 +0000 [cron] Bump distribution date (2023-05-03) commit e1f6435 Author: Scott Lahteine <[email protected]> Date: Tue May 2 17:59:27 2023 -0500 ✨ Creality STM32F401RE board (e.g., Ender-5 S1) (MarlinFirmware#25773) commit 21ea9bf Author: plampix <[email protected]> Date: Tue May 2 23:50:07 2023 +0200 🐛 Fix minimal M115, Cap:PROGRESS:0 (MarlinFirmware#25769) Co-authored-by: Scott Lahteine <[email protected]> commit 137ea43 Author: ellensp <[email protected]> Date: Wed May 3 09:15:10 2023 +1200 ✨ Creality Ender-2 (Melzi) (MarlinFirmware#25754) commit 9aa69cb Author: plampix <[email protected]> Date: Tue May 2 07:01:44 2023 +0200 Fix G12 Nozzle Clean (MarlinFirmware#25766) Followup to MarlinFirmware#25666 commit 61f0dd2 Author: Scott Lahteine <[email protected]> Date: Mon May 1 20:23:41 2023 -0500 🩹 Fix _CAN_HOME for new endstop flags commit 207535a Author: Scott Lahteine <[email protected]> Date: Mon May 1 20:33:58 2023 -0500 🔨 Fix Multi-Language Menu criteria commit 4812ed5 Author: Scott Lahteine <[email protected]> Date: Mon May 1 18:45:42 2023 -0500 🎨 Misc. code cleanup commit f89fa4c Author: thinkyhead <[email protected]> Date: Tue May 2 00:24:02 2023 +0000 [cron] Bump distribution date (2023-05-02) commit b042567 Author: Scott Lahteine <[email protected]> Date: Mon May 1 18:15:31 2023 -0500 🩹 Fix TFT sanity error commit 4bed8a8 Author: Scott Mikutsky <[email protected]> Date: Mon May 1 02:10:46 2023 -0400 🐛 Fix STM32 USB disconnect behavior (MarlinFirmware#25762) commit 006a9e5 Author: Scott Lahteine <[email protected]> Date: Sun Apr 30 23:10:44 2023 -0500 🩹 NOZZLE_CLEAN_PATTERN_* Followup Followup to MarlinFirmware#25666 commit 55cbe15 Author: Scott Lahteine <[email protected]> Date: Sun Apr 30 19:14:53 2023 -0500 🔧 Remove config.ini obsolete options commit 35dd6a3 Author: thinkyhead <[email protected]> Date: Mon May 1 00:22:20 2023 +0000 [cron] Bump distribution date (2023-05-01) commit 9773160 Author: Scott Lahteine <[email protected]> Date: Sun Apr 30 18:24:05 2023 -0500 🔧 Character display has boot screen commit f246e0d Author: Scott Lahteine <[email protected]> Date: Sun Apr 30 18:12:13 2023 -0500 🔧 Fix X2/Y2 axis pins check commit 4937a64 Author: Scott Lahteine <[email protected]> Date: Sun Apr 30 18:12:21 2023 -0500 🧑💻 Use NUM_AXIS_ARRAY commit b88ab39 Author: ellensp <[email protected]> Date: Mon May 1 09:52:29 2023 +1200 🐛 Fix Ender-2 Stock LCD on MELZI_CREALITY (MarlinFirmware#25759) commit 3b50b6a Author: Davide Rombolà <[email protected]> Date: Sun Apr 30 23:36:47 2023 +0200 🔧 Allow BLTOUCH_HS_EXTRA_CLEARANCE == 0 (MarlinFirmware#25760) commit ec6bc15 Author: Scott Lahteine <[email protected]> Date: Sat Apr 29 20:10:33 2023 -0500 🐛 Fix FT Motion reversed Z commit 5aef2c0 Author: thinkyhead <[email protected]> Date: Sun Apr 30 00:22:44 2023 +0000 [cron] Bump distribution date (2023-04-30) commit 4c033c3 Author: Scott Lahteine <[email protected]> Date: Sat Apr 29 12:34:56 2023 -0500 🧑💻 Tweak homing debug commit f9db5ab Author: thinkyhead <[email protected]> Date: Sat Apr 29 00:20:26 2023 +0000 [cron] Bump distribution date (2023-04-29) commit c5a2e41 Author: James Pearson <[email protected]> Date: Fri Apr 28 23:30:15 2023 +0100 🐛 Probe behavior corrections (MarlinFirmware#25631) Co-authored-by: Scott Lahteine <[email protected]> Co-authored-by: David Fries <[email protected]> commit 7d95928 Author: Scott Lahteine <[email protected]> Date: Fri Apr 28 13:38:59 2023 -0500 🐛 Fix auto pullup/down settings Followup to MarlinFirmware#25748 commit a872232 Author: Scott Lahteine <[email protected]> Date: Fri Apr 28 11:03:38 2023 -0500 🔧 Move MMU section commit 6323de3 Author: Scott Lahteine <[email protected]> Date: Fri Apr 28 11:03:20 2023 -0500 🔨 Fix LPC faux pins Followup to MarlinFirmware#25332 commit 0e2c5b4 Author: thinkyhead <[email protected]> Date: Fri Apr 28 00:21:29 2023 +0000 [cron] Bump distribution date (2023-04-28) commit 959f730 Author: TheSnowfield <[email protected]> Date: Thu Apr 27 20:37:11 2023 +0800 ✨ AUTO_REPORT_REAL_POSITION option for M154 (MarlinFirmware#25738) commit 9a7d9e6 Author: Martin Turski <[email protected]> Date: Thu Apr 27 14:05:24 2023 +0200 🧑💻 Optimize PlatformIO source filtering (MarlinFirmware#25332) Co-authored-by: Scott Lahteine <[email protected]> commit 774861b Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 20:04:01 2023 -0500 🔧 Endstops followup commit 04a25ab Author: thinkyhead <[email protected]> Date: Thu Apr 27 00:22:32 2023 +0000 [cron] Bump distribution date (2023-04-27) commit 467ab74 Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 14:56:23 2023 -0500 🧑💻 Simplify endstops config (MarlinFirmware#25748) commit 358a54e Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 14:39:56 2023 -0500 🔨 Servo Timer 1 with STM32F103RC_fysetc (MarlinFirmware#25741) commit 79b4555 Author: Giuliano Zaro <[email protected]> Date: Wed Apr 26 21:38:39 2023 +0200 🔧 Thermistor 100 : SoC sensor (MarlinFirmware#25745) Followup to MarlinFirmware#25642 commit d364bab Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 14:29:21 2023 -0500 🧑💻 Change HAL_PATH macro for easier HAL relocation (MarlinFirmware#25743) commit 1771d7a Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 13:51:33 2023 -0500 ✅ Skip change alerts in CI test commit 68f7478 Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 13:50:45 2023 -0500 🎨 Misc. fixes, cleanup commit 08edb62 Author: Scott Lahteine <[email protected]> Date: Wed Apr 26 02:57:53 2023 -0500 🔧 Extra axis endstop defaults commit a4cc9b6 Author: thinkyhead <[email protected]> Date: Wed Apr 26 00:21:12 2023 +0000 [cron] Bump distribution date (2023-04-26) commit f5a905a Author: Giuliano Zaro <[email protected]> Date: Tue Apr 25 04:51:44 2023 +0200 ✨ TEMP_SENSOR_SOC (MarlinFirmware#25642) Co-authored-by: Scott Lahteine <[email protected]> commit d1738e9 Author: Scott Lahteine <[email protected]> Date: Mon Apr 24 21:40:08 2023 -0500 🔧 Fix LCD_SERIAL_PORT config commit 650e6fc Author: Anson Liu <[email protected]> Date: Mon Apr 24 22:07:12 2023 -0400 🔨 Prevent SlowSoftWire + Wire name conflict (MarlinFirmware#25707) commit c034819 Author: thinkyhead <[email protected]> Date: Tue Apr 25 00:20:57 2023 +0000 [cron] Bump distribution date (2023-04-25) commit 077a620 Author: Scott Lahteine <[email protected]> Date: Mon Apr 24 05:24:10 2023 -0500 📝 Developer note in boards.h commit 2954bf2 Author: Scott Lahteine <[email protected]> Date: Mon Apr 24 00:24:40 2023 -0500 🌐 Replace '=' with '{' for substitution commit 743903b Author: Nick <[email protected]> Date: Mon Apr 24 01:50:39 2023 +0100 🩹 Fix Anycubic PlayTune (MarlinFirmware#25735) Followup to MarlinFirmware#25690 Co-authored-by: Scott Lahteine <[email protected]> commit 02a14d3 Author: thinkyhead <[email protected]> Date: Mon Apr 24 00:21:28 2023 +0000 [cron] Bump distribution date (2023-04-24) commit df4f806 Author: plampix <[email protected]> Date: Mon Apr 24 01:12:47 2023 +0200 ✨ NOZZLE_CLEAN_PATTERN_* (MarlinFirmware#25666) Co-authored-by: Scott Lahteine <[email protected]> commit 9902097 Author: ellensp <[email protected]> Date: Mon Apr 24 11:11:02 2023 +1200 🔨 Gather GD32, suppress redundant #error (MarlinFirmware#25665) Co-authored-by: Scott Lahteine <[email protected]> commit 10ed5ab Author: Scott Lahteine <[email protected]> Date: Sun Apr 23 03:17:55 2023 -0500 🚸 Improve PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED (MarlinFirmware#25681) commit 1669356 Author: Scott Lahteine <[email protected]> Date: Sun Apr 23 03:00:56 2023 -0500 🔧 Split followup commit aaf55a2 Author: Scott Lahteine <[email protected]> Date: Sun Apr 23 02:07:42 2023 -0500 🩹 Fix UBL safe measure move with extra axes Followup to 7e79fc5 commit 69f8da4 Author: Scott Lahteine <[email protected]> Date: Sun Apr 23 01:58:01 2023 -0500 🔧 Split Changes.h from SanityCheck.h (MarlinFirmware#25732) commit f0f7ec8 Author: Scott Lahteine <[email protected]> Date: Sun Apr 23 00:47:44 2023 -0500 🧑💻 Stepper::set_directions() => apply_directions() commit 921591d Author: Scott Lahteine <[email protected]> Date: Sat Apr 22 23:15:31 2023 -0500 🧑💻 SDIO_SUPPORT => ONBOARD_SDIO commit 5664c02 Author: Scott Lahteine <[email protected]> Date: Sat Apr 22 22:43:09 2023 -0500 🧑💻 Generalize SDSUPPORT as HAS_MEDIA In preparation for single- and multi-volume refactoring. commit ce85b98 Author: Jason Smith <[email protected]> Date: Sat Apr 22 20:27:01 2023 -0700 🩹 Relocate Fan conditionals, sanity-checks (MarlinFirmware#25731) Co-authored-by: Scott Lahteine <[email protected]> commit 95cfc98 Author: thinkyhead <[email protected]> Date: Sun Apr 23 00:22:56 2023 +0000 [cron] Bump distribution date (2023-04-23) commit 5d8d38a Author: ellensp <[email protected]> Date: Sun Apr 23 08:59:51 2023 +1200 🩹 Status / Host Prompt followup (MarlinFirmware#25720) Followup to MarlinFirmware#25679 Co-authored-by: Scott Lahteine <[email protected]> commit 3117339 Author: thinkyhead <[email protected]> Date: Sat Apr 22 12:06:22 2023 +0000 [cron] Bump distribution date (2023-04-22) commit c8ed795 Author: ellensp <[email protected]> Date: Sat Apr 22 21:09:17 2023 +1200 🔧 Permit extrude without hotend (MarlinFirmware#25709) Co-authored-by: Scott Lahteine <[email protected]> commit 89ccede Author: Alexey D. Filimonov <[email protected]> Date: Sat Apr 22 12:06:19 2023 +0300 🎨 Clean up TFT Color UI display items (MarlinFirmware#25712) Co-authored-by: Scott Lahteine <[email protected]> commit fba1f83 Author: ellensp <[email protected]> Date: Sat Apr 22 21:02:51 2023 +1200 🩹 Fix Anycubic PlayTune (MarlinFirmware#25728) Followup to MarlinFirmware#25690 commit 726de7e Author: Nomis-97 <[email protected]> Date: Sat Apr 22 10:16:19 2023 +0200 🐛 Fix MKS Gen-L MOSFETs (MarlinFirmware#25717) commit 4233e48 Author: Scott Lahteine <[email protected]> Date: Sat Apr 22 01:56:10 2023 -0500 🚸 MarlinUI Endstop Test Screen, and more (MarlinFirmware#25667) commit 98277f2 Author: thinkyhead <[email protected]> Date: Fri Apr 21 00:20:12 2023 +0000 [cron] Bump distribution date (2023-04-21) commit ded9ffa Author: Scott Lahteine <[email protected]> Date: Thu Apr 20 17:35:20 2023 -0500 🧑💻 Apply INVERT_DIR to SET_STEP_DIR commit 335ba32 Author: Scott Lahteine <[email protected]> Date: Thu Apr 20 17:21:59 2023 -0500 🩹 Fix Core Kinematics BABYSTEP_XY
Co-authored-by: Scott Lahteine <[email protected]>
Followup to MarlinFirmware#25332
Co-authored-by: Scott Lahteine <[email protected]>
Followup to MarlinFirmware#25332
Co-authored-by: Scott Lahteine <[email protected]>
Followup to MarlinFirmware#25332
Co-authored-by: Scott Lahteine <[email protected]>
Followup to MarlinFirmware#25332
Description
Please watch the video to get the full idea:
https://www.youtube.com/watch?v=aSdFR7pnAtg
The Marlin Firmware has a too complicated source file inclusion layout. In this PR I want to help reduce the technical burden of source code repository maintenance. There are some issues in the default way that PlatformIO does things. Notorious example is the inclusion of all font files when graphical LCDs are used.
Benefits
The amount of lines in the platformio.ini has been drastically reduced.
Shorter build times (small impact?)
Better maintainability.
Backwards compatible with old layout.
Related Issues
#24911