1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+
4+ < head >
5+ < meta charset ="UTF-8 ">
6+ < title > Blog | Context-Generic Programming </ title >
7+ < meta property ="og:title " content ="Context-Generic Programming " />
8+ < meta property ="og:description " content ="Context-Generic Programming: A new modular programming paradim for Rust ">
9+ < meta property ="og:image " content ="https://contextgeneric.dev/greet-snippet.png ">
10+ < meta name ="twitter:title " content ="Context-Generic Programming ">
11+ < meta name ="twitter:description " content ="Context-Generic Programming: A new modular programming paradim for Rust ">
12+ < meta name ="twitter:image " content ="https://contextgeneric.dev/greet-snippet.png ">
13+ < meta name ="viewport " content ="width=device-width, initial-scale=1, shrink-to-fit=no ">
14+
15+ < link rel ="icon " type ="image/png " href ="/favicon.png " />
16+
17+ < style >
18+ : root {
19+ /* Primary theme color */
20+ --primary-color : # FFF5DA ;
21+ /* Primary theme text color */
22+ /* --primary-text-color: #543631; */
23+ --primary-text-color : # 000 ;
24+ --primary-text-color-over : # 000 ;
25+ --primary-heading-color : # 5D0705 ;
26+ /* Primary theme link color */
27+ --primary-link-color : # 8F1F1D ;
28+ /* Secondary color: the background body color */
29+ --secondary-color : # FCF7E9 ;
30+ --secondary-text-color : # 303030 ;
31+ /* Highlight text color of table of content */
32+ --toc-highlight-text-color : # 8F1F1D ;
33+ --toc-background-color : white;
34+ --shadow-color : # ddd ;
35+ /* Font used for headers (h1 & h2) */
36+ --header-font-family : "Fira Sans" , sans-serif;
37+ /* Font used for text */
38+ --text-font-family : "Fira Sans" , sans-serif;
39+ }
40+ </ style >
41+
42+ < link href ="https://fonts.googleapis.com/css?family=Alfa+Slab+One&display=swap " rel ="stylesheet ">
43+ < link href ="https://fonts.googleapis.com/css?family=Fira+Sans:400,500,600&display=swap " rel ="stylesheet ">
44+
45+ < link rel ="stylesheet " href ="/normalize.css ">
46+ < link rel ="stylesheet " href ="https://www.contextgeneric.dev/juice.css ">
47+
48+ < link rel ="stylesheet " href ="https://www.contextgeneric.dev/carbon.css ">
49+
50+ </ head >
51+
52+ < body >
53+
54+ < header class ="box-shadow ">
55+
56+
57+ < a href ="https://www.contextgeneric.dev/ ">
58+ < div class ="logo ">
59+ < img src ="https://www.contextgeneric.dev/cgp-logo.svg " alt ="logo ">
60+ Context-Generic Programming
61+ </ div >
62+ </ a >
63+
64+ < nav >
65+
66+
67+
68+ < a class ="nav-item subtitle-text " href ="https://www.contextgeneric.dev/overview/ "> Overview</ a >
69+
70+
71+
72+
73+ < a class ="nav-item subtitle-text " href ="https://www.contextgeneric.dev/resources/ "> Resources</ a >
74+
75+
76+
77+
78+ < a class ="nav-item subtitle-text " href ="https://www.contextgeneric.dev/contribute/ "> Contribute</ a >
79+
80+
81+
82+
83+ < a class ="nav-item subtitle-text " href ="/blog "> Blog</ a >
84+
85+ < a class ="nav-item subtitle-text " href ="https://patterns.contextgeneric.dev "> Book</ a >
86+
87+ < a class ="nav-item subtitle-text " href ="https://github.com/contextgeneric/cgp "> GitHub</ a >
88+
89+
90+ </ nav >
91+
92+ </ header >
93+
94+
95+ < main >
96+
97+
98+
99+ < div class ="content text ">
100+
101+ < div class ="heading-text "> </ div >
102+ < h1 id ="blog "> < a class ="zola-anchor " href ="#blog " aria-label ="Anchor link for: blog "> Blog</ a > </ h1 >
103+
104+
105+
106+
107+
108+ < div >
109+ < h3 > 2025-05-09</ h3 >
110+ < p > < a href ="https://www.contextgeneric.dev/blog/v0-4-0-release/ "> CGP v0.4.0 is Here: Unlocking Easier Debugging, Extensible Presets, and More!</ a > </ p >
111+ < p class ="lead "> CGP v0.4.0 is officially released, bringing transformative improvements! Experience dramatically easier debugging, powerful new features, and a smoother developer journey for modular Rust programming.</ p >
112+ </ p >
113+ </ div >
114+
115+
116+ < div >
117+ < h3 > 2025-01-09</ h3 >
118+ < p > < a href ="https://www.contextgeneric.dev/blog/v0-3-0-release/ "> CGP Updates: v0.3.0 Release and New Chapters</ a > </ p >
119+ < p class ="lead "> I'm excited to announce the release of v0.3.0 of the cgp crate, along with several new chapters of the CGP Patterns book!</ p >
120+ </ p >
121+ </ div >
122+
123+
124+ < div >
125+ < h3 > 2024-12-19</ h3 >
126+ < p > < a href ="https://www.contextgeneric.dev/blog/early-preview-announcement/ "> Announcing Context-Generic Programming (Early Preview)</ a > </ p >
127+ < p class ="lead "> Welcome everyone! This blog post marks the launch of the context-generic programming (CGP) project, to introduce a new modular programming paradigm for Rust.</ p >
128+ </ p >
129+ </ div >
130+
131+
132+
133+ </ div >
134+
135+
136+
137+ </ main >
138+
139+
140+ < footer >
141+ < small class ="subtext " style ="text-align: center; ">
142+ < a href ="https://maybevoid.com "> MaybeVoid</ a > © 2024
143+ < br />
144+ < a href ="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1 " target ="_blank " rel ="license noopener noreferrer " style ="display:inline-block; ">
145+ CC BY-SA 4.0< img style ="height:22px!important;margin-left:3px;vertical-align:text-bottom; " src ="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1 " alt =""> < img style ="height:22px!important;margin-left:3px;vertical-align:text-bottom; " src ="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1 " alt =""> < img style ="height:22px!important;margin-left:3px;vertical-align:text-bottom; " src ="https://mirrors.creativecommons.org/presskit/icons/sa.svg?ref=chooser-v1 " alt ="">
146+ </ a >
147+ </ small >
148+ </ footer >
149+
150+ </ body >
151+ < script >
152+ const scrollHandler = entries => {
153+ // Find the first entry which intersecting and ratio > 0.9 to highlight.
154+ let entry = entries . find ( entry => {
155+ return entry . isIntersecting && entry . intersectionRatio > 0.9 ;
156+ } ) ;
157+ if ( ! entry ) return ;
158+
159+ document . querySelectorAll ( ".toc a" ) . forEach ( ( item ) => {
160+ item . classList . remove ( "active" ) ;
161+ } ) ;
162+
163+ // let url = new URL(`#${entry.target.id}`);
164+ let link = document . querySelector ( `.toc a[href$="${ decodeURIComponent ( `#${ entry . target . id } ` ) } "]` )
165+ if ( link ) {
166+ link . classList . add ( "active" ) ;
167+ link . scrollIntoView ( { behavior : "auto" , block : "nearest" } ) ;
168+ }
169+ } ;
170+ // Set -100px root margin to improve highlight experience.
171+ const observer = new IntersectionObserver ( scrollHandler , { threshold : 1 } ) ;
172+ let items = document . querySelectorAll ( 'h1,h2,h3,h4,h5,h6' ) ;
173+ items . forEach ( item => observer . observe ( item ) ) ;
174+ </ script >
175+
176+ </ html >
0 commit comments