From 4ca0f7066b6dd65835ac7fa8f79e7d85fe0172d0 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Fri, 17 Sep 2021 01:04:19 -0400 Subject: [PATCH 01/18] first draft of slides --- FortranCon2021-stdlib/contrib.png | Bin 0 -> 6471 bytes FortranCon2021-stdlib/examples/Makefile | 16 + FortranCon2021-stdlib/examples/ex_bitsets.f90 | 25 ++ FortranCon2021-stdlib/examples/ex_logger.f90 | 10 + FortranCon2021-stdlib/stdlib-talk.tex | 302 ++++++++++++++++++ 5 files changed, 353 insertions(+) create mode 100644 FortranCon2021-stdlib/contrib.png create mode 100644 FortranCon2021-stdlib/examples/Makefile create mode 100644 FortranCon2021-stdlib/examples/ex_bitsets.f90 create mode 100644 FortranCon2021-stdlib/examples/ex_logger.f90 create mode 100644 FortranCon2021-stdlib/stdlib-talk.tex diff --git a/FortranCon2021-stdlib/contrib.png b/FortranCon2021-stdlib/contrib.png new file mode 100644 index 0000000000000000000000000000000000000000..647c61b66ae062fced83672acdac3b2ce999ad78 GIT binary patch literal 6471 zcma)BcQl+|w;qWg4bhS)L6n3bLPRHtndp*X5Jc~z_ufko27@Ru${@xF65VJK(R&%a z8-`IPqW3$$Z++id_pbZLy=%SeJ^SqQJbOQ9pS9OI>wTl&X(-;l!F&S%0Nhqq0%`&P zS5PFolj#%K|lvbCrc~%kdFx=Q3*kju-V1s`K1-Vuum@Dp=ntK z`-jIFh}^Y}?X>K#jlVkDy87U0*})&iVB8ZQbzn?2WBIgX44UeWO01 z(Mv0&Bs>eGn;aRJQdCN^;h(=C`-ZUFe|DGu5US^XXXX`k z^bR&Ibf*p$?HwF>1%31ljhS1-p(pAR`toMBaD(fU#QnYB%L9m!vaZ$9F~a=P+FJcY z$NDZYzrP~(clOVzo|#qLIBtGuajItyo7Rmk8)^JG-Gk^UP3kBp8meud9n8a4j7`nG zH?<3mPIUAPs=_o^)HM2pMB@otVbSoU^ql&^o`A-b!fp(#KHsl8DWWbjq$btK+Qln4 zstWt-`*hR#CNV4q?%^Nq7Z#IUP+Zf{va@&4**BD&o>Ta(JhS6R%kW@wBdVomFtz#H z=gho<;vcOYJ+3~X?K7m^b#<+b4z5kw$M}6pOsj4BMc5*)Z*1GT`Vx0`t(|=$Vv`qe ztNBIWt(?4xfA?H`La>vwHZHzXvx_Mi$c)^=-TlLswk`+vz(0TYajWYIpAjYHwUu>E z1Hd%OLC(qy&JOP&SrMrLF*v4gbZDV3)A-Aw3H7j4=++lor-YYONF)b@S`)l{W z@Gy1~)BJmrxU+&^ck>I&`TEV?J)r()o2{$g!t%=3;vfFuv3h3q?tWpHmzSydTo9=- z$jnp~fu~65iy6{{(p^~{M7eUEhFpYtm>9-Na?zTbYIu@bjAUMUPlDeg88b<0H_ib7 z#^=hwR}k;1ErhiRt0H6YBjm(qMthED*U4GcqOP0ZBxs>j?cBj!*9ER(Dq@K4)(CgZ z!w5i(Erpr%i!@jQ9mm81Ih_>eD6Q}7j=ed%wZ^k0&oX;NdQC-zbVUvE)Fm-*WE(o? zRpB((3#EEROa6a7KrIbIT`L$8#is7~OP!X5=(o7Q-uU#91Y?De|w`{;<*;F0b|GH}Ddi72t&wDp`y(yj!W`);)I z%ANfS>!dgui4NL*vaw5l6WtvSpc@BL&YRvxNq$nTv(5l==nu}tG{5wIiS(XR=+dL% z!pmo7UQ%IS=b~({(Y2|2t@+^cI`h~oF0NqZKoqMeOx_f&`b)3}B|PsdfI-{q9fTfh z`qDcG#fxqY{`1ZuiWfzF^_M~wXGX9jdK>iuNdFEp+ro+^2VvP5ut1M{v=1JmqY1(s zG7uKz_5W~8U}$Od?IChfKw(9(SETSDF)$lNIAshJDRqmA1{-M;`X5eO9svebcuqzN z*b7!CMSlfWhkPVk3_)i6Cw0!hIamIhUN;E+|5q;A3hM5j{J}4w`6fjVR$6LW@PIF? zUPWnr4e?*1fTJbxP7Usd2eSX@4+gqS(+gp|wY;3>^ZrS!#E^Z&UG8E)n(ta*>qj_P zIgpOc;kUk#+s}(iWz z{iptLkUEr;kyKS5NhlKtgj6U;DGTPK|G{UW>PdJhT-y}t(7Iil1>08tDBYcGmkUFtS1us+)&p>g@b58{o`(A+5*XDC*?^Zbip+a(E zdk>vrm=)nd2BYEqxiR7ixTQ{TJxvY1e|7{y_22V~O#_||IT3D+XjB}n_ObHP#qTcd88D;|~9oJ}* zgQ_Crvo%UdukUs_}eo_j2QRqcMyqhEhcTG$>9=IhBW?R1Uh$j%FAuBv6C7 zgpTu2ra%(&vvuS?a)GvrZmY`z6mOR!~h2FcOF!(Y4&rk3py;2W&h z;)7meE-cO8q)Xv6<2w^5&VL!NhvaoFHx^Kg^MJmQp2-p^-@B0`^pgy9o0A~$U142C z)IEmKJFKargxHBvxkRa?HNd&iVqqEgbp#PqW^uY6;e3|+MGd-; zsoG}QwOgV-JjSCy((#LBiK>CiI!9wMx{y3oL`I1p|EWV^YpgiWHQxsyb%OvjfeR`q zzcEhh@ud@~bfdCwq!$I+?^QlHZ48%|Y)t4-q6Hwb-j#$EP zm1vUAtrAWvA`XX2Dq`^HXUv9R3$5-UF|OcZ#OoP%TvUcS2KCwj|KRW|S}w&piU7TC zP^Z@bXAVIrXDX!76_fBc1i%PEQx?zYvWR4Qd^9A60MkYjv@AcP`dylndExZ@VAIz^SLhD4nVd*CdK-;-L$ zmK&WONq)gqLQ*6eo%Y#OUK~WiZL1koPTab)pUH(=vC|{rBtY6yV%SVSs;PpQ=ZJys z#mZZ!)NvN zQ^0^@4ocyf#WjTdWBV~pMH)bbwlb2b_1v~C|7Qu3`8nlhIpxsz@EdnLh^s3r4zXK) zAHo8sSP2%lMv8Utj^7rU5g+C39uK-QHm~KICk7!N6}@Wnw@W{`z3gze!q?`s{Q;b7IFVO2*>;z=-g?Xv}UlR z^>x?U4$b74OCYOiaipjbhbZQXB>GZ8VeHUt#ZjH&;O;93v%|YQ|GaZS?QgK(@r4vW!x_mdu-E4yE}d)ilN5G~;EfK?i_e5V%#CYyZo$60$q(20H9 zbJ7=@p7l%jJmSE8^zCip^tUsUE55j{pXOz37sxB+aSM|Cf|sO{A%U>H<0?sBbsr50cmUG6Cm(_PZKnS-78-}FqbQ4l8wMLjzKB%sU>_daw z_#Pv6dwWH8vEL;L`DORBrt2MkUMtPdkf+DZ$*b%zBsh@YP0`PL=4kcmMU`l}NUzXF zc_tR+qUjZm6WXSEbDExFs}aMXGsc+J;6)?j~#2y3-hEhOwHsxId7ggNmxr zr)0}hQP8W!VGCC6tu{=c>HCXt{Y(+mM1R+sW~+}Bl?WFLge6Sl*ZmVSj>$I*tYYlK ztPN}qVj@+BgNNtND_1V&{L$5JB7w)wNKL0|>XjK;Hk$~WM~md+h8?J^zp57@pldQ> zxbPaV4doE!e8JHA{1dtPWP?m-jT%fI%*d};KwZJ+8Am?Wo>O5$^C2gr(CGH%y%3Nf z`E5lq|Ho~X{KY|sem2~HC>cgY5P3SNR7RE2>*)LR-^4>kH{4qXDODbcy4OZKE;v)f zQwmaK+3Rj4ZzPwPEsoTMjj2&uG;3!R$iE|zT+sK&f^CPTe}|x~{itsqz2rF8N?Lq` zdDW_S;{o-QclWfoZmZ1QgfGj&R;k6F0r7rQw60Oo)$N{$FZ{;NW7_hL` zwY1o!1|$?i5;FBsAQrWJOH_Y$0Y&sXy5?O!|6Njd6_M@N{uyO;NTIh${sGrd?T3#w zLO1O|)o%^5|0aB3GP$p&(2d@Bsp}&nAn{c4OcNqhDI^AjVOUHk3M_uBN+TEr--ST4 zJj6as8X%d1!A#$HPyESk4u|#UilK$_d3~MwS3NHjBCPNmosn*V2tVwQq-qxaFv4|( z6Ub(UHpM9QnE4zA;&V9Nfxsl5@=;ZTtjz)SfVjE`j!Q24#cscma8O;*fuD3U6oxezTdj3URO~w} z({2vE$4nfgkXqu_D0>T73iBA+7eVdqt=6Gm(OKJ*P$JhZ9$Dt2)8+LFE3VVA`MiPo0(L{qy5tlpAyKR;;=W|Uu2pVhK~#HMt#ZrA>lg7q#_dZy zXQd_$p=nKRa)T5?_a5UWot~@j>-AeoGtO%58YaG#h+cTE{T_1B$Mowc&Ev^OpNyS! zbOz26)g*7(VROT8scTcS)k9t?yagQYri zt*C`>9E@(vP~kqN8KM>C+keV$F4UZJQYEhYnyW}^SG+~gWn{m5+ov-V{AGQrNfBO1 zv1?vmp{pPTiYa>8rq^aLu*tE^S2!4N`a)f>?U}^0kKArM)L|B8So{JKQ%y{Kj0PM? z0-SYwy)~Sx@ON$!=yo-d4R+;^=hm3NBd9~T5j{d7H9XH<$!@gAB)Rt>C&XHKhYdL+w>0}2c)a0e;B zRmT%kOE4FDG<6q|WV@<|zW^?CLzfz=NA0@9KprA|DuEa{;Ma9J7nFCrPw5Cff2%mC z5a1|#`>chAEp_^FVC-W0d;*)A-%Xcb8*6h$Ja(0_+7JoAL-U&414hLb*T z{HPJ`a9#1L_{B#CuqUVYIOw!~ME-{oQ{Zdg z*vN*nANUB_g{@|Jgup(#-U-!l>u34E82fX2Nf&87BLzppn$>9BfOR+{cI2lkaKE~Y z8(dIR#(m&uWHk5YMJZ9fW}nC26p$)5&HQwn{j$f{$@oW1Cqv5F7V+knPI;!efVtFI zujPqY(q-N8R8nXEmM-hXcuSCD-Puy3pLpU$kn!{`e(uX<#diiB$lI$<#uvoD z^bc)}^=bkqx4zuM@qE45n{_HA7=!sHn&45joNv$Gs&t9hnVdePB6Ub8hmy?&jle5| zP{Es#ouu!mJno?P?iQx*mQv=fmZSk7A}sPuP*_s%nHWU)xzuwJDG`w;!opI*!s(B6 kI{pX2!O6nb%IAL*p8cC(wZBgK%K-o=gEWApuT4V#3#AA0nE(I) literal 0 HcmV?d00001 diff --git a/FortranCon2021-stdlib/examples/Makefile b/FortranCon2021-stdlib/examples/Makefile new file mode 100644 index 0000000..76d6afc --- /dev/null +++ b/FortranCon2021-stdlib/examples/Makefile @@ -0,0 +1,16 @@ +FC = gfortran +STDLIB_CFLAGS = $(shell pkg-config --cflags fortran_stdlib) +STDLIB_LIBS = $(shell pkg-config --libs fortran_stdlib) + +all: ex_bitsets ex_logger + +ex_bitsets: ex_bitsets.f90 + $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) + +ex_logger: ex_logger.f90 + $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) + +clean: + $(RM) ex_bitsets + $(RM) ex_logger + diff --git a/FortranCon2021-stdlib/examples/ex_bitsets.f90 b/FortranCon2021-stdlib/examples/ex_bitsets.f90 new file mode 100644 index 0000000..32ee388 --- /dev/null +++ b/FortranCon2021-stdlib/examples/ex_bitsets.f90 @@ -0,0 +1,25 @@ +use, intrinsic :: iso_fortran_env, only: output_unit +use stdlib_bitsets +implicit none + +integer :: i +type(bitset_64) :: b1, b2 + +! initialization from string +call b1%from_string('001100') +call b1%write_bitset(output_unit) ! S6B001110 + +! initialization from logical array +b2 = [(.true., i=1,6)] +call b2%write_bitset(output_unit) ! S6B111111 + +! binary operations overwrite first arg +call xor(b1, b2) +call b1%write_bitset(output_unit) ! S6B110001 +call b2%write_bitset(output_unit) ! S6B111111 + +! set specific position/contiguous subset (zero-based!) +call b1%set(2, 4) +print *, b1 == b2 ! T +end + diff --git a/FortranCon2021-stdlib/examples/ex_logger.f90 b/FortranCon2021-stdlib/examples/ex_logger.f90 new file mode 100644 index 0000000..08affb1 --- /dev/null +++ b/FortranCon2021-stdlib/examples/ex_logger.f90 @@ -0,0 +1,10 @@ +program ex_logger +use stdlib_logger, only: global_logger +implicit none + +call global_logger%add_log_file('log.txt') + +call global_logger%log_debug('I am invisible') +call global_logger%log_information('Something informative') +call global_logger%log_error('Oopsie daisy') +end program diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex new file mode 100644 index 0000000..c042d58 --- /dev/null +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -0,0 +1,302 @@ +\documentclass[aspectratio=169]{beamer} + +\usepackage{ulem} +\usepackage{dejavu} +\usepackage{listings} + +\mode{ + \usetheme{Rochester} +} +\beamertemplatenavigationsymbolsempty +\usecolortheme[RGB={115,79,150}]{structure} +%\usefonttheme{structurebold} + + +\title{What's new in the Fortran standard library?} +\author{Nathaniel Shaffer \\[1em] \small + \and Gabriel Brown + \and Ond\v{r}ej \v{C}ertik + \and William Clodius \\ + \and Milan Curcic + \and Laurence Kedward + \and Sebastian Ehlert \\ + \and Gareth Davies + \and Aman Godara + \and Michael Hirsch \\ + \and Jing + \and Chetan Karwa + \and Arjen Markus + \and Ivan Pribec \\ + \and Harris Snyder + \and J\'er\'emie Vandenplas + \and Evan Voyles} +\date{FortranCon 2021 - 24 Sept 2021} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + +\begin{frame} + \frametitle{What is \sout{new in} stdlib?} + + \begin{itemize} + \item Part of fortran-lang: https://github.com/fortran-lang/stdlib + \item Bridge the gap between intrinsics and applications + \begin{description}[Mathematics] + \item[Utilities] strings, logging, filesystem interaction + \item[Algorithms] searching, sorting + \item[Mathematics] linear algebra, special functions, statistics + \end{description} + \item Somewhere between C++ stdlib \& Matlab/scipy + \end{itemize} + + \note{ + Before I can show off what's new in the standard library, let's have a few words about what it is. + It's a volunteer effort maintained under the fortran-lang organization, with the code hosted on Github. + The main goal is to bridge the gap between what's offered intrinsically in the language versus the high-level code one would like to write in applications. + This makes the scope of the Fortran standard library quite wide. + We want to offer general programming-type things like common algorithms a la C++, while also providing a good base of numerically-oriented functionality like what's found in Matlab or the Python scientific ecosystem. + That's a tall order, but we've made good headway. + } +\end{frame} + + +\begin{frame} + \frametitle{stdlib has roughly doubled in size in the past year} + + \begin{block}{Modules one year ago vs today} + \centering + \begin{tabular}{ccc} + ascii & + \textcolor{red}{bitsets} & + error \\ + io & + kinds & + linalg \\ + \textcolor{red}{logger} & + \textcolor{red}{math} & + optval \\ + quadrature & + \textcolor{red}{sorting} & + \textcolor{red}{specialfunctions} \\ + stats & + \textcolor{red}{stats\_distribution\_PRNG} & + \textcolor{red}{stringlist\_type} \\ + \textcolor{red}{strings} & + \textcolor{red}{string\_type} & + system + \end{tabular} + \end{block} + + \note{ + By raw count of modules included in stdlib, the project has roughly doubled in size in the past year. + A year ago, stdlib looked more like a grab-bag of utilities than a standard library. + Now, it looks much more deserving of its name, with lots of exciting development in general-purpose programming functionality like string handling, sorting, logging, and support for bitsets. + Let's have a look at some examples. + } +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Demo: stdlib\_logger} + + + \begin{block}{ex\_logger.f90} + \small +\begin{verbatim} +use stdlib_logger, only: global_logger +implicit none +call global_logger%add_log_file('log.txt') +call global_logger%log_debug('I am invisible') +call global_logger%log_information('Something informative') +call global_logger%log_error('Oopsie daisy') +end +\end{verbatim} + \end{block} + \begin{block}{log.txt} + \small +\begin{verbatim} +2021-09-13 23:31:30.346: INFO: Something informative +2021-09-13 23:31:30.346: ERROR: Oopsie daisy +\end{verbatim} + \end{block} + + \note{ + This first example is a quick demonstration of the new `stdlib_logger` module. + This module defines a derived type for logging messages to a file. + This logger type is highly configurable, with options to control which file (or files) the logger should write to, how to format time stamps, which types of messages to log, and lots more. + For very basic needs, one can use the predefined `global_logger` instance, as done here. + Here, we're just connecting the logger to a file on disk and writing messages to it. + Note how the ``debug'' message was not written, since the global logger is configured by default to log ``info'', ``warnings'', and ``errors''. + This is just scratching the surface; the design is flexible enough to set up fairly sophisticated logging infrastructure. + For instance, in a coarray application, one might configure separate loggers for each image or team of images. + stdlib now makes it easy to set that up. + } +\end{frame} + + +\begin{frame}[fragile] + \frametitle{Demo: stdlib\_bitsets} + + \begin{block}{ex\_bitsets.f90} + \small +\begin{verbatim} +use stdlib_bitsets +implicit none + +integer :: i; type(bitset_64) :: b1, b2 + +call b1%from_string('001100') ! S6B001110 +b2 = [(.true., i=1,6)] ! S6B111111 + +call xor(b1, b2) ! S6B110001, S6B111111 + +call b1%set(2, 4) ! S6B111111 -- N.B. 0-based index +print *, b1 == b2 ! T +end +\end{verbatim} + \end{block} + + \note{ + The second demo is of the bitsets module. + This provides a feature that is often proposed for standardization: an abstract type for working with strings of bits. + The basic bitset type uses a 64-bit integer internally, but it keeps track of the actual length of the bitset being represented. + Here, I'm initializing two 6-bit sets, one from a string and one from an array of logicals. + The comment shows a string representation of the bitset, which can be taken as a bitset 'literal' for the purposes of I/O. + Here, the prefix 'S6B' means a set of 6 bits. + Most operations with bitsets work in-place rather than creating new instances. + For instance, all the usual boolean algebra operations -- like the exclusive-or here -- are implemented as subroutines that overwrite the first argument. + Likewise, when one sets or clears single bits or contiguous ranges of bits, the data is modified without making a copy. + } +\end{frame} + + +\begin{frame} + \frametitle{New contributors have been key to stdlib's growth} + + \begin{itemize} + \item From 16 committors to 34, including our 2 GSoC students + \item Over 100 new Issues: bugs, workflow improvements, feature proposals + \end{itemize} + + \begin{block}{Commits to stdlib since FortranCon 2020} + \centering + \includegraphics[width=\textwidth]{contrib.png} + \end{block} + + \note{ + So we got lots of great new functionality, and in large part that's thanks to an influx of new contributors to the stdlib project. + Not only has the number of modules doubles but so has the number of people who've committed changes to stdlib. + Included in that are two Google Summer of Code students Aman Godara and Chetan Karwa, who we will hear from shortly. + What that figure doesn't include is contributions made in the form of Issues and reviews of Pull Requests. + It's really great to see over 100 new Issues opened in the past year, since this not only includes bug reports but also discussion of workflow improvments and proposals for new features. + And looking at the timeline of commits since last year's FortranCon, we see a nice sustained development with big rushes of new development at the end of last summer and throughout this summer. + } +\end{frame} + + +\begin{frame} + \frametitle{stdlib is now easier to install} + + \begin{itemize} + \item Dependencies + \begin{itemize} + \item Fortran compiler (supporting at least F2008) + \item CMake (or just make) + \item fypp preprocessor (python script) + \end{itemize} + \item Install each separately or use conda package manager + \item Exports both CMake package files \& pkg-config files + \item Support for fpm-based workflow is in progress + \end{itemize} + + \note{ + Besides implementing and discussing new features, the other way in which stdlib has improve a lot this past year is in infrastructure. + In particular, it's now quite straightforward to work with stdlib, whether as a developer or a user. + So the has three dependencies: a reasonably modern Fortran compiler, a reasonably recent version of CMake (or just make if you prefer), and the fypp preprocessor, which is used mainly as a templating engine for writing generic procedures. + These are individually not hard to install on most systems, but one might be worried about having conflicting versions of Fortran compilers or CMake on one system. + So to address that concern and also to just serve as a very simple way to get started, there's now a conda package that will automatically install the prerequisites for stdlib. + So then once you get the stdlib source code from Github, you can build stdlib and run its test suite with either make or CMake. + Then when you isntall stdlib, you get not only a static or shared library but also a pkg-config file and a CMake package file, which makes it very simply to use stdlib in your own projects. + The ideal situation of course is to distribute stdlib as an fpm package, and while that's still a work in progres, there's been good progress on the fpm side of things. + } +\end{frame} + + +\begin{frame} + \frametitle{Cross-platform support monitored with Github's CI workflow} + + \begin{block}{Patforms tested on every pull request} + \begin{tabular}{llll} + GNU & 9,10,11 & Ubuntu 20.04 & x86\_64 \\ + GNU & 9,10,11 & macOS 10.15 & x86\_64 \\ + GNU (MSYS) & 10 & Windows Server 2019 & x86\_64 \\ + GNU (MinGW) & 10 & Windows Server 2019 & x86\_64, i686 \\ + Intel classic & 2021.1 & Ubuntu 20.04 & x86\_64 \\ + Intel classic & 2021.1 & macOS 10.15 & x86\_64 + \end{tabular} + \end{block} + + \begin{itemize} + \item If your compiler supports F2008/F2018, stdlib should compile + \item Some require minor workarounds (NAG, some older GNU versions) + \end{itemize} + + \note{ + The stdlib project is also leveraging Github's continuous integration workflows to check cross-platform support. + Currently, on every pull request, the CI builds stdlib and runs its test suite on seven different platforms meaning different combinations of compiler, OS, and CPU architecture. + However, just because your platform is not shown here doesn't mean stdlib won't work on your system. + Anecdotally, I've built stdlib with several versions of ifort on a recent MacBook as well as several versions of gfortran on a 10-year-old netbook running 32-bit Linux. + } +\end{frame} + + +\begin{frame} + \frametitle{Room for improvement} + + \begin{itemize} + \item Fill out numerical capabilities + \begin{itemize} + \item ``Simple'' functions are often not so simple (e.g., $cbrt$) + \item Difficult to find reviewers with domain knowledge (see: Probability Distributions) + \item What to put in stdlib versus create fpm package? + \end{itemize} + + \item Improve consistency of documentation + \begin{itemize} + \item Lots of variability in style \& level of detail + \item To be addressed with standardized tempates + \end{itemize} + \end{itemize} + + \note{ + I've used this talk mainly to highlight the cool new developments and accomplishments of the stdlib project so far, but there is certainly room for improvement. + For one, most of the big exciting new modules in stdlib serve general programming needs. + There are a couple reasons that numerical functionality has been slower to come in. + One reason is that when one starts discussing the API and possible implementations, many ``simple'' functions turn out to have lots of subtle difficulties. + My first-hand experience with this was in a discussion of a possible cube-root function, where one has to consider all kinds of floating-point edge cases that one wouldn't bother with in personal code but which is important to get right in a ``standard'' library. + Another issue is that many numerical algorithms should be reviewed by people with particular domain knowledge to ensure that the implementation and tests make sense. + The prime example of this right now is a handful of pull requests for statistical distributions that have been waiting for a reviewer with an appropriate background in statistics. + When discussing new feature proposals, a recurring question is, ``should this be in stdlib or should this be an fpm package?'' + Really, this is a testament to the progress made with fpm, but the point is that this boundary is still being mapped out. + The other area where the stdlib project is actively trying to improve things is in the documentation. + Even though documentation is required for every new procedure or type, the style and rigor of this documentation varies quite a lot. + The proposed solution right now is to establish a baseline template for specifications to follow. + This will hopefully give the stdlib documentation a more uniform feel, as well as be a helpful starting point for new contributors. + } +\end{frame} + +\begin{frame} + \frametitle{Summary} + + \begin{itemize} + \item stdlib aims to be a de factor standard library of general-purpose and numerical facilities for Fortran + \item Roughly doubled in size in the past year, both in terms of modules and contributors + \item New modules include bitsets, logging, math utilities, sorting, special functions, RNG, and string handling + \item Infrastructure and packaging improvments have made stdlib easier to install and use + \end{itemize} +\end{frame} + +\end{document} From d8730546eb7708947ec9dcf1bfea2052f8e305df Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Fri, 17 Sep 2021 01:08:37 -0400 Subject: [PATCH 02/18] add pdf --- FortranCon2021-stdlib/stdlib-talk.pdf | Bin 0 -> 60214 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FortranCon2021-stdlib/stdlib-talk.pdf diff --git a/FortranCon2021-stdlib/stdlib-talk.pdf b/FortranCon2021-stdlib/stdlib-talk.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b46db7e5a639f676e52d168ab972e7d87a99f108 GIT binary patch literal 60214 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 PJ{|}*9i5blH1>Z1rF4_D literal 0 HcmV?d00001 From c328f95ab171c09521e119aac149a5e20085e99d Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Fri, 17 Sep 2021 21:46:53 -0400 Subject: [PATCH 03/18] typo Co-authored-by: Gabriel Brown --- FortranCon2021-stdlib/stdlib-talk.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index c042d58..e095bbe 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -292,7 +292,7 @@ \frametitle{Summary} \begin{itemize} - \item stdlib aims to be a de factor standard library of general-purpose and numerical facilities for Fortran + \item stdlib aims to be a de facto standard library of general-purpose and numerical facilities for Fortran \item Roughly doubled in size in the past year, both in terms of modules and contributors \item New modules include bitsets, logging, math utilities, sorting, special functions, RNG, and string handling \item Infrastructure and packaging improvments have made stdlib easier to install and use From e07941dafc6311d17ba612f21f8788577c5e8d77 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Sat, 18 Sep 2021 22:47:51 -0400 Subject: [PATCH 04/18] typo Co-authored-by: Milan Curcic --- FortranCon2021-stdlib/stdlib-talk.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index e095bbe..a77e874 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -228,7 +228,7 @@ \begin{frame} \frametitle{Cross-platform support monitored with Github's CI workflow} - \begin{block}{Patforms tested on every pull request} + \begin{block}{Platforms tested on every pull request} \begin{tabular}{llll} GNU & 9,10,11 & Ubuntu 20.04 & x86\_64 \\ GNU & 9,10,11 & macOS 10.15 & x86\_64 \\ From bf193829c3b410eeaa72ad052f715fbd54991edf Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Sat, 18 Sep 2021 22:48:35 -0400 Subject: [PATCH 05/18] typo Co-authored-by: Milan Curcic --- FortranCon2021-stdlib/stdlib-talk.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index a77e874..5145256 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -226,7 +226,7 @@ \begin{frame} - \frametitle{Cross-platform support monitored with Github's CI workflow} + \frametitle{Cross-platform support monitored with GitHub's CI workflow} \begin{block}{Platforms tested on every pull request} \begin{tabular}{llll} From 0f292463d6d993c73650ed144381468aca3770c0 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:35:26 -0400 Subject: [PATCH 06/18] update title slide (logo, new authors) --- FortranCon2021-stdlib/stdlib-talk.tex | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index c042d58..567467e 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -13,24 +13,27 @@ \title{What's new in the Fortran standard library?} -\author{Nathaniel Shaffer \\[1em] \small +\institute{\includegraphics[width=0.5in]{fortran_logo_256x256}} +\author{\small Nathaniel Shaffer \and Gabriel Brown - \and Ond\v{r}ej \v{C}ertik + \and Ond\v{r}ej \v{C}ertik \and William Clodius \\ \and Milan Curcic - \and Laurence Kedward - \and Sebastian Ehlert \\ - \and Gareth Davies - \and Aman Godara - \and Michael Hirsch \\ + \and Laurence Kedward + \and Sebastian Ehlert + \and Gareth Davies \\ + \and Aman Godara + \and Michael Hirsch \and Jing - \and Chetan Karwa - \and Arjen Markus - \and Ivan Pribec \\ + \and Chetan Karwa \\ + \and Arjen Markus + \and Ivan Pribec \and Harris Snyder + \and St Maxwell \\ \and J\'er\'emie Vandenplas - \and Evan Voyles} -\date{FortranCon 2021 - 24 Sept 2021} + \and Evan Voyles + \and Zuo Zhihua} +\date{\small FortranCon 2021 - 24 Sept 2021} \begin{document} From a2f8024b0c94c00883de5ab1a7b4f80be9d35edc Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:35:57 -0400 Subject: [PATCH 07/18] improve goals & scope --- FortranCon2021-stdlib/stdlib-talk.tex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 567467e..53c083f 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -46,13 +46,14 @@ \begin{itemize} \item Part of fortran-lang: https://github.com/fortran-lang/stdlib - \item Bridge the gap between intrinsics and applications + \item Make Fortran easier to use and more powerful + \item Scope: both general purpose (C++/Python) \& numerical (Matlab/SciPy) \begin{description}[Mathematics] \item[Utilities] strings, logging, filesystem interaction \item[Algorithms] searching, sorting \item[Mathematics] linear algebra, special functions, statistics \end{description} - \item Somewhere between C++ stdlib \& Matlab/scipy + \item Prototype future intrinsics \& provide reference implementation \end{itemize} \note{ From 53d8af5aa3acc4337d030e8ecef84888f2bbef20 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:36:44 -0400 Subject: [PATCH 08/18] better highlight color; add modules/procedures/types summary --- FortranCon2021-stdlib/stdlib-talk.tex | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 53c083f..09211a9 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -74,26 +74,33 @@ \centering \begin{tabular}{ccc} ascii & - \textcolor{red}{bitsets} & + \textcolor{orange}{bitsets} & error \\ io & kinds & linalg \\ - \textcolor{red}{logger} & - \textcolor{red}{math} & + \textcolor{orange}{logger} & + \textcolor{orange}{math} & optval \\ quadrature & - \textcolor{red}{sorting} & - \textcolor{red}{specialfunctions} \\ + \textcolor{orange}{sorting} & + \textcolor{orange}{specialfunctions} \\ stats & - \textcolor{red}{stats\_distribution\_PRNG} & - \textcolor{red}{stringlist\_type} \\ - \textcolor{red}{strings} & - \textcolor{red}{string\_type} & + \textcolor{orange}{stats\_distribution\_PRNG} & + \textcolor{orange}{stringlist\_type} \\ + \textcolor{orange}{strings} & + \textcolor{orange}{string\_type} & system \end{tabular} \end{block} + + \begin{center} + 18 modules, + 7 derived types, + 119 procedures + \end{center} + \note{ By raw count of modules included in stdlib, the project has roughly doubled in size in the past year. A year ago, stdlib looked more like a grab-bag of utilities than a standard library. From f3f88d86fcf7475f80a9c7121dcce0b5665ff388 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:37:19 -0400 Subject: [PATCH 09/18] add contributor count from Community page --- FortranCon2021-stdlib/stdlib-talk.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 09211a9..cc6c8cb 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -190,6 +190,7 @@ \begin{itemize} \item From 16 committors to 34, including our 2 GSoC students \item Over 100 new Issues: bugs, workflow improvements, feature proposals + \item From 52 to 97 contributors (commits, discussion, reviews) \end{itemize} \begin{block}{Commits to stdlib since FortranCon 2020} From 210cbd2570f77af3fae1c02fffc633f3bd775325 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:37:27 -0400 Subject: [PATCH 10/18] add roadmap Co-authored-by: Milan Curcic --- FortranCon2021-stdlib/stdlib-talk.tex | 30 +++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 5145256..3922cc7 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -288,6 +288,36 @@ } \end{frame} + +\begin{frame} + \frametitle{Outlook: Next 12 months} + + \begin{itemize} + \item Probability distributions: Uniform, normal, exponential, gamma, and beta (Fisher) + \item Generic linked list (Karwa) + \item Generic map type (Ehlert) + \item Hash functions (Clodius, Ehlert) + \item Improved OS and file system facilities (Diehl, Markus) + \item Selection algorithms + \item All new intrinsics planned for Fortran 202X + \item Improved stdlib test suite (Ehlert) + \end{itemize} + + \note{Here are some additions and improvements to look forward to in the next year or so. + The highlights are: procedures for various probability distributions and sampling + pseudo-random numbers from them; derived types for generic collections + (linked lists, see Chetan's talk today, and a map/dictionary type); + and cross-platform procedures for querying the operating system and manipulating + the file system (such as listing and traversing directories, removing or copying files, etc.). + This roadmap is driven by community and their contributions and is largely based on + the backlog of existing PRs to be reviewed and improved upon. + If there's something you'd like to be a part of stdlib, please let us know by opening + a proposal in GitHub issues, and we'll discuss it and come up with an implementation plan. + } + +\end{frame} + + \begin{frame} \frametitle{Summary} From 16cebaa86648bc0d645ccf5acbff1f64f0fc2d0e Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:37:56 -0400 Subject: [PATCH 11/18] show off new fpm support --- FortranCon2021-stdlib/stdlib-talk.tex | 33 ++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index cc6c8cb..059ae69 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -221,7 +221,7 @@ \end{itemize} \item Install each separately or use conda package manager \item Exports both CMake package files \& pkg-config files - \item Support for fpm-based workflow is in progress + \item New support for fpm-based workflow \end{itemize} \note{ @@ -231,8 +231,35 @@ These are individually not hard to install on most systems, but one might be worried about having conflicting versions of Fortran compilers or CMake on one system. So to address that concern and also to just serve as a very simple way to get started, there's now a conda package that will automatically install the prerequisites for stdlib. So then once you get the stdlib source code from Github, you can build stdlib and run its test suite with either make or CMake. - Then when you isntall stdlib, you get not only a static or shared library but also a pkg-config file and a CMake package file, which makes it very simply to use stdlib in your own projects. - The ideal situation of course is to distribute stdlib as an fpm package, and while that's still a work in progres, there's been good progress on the fpm side of things. + Then when you install stdlib, you get not only a static or shared library but also a pkg-config file and a CMake package file, which makes it very simply to use stdlib in your own projects. + But the ideal is to distrubute stdlib as an fpm package, which is newly supported! + } +\end{frame} + + +\begin{frame}[fragile] + \frametitle{It is now trivial for fpm packages to depend on stdlib} + + \begin{block}{fpm.toml} + \small +\begin{verbatim} +... +[dependencies] +stdlib.git = "https://github.com/fortran-lang/stdlib" +stdlib.branch = "stdlib-fpm" +... +\end{verbatim} + \end{block} + + \begin{center} + It just works! + \end{center} + + \note{ + For a long time, stdlib's preprocessing needs were difficult to accomodate with fpm. + Now we maintain a branch of stdlib that just contains the pre-processed Fortran source, exacly the way fpm wants it. + Not only is it possible to build standalone stdlib using fpm, but it's trivial to include it as a dependency. + With just a few lines in your fpm.toml, all of stdlib is available and ``just works''! } \end{frame} From 5ec269e537a594a6253c27edf85a9b0f4b488ee1 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:39:09 -0400 Subject: [PATCH 12/18] forgot to commit logo image --- FortranCon2021-stdlib/fortran_logo_256x256.png | Bin 0 -> 5990 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 FortranCon2021-stdlib/fortran_logo_256x256.png diff --git a/FortranCon2021-stdlib/fortran_logo_256x256.png b/FortranCon2021-stdlib/fortran_logo_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..e41a199fb6d52033fd95d4c0c447c5668a0a7b16 GIT binary patch literal 5990 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 wV3i?_}MZtor*?vVqnYr5F?YF0u255Pdu$p8QV literal 0 HcmV?d00001 From 46d989f8ae276b4b1a6188d2bd693fc7da49c073 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Mon, 20 Sep 2021 01:48:37 -0400 Subject: [PATCH 13/18] small roadmap edits; add pdf --- FortranCon2021-stdlib/stdlib-talk.pdf | Bin 60214 -> 67765 bytes FortranCon2021-stdlib/stdlib-talk.tex | 20 +++++++++----------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.pdf b/FortranCon2021-stdlib/stdlib-talk.pdf index b46db7e5a639f676e52d168ab972e7d87a99f108..74cc8102181347598c36caf9e9471af73c2b9b4a 100644 GIT binary patch delta 48457 zcmbTdbyOYAvNw#oYj6kwg1fr}x8M?jYX~kO$lw+vXmEE35Hz^ELvRT0?zY+U^4xpR z`=0fk``0&X&8(X0-Cfnw^{cL~?%gm4Umu4+Pp2*;%gV{di$*v3r*8p`laHE%+R@Ao zO+*BZUD?vX+RcWVpIaayj+qJ29?@9lAXwdFt}AZ~pX_Pa)<*7bDP(=4Y4z6VZA2&B z09&N=@Y>x{yb7FtU5IJQ==QKsd#vkelJX?)>-`+LEIqX3z_uWYz`T?#fz9wf&LXYX zc*Qqn&hU9&32*XWOHBjl38#fumW$od`%it(*WN}pk@dGP`O9&Zl zxar_|6MW1K%pWicZ`2}?zP3I!{Iy9}bKIAJ(TQ!Jk&7?BXqY zoMw#4Rb@BhC5`piC;9I)lX9mB@zz<*WDqS7gwyh6&k3V&8y4z_CaX)WRa$(oG`>A$pZH_Y!{-5_Pr4tfOwDta0T`h8`_F>MdJHBB`mp6jS5;pf8wn?zrka2j+%nrSo$31^ z$zM*CkIdg^`7xysi`>Dze z@e-EER?OGR@e>*!v57FFBU0~evXhpl`g-q+Ufd<)1vX)z4{4b4ExN%-dGwx)CObJuoEuQ82$?hm5sLCTJJ*yl_bSsFRo5*lcf>p(&dU1SWEG#d9hb?!4Pu53P|M+C($|rkbhxIGto=UA z{SHgcZUhY7U=bUFm0=3q93IJ88ez!o8(u!M9oL0 zX$3dB=zh#2NM<=974K-q!pwGH*MH`xO0>|e=oOQR<+2%djLo0nHR#T4<%V)2G$u;m z#YAOSCNW#9e?5%iIMng&zK8g;2# z3m|Sm0l@@Q)VIJ%=AI$JJY3kFT1&PoRWjn4U8|TvltSz7*XVAxJ|bcjg7@!-PmeVU z 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%0Ais@ycRATkcuR%A0wM~>+)B2M`0_C5o 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 delta 41043 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 ? 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 aeMHeI(Qpv>NbKC4>`Vw06k-bE2>%ZRKHvWU diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 69b0451..37bd78a 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -338,22 +338,20 @@ \item Hash functions (Clodius, Ehlert) \item Improved OS and file system facilities (Diehl, Markus) \item Selection algorithms + \item Portability across platforms \item All new intrinsics planned for Fortran 202X \item Improved stdlib test suite (Ehlert) \end{itemize} - \note{Here are some additions and improvements to look forward to in the next year or so. - The highlights are: procedures for various probability distributions and sampling - pseudo-random numbers from them; derived types for generic collections - (linked lists, see Chetan's talk today, and a map/dictionary type); - and cross-platform procedures for querying the operating system and manipulating - the file system (such as listing and traversing directories, removing or copying files, etc.). - This roadmap is driven by community and their contributions and is largely based on - the backlog of existing PRs to be reviewed and improved upon. - If there's something you'd like to be a part of stdlib, please let us know by opening - a proposal in GitHub issues, and we'll discuss it and come up with an implementation plan. + \note{ + Here are some additions and improvements to look forward to in the next year or so. + The highlights are: procedures for various probability distributions andsampling pseudo-random numbers from them; + derived types for generic collections (linked lists, see Chetan's talk today, and a map/dictionary type); + and cross-platform procedures for querying the operating system and manipulating the file system + (such as listing and traversing directories, removing or copying files, etc.). + This roadmap is driven by community and their contributions and is largely based on the backlog of existing PRs to be reviewed and improved upon. + If there's something you'd like to be a part of stdlib, please let us know by opening a proposal in GitHub issues, and we'll discuss it and come up with an implementation plan. } - \end{frame} From bd78bf99d97cdfd59c710bbfd7f0f92deface483 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Wed, 22 Sep 2021 21:19:41 -0400 Subject: [PATCH 14/18] typos Co-authored-by: zoziha Co-authored-by: Ivan Pribec --- FortranCon2021-stdlib/stdlib-talk.tex | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index 37bd78a..b2fae51 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -203,7 +203,7 @@ Not only has the number of modules doubles but so has the number of people who've committed changes to stdlib. Included in that are two Google Summer of Code students Aman Godara and Chetan Karwa, who we will hear from shortly. What that figure doesn't include is contributions made in the form of Issues and reviews of Pull Requests. - It's really great to see over 100 new Issues opened in the past year, since this not only includes bug reports but also discussion of workflow improvments and proposals for new features. + It's really great to see over 100 new Issues opened in the past year, since this not only includes bug reports but also discussion of workflow improvements and proposals for new features. And looking at the timeline of commits since last year's FortranCon, we see a nice sustained development with big rushes of new development at the end of last summer and throughout this summer. } \end{frame} @@ -225,7 +225,7 @@ \end{itemize} \note{ - Besides implementing and discussing new features, the other way in which stdlib has improve a lot this past year is in infrastructure. + Besides implementing and discussing new features, the other way in which stdlib has improved a lot this past year is in infrastructure. In particular, it's now quite straightforward to work with stdlib, whether as a developer or a user. So the has three dependencies: a reasonably modern Fortran compiler, a reasonably recent version of CMake (or just make if you prefer), and the fypp preprocessor, which is used mainly as a templating engine for writing generic procedures. These are individually not hard to install on most systems, but one might be worried about having conflicting versions of Fortran compilers or CMake on one system. @@ -257,7 +257,7 @@ \note{ For a long time, stdlib's preprocessing needs were difficult to accomodate with fpm. - Now we maintain a branch of stdlib that just contains the pre-processed Fortran source, exacly the way fpm wants it. + Now we maintain a branch of stdlib that just contains the pre-processed Fortran source, exactly the way fpm wants it. Not only is it possible to build standalone stdlib using fpm, but it's trivial to include it as a dependency. With just a few lines in your fpm.toml, all of stdlib is available and ``just works''! } @@ -345,7 +345,7 @@ \note{ Here are some additions and improvements to look forward to in the next year or so. - The highlights are: procedures for various probability distributions andsampling pseudo-random numbers from them; + The highlights are: procedures for various probability distributions and sampling pseudo-random numbers from them; derived types for generic collections (linked lists, see Chetan's talk today, and a map/dictionary type); and cross-platform procedures for querying the operating system and manipulating the file system (such as listing and traversing directories, removing or copying files, etc.). @@ -362,7 +362,7 @@ \item stdlib aims to be a de facto standard library of general-purpose and numerical facilities for Fortran \item Roughly doubled in size in the past year, both in terms of modules and contributors \item New modules include bitsets, logging, math utilities, sorting, special functions, RNG, and string handling - \item Infrastructure and packaging improvments have made stdlib easier to install and use + \item Infrastructure and packaging improvements have made stdlib easier to install and use \end{itemize} \end{frame} From 47afe34a1c044185d3bce9480dbf431e68ca60f6 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Wed, 22 Sep 2021 21:25:07 -0400 Subject: [PATCH 15/18] strike "assignees" from near-term objectives --- FortranCon2021-stdlib/stdlib-talk.tex | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index b2fae51..a477802 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -332,15 +332,15 @@ \frametitle{Outlook: Next 12 months} \begin{itemize} - \item Probability distributions: Uniform, normal, exponential, gamma, and beta (Fisher) - \item Generic linked list (Karwa) - \item Generic map type (Ehlert) - \item Hash functions (Clodius, Ehlert) - \item Improved OS and file system facilities (Diehl, Markus) + \item Probability distributions: Uniform, normal, exponential, gamma, and beta + \item Generic linked list + \item Generic map type + \item Hash functions + \item Improved OS and file system facilities \item Selection algorithms \item Portability across platforms \item All new intrinsics planned for Fortran 202X - \item Improved stdlib test suite (Ehlert) + \item Improved stdlib test suite \end{itemize} \note{ From da1253d779519da58f7c2153d5f9f11fe887d565 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Thu, 23 Sep 2021 00:06:29 -0400 Subject: [PATCH 16/18] add sorting example --- FortranCon2021-stdlib/examples/Makefile | 6 ++++- FortranCon2021-stdlib/stdlib-talk.pdf | Bin 67765 -> 68788 bytes FortranCon2021-stdlib/stdlib-talk.tex | 32 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/FortranCon2021-stdlib/examples/Makefile b/FortranCon2021-stdlib/examples/Makefile index 76d6afc..32b67da 100644 --- a/FortranCon2021-stdlib/examples/Makefile +++ b/FortranCon2021-stdlib/examples/Makefile @@ -2,7 +2,7 @@ FC = gfortran STDLIB_CFLAGS = $(shell pkg-config --cflags fortran_stdlib) STDLIB_LIBS = $(shell pkg-config --libs fortran_stdlib) -all: ex_bitsets ex_logger +all: ex_bitsets ex_logger ex_sorting ex_bitsets: ex_bitsets.f90 $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) @@ -10,7 +10,11 @@ ex_bitsets: ex_bitsets.f90 ex_logger: ex_logger.f90 $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) +ex_sorting: ex_sorting.f90 + $(FC) $(STDLIB_CFLAGS) $^ -o $@ $(STDLIB_LIBS) + clean: $(RM) ex_bitsets $(RM) ex_logger + $(RM) ex_sorting diff --git a/FortranCon2021-stdlib/stdlib-talk.pdf b/FortranCon2021-stdlib/stdlib-talk.pdf index 74cc8102181347598c36caf9e9471af73c2b9b4a..0fbca17a4dd3a13113c91884016ae28812f0139c 100644 GIT binary patch delta 18894 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 C61dI) delta 17931 zcmZU4Lv)~x5@nK(-LcWJZQHhO+xcR3I_Y$5+qP}nw(a?6@n$o%y0xh7J*O@jQo$SJ zz-vxPK{?`nqSg~oeu06q#^cj?gEH2q&?KY8@8Y1=3-c5G0A;B+5y}ONHxfdx#};)1 zi-!{ve)Nz<+ zL>u0Irus;cOuuDw^4zcc^V_fn9R|kJQOBb(iBs=_`R&rlxOnq~oJkUyfy>>N@c3CE znaB|anUhbjTl0eM>1nN7D8LDpD?h*ykqIM5$>3Sxg&J+)wOYm==uxEcL5j?B^ z<5%MS_j#3m!DqX3V9Ij>sx~s<0CC8w>$ctZDvFw#MB9C13ky|{iHA51|(@PkECOT5Pv6#Rf+Jp@|P5tQ8JhKx(6y{@V{t4M-% zc+@A+IPSyI|A>yfSH00mCfz^1!;4b@GUDj=K;5wAievyViZi=?6&$p$ z{Yk4BsAC&LH1)EiG5nbeVW%wo&zriqZNVPZ@OZ6FTwz&$c}QG~AG@<89qm}kZRKhV z6}7mI7k)U%v3!kk|KaJfu!0(Ucy2-m=2L=Tmwnn8q-bokW|wB~gmls>?^2n~Ka6J- zDmlUIuZ1m^RDN~Lfhsnzc%l_R)z~U+l~m#-&}<+6+N37K&f&}}9YyqOl`&y$#KdH=VzxMURNEp5!!_UpOxaHj?2a;M7M3i5%tpISfiuiffW_c9SJ|>n^n6w>RMd*(>_0XNGrNNlu{{u z`o_+Wh(AtT*#D4mQkL(do)p+qlFm3Y^qn8QSdX8^votBg_lHm8u^X*@>560Rnxqoy6J}h#;xXP?jv}6bk`_pibI4#s z4!eFu=dV-VGd8I|(k_i$6DhENR)5@q=+}nmU~(^eSoQ$%N&g%nzAQQm?KNQOnC{>d zLy(@`RP#oI5e2&iHCG<+4C5L{KEy-)^;fN=>&@5sWbr3U7KTj19xWX>I6b)8NZ;9O z;^Ma&jWBm*BN|n(tV|j@S{^Xs$)3#JT=OPj{k1dk!x9gHk)KM637w0&{f7c0B=yM_ z3J~}TevG?DvJ`du`F6HRH$nt&L0fF8M-s^O5TzVQMK#kVY!J`Tbzb17?W+TLx4vRp zE`~p{+@Uomv~FqNK_m z{U1jYcpTIf(MGANMw;WyS6CSrG*+1VXS_d7FCwhCjn2I4lsfC`I#<2gSwtq*G)QD$ zHgK8Os2s2SiYw^N+8K&;E*oIC)p2>cH|XnlnU=Ix75G{?T`c|M{*5ytwUP&xL+nT1 zPB!_aC8`cNXrsTJ@&kVt1r~Rs*UM7RGvr@3~ws;)kF$w1g)PbgjZiim~YmMSq?T;4)FF3X&ac|#%n}7?}xWxMBD*YVW zmV!j&I_R{o3p5(zx!1B-8Ud0oxaP_4wBdBWcky%c(V;yY7}6Imd-a2>zvT3W8{q

wrG^YyIz~wwjJ}=55ZaJ%?3E0?ecCgP&W0-6ykcT~24xq}ZE7^fq?alETC%%Ro{Z z5r@||%(=tg6$w*uonZ0Vu^;co*9<(V8^o{(A>K$D6^xU!{z_Tm*MHo~?#3V|$o&8D zB@+=dBRli|*pr!viJ6&|^M5M~5##?L5fck5BWFA)83j<-Y^I2J)a;f3{ZZyQyi!mYS?-ETR>RS;PM_Cqm63 z9oY&E42?_0BtmRpUvgDrY4T79Sq%oMh_=1BK|?!Jr*G={R_{}>1k22*6nyIVwjn

%7J@B}2LhF$^)Lh>CTW+ogtbb@m$qbreF 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 Date: Thu, 23 Sep 2021 23:57:02 -0400 Subject: [PATCH 17/18] minor revisions --- FortranCon2021-stdlib/stdlib-talk.tex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FortranCon2021-stdlib/stdlib-talk.tex b/FortranCon2021-stdlib/stdlib-talk.tex index f452ee1..a696700 100644 --- a/FortranCon2021-stdlib/stdlib-talk.tex +++ b/FortranCon2021-stdlib/stdlib-talk.tex @@ -47,18 +47,19 @@ \begin{itemize} \item Part of fortran-lang: https://github.com/fortran-lang/stdlib \item Make Fortran easier to use and more powerful + \item Prototype future intrinsics \& provide reference implementation \item Scope: both general purpose (C++/Python) \& numerical (Matlab/SciPy) \begin{description}[Mathematics] \item[Utilities] strings, logging, filesystem interaction \item[Algorithms] searching, sorting \item[Mathematics] linear algebra, special functions, statistics \end{description} - \item Prototype future intrinsics \& provide reference implementation \end{itemize} \note{ Before I can show off what's new in the standard library, let's have a few words about what it is. It's a volunteer effort maintained under the fortran-lang organization, with the code hosted on Github. + One aim of stdlib is to serve as a testing ground for future intrinsics and to provide reference implementations. The main goal is to bridge the gap between what's offered intrinsically in the language versus the high-level code one would like to write in applications. This makes the scope of the Fortran standard library quite wide. We want to offer general programming-type things like common algorithms a la C++, while also providing a good base of numerically-oriented functionality like what's found in Matlab or the Python scientific ecosystem. @@ -236,7 +237,6 @@ Included in that are two Google Summer of Code students Aman Godara and Chetan Karwa, who we will hear from shortly. What that figure doesn't include is contributions made in the form of Issues and reviews of Pull Requests. It's really great to see over 100 new Issues opened in the past year, since this not only includes bug reports but also discussion of workflow improvements and proposals for new features. - And looking at the timeline of commits since last year's FortranCon, we see a nice sustained development with big rushes of new development at the end of last summer and throughout this summer. } \end{frame} From 2ba0d862e22c47493a048ac008d49a04553e2744 Mon Sep 17 00:00:00 2001 From: Nathaniel Shaffer Date: Fri, 24 Sep 2021 00:41:07 -0400 Subject: [PATCH 18/18] forgot to add sorting example; update pdf --- FortranCon2021-stdlib/examples/ex_sorting.f90 | 12 ++++++++++++ FortranCon2021-stdlib/stdlib-talk.pdf | Bin 68788 -> 68785 bytes 2 files changed, 12 insertions(+) create mode 100644 FortranCon2021-stdlib/examples/ex_sorting.f90 diff --git a/FortranCon2021-stdlib/examples/ex_sorting.f90 b/FortranCon2021-stdlib/examples/ex_sorting.f90 new file mode 100644 index 0000000..24a5bb9 --- /dev/null +++ b/FortranCon2021-stdlib/examples/ex_sorting.f90 @@ -0,0 +1,12 @@ +use stdlib_sorting, only: sort_index +use stdlib_kinds, only: int64 +implicit none + +integer :: digits(6) = [3,1,4,1,5,9] +character :: chars(6) = ['a','b','c','d','e','f'] +integer(int64) :: index(6) +call sort_index(digits, index) +print '(6i1)', digits ! 113459 +print '(6i1)', index ! 241356 +print '(6a1)', chars(index) ! bdacef +end diff --git a/FortranCon2021-stdlib/stdlib-talk.pdf b/FortranCon2021-stdlib/stdlib-talk.pdf index 0fbca17a4dd3a13113c91884016ae28812f0139c..69f2994ed60287e918364b6b5a6278d0595b110f 100644 GIT binary patch delta 1165 zcmV;81akYdnFO(!1hBCe0W^~!C@OzdU2oGc6n*cn@Dpma)%9mS_JRO0q)C&;TExTH zLz+6NMdEac!_<9qHoKE5F+MFf2skY6H&NFmzzgULD2paOH@ zF*Hk1fF+z2V*zF~M6(6D8Gc5HupyNn>|z^rzYiIDn1YcGz?7H>x`BMiKnb`}9+ZN@ zfy>~zvYTXKQ_ptc+BnH7yU6tXZA;?Gn{x!8?+C;L>Q7lWL4a&GO4rI5rX;PV0j!Nx?G(Lp!AkTVGFxnb!3v-*4yN?v86VZjw?5Q z({Xk?f9OT`o!gTr7fpZMZ_ihm%9XK^)rEN-g($^@`o~eI%hf70jf<7)uEM;qOUEcx zMwL<4$xxT8qPNF4BFTr7lgZWEE(-%A>U`8mX6js(I*wYOKpo?zH;Jy{G2n?>`< zG}c$^cK422N9Zz$g_sEm$P$p5L;hlQrma@hvvBBUED3>r2xfmst5e4)E7BB(r#*ct zGF7cBtMZL^K&p8E;D`FG%zqTH!(J~4gvEDLpVb-F+(;vK|w?{ zH!?6YLqb6|MmaP^MME$#K}9r1I6fdeI72frLpC`OHf#VmRhAy*ok8sN`+RVj6Apbo%epv zzxyPGngJ=f0h_QTDco!kfhfcv4)Vt`)4N!$5v=$MK*Xe!pFs#g7>?lB)brvs0Z~)> z)z28jp#zep%$J8YXoqe{nX=CwI-v`y&<{PP@lUV4(0>ORNSkus9tL30R2c9x3qz)S z#Lrqvt?z!j8xg!Wl5J8^@pzWQlZ7*%if_sj#x+%`iNjo!T^E{0wz!itA|%^{x7Ufq=V!$PL zP=^+7{t=rOoOu9_wE^lcqXe_SLvgm_2_b+5+gRc+WZskW746Ysb@9V=Fu4F4RA4SV zhNcS?UOhlTuK) za2Y&TcAYG&>)9?`8z)(1=c%5(Ye*dJoF06>BM=X;F9f0NMi?P99p6guEZ}ZLWs=RrF)Ty`gfXFGgGr9VIuRqDrf>{_PKK?&eliyE`&- z_an>85o2AFB7aonVwJv*5X=V$%YKAtb2UQT#(AOIi=O3n>9{1ys4_}hVym*qJM!O& zBp=VtCf94b%ngjFQ|W(=TQ;jql{$_Z6`+oB-Fc#Ir~2$wWYcIixsCPpx;ee0Ru4Ud zScsXBfGh!-IpnWar`l>&Jqw5K#*z@|_EMXqdg~aad6K~JZAYJqR8{NBs;qrZjRmP< zt8;TW`AayAX@Cj5$UE}APm{ca9?VW-p`yl}@$#wq3Oo*@KI?y^@QTyjI^l|!DvPX+ zPbxIkrY_aBR+^|;8Fl3rD%PC~7c0|<+}%rM0iik$(o^F}_>aJXUiz+0)jqyJp}C*j z=5}4Ej-*{}zbRlY@M2YyY{qSu74GCuJ#Y89GYjRSiM!)jk*Z9YTB>9AJTZbczW}YE zhc^mkZe(+Ga%HpA8V=HrCGcYhPHZVA~3jy;ALpDS=FflPiGB7nm zFgHR$K{G-)G(6kFf~IkH$p){GeS5tL_#zrZ=%#BUtejfQU&+KZ6j0FdV_LDfR3%0a4Sy zi=Q!wLnpME(w`pMp#yp#Y05l#=z?yjLO-NT6CYlCp??q3Fks4lc^HHtQ-0Xb3=Erc zaX&|36l$h&!M{zyn5lB(=QvEj3{07-ArD!YhIyDZ)gC?MU=9k9H`VVvEWjch!YVA8 z8V_EVVFgOCW@?r^6k#1spaR=)06Va2y8iaZd#3xMud?a=*4I9q!Wq=z94?>%mv9A5 f)9+8~cL*n5^$&1EC`Olw3;`erI0_{tMNdWwn!pad