|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 8.7 KiB |
|
Before Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 381 B |
|
Before Width: | Height: | Size: 596 B |
|
Before Width: | Height: | Size: 621 B |
|
Before Width: | Height: | Size: 335 B |
|
Before Width: | Height: | Size: 636 B |
|
Before Width: | Height: | Size: 560 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 784 B |
|
Before Width: | Height: | Size: 8.5 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 799 B |
|
Before Width: | Height: | Size: 171 B |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 896 B |
|
Before Width: | Height: | Size: 114 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 852 B |
|
Before Width: | Height: | Size: 858 B |
|
Before Width: | Height: | Size: 713 B |
|
Before Width: | Height: | Size: 724 B |
@@ -1,500 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="163.84375"
|
||||
height="124.67096"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.5 r10040"
|
||||
sodipodi:docname="New document 1">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient3833">
|
||||
<stop
|
||||
style="stop-color:#f7c41a;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3835" />
|
||||
<stop
|
||||
style="stop-color:#bd9510;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3837" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient3825">
|
||||
<stop
|
||||
style="stop-color:#f3d673;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3827" />
|
||||
<stop
|
||||
style="stop-color:#c7a23a;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3829" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825"
|
||||
id="radialGradient3831"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,1.3722368,813.17816)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient3839"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,4.9030359,1024.9638)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
id="radialGradient3839-8"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,4.9030359,1024.9638)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3833-7">
|
||||
<stop
|
||||
style="stop-color:#f4d779;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3835-5" />
|
||||
<stop
|
||||
style="stop-color:#bd9510;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3837-4" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3831-8"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,1.3722368,813.17816)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
id="linearGradient3825-5">
|
||||
<stop
|
||||
style="stop-color:#f3d673;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3827-3" />
|
||||
<stop
|
||||
style="stop-color:#c7a23a;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3829-7" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="80.321426"
|
||||
fy="414.17612"
|
||||
fx="407.17349"
|
||||
cy="414.17612"
|
||||
cx="407.17349"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-153.01531,1007.7817)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3870"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
r="80.321426"
|
||||
fy="414.24271"
|
||||
fx="406.47156"
|
||||
cy="414.24271"
|
||||
cx="406.47156"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-156.54611,795.9961)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3872"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
id="radialGradient3908"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-153.01531,1007.7817)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3910"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-156.54611,795.9961)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
id="radialGradient3914"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-153.01531,1007.7817)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3916"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-156.54611,795.9961)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
id="radialGradient3918"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-153.01531,1007.7817)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3920"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-156.54611,795.9961)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-7"
|
||||
id="radialGradient3924"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-153.01531,1007.7817)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3926"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-156.54611,795.9961)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3933"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01462336,-0.89388887,0.97447651,-0.01594169,19.13339,796.92442)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient3935"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,4.9030359,1024.9638)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825"
|
||||
id="radialGradient3937"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,1.3722368,813.17816)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient3941"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-75.408823,1015.0037)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825"
|
||||
id="radialGradient3943"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-78.939622,803.21805)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3949"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01462336,-0.89388887,0.97447651,-0.01594169,19.13339,796.92442)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3953"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01462336,-0.89388887,0.97447651,-0.01594169,19.13339,796.92442)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3957"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01462336,-0.89388887,0.97447651,-0.01594169,-70.86661,796.92442)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-5"
|
||||
id="radialGradient3961"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01462336,-0.89388887,0.97447651,-0.01594169,-70.86661,796.92442)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833-79"
|
||||
id="radialGradient3941-1"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-75.408823,1015.0037)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<linearGradient
|
||||
id="linearGradient3833-79">
|
||||
<stop
|
||||
style="stop-color:#f4d779;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3835-55" />
|
||||
<stop
|
||||
style="stop-color:#bd9510;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3837-5" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825-3"
|
||||
id="radialGradient3943-5"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-78.939622,803.21805)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<linearGradient
|
||||
id="linearGradient3825-3">
|
||||
<stop
|
||||
style="stop-color:#f3d673;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3827-0" />
|
||||
<stop
|
||||
style="stop-color:#c7a23a;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop3829-2" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
r="80.321426"
|
||||
fy="414.24271"
|
||||
fx="406.47156"
|
||||
cy="414.24271"
|
||||
cx="406.47156"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,91.271992,815.08835)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="radialGradient3985"
|
||||
xlink:href="#linearGradient3825-3"
|
||||
inkscape:collect="always" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient4029"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,-75.408823,1015.0037)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3825"
|
||||
id="radialGradient4031"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.01492027,-0.91203843,0.99426233,-0.01626537,-78.939622,803.21805)"
|
||||
cx="406.47156"
|
||||
cy="414.24271"
|
||||
fx="406.47156"
|
||||
fy="414.24271"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient4037"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,71.056847,1015.1237)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient3833"
|
||||
id="radialGradient4047"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-0.0234034,-1.430605,0.9942623,-0.01626526,71.056847,1015.1237)"
|
||||
cx="407.17349"
|
||||
cy="414.17612"
|
||||
fx="407.17349"
|
||||
fy="414.17612"
|
||||
r="80.321426" />
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#595959"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="-296.38002"
|
||||
inkscape:cy="91.425689"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="29"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
sodipodi:insensitive="true"
|
||||
style="display:none"
|
||||
transform="translate(-391.875,-406.1875)">
|
||||
<image
|
||||
y="392.14789"
|
||||
x="-90.714287"
|
||||
id="image3047"
|
||||
xlink:href="file:///home/tomasi/Projects/nimrod/logo/new-symbols.png"
|
||||
height="329"
|
||||
width="800" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer"
|
||||
style="display:inline"
|
||||
transform="translate(-391.875,-406.1875)">
|
||||
<g
|
||||
id="g4041">
|
||||
<path
|
||||
id="path4019"
|
||||
d="m 474.37925,408.23965 c 0,0 -6.12468,5.3771 -12.34375,10.6875 -6.39764,-0.22532 -18.88846,1.38269 -25.6875,4.125 -6.26333,-4.40055 -11.8125,-9.28125 -11.8125,-9.28125 0,0 -4.69884,9.01564 -7.65625,14.28125 -4.38598,2.58703 -8.76277,5.43142 -12.6875,9.28125 -4.63902,-2.04302 -10.1875,-4.65625 -10.1875,-4.65625 l 6.25,27.875 0.9375,1.875 -1.09375,-1.875 c 0,0 8.86172,24.01192 14.8125,40 25.2159,36.89492 89.61617,39.46428 117.68751,0.71875 5.37871,-13.44336 11.62618,-31.71161 13.90625,-38.4375 l 1.25,-2.8125 5.90625,-26.78125 c 0,0 -6.87234,2.50886 -11.0625,4.28125 -2.40446,-3.40619 -6.05177,-7.01378 -11.25,-9.46875 -3.05538,-6.20497 -7.5,-14.65625 -7.5,-14.65625 0,0 -5.33268,4.38488 -11.4375,9.125 -8.24767,-1.68845 -18.23488,-3.72666 -26.62501,-3.21875 -5.71156,-5.20637 -11.40625,-11.0625 -11.40625,-11.0625 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3054"
|
||||
d="m 400.26095,460.55777 -6.25,-27.85715 c 0,0 5.53955,2.59984 10.17857,4.64286 3.92473,-3.84983 8.2926,-6.69868 12.67858,-9.28571 2.95741,-5.26561 7.67857,-14.28572 7.67857,-14.28572 0,0 5.52238,4.88517 11.78571,9.28572 6.79904,-2.74231 19.31665,-4.33247 25.71429,-4.10715 6.21906,-5.3104 12.32143,-10.71428 12.32143,-10.71428 0,0 5.71701,5.86506 11.42857,11.07143 8.39013,-0.50791 18.35947,1.52583 26.60714,3.21428 6.10482,-4.74012 11.42857,-9.10714 11.42857,-9.10714 0,0 4.44462,8.43789 7.5,14.64286 5.19824,2.45497 8.84554,6.05809 11.25,9.46428 4.19017,-1.77239 11.07143,-4.28571 11.07143,-4.28571 l -5.89286,26.78571 -6.60714,14.82143 c 0,0 -4.31067,-2.70091 -7.32143,-4.28571 -16.93933,-45.69195 -106.71744,-37.02003 -119.46428,-0.71429 -5.78255,1.30574 -8.39286,2.32143 -8.39286,2.32143 z"
|
||||
style="fill:url(#radialGradient4047);fill-opacity:1;stroke:#ffffff;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3051"
|
||||
d="m 400.08238,460.55777 c 0,0 8.87064,24.01192 14.82143,40 25.2159,36.89492 89.60723,39.45981 117.67857,0.71428 6.64277,-16.60268 15,-41.60714 15,-41.60714 l -6.07143,11.42857 -7.63525,-0.35714 -11.82903,15 -16.96429,5 -31.07143,-17.85715 -31.25,17.5 -16.96428,-4.82142 -11.54402,-15.59885 -7.56312,2.02742 z"
|
||||
style="fill:#ffffff;stroke:none" />
|
||||
<path
|
||||
sodipodi:nodetypes="scccccccccs"
|
||||
id="path3054-8"
|
||||
d="m 474.88371,439.45394 c 26.96263,-0.0368 50.75931,9.32331 58.9643,31.09821 0.11438,0.0602 0.25716,0.12428 0.375,0.1875 l -0.34375,0 -11.84375,15 -16.93751,5 -31.09375,-17.875 -31.25,17.5 -16.96875,-4.8125 -11.31751,-16.02955 c 6.01205,-17.4758 32.67194,-30.03082 60.41572,-30.06866 z"
|
||||
style="fill:none;stroke:#000000;stroke-width:1.10000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 979 B |
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 317 B |
|
Before Width: | Height: | Size: 416 B |
|
Before Width: | Height: | Size: 673 B |
|
Before Width: | Height: | Size: 194 B |
@@ -1,44 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var timer;
|
||||
var prevIndex = 0;
|
||||
var slideCount = 4;
|
||||
|
||||
function modifyActive(el, add) {
|
||||
var element = document.getElementById(el);
|
||||
if (add) {
|
||||
element.className = element.className + " active";
|
||||
}
|
||||
else {
|
||||
element.className = element.className.replace("active", "");
|
||||
}
|
||||
}
|
||||
|
||||
function setSlideShow(index, short) {
|
||||
if (index >= slideCount) index = 0;
|
||||
modifyActive("slide" + prevIndex, false);
|
||||
modifyActive("slide" + index, true);
|
||||
modifyActive("slideControl" + prevIndex, false);
|
||||
modifyActive("slideControl" + index, true);
|
||||
prevIndex = index;
|
||||
startTimer(short ? 8000 : 32000);
|
||||
}
|
||||
|
||||
function nextSlide() { setSlideShow(prevIndex + 1, true); }
|
||||
function startTimer(t) { timer = setTimeout(nextSlide, t); }
|
||||
|
||||
function slideshow_enter() { clearTimeout(timer); }
|
||||
function slideshow_exit () { startTimer(16000); }
|
||||
|
||||
function slideshow_click(index) {
|
||||
clearTimeout(timer);
|
||||
setSlideShow(index, false);
|
||||
}
|
||||
|
||||
window.onload = function() {
|
||||
var slideshow = document.getElementById("slideshow");
|
||||
slideshow.onmouseenter = slideshow_enter;
|
||||
slideshow.onmouseleave = slideshow_exit;
|
||||
slideCount = slideshow.children.length;
|
||||
startTimer(8000);
|
||||
};
|
||||
|
Before Width: | Height: | Size: 4.7 MiB |
|
Before Width: | Height: | Size: 8.8 MiB |
|
Before Width: | Height: | Size: 309 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 70 KiB |
@@ -1,630 +0,0 @@
|
||||
|
||||
* { cursor:default; }
|
||||
a, a * { cursor:pointer; }
|
||||
|
||||
html { margin:0; overflow-x:auto; }
|
||||
body {
|
||||
overflow-x:hidden;
|
||||
min-width:1030px;
|
||||
margin:0;
|
||||
font:13pt "arial";
|
||||
background:#152534 url("images/bg.png") no-repeat center top;
|
||||
color:rgba(0,0,0,.8); }
|
||||
|
||||
pre {
|
||||
color:#fff;
|
||||
margin:0;
|
||||
padding:15px 10px;
|
||||
font:10pt monospace;
|
||||
line-height:14pt;
|
||||
background:rgba(0,0,0,.4);
|
||||
border-left:8px solid rgba(0,0,0,.3);
|
||||
box-shadow:1px 2px 16px rgba(28,180,236,.4); }
|
||||
pre, pre * { cursor:text; }
|
||||
pre .cmt { color:rgb(255,229,106); }
|
||||
pre .kwd { color:#43A8CF; font-weight:bold; }
|
||||
pre .typ { color:#128B7D; font-weight:bold; }
|
||||
pre .atr { color:#128B7D; font-weight:bold; font-style:italic; }
|
||||
pre .def { color:#CAD6E4; font-weight:bold; }
|
||||
pre .prg { color:#854D6A; font-weight:bold; font-style:italic; }
|
||||
pre .val { color:#8AB647; }
|
||||
pre .tab { border-left:1px dotted rgba(67,168,207,0.4); }
|
||||
pre .end { background:url("images/tabEnd.png") no-repeat left bottom; }
|
||||
|
||||
.page pre { background:rgba(0,0,0,.8); }
|
||||
.page pre > .Comment { color:rgb(255,229,106); }
|
||||
.page pre > .Keyword { color:#43A8CF; font-weight:bold; }
|
||||
.page pre > .StringLit,
|
||||
.page pre > .DecNumber { color:#8AB647; }
|
||||
|
||||
.tall { height:100%; }
|
||||
.pre { padding:1px 5px; font:11pt monospace; background:#96A9B7; border-radius:3px; }
|
||||
|
||||
.page-layout { margin:0 auto; width:1000px; }
|
||||
.docs-layout { margin:0 40px; }
|
||||
.talk-layout { margin:0 40px; }
|
||||
.wide-layout { margin:0 auto; }
|
||||
|
||||
#head { height:100px; background:url("images/head.png") repeat-x bottom; }
|
||||
#head.docs { margin-left:280px; background:rgba(0,0,0,.25) url("images/head-fade.png") no-repeat right top; }
|
||||
#head > div { position:relative }
|
||||
|
||||
#head-logo {
|
||||
position:absolute;
|
||||
left:-390px;
|
||||
top:0;
|
||||
width:917px;
|
||||
height:268px;
|
||||
pointer-events:none;
|
||||
background:url("images/logo.png") no-repeat; }
|
||||
#head.docs #head-logo { left:-381px; position:fixed; }
|
||||
#head.forum #head-logo { left:-370px; }
|
||||
|
||||
#head-logo-link {
|
||||
position:absolute;
|
||||
display:block;
|
||||
top:10px;
|
||||
left:10px;
|
||||
width:236px;
|
||||
height:85px; }
|
||||
#head.docs #head-logo-link { left:-260px; }
|
||||
#head.forum #head-logo-link { left:30px; }
|
||||
|
||||
#head-links { position:absolute; right:0; bottom:13px; }
|
||||
#head.docs #head-links,
|
||||
#head.forum #head-links { right:20px; }
|
||||
#head-links > a {
|
||||
display:block;
|
||||
float:left;
|
||||
padding:10px 25px 25px 25px;
|
||||
color:rgba(255,255,255,.5);
|
||||
font-size:14pt;
|
||||
text-decoration:none;
|
||||
letter-spacing:1px;
|
||||
background:url("images/head-link.png") no-repeat center bottom;
|
||||
transition:
|
||||
color 0.3s ease-in-out,
|
||||
text-shadow 0.4s ease-in-out; }
|
||||
#head-links > a:hover,
|
||||
#head-links > a.active {
|
||||
color:#1cb3ec;
|
||||
text-shadow:0 0 4px rgba(28,179,236,.8);
|
||||
background-image:url("images/head-link_hover.png"); }
|
||||
|
||||
#head-banner { width:200px; height:100px; background:#000; }
|
||||
|
||||
#neck { z-index:0; height:40px; }
|
||||
#neck.home { height:370px; }
|
||||
#neck > div { position:relative }
|
||||
|
||||
#glow-arrow {
|
||||
position:absolute;
|
||||
top:-9px;
|
||||
left:0;
|
||||
right:-16px;
|
||||
height:48px;
|
||||
background:url("images/glow-arrow.png") no-repeat right; }
|
||||
#glow-arrow.docs { left:280px; }
|
||||
|
||||
#glow-line-vert {
|
||||
position:fixed;
|
||||
top:100px;
|
||||
left:280px;
|
||||
width:3px;
|
||||
height:844px;
|
||||
background:url("images/glow-line-vert.png") no-repeat; }
|
||||
|
||||
#slideshow { position:absolute; top:10px; left:10px; width:700px; height: 1000px; }
|
||||
#slideshow > div {
|
||||
position:absolute;
|
||||
margin:30px 0 0 10px;
|
||||
visibility:hidden;
|
||||
opacity:0;
|
||||
transition:
|
||||
visibility 0s linear 1s,
|
||||
opacity 1s ease-in-out; }
|
||||
#slideshow > div.active { visibility:visible; opacity:1; transition-delay:0s; }
|
||||
#slideshow > div.init { transition-delay:0s; }
|
||||
#slideshow-nav { z-index:3; position:absolute; top:341px; left:18px; }
|
||||
#slideshow-nav > div { display:inline-block; margin:5px 0; width:23px; height:23px; background:url("images/slideshow-nav.png") no-repeat; }
|
||||
#slideshow-nav > div:hover { background-image:url("images/slideshow-nav_active.png"); opacity:0.5; }
|
||||
#slideshow-nav > div.active { background-image:url("images/slideshow-nav_active.png"); opacity:1; }
|
||||
|
||||
.niaslide a img {
|
||||
width: 542px;
|
||||
box-shadow: 1px 2px 16px rgba(28, 180, 236, 0.4);
|
||||
margin-left: 4em;
|
||||
margin-top: -1em;
|
||||
}
|
||||
|
||||
.codeslide1 { float:left; width:680px; font:10pt monospace; }
|
||||
.codeslide1 > div:first-child { margin:0 40px 0 0; }
|
||||
.codeslide1 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); }
|
||||
.codeslide1 .desc { margin:0 0 5px 0; color:rgba(162,198,223,.78); font:13pt "arial"; }
|
||||
|
||||
.codeslide2 > div { float:left; width:320px; font:10pt monospace; }
|
||||
.codeslide2 > div:first-child { margin:0 40px 0 0; }
|
||||
.codeslide2 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); }
|
||||
|
||||
.codeslide3 > div { float:left; width:320px; font:10pt monospace; }
|
||||
.codeslide3 > div:first-child { margin:0 40px 0 0; }
|
||||
.codeslide3 h2 { margin:0 0 5px 0; color:rgba(162,198,223,.78); }
|
||||
|
||||
.codeslide3 .desc { margin:0 0 5px 0; color:rgba(162,198,223,.78); font:13pt "arial"; }
|
||||
|
||||
/* back when slide1 was the quote:
|
||||
#slide1 { margin-top:50px; }
|
||||
#slide1 > p {
|
||||
padding:40px 20px 0 20px;
|
||||
font-style:italic;
|
||||
color:rgba(162,198,223,.78);
|
||||
letter-spacing:1px;
|
||||
line-height:25pt;
|
||||
background:url("images/quotes.png") top left no-repeat; }
|
||||
#slide1 > div {
|
||||
float:right;
|
||||
margin-right:40px;
|
||||
font-style:italic;
|
||||
font-weight:bold;
|
||||
color:rgba(93,155,199,.44); }
|
||||
*/
|
||||
#sidebar {
|
||||
z-index:2;
|
||||
position:absolute;
|
||||
top:5px; right:0;
|
||||
width:275px;
|
||||
height:726px;
|
||||
padding:210px 0 0 0;
|
||||
background:url("images/sidebar.png") no-repeat; }
|
||||
#sidebar > h3 { margin:0 30px 0 30px; color:rgba(255,255,255,.5); }
|
||||
#sidebar > h3.blue { color:rgba(28,180,236,.5); }
|
||||
#sidebar-links,
|
||||
#sidebar-news {
|
||||
margin:10px 30px 50px 30px;
|
||||
padding:10px 0;
|
||||
background:rgba(0,0,0,.6); }
|
||||
#sidebar-links { box-shadow:1px 2px 12px rgba(255,255,255,.4); }
|
||||
#sidebar-news { box-shadow:1px 2px 12px rgba(28,180,236,.6); }
|
||||
#sidebar-links > a {
|
||||
display:block;
|
||||
margin-left:15px;
|
||||
padding:12px 20px 12px 45px;
|
||||
font-weight:bold;
|
||||
text-decoration:none;
|
||||
letter-spacing:1px;
|
||||
color:rgba(255,255,255,.4);
|
||||
transition:
|
||||
color 0.1s ease-in-out,
|
||||
text-shadow 0.2s ease-in-out; }
|
||||
#sidebar-news > a { transition: color 0.3s ease-in-out; }
|
||||
#sidebar-news > a > h4 { transition: color 0.1s ease-in-out, text-shadow 0.2s ease-in-out; }
|
||||
#sidebar-links > a:hover { color:#fff; text-shadow:0 0 6px #fff; }
|
||||
#sidebar-news > a { display:block; padding:15px; color:rgba(255,255,255,.4); text-decoration:none; }
|
||||
#sidebar-news > a > h4 { margin:0 0 5px 0; color:rgba(28,180,236,.5); }
|
||||
#sidebar-news > a:hover > h4 { margin:0 0 5px 0; color:rgba(28,180,236,.8); text-shadow:0 0 6px rgba(28,180,236,.6); }
|
||||
#sidebar-news > a:hover { color:rgba(255,255,255,1); }
|
||||
#sidebar-news > a.blue { color:rgba(28,180,236,.5); font-weight:bold; }
|
||||
#sidebar-news > a.blue:hover { color:#fff; }
|
||||
|
||||
#link_forum { background:url("images/more-links_forum.png") no-repeat left center; }
|
||||
#link_github { background:url("images/more-links_github.png") no-repeat left center; }
|
||||
#link_editors { background:url("images/more-links_editors.png") no-repeat left center; }
|
||||
#link_aporia { background:url("images/more-links_editors.png") no-repeat left center; }
|
||||
#link_nimbuild { background:url("images/more-links_nimbuild.png") no-repeat left center; }
|
||||
|
||||
#overview-bg {
|
||||
position:fixed;
|
||||
top:0;
|
||||
bottom:0;
|
||||
left:0;
|
||||
width:280px;
|
||||
background:rgba(0,0,0,0.25); }
|
||||
#overview {
|
||||
z-index:3;
|
||||
position:fixed;
|
||||
overflow:auto;
|
||||
top:115px;
|
||||
bottom:20px;
|
||||
left:20px;
|
||||
width:245px; }
|
||||
#overview::-webkit-scrollbar { width:5px; }
|
||||
#overview::-webkit-scrollbar-track { border-radius:2px; background:rgba(255,255,255,.03); }
|
||||
#overview::-webkit-scrollbar-thumb { border-radius:2px; background:rgba(28,179,236,.5); }
|
||||
#overview > div { overflow:auto; margin-bottom:40px; }
|
||||
#overview a {
|
||||
display:block;
|
||||
padding:0 10px;
|
||||
margin:2px 5px 2px 0;
|
||||
color:rgba(255,255,255,.6);
|
||||
background:rgba(255,255,255,0.03);
|
||||
border-radius:2px;
|
||||
letter-spacing:1px;
|
||||
text-decoration:none; }
|
||||
#overview a:hover { color:#fff; background:rgba(255,255,255,0.05); }
|
||||
#overview > .types a { border-left:2px solid rgba(28,179,236,.4); }
|
||||
#overview > .procs a { border-left:2px solid rgba(255,223,53,.4); }
|
||||
#overview > .iters a { border-left:2px solid rgba(255,134,53,.4); }
|
||||
#overview > div > h4 {
|
||||
margin:0 5px 10px 0;
|
||||
padding:5px 10px;
|
||||
letter-spacing:1px;
|
||||
color:#fff;
|
||||
border-left:2px solid #fff;
|
||||
border-radius:2px;
|
||||
background:rgba(255,255,255,0.1); }
|
||||
#overview > .types h4 { color:#1cb3ec; border-color:#1cb3ec; }
|
||||
#overview > .procs h4 { color:#ffdf35; border-color:#ffdf35; }
|
||||
#overview > .iters h4 { color:#ff8635; border-color:#ff8635; }
|
||||
#overview h5 {
|
||||
color:rgba(28,179,236,.6);
|
||||
margin:10px 0 5px 0;
|
||||
padding:5px 5px;
|
||||
letter-spacing:1px; }
|
||||
|
||||
#body { z-index:1; position:relative; background:rgba(220,231,248,0.8); }
|
||||
#body.docs { margin:0 40px 20px 320px; }
|
||||
#body.forum { margin:0 40px 20px 40px; }
|
||||
|
||||
#body-border {
|
||||
position:absolute;
|
||||
top:-25px;
|
||||
left:0;
|
||||
right:0;
|
||||
height:35px;
|
||||
background:rgba(0,0,0,.25); }
|
||||
|
||||
#body-border-left {
|
||||
position:absolute;
|
||||
left:-25px;
|
||||
top:-25px;
|
||||
bottom:-25px;
|
||||
width:35px;
|
||||
background:rgba(0,0,0,.25); }
|
||||
|
||||
#body-border-right {
|
||||
position:absolute;
|
||||
right:-25px;
|
||||
top:-25px;
|
||||
bottom:-25px;
|
||||
width:35px;
|
||||
background:rgba(0,0,0,.25); }
|
||||
|
||||
#body-border-bottom {
|
||||
position:absolute;
|
||||
left:10px;
|
||||
right:10px;
|
||||
bottom:-25px;
|
||||
height:35px;
|
||||
background:rgba(0,0,0,.25); }
|
||||
|
||||
#body.docs #body-border,
|
||||
#body.forum #body-border { left:10px; right:10px; }
|
||||
|
||||
#glow-line {
|
||||
position:absolute;
|
||||
top:-27px;
|
||||
left:100px;
|
||||
right:-25px;
|
||||
height:3px;
|
||||
background:url("images/glow-line.png") no-repeat left; }
|
||||
#glow-line-bottom {
|
||||
position:absolute;
|
||||
bottom:-27px;
|
||||
left:-25px;
|
||||
right:100px;
|
||||
height:3px;
|
||||
background:url("images/glow-line2.png") no-repeat right; }
|
||||
|
||||
#content { padding:40px 0; line-height:150%; }
|
||||
#content.page { width:680px; min-height:1220px; padding-left:20px; }
|
||||
#content h1 { font-size:20pt; letter-spacing:1px; color:rgba(0,0,0,.75); }
|
||||
#content h2 { font-size:16pt; letter-spacing:1px; color:rgba(0,0,0,.7); margin-top:40px; }
|
||||
#content p { text-align:justify; }
|
||||
#content a { color:#0E65D1; text-decoration:none; }
|
||||
#content a:hover { text-decoration:underline; }
|
||||
#content ul { padding-left:20px; }
|
||||
#content li { margin-bottom:10px; text-align:justify; }
|
||||
|
||||
#body.docs #content > div { margin-top:40px; padding-top:40px; border-top:1px dashed rgba(0,0,0,.25); }
|
||||
#body.docs #content > div:first-child { margin-top:0; padding-top:0; border:none; }
|
||||
#body.docs #content > div > h3 {
|
||||
color:#fff;
|
||||
margin:0 0 10px 0;
|
||||
padding:10px 20px;
|
||||
letter-spacing:1px;
|
||||
border-left:8px solid #fff;
|
||||
border-radius:3px;
|
||||
background:rgba(0,0,0,.7);
|
||||
box-shadow:1px 3px 12px rgba(0,0,0,.4); }
|
||||
#body.docs #content > #types-wrap > h3 { color:#1cb3ec; border-color:#1cb3ec; }
|
||||
#body.docs #content > #procs-wrap > h3 { color:#ffdf35; border-color:#ffdf35; }
|
||||
#body.docs #content > #iters-wrap > h3 { color:#ff8635; border-color:#ff8635; }
|
||||
#body.docs #content > div > div > div {
|
||||
overflow:auto;
|
||||
margin:10px 0;
|
||||
border-left:8px solid #fff;
|
||||
border-radius:3px;
|
||||
background:rgba(0,0,0,.1); }
|
||||
#body.docs #content > #types-wrap > div > div { border-color:rgba(28,179,236,.5); }
|
||||
#body.docs #content > #procs-wrap > div > div { border-color:rgba(255,223,53,.5); }
|
||||
#body.docs #content > #iters-wrap > div > div { border-color:rgba(255,134,53,.5); }
|
||||
#body.docs #content > #procs-wrap > div > div.overload-head { margin-bottom:0; }
|
||||
#body.docs #content > #procs-wrap > div > div.overload-tail { margin-top:0; border-top:1px dashed rgba(255,223,53,.5); }
|
||||
#body.docs #content > #procs-wrap > div > div.overload { margin-top:0; margin-bottom:0; border-top:1px dashed rgba(255,223,53,.5); }
|
||||
#body.docs #content > #iters-wrap > div > div.overload-head { margin-bottom:0; }
|
||||
#body.docs #content > #iters-wrap > div > div.overload-tail { margin-top:0; border-top:1px dashed rgba(255,134,53,.5); }
|
||||
#body.docs #content > #iters-wrap > div > div.overload { margin-top:0; margin-bottom:0; border-top:1px dashed rgba(255,134,53,.5); }
|
||||
#body.docs #content > div > div > p { margin:20px 10px 10px 10px; }
|
||||
|
||||
#body.docs #content > div > div > div > div { float:left; }
|
||||
#body.docs #content > div > div > div > div.head { width:60%; }
|
||||
#body.docs #content > div > div > div > div.data { width:40%; }
|
||||
|
||||
#body.docs #content > h1 > .symbol {
|
||||
padding:0 8px;
|
||||
border-radius:5px;
|
||||
background:rgba(206,218,233,.4); }
|
||||
|
||||
#body.docs #content > div > div > div > div.head > .sign {
|
||||
margin:0 10px 5px 10px;
|
||||
padding:10px 10px 0 10px;
|
||||
font-weight:bold;
|
||||
border-bottom:1px dashed rgba(0,0,0,.25); }
|
||||
#body.docs #content > div > div > div > div.head > .desc {
|
||||
padding:0 20px 10px 20px;
|
||||
color:rgba(0,0,0,.75); }
|
||||
#body.docs #content > div > #types > div > div.head > .sign > .symbol {
|
||||
padding:0 5px;
|
||||
border-radius:3px;
|
||||
background:rgba(28,179,236,.4); }
|
||||
#body.docs #content > div > #procs > div > div.head > .sign > .symbol {
|
||||
padding:0 5px;
|
||||
border-radius:3px;
|
||||
background:rgba(255,223,53,.3); }
|
||||
#body.docs #content > div > #iters > div > div.head > .sign > .symbol {
|
||||
padding:0 5px;
|
||||
border-radius:3px;
|
||||
background:rgba(255,134,53,.3); }
|
||||
|
||||
#body.docs #content > div > div > div > div.data > div {
|
||||
margin:0 20px 5px 10px;
|
||||
padding:10px 0 0 10px;
|
||||
font-style:italic;
|
||||
color:rgba(0,0,0,.6);
|
||||
border-bottom:1px dashed rgba(0,0,0,.25); }
|
||||
#body.docs #content > div > div > div > div.data > ul { margin:0; padding:0 10px; }
|
||||
#body.docs #content > div > div > div > div.data > ul:last-child { margin-bottom:5px; padding-bottom:10px; }
|
||||
#body.docs #content > div > div > div > div.data > ul .symbol { padding:0 5px; border-radius:3px; background:rgba(23,192,23,.25); }
|
||||
#body.docs #content > div > div > div > div.data > ul.pragmas .symbol { background:rgba(106,50,145,.25); }
|
||||
#body.docs #content > div > div > div > div.data > ul > li { margin:0; padding:0 10px; list-style:none; }
|
||||
|
||||
#body.docs #content pre {
|
||||
overflow:auto;
|
||||
margin:10px 0;
|
||||
padding:15px 10px;
|
||||
font-size:10pt;
|
||||
font-style:normal;
|
||||
line-height:14pt;
|
||||
background:rgba(0,0,0,.75);
|
||||
border-left:8px solid rgba(0,0,0,.3); }
|
||||
|
||||
#docs-sort { float:right; font-size:75%; }
|
||||
#docs-sort > a {
|
||||
cursor:default;
|
||||
margin:0 0 0 10px;
|
||||
padding:2px 10px;
|
||||
border-radius:5px;
|
||||
color:rgba(0,0,0,.25);
|
||||
background:rgba(0,0,0,.1);
|
||||
box-shadow:inset 0 1px 8px rgba(0,0,0,.4); }
|
||||
#docs-sort > a:hover,
|
||||
#docs-sort > a.active { color:#000; background:rgba(0,0,0,.2); }
|
||||
|
||||
#talk-heads { overflow:auto; margin:0 8px 0 8px; }
|
||||
#talk-heads > div { float:left; font-size:120%; font-weight:bold; }
|
||||
#talk-heads > .topic { width:55%; }
|
||||
#talk-heads > .detail { width:15%; }
|
||||
#talk-heads > .author { width:15%; }
|
||||
#talk-heads > .reply { width:15%; }
|
||||
#talk-heads > div > div { margin:0 10px 10px 10px; padding:0 10px 10px 10px; border-bottom:1px dashed rgba(0,0,0,0.4); }
|
||||
#talk-heads > .topic > div { margin-left:0; }
|
||||
#talk-heads > .author > div { margin-right:0; }
|
||||
|
||||
#talk-thread > div,
|
||||
#talk-threads > div {
|
||||
position:relative;
|
||||
margin:5px 0;
|
||||
overflow:auto;
|
||||
border-radius:3px;
|
||||
border:8px solid rgba(0,0,0,.8);
|
||||
border-top:none;
|
||||
border-bottom:none;
|
||||
background:rgba(0,0,0,0.1); }
|
||||
#talk-thread > div:nth-child(odd) { background:rgba(255,255,255,0.1); }
|
||||
#talk-threads > div:nth-child(odd) { background:rgba(0,0,0,0.2); }
|
||||
#talk-thread > div > div,
|
||||
#talk-threads > div > div { float:left; }
|
||||
#talk-thread > div > div > div,
|
||||
#talk-threads > div > div > div { margin:10px 20px; }
|
||||
#talk-threads > div > .topic { width:55%; }
|
||||
#talk-threads > div > .reply { width:15%; overflow:hidden; }
|
||||
#talk-threads > div > .detail { width:15%; overflow:hidden; }
|
||||
#talk-thread > div > .author,
|
||||
#talk-threads > div > .author {
|
||||
position:absolute;
|
||||
right:0;
|
||||
top:0;
|
||||
bottom:0;
|
||||
width:15%;
|
||||
overflow:hidden;
|
||||
background:rgba(0,0,0,0.8); }
|
||||
#talk-thread > div > .author a,
|
||||
#talk-threads > div > .author a { color:#1cb3ec !important; }
|
||||
#talk-thread > div > .author a:hover,
|
||||
#talk-threads > div > .author a:hover { color:#fff !important; }
|
||||
#talk-threads > div > .topic .pages { float:right; }
|
||||
#talk-threads > div > .topic > div > a { font-weight:bold; }
|
||||
#talk-threads > div > .detail > div { float:left; margin:0; }
|
||||
#talk-threads > div > .detail > div > div { margin-left:20px; padding:10px 10px 10px 22px; }
|
||||
#talk-threads > div > .detail > div { width:50%; }
|
||||
#talk-threads > div > .detail > div:first-child > div { background:url("images/forum-views.png") no-repeat left; }
|
||||
#talk-threads > div > .detail > div:last-child > div { background:url("images/forum-posts.png") no-repeat left; }
|
||||
|
||||
#talk-thread > div { margin:20px 0; min-height:150px; box-shadow:1px 3px 12px rgba(0,0,0,.4) }
|
||||
#talk-thread > div > .author > div > .avatar { margin-top:20px; }
|
||||
#talk-thread > div > .author > div > .avatar > img { box-shadow:0 0 12px #1cb3ec; }
|
||||
#talk-thread > div > .author > div > .name { }
|
||||
#talk-thread > div > .topic { width:85%; padding-bottom:10px; }
|
||||
#talk-thread > div > .topic pre {
|
||||
overflow:auto;
|
||||
margin:0;
|
||||
padding:15px 10px;
|
||||
font-size:10pt;
|
||||
font-style:normal;
|
||||
line-height:14pt;
|
||||
background:rgba(0,0,0,.75);
|
||||
border-left:8px solid rgba(0,0,0,.3); }
|
||||
|
||||
#talk-head,
|
||||
#talk-info {
|
||||
overflow:auto;
|
||||
border-radius:3px;
|
||||
border:8px solid rgba(0,0,0,.2);
|
||||
border-top:none;
|
||||
border-bottom:none;
|
||||
background:rgba(0,0,0,0.1); }
|
||||
#talk-head { margin-bottom:20px; }
|
||||
#talk-info { margin-top:20px; }
|
||||
#talk-head > div,
|
||||
#talk-info > div { float:left; }
|
||||
#talk-head > .info,
|
||||
#talk-info > .info { width:85%; }
|
||||
#talk-head > .user,
|
||||
#talk-info > .user { width:15%; background:rgba(0,0,0,.2); }
|
||||
#talk-info > .user > div > .reply { font-weight:bold; padding-left:22px; background:url("images/forum-reply.png") no-repeat left; }
|
||||
#talk-head > div > div,
|
||||
#talk-info > div > div { padding:5px 20px; }
|
||||
#talk-head > .detail > div { float:left; margin:0; }
|
||||
#talk-head > .detail > div > div { padding-left:22px; }
|
||||
#talk-head > .detail > div:first-child > div { background:url("images/forum-views.png") no-repeat left; }
|
||||
#talk-head > .detail > div:last-child > div { background:url("images/forum-posts.png") no-repeat left; }
|
||||
|
||||
#talk-nav { margin:20px 8px 0 8px; padding-top:10px; border-top:1px dashed rgba(0,0,0,0.4); text-align:center; }
|
||||
#talk-nav > a.active { text-decoration:underline !important; }
|
||||
|
||||
.standout {
|
||||
padding:5px 30px;
|
||||
margin-bottom:20px;
|
||||
border:8px solid rgba(0,0,0,.8);
|
||||
border-right-width:0;
|
||||
border-top-width:0;
|
||||
border-bottom-width:0;
|
||||
border-radius:3px;
|
||||
background:rgba(0,0,0,0.1); }
|
||||
.standout h2 { margin-bottom:10px; padding-bottom:10px; border-bottom:1px dashed rgba(0,0,0,.8); }
|
||||
.standout li { margin:0 !important; padding-top:10px; border-top:1px dashed rgba(0,0,0,.2); }
|
||||
.standout ul { padding-bottom:5px; }
|
||||
.standout .tools ul { list-style:url("images/docs-tools.png"); }
|
||||
.standout .libraries ul { list-style:url("images/docs-libraries.png"); }
|
||||
.standout .internals ul { list-style:url("images/docs-internals.png"); }
|
||||
.standout .tutorials ul { list-style:url("images/docs-tutorials.png"); }
|
||||
.standout .examples ul { list-style:url("images/docs-examples.png"); }
|
||||
.standout .articles ul { list-style:url("images/docs-articles.png"); }
|
||||
.standout li:first-child { padding-top:0; border-top:none; }
|
||||
.standout li p { margin:0 0 10px 0 !important; line-height:130%; }
|
||||
.standout li p > a { font-weight:bold; }
|
||||
|
||||
.forum-user-info,
|
||||
.forum-user-info * { cursor:help }
|
||||
|
||||
#foot { height:150px; position:relative; top:-10px; letter-spacing:1px; }
|
||||
#foot.home { background:url("images/foot.png") repeat-x top; height:200px; }
|
||||
#foot.docs { margin-left:320px; margin-right:40px; }
|
||||
#foot.forum { margin-left:40px; margin-right:40px; }
|
||||
#foot > div { position:relative; }
|
||||
#foot.home > div { width:960px; }
|
||||
#foot h4 { font-size:11pt; color:rgba(255,255,255,.4); margin:40px 0 6px 0; }
|
||||
#foot a:hover { color:#fff; }
|
||||
|
||||
#foot-links { float:left; }
|
||||
#foot-links > div { float:left; padding:0 40px 0 0; line-height:120%; }
|
||||
#foot-links a { display:block; font-size:10pt; color:rgba(255,255,255,.3); text-decoration:none; }
|
||||
#foot-legal { float:right; font-size:10pt; color:rgba(255,255,255,.3); line-height:150%; text-align:right; }
|
||||
#foot-legal a { color:inherit; text-decoration:none; }
|
||||
#foot-legal > h4 > a { color:inherit; }
|
||||
|
||||
|
||||
#body .docutils th {
|
||||
border-bottom: 2px solid #1A1A1A;
|
||||
font-weight: normal;
|
||||
padding: 8px; }
|
||||
#body table.docutils {
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
border-spacing: 0px; }
|
||||
|
||||
#bountysource {
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
background-color: #19975d;
|
||||
}
|
||||
|
||||
#bountysource a, #bountysource a:visited, #bountysource a:hover {
|
||||
color: #1a1a1a;
|
||||
}
|
||||
|
||||
/* Current sponsors page */
|
||||
|
||||
dt {
|
||||
font-size: 20pt;
|
||||
clear: both;
|
||||
margin-bottom: 10pt;
|
||||
}
|
||||
|
||||
dd.logo {
|
||||
width: 200px;
|
||||
min-height: 50px;
|
||||
margin-bottom: 10pt;
|
||||
margin-right: 20pt;
|
||||
float: left;
|
||||
}
|
||||
|
||||
dd.logo img {
|
||||
max-height: 200px;
|
||||
}
|
||||
|
||||
dd.this_month {
|
||||
font-size: 20pt;
|
||||
}
|
||||
|
||||
dt a, dt a:visited, dt a:hover {
|
||||
color: #1d1d1d !important;
|
||||
}
|
||||
|
||||
dt.level-1 {
|
||||
color: #2f2f2f !important;
|
||||
}
|
||||
|
||||
p.lastUpdate {
|
||||
font-size: 12pt;
|
||||
color: #6d6d6d;
|
||||
}
|
||||
|
||||
/* quotes */
|
||||
|
||||
blockquote {
|
||||
padding: 0px 8px;
|
||||
margin: 10px 0px;
|
||||
border-left: 2px solid rgb(61, 61, 61);
|
||||
color: rgb(109, 109, 109);
|
||||
}
|
||||
|
||||
/* News articles */
|
||||
|
||||
.metadata {
|
||||
font-size: 12pt;
|
||||
margin-bottom: 20pt;
|
||||
margin-top: -16pt;
|
||||
color: #4f4f4f;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 228 KiB |
@@ -1,150 +0,0 @@
|
||||
Nim's Community
|
||||
===============
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Forum
|
||||
-----
|
||||
|
||||
The `Nim forum <https://forum.nim-lang.org/>`_ is the place where most
|
||||
discussions related to the language happen. It not only includes discussions
|
||||
relating to the design of Nim but also allows for beginners to ask questions
|
||||
relating to Nim.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Mailing list
|
||||
------------
|
||||
|
||||
The mailing list can be found here: http://www.freelists.org/list/nim-dev
|
||||
There is no consensus yet about what is discussed via the forum as opposed
|
||||
to the mailing list. Join whatever you like!
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
IRC
|
||||
----
|
||||
|
||||
Many Nim developers are a part of the
|
||||
`#nim IRC channel <http://webchat.freenode.net/?channels=nim>`_ on
|
||||
Freenode. That is the place where the rest of the discussion relating to Nim
|
||||
occurs. Be sure to join us there if you wish to discuss Nim in real-time.
|
||||
IRC is the perfect place for people just starting to learn Nim and we
|
||||
welcome any questions that you may have!
|
||||
|
||||
You may also be interested in reading the
|
||||
`IRC logs <https://irclogs.nim-lang.org/>`_ which are an archive of all
|
||||
of the previous discussions that took place in the IRC channel.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
GitHub
|
||||
------
|
||||
|
||||
Nim's `source code <http://github.com/nim-lang/Nim>`_ is hosted on GitHub.
|
||||
Together with the `wiki <http://github.com/nim-lang/Nim/wiki>`_ and
|
||||
`issue tracker <http://github.com/nim-lang/Nim/issues>`_.
|
||||
|
||||
GitHub also hosts other projects relating to Nim. These projects are a part
|
||||
of the `nim-lang organisation <http://github.com/nim-lang>`_.
|
||||
This includes the `Nimble package manager <https://github.com/nim-lang/nimble>`_
|
||||
and its `package repository <http://github.com/nim-lang/packages>`_.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Twitter
|
||||
-------
|
||||
|
||||
Follow us `@nim_lang <http://twitter.com/nim_lang>`_ for latest news about
|
||||
Nim.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Reddit
|
||||
------
|
||||
|
||||
Subscribe to `/r/nim <http://reddit.com/r/nim>`_ for latest news about
|
||||
Nim.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
StackOverflow
|
||||
-------------
|
||||
|
||||
When asking a question relating to Nim, be sure to use the
|
||||
`Nim <http://stackoverflow.com/questions/tagged/nim>`_ tag in your
|
||||
question.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Google+
|
||||
-------
|
||||
|
||||
The `G+ Nim community <https://plus.google.com/u/0/communities/106921341535068810587>`_ is another place where discussions related to the language happen. Read and follow various articles, posts and interesting links about Nim.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Gitter
|
||||
------
|
||||
|
||||
The `Gitter Chatroom for Nim <https://gitter.im/nim-lang/Nim>`_ is the persistent logged "natural" chatroom for GitHub repositories and very easy to access for GitHub users. This does not need additional software and can send notifications about messages by email.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Meetup
|
||||
------
|
||||
|
||||
The `Nim BR Meetup <http://www.meetup.com/pt-BR/nim-br>`_ is a brazilian user group about Nim where they are having discussions, talks or workshops about Nim programming language.
|
||||
|
||||
.. container:: standout
|
||||
|
||||
How to help
|
||||
-----------
|
||||
|
||||
There are always many things to be done in the main
|
||||
`Nim repository <https://github.com/nim-lang/Nim>`_, check out the
|
||||
`issues <https://github.com/nim-lang/Nim/issues>`_ for
|
||||
things to do; pull requests are always welcome. You can
|
||||
also contribute to the many other projects hosted by the
|
||||
`nim-lang <https://github.com/nim-lang>`_ organisation on github. If you
|
||||
can't find anything you fancy doing, you can always ask for inspiration on IRC
|
||||
(irc.freenode.net #nim) or on the `Nim forums <http://forum.nim-lang.org>`_.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Donations
|
||||
---------
|
||||
|
||||
If you love what we do and are feeling generous then you can always donate.
|
||||
Contributions of any quantity are greatly appreciated and will contribute to
|
||||
making Nim even better!
|
||||
|
||||
Gittip
|
||||
.. raw:: html
|
||||
|
||||
<img src="http://img.shields.io/gratipay/nim.svg">
|
||||
|
||||
BountySource
|
||||
|
||||
.. raw:: html
|
||||
|
||||
<img src="https://img.shields.io/bountysource/team/mozilla-core/activity.svg">
|
||||
|
||||
Paypal
|
||||
.. raw:: html
|
||||
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
|
||||
<input type="hidden" name="cmd" value="_s-xclick">
|
||||
<input type="hidden" name="hosted_button_id" value="C6PBFRF4WDR2E">
|
||||
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
|
||||
<img alt="" border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" width="1" height="1">
|
||||
</form>
|
||||
|
||||
|
||||
Bitcoin
|
||||
Bitcoin address: 1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ
|
||||
@@ -1,70 +0,0 @@
|
||||
Nim's Documentation
|
||||
===================
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Search Options
|
||||
--------------
|
||||
|
||||
.. container:: internals
|
||||
|
||||
`Documentation Index <docs/theindex.html>`_ - The generated
|
||||
index. **Index + (Ctrl+F) == Joy**
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Standards & Guides
|
||||
------------------
|
||||
|
||||
.. container:: libraries
|
||||
|
||||
- | `Standard Library <docs/lib.html>`_
|
||||
| This document describes Nim's standard library.
|
||||
|
||||
- | `Language Manual <docs/manual.html>`_
|
||||
| The Nim manual is a draft that will evolve into a proper specification.
|
||||
|
||||
- | `Nim Style Guide <docs/nep1.html>`_
|
||||
| The stylistic conventions that Nim's official projects adhere to.
|
||||
|
||||
- | `Compiler User Guide <docs/nimc.html>`_
|
||||
| The user guide lists command line arguments, special features of the
|
||||
compiler, etc.
|
||||
|
||||
- | `NimScript <docs/nims.html>`_
|
||||
| NimScript is the upcoming new way to configure Nim.
|
||||
|
||||
- | `Nim Backend Integration <docs/backends.html>`_
|
||||
| The Backend Integeration guide gives further information of how Nim can
|
||||
interact with C, C++, Objective C and JavaScript.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Tools & Features
|
||||
----------------
|
||||
|
||||
.. container:: tools
|
||||
|
||||
- | `Source Code Filters <docs/filters.html>`_
|
||||
| The Nim compiler supports source code filters as a simple yet powerful
|
||||
builtin templating system.
|
||||
|
||||
- | `Tools Documentation <docs/tools.html>`_
|
||||
| Description of some tools that come with the standard distribution.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Internal Details
|
||||
----------------
|
||||
|
||||
.. container:: internals
|
||||
|
||||
- | `Garbage Collector <docs/gc.html>`_
|
||||
| Additional documentation about Nim's GC and how to operate it in a
|
||||
realtime setting.
|
||||
|
||||
- | `Internal Documentation <docs/intern.html>`_
|
||||
| The internal documentation describes how the compiler is implemented.
|
||||
Read this if you want to hack the compiler.
|
||||
115
web/download.rst
@@ -1,115 +0,0 @@
|
||||
Download the compiler
|
||||
=====================
|
||||
|
||||
You can download the latest version of the Nim compiler here.
|
||||
|
||||
Windows
|
||||
-------
|
||||
|
||||
Zips
|
||||
%%%%
|
||||
|
||||
Since the website moved to https, only installation via the provided zipfiles
|
||||
is supported:
|
||||
|
||||
* | 32 bit: `nim-0.16.0_x32.zip <download/nim-0.16.0_x32.zip>`_
|
||||
| SHA-256 69af94a6875a02543c1bf0fa03c665f126f8500a2c0e226c32571e64c6842e57
|
||||
* | 64 bit: `nim-0.16.0_x64.zip <download/nim-0.16.0_x64.zip>`_
|
||||
| SHA-256 e667cdad1ae8e9429147aea5031fa8a80c4ccef6d274cec0e9480252d9c3168c
|
||||
|
||||
Unzip these where you want and **optionally** run ``finish.exe`` to
|
||||
detect your MingW environment. (Though that's not reliable yet.)
|
||||
|
||||
You can find the required DLLs here, if you lack them for some reason:
|
||||
|
||||
* | 32 and 64 bit: `DLLs.zip <download/dlls.zip>`_
|
||||
| SHA-256 198112d3d6dc74d7964ba452158d44bfa57adef4dc47be8c39903f2a24e4a555
|
||||
|
||||
|
||||
These versions of mingw are known to work:
|
||||
|
||||
* | 32 bit: `mingw32-6.3.0 <download/mingw32-6.3.0.7z>`_
|
||||
| SHA-256 1239a56d4c42e146b2cb25dc4d0871bd83f569d0a51a9198e84d010e0a75745a
|
||||
* | 64 bit: `mingw64-6.3.0 <download/mingw64-6.3.0.7z>`_
|
||||
| SHA-256 9a23d12d96a10e67093c1f2042275c6a7d29da9e2ead573d0f24f4a6d53761a1
|
||||
|
||||
|
||||
|
||||
Installation based on generated C code
|
||||
--------------------------------------
|
||||
|
||||
**Note:** The Nim compiler requires a C compiler to compile software. On
|
||||
Windows we recommend that you use
|
||||
`Mingw-w64 <http://mingw-w64.sourceforge.net/>`_. GCC is recommended on Linux
|
||||
and Clang on Mac. The Windows installers above already includes a C compiler.
|
||||
|
||||
This installation method is the preferred way for Linux, Mac OS X, and other Unix
|
||||
like systems.
|
||||
|
||||
Firstly, download this archive:
|
||||
|
||||
* | `nim-0.16.0.tar.xz (2.9MB) <download/nim-0.16.0.tar.xz>`_
|
||||
| SHA-256 9e199823be47cba55e62dd6982f02cf0aad732f369799fec42a4d8c2265c5167
|
||||
|
||||
Extract the archive. Then copy the extracted files into your chosen installation
|
||||
directory, ideally somewhere in your home directory.
|
||||
For example: ``~/programs/nim``.
|
||||
|
||||
Now open a terminal and follow these instructions:
|
||||
|
||||
* ``cd`` into your installation directory, for example by executing
|
||||
``cd ~/programs/nim``.
|
||||
* run ``sh build.sh``.
|
||||
* Add ``$your_install_dir/bin`` to your PATH.
|
||||
* To build associated tools like ``nimble`` and ``nimsuggest`` run ``nim c koch && ./koch tools``.
|
||||
|
||||
After restarting your terminal, you should be able to run ``nim -v``
|
||||
which should show you the version of Nim you just installed.
|
||||
|
||||
There are other ways to install Nim (like using the ``install.sh`` script),
|
||||
but these tend to cause more problems.
|
||||
|
||||
|
||||
Bleeding edge installation from GitHub
|
||||
--------------------------------------
|
||||
|
||||
`GitHub <http://github.com/nim-lang/nim>`_ is where Nim's development takes
|
||||
place. You may wish to grab the latest development version of Nim, because
|
||||
sometimes bug fixes and new features may not have made it to an official
|
||||
release yet. In those circumstances you are better off grabbing the
|
||||
current development branch.
|
||||
|
||||
You will also need to do this if you would like to contribute to Nim.
|
||||
|
||||
Before you download the code, open a new terminal and ``cd`` into the
|
||||
directory where you would like the download to take place.
|
||||
|
||||
The following commands can be used to download the current development branch
|
||||
and then to build it::
|
||||
|
||||
git clone https://github.com/nim-lang/Nim.git
|
||||
cd Nim
|
||||
git clone --depth 1 https://github.com/nim-lang/csources
|
||||
cd csources && sh build.sh
|
||||
cd ..
|
||||
bin/nim c koch
|
||||
./koch boot -d:release
|
||||
|
||||
You should then add the ``./bin`` (make sure to expand this into an
|
||||
absolute path) directory to your ``PATH``.
|
||||
|
||||
|
||||
Docker Hub
|
||||
----------
|
||||
|
||||
The `official Docker images <https://hub.docker.com/r/nimlang/nim/>`_
|
||||
are published on Docker Hub and include the compiler and Nimble. There are images
|
||||
for standalone scripts as well as Nimble packages.
|
||||
|
||||
Get the latest stable image::
|
||||
|
||||
docker pull nimlang/nim
|
||||
|
||||
The latest development version::
|
||||
|
||||
docker pull nimlang/nim:devel
|
||||
@@ -1,57 +0,0 @@
|
||||
logo, name, url, this_month, all_time, since, level
|
||||
,bogen,,0,1010,"Jul 23, 2016",1
|
||||
,mikra,,0,400,"Apr 28, 2016",1
|
||||
,shkolnick-kun,,0,375,"Jul 6, 2016",1
|
||||
,"Chris Heller",,0,350,"May 19, 2016",1
|
||||
,linkmonitor,,0,280,"Jan 28, 2016",1
|
||||
,avsej,,0,110,"Jun 10, 2016",1
|
||||
,WilRubin,,0,100,"Aug 11, 2015",1
|
||||
,"Benny Luypaert",,0,100,"Apr 10, 2016",1
|
||||
,PhilipWitte,,0,100,"Aug 5, 2016",1
|
||||
,skunkiferous,,0,100,"Oct 2, 2016",1
|
||||
,"Jonathan Arnett",,0,90,"May 20, 2016",1
|
||||
,Boxifier,,0,75,"Apr 12, 2016",1
|
||||
,iolloyd,,0,75,"Apr 29, 2016",1
|
||||
,btbytes,,0,70,"Apr 6, 2016",1
|
||||
,rb01,,0,50,"May 4, 2016",1
|
||||
,barcharcraz,,0,50,"Jun 2, 2016",1
|
||||
,zachaysan,,0,50,"Jun 7, 2016",1
|
||||
,kunev,,0,50,"Dec 26, 2016",1
|
||||
,iboB,,0,50,"Jan 28, 2017",1
|
||||
,TedSinger,,0,45,"Apr 9, 2016",1
|
||||
,johnnovak,,0,45,"Apr 30, 2016",1
|
||||
,"Matthew Baulch",,0,40,"Jun 7, 2016",1
|
||||
,"Matthew Newton",,0,35,"Apr 20, 2016",1
|
||||
,martinbbjerregaard,,0,35,"Jun 9, 2016",1
|
||||
,RationalG,,0,30,"Jun 17, 2016",1
|
||||
,benbve,,0,30,"Jul 12, 2016",1
|
||||
,multikatt,,0,30,"Nov 2, 2016",1
|
||||
,"Landon Bass",,0,25,"Jun 7, 2016",1
|
||||
,jimrichards,,0,25,"Jun 8, 2016",1
|
||||
,jjzazuet,,0,25,"Jul 10, 2016",1
|
||||
,kteza1,,0,20,"Jun 10, 2016",1
|
||||
,tomkeus,,0,20,"Sep 4, 2016",1
|
||||
,csoriano89,,0,20,"Sep 7, 2016",1
|
||||
,juanjux,,0,20,"Oct 29, 2016",1
|
||||
,zagfai,,0,20,"Nov 3, 2016",1
|
||||
,hellcoderz,,0,20,"Jan 24, 2017",1
|
||||
,mirek,,0,15,"Apr 9, 2016",1
|
||||
,DateinAsia,,0,15,"Jul 30, 2016",1
|
||||
,rickc,,0,15,"Jul 31, 2016",1
|
||||
,jpkx1984,,0,13,"Jul 11, 2016",1
|
||||
,vlkrav,,0,12,"Aug 9, 2015",1
|
||||
,tebanep,,0,12,"Aug 7, 2016",1
|
||||
,McSpiros,,0,10,"Apr 6, 2016",1
|
||||
,"Brandon Hunter",,0,10,"Apr 7, 2016",1
|
||||
,funny-falcon,,0,10,"Apr 7, 2016",1
|
||||
,teroz,,0,10,"Apr 8, 2016",1
|
||||
,iLikeLego,,0,10,"Apr 16, 2016",1
|
||||
,Angluca,,0,10,"May 3, 2016",1
|
||||
,calind,,0,10,"Jun 7, 2016",1
|
||||
,goldenreign,,0,10,"Jun 10, 2016",1
|
||||
,Blumenversand,,0,10,"Jul 21, 2016",1
|
||||
,cinnabardk,,0,10,"Aug 6, 2016",1
|
||||
,reddec,,0,10,"Aug 31, 2016",1
|
||||
,cupen,,0,10,"Nov 21, 2016",1
|
||||
,yay,,0,10,"Jan 25, 2017",1
|
||||
,niv,,0,5,"Apr 6, 2016",1
|
||||
|
@@ -1,89 +0,0 @@
|
||||
====
|
||||
Home
|
||||
====
|
||||
|
||||
Welcome to Nim
|
||||
--------------
|
||||
|
||||
**Nim** is a statically typed, imperative
|
||||
programming language that tries to give the programmer ultimate power without
|
||||
compromises on runtime efficiency. This means it focuses on compile-time
|
||||
mechanisms in all their various forms.
|
||||
|
||||
Beneath a nice infix/indentation based syntax with a
|
||||
powerful (AST based, hygienic) macro system lies a semantic model that supports
|
||||
a soft realtime GC on thread local heaps. Asynchronous message passing is used
|
||||
between threads, so no "stop the world" mechanism is necessary. An unsafe
|
||||
shared memory heap is also provided for the increased efficiency that results
|
||||
from that model.
|
||||
|
||||
|
||||
Nim is efficient
|
||||
================
|
||||
|
||||
* Native code generation (currently via compilation to C), not dependent on a
|
||||
virtual machine: **Nim produces small executables without dependencies
|
||||
for easy redistribution.**
|
||||
* A fast **non-tracing** garbage collector that supports soft
|
||||
real-time systems (like games).
|
||||
* System programming features: Ability to manage your own memory and access the
|
||||
hardware directly. Pointers to garbage collected memory are distinguished
|
||||
from pointers to manually managed memory.
|
||||
* Zero-overhead iterators.
|
||||
* Cross-module inlining.
|
||||
* Dynamic method binding with inlining and without virtual method table.
|
||||
* Compile time evaluation of user-defined functions.
|
||||
* Whole program dead code elimination: Only *used functions* are included in
|
||||
the executable.
|
||||
* Value-based datatypes: For instance, objects and arrays can be allocated on
|
||||
the stack.
|
||||
|
||||
|
||||
Nim is expressive
|
||||
=================
|
||||
|
||||
* **The Nim compiler and all of the standard libraries are implemented in
|
||||
Nim.**
|
||||
* Built-in high level datatypes: strings, sets, sequences, etc.
|
||||
* Modern type system with local type inference, tuples, variants,
|
||||
generics, etc.
|
||||
* User-defineable operators; code with new operators is often easier to read
|
||||
than code which overloads built-in operators. For example, a
|
||||
``=~`` operator is defined in the ``re`` module.
|
||||
* Macros can modify the abstract syntax tree at compile time.
|
||||
|
||||
|
||||
Nim is elegant
|
||||
==============
|
||||
|
||||
* Macros can use the imperative paradigm to construct parse trees. Nim
|
||||
does not require a different coding style for meta programming.
|
||||
* Macros cannot change Nim's syntax because there is no need for it.
|
||||
Nim's syntax is flexible enough.
|
||||
* Statements are grouped by indentation but can span multiple lines.
|
||||
Indentation must not contain tabulators so the compiler always sees
|
||||
the code the same way as you do.
|
||||
|
||||
|
||||
Nim plays nice with others
|
||||
==========================
|
||||
|
||||
* The Nim Compiler runs on Windows, Linux, BSD and Mac OS X.
|
||||
Porting to other platforms is easy.
|
||||
* **The Nim Compiler can also generate C++ or Objective C for easier
|
||||
interfacing.**
|
||||
* There are lots of bindings: for example, bindings to GTK2, the Windows API,
|
||||
the POSIX API, OpenGL, SDL, Cairo, Python, Lua, TCL, X11, libzip, PCRE,
|
||||
libcurl, mySQL and SQLite are included in the standard distribution or
|
||||
can easily be obtained via the
|
||||
`Nimble package manager <https://github.com/nim-lang/nimble>`_.
|
||||
* A C to Nim conversion utility: New bindings to C libraries are easily
|
||||
generated by ``c2nim``.
|
||||
|
||||
|
||||
Roadmap to 1.0
|
||||
==============
|
||||
|
||||
Please have a look at
|
||||
this `wiki page <https://github.com/nim-lang/Nim/wiki/Roadmap>`_ for
|
||||
an up-to-date overview.
|
||||
@@ -1,70 +0,0 @@
|
||||
Learning Nim
|
||||
============
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Tutorials
|
||||
---------
|
||||
|
||||
.. container:: tutorials
|
||||
|
||||
- | `Tutorial (part I) <docs/tut1.html>`_
|
||||
| Learn the basics of Nim's types, variables, procedures, control flow, etc...
|
||||
|
||||
- | `Tutorial (part II) <docs/tut2.html>`_
|
||||
| Learn Nim's more advanced features such as OOP, generics, macros, etc...
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Books
|
||||
---------
|
||||
|
||||
.. container:: books
|
||||
|
||||
- | `Nim in Action <https://manning.com/books/nim-in-action?a_aid=niminaction&a_bid=78a27e81>`_
|
||||
| *Nim in Action* teaches
|
||||
you all you need to know to begin writing powerful, portable
|
||||
and efficient applications in Nim. It includes a handful of practical
|
||||
and fun hands-on examples which teach you Nim.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
||||
.. container:: examples
|
||||
|
||||
- | `Nim by Example <http://nim-by-example.github.io/>`_
|
||||
| Nim by Example is an excellent starting place for beginners.
|
||||
|
||||
- | `Nim on Rosetta Code <http://rosettacode.org/wiki/Category:Nimrod>`_
|
||||
| Many different Nim code examples comparable to other languages for reference.
|
||||
|
||||
- | `Nim for C/C++ Programmers <https://github.com/nim-lang/Nim/wiki/Nim-for-C-programmers>`_
|
||||
| A useful cheat-sheet for those most familiar with C/C++ languages.
|
||||
|
||||
|
||||
.. container:: standout
|
||||
|
||||
Articles
|
||||
--------
|
||||
|
||||
.. container:: articles
|
||||
|
||||
- `How I Start: Nim <http://howistart.org/posts/nim/1>`_
|
||||
- `Getting Started With Nim <https://akehrer.github.io/posts/getting-started-with-nim>`_
|
||||
- `Getting Started With Nim - Part 2 <https://akehrer.github.io/posts/getting-started-with-nim-2>`_
|
||||
- `What is special about Nim? <http://hookrace.net/blog/what-is-special-about-nim>`_
|
||||
- `What makes Nim practical? <http://hookrace.net/blog/what-makes-nim-practical>`_
|
||||
- `Learn Nim in minutes <http://learnxinyminutes.com/docs/nim>`_
|
||||
- `Dr Dobbs Nimrod Publication <http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_
|
||||
- `Nim articles by Göran Krampe <http://goran.krampe.se/category/nim>`_
|
||||
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
More examples of Nim code can be found in the `Nim Language Documentation <docs/manual.html>`_.
|
||||
|
||||
144
web/news.rst
@@ -1,144 +0,0 @@
|
||||
====
|
||||
News
|
||||
====
|
||||
|
||||
`2017-01-08 Nim Version 0.16.2 released <news/e031_version_0_16_2.html>`_
|
||||
===================================
|
||||
|
||||
`2017-01-08 Nim Version 0.16.0 released <news/e029_version_0_16_0.html>`_
|
||||
===================================
|
||||
|
||||
`2016-11-20 Nim in Action is going into production! <news/e030_nim_in_action_in_production.html>`_
|
||||
===================================
|
||||
|
||||
`2016-10-23 Nim Version 0.15.2 released <news/e028_version_0_15_2.html>`_
|
||||
===================================
|
||||
|
||||
`2016-09-30 Nim Version 0.15.0 released <news/e027_version_0_15_0.html>`_
|
||||
===================================
|
||||
|
||||
`2016-09-03 Nim Community Survey results <news/e026_survey_results.html>`_
|
||||
===================================
|
||||
|
||||
`2016-08-06 BountySource Update: The Road to v1.0 <news/e025_bountysource_update.html>`_
|
||||
===================================
|
||||
|
||||
`2016-06-23 Launching the 2016 Nim community survey <news/e024_survey.html>`_
|
||||
===================================
|
||||
|
||||
`2016-06-11 Version 0.14.2 released <news/e023_version_0_14_2.html>`_
|
||||
===================================
|
||||
|
||||
`2016-06-07 Version 0.14.0 released <news/e022_version_0_14_0.html>`_
|
||||
===================================
|
||||
|
||||
`2016-06-04 Meet our BountySource sponsors <news/e021_meet_sponsors.html>`_
|
||||
===================================
|
||||
|
||||
`2016-01-27 Nim in Action is now available! <news/e020_nim_in_action.html>`_
|
||||
==================================
|
||||
|
||||
`2016-01-18 Version 0.13.0 released <news/e019_version_0_13_0.html>`_
|
||||
==================================
|
||||
|
||||
`2016-01-18 Andreas Rumpf's talk at OSCON Amsterdam <news/e018_oscon_amsterdam.html>`_
|
||||
==================================================
|
||||
|
||||
`2015-10-27 Version 0.12.0 released <news/e017_version_0_12_0.html>`_
|
||||
==================================
|
||||
|
||||
`2015-10-16 First Nim conference <news/e016_nim_conf1.html>`_
|
||||
===============================
|
||||
|
||||
`2015-05-04 Version 0.11.2 released <news/e015_version_0_11_2.html>`_
|
||||
==================================
|
||||
|
||||
`2015-04-30 Version 0.11.0 released <news/e014_version_0_11_0.html>`_
|
||||
==================================
|
||||
|
||||
`2014-12-29 Version 0.10.2 released <news/e013_version_0_10_2.html>`_
|
||||
==================================
|
||||
|
||||
|
||||
`2014-10-19 Version 0.9.6 released <news/e012_version_0_9_6.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
`2014-04-21 Version 0.9.4 released <news/e011_version_0_9_4.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
`2014-02-11 Nimrod Featured in Dr. Dobb's Journal <news/e010_dr_dobbs_journal.html>`_
|
||||
================================================
|
||||
|
||||
|
||||
`2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online <news/e009_andreas_rumpfs_talk.html>`_
|
||||
============================================================================
|
||||
|
||||
|
||||
`2013-05-20 New website design! <news/e008_new_website.html>`_
|
||||
==============================
|
||||
|
||||
|
||||
|
||||
`2013-05-20 Version 0.9.2 released <news/e007_version_0_9_2.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
`2012-09-23 Version 0.9.0 released <news/e006_version_0_9_0.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
|
||||
`2012-02-09 Version 0.8.14 released <news/e005_version_0_8_14.html>`_
|
||||
==================================
|
||||
|
||||
|
||||
|
||||
`2011-07-10 Version 0.8.12 released <news/e004_version_0_8_12.html>`_
|
||||
==================================
|
||||
|
||||
|
||||
`2010-10-20 Version 0.8.10 released <news/e003_version_0_8_10.html>`_
|
||||
==================================
|
||||
|
||||
|
||||
|
||||
`2010-03-14 Version 0.8.8 released <news/e002_version_0_8_8.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
`2009-12-21 Version 0.8.6 released <news/e001_version_0_8_6.html>`_
|
||||
=================================
|
||||
|
||||
|
||||
2009-10-21 Version 0.8.2 released
|
||||
=================================
|
||||
|
||||
|
||||
2009-09-12 Version 0.8.0 released
|
||||
=================================
|
||||
|
||||
|
||||
2009-06-08 Version 0.7.10 released
|
||||
==================================
|
||||
|
||||
|
||||
2009-05-08 Version 0.7.8 released
|
||||
=================================
|
||||
|
||||
|
||||
2009-04-22 Version 0.7.6 released
|
||||
=================================
|
||||
|
||||
|
||||
2008-11-16 Version 0.7.0 released
|
||||
=================================
|
||||
|
||||
|
||||
2008-08-22 Version 0.6.0 released
|
||||
=================================
|
||||
|
||||
Nimrod version 0.6.0 has been released!
|
||||
**This is the first version of the compiler that is able to compile itself!**
|
||||
@@ -1,54 +0,0 @@
|
||||
2009-12-21 Version 0.8.6 released
|
||||
=================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 21/12/2009
|
||||
|
||||
The version jump from 0.8.2 to 0.8.6 acknowledges the fact that all development
|
||||
of the compiler is now done in Nimrod.
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
- The pragmas ``hint[X]:off`` and ``warning[X]:off`` now work.
|
||||
- Method call syntax for iterators works again (``for x in lines.split()``).
|
||||
- Fixed a typo in ``removeDir`` for POSIX that lead to an infinite recursion.
|
||||
- The compiler now checks that module filenames are valid identifiers.
|
||||
- Empty patterns for the ``dynlib`` pragma are now possible.
|
||||
- ``os.parseCmdLine`` returned wrong results for trailing whitespace.
|
||||
- Inconsequent tuple usage (using the same tuple with and without named fields)
|
||||
does not crash the code generator anymore.
|
||||
- A better error message is provided when the loading of a proc within a
|
||||
dynamic lib fails.
|
||||
|
||||
|
||||
Additions
|
||||
---------
|
||||
- Added ``system.contains`` for open arrays.
|
||||
- The PEG module now supports the *search loop operator* ``@``.
|
||||
- Grammar/parser: ``SAD|IND`` is allowed before any kind of closing bracket.
|
||||
This allows for more flexible source code formating.
|
||||
- The compiler now uses a *bind* table for symbol lookup within a ``bind``
|
||||
context. (See `<manual.html#templates>`_ for details.)
|
||||
- ``discard """my long comment"""`` is now optimized away.
|
||||
- New ``--floatChecks: on|off`` switches and pragmas for better debugging
|
||||
of floating point operations. (See
|
||||
`<manual.html#pre-defined-floating-point-types>`_ for details.)
|
||||
- The manual has been improved. (Many thanks to Philippe Lhoste!)
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
- The compiler does not skip the linking step anymore even if no file
|
||||
has changed.
|
||||
- ``os.splitFile(".xyz")`` now returns ``("", ".xyz", "")`` instead of
|
||||
``("", "", ".xyz")``. So filenames starting with a dot are handled
|
||||
differently.
|
||||
- ``strutils.split(s: string, seps: set[char])`` never yields the empty string
|
||||
anymore. This behaviour is probably more appropriate for whitespace splitting.
|
||||
- The compiler now stops after the ``--version`` command line switch.
|
||||
- Removed support for enum inheritance in the parser; enum inheritance has
|
||||
never been documented anyway.
|
||||
- The ``msg`` field of ``system.E_base`` has now the type ``string``, instead
|
||||
of ``cstring``. This improves memory safety.
|
||||
@@ -1,82 +0,0 @@
|
||||
Version 0.8.8 released
|
||||
======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 14/03/2010
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
- The Posix version of ``os.copyFile`` has better error handling.
|
||||
- Fixed bug #502670 (underscores in identifiers).
|
||||
- Fixed a bug in the ``parsexml`` module concerning the parsing of
|
||||
``<tag attr="value" />``.
|
||||
- Fixed a bug in the ``parsexml`` module concerning the parsing of
|
||||
enities like ``<XX``.
|
||||
- ``system.write(f: TFile, s: string)`` now works even if ``s`` contains binary
|
||||
zeros.
|
||||
- Fixed a bug in ``os.setFilePermissions`` for Windows.
|
||||
- An overloadable symbol can now have the same name as an imported module.
|
||||
- Fixed a serious bug in ``strutils.cmpIgnoreCase``.
|
||||
- Fixed ``unicode.toUTF8``.
|
||||
- The compiler now rejects ``'\n'`` (use ``"\n"`` instead).
|
||||
- ``times.getStartMilsecs()`` now works on Mac OS X.
|
||||
- Fixed a bug in ``pegs.match`` concerning start offsets.
|
||||
- Lots of other little bugfixes.
|
||||
|
||||
|
||||
Additions
|
||||
---------
|
||||
- Added ``system.cstringArrayToSeq``.
|
||||
- Added ``system.lines(f: TFile)`` iterator.
|
||||
- Added ``system.delete``, ``system.del`` and ``system.insert`` for sequences.
|
||||
- Added ``system./`` for int.
|
||||
- Exported ``system.newException`` template.
|
||||
- Added ``cgi.decodeData(data: string): tuple[key, value: string]``.
|
||||
- Added ``strutils.insertSep``.
|
||||
- Added ``math.trunc``.
|
||||
- Added ``ropes`` module.
|
||||
- Added ``sockets`` module.
|
||||
- Added ``browsers`` module.
|
||||
- Added ``httpserver`` module.
|
||||
- Added ``httpclient`` module.
|
||||
- Added ``parseutils`` module.
|
||||
- Added ``unidecode`` module.
|
||||
- Added ``xmldom`` module.
|
||||
- Added ``xmldomparser`` module.
|
||||
- Added ``xmltree`` module.
|
||||
- Added ``xmlparser`` module.
|
||||
- Added ``htmlparser`` module.
|
||||
- Added ``re`` module.
|
||||
- Added ``graphics`` module.
|
||||
- Added ``colors`` module.
|
||||
- Many wrappers now do not contain redundant name prefixes (like ``GTK_``,
|
||||
``lua``). The old wrappers are still available in ``lib/oldwrappers``.
|
||||
You can change your configuration file to use these.
|
||||
- Triple quoted strings allow for ``"`` in more contexts.
|
||||
- ``""`` within raw string literals stands for a single quotation mark.
|
||||
- Arguments to ``openArray`` parameters can be left out.
|
||||
- More extensive subscript operator overloading. (To be documented.)
|
||||
- The documentation generator supports the ``.. raw:: html`` directive.
|
||||
- The Pegs module supports back references via the notation ``$capture_index``.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- Overloading of the subscript operator only works if the type does not provide
|
||||
a built-in one.
|
||||
- The search order for libraries which is affected by the ``path`` option
|
||||
has been reversed, so that the project's path is searched before
|
||||
the standard library's path.
|
||||
- The compiler does not include a Pascal parser for bootstrapping purposes any
|
||||
more. Instead there is a ``pas2nim`` tool that contains the old functionality.
|
||||
- The procs ``os.copyFile`` and ``os.moveFile`` have been deprecated
|
||||
temporarily, so that the compiler warns about their usage. Use them with
|
||||
named arguments only, because the parameter order will change the next
|
||||
version!
|
||||
- ``atomic`` and ``let`` are now keywords.
|
||||
- The ``\w`` character class for pegs now includes the digits ``'0'..'9'``.
|
||||
- Many wrappers now do not contain redundant name prefixes (like ``GTK_``,
|
||||
``lua``) anymore.
|
||||
- Arguments to ``openArray`` parameters can be left out.
|
||||
@@ -1,70 +0,0 @@
|
||||
Version 0.8.10 released
|
||||
=======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 20/10/2010
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Bugfix: Command line parsing on Windows and ``os.parseCmdLine`` now adheres
|
||||
to the same parsing rules as Microsoft's C/C++ startup code.
|
||||
- Bugfix: Passing a ``ref`` pointer to the untyped ``pointer`` type is invalid.
|
||||
- Bugfix: Updated ``keyval`` example.
|
||||
- Bugfix: ``system.splitChunk`` still contained code for debug output.
|
||||
- Bugfix: ``dialogs.ChooseFileToSave`` uses ``STOCK_SAVE`` instead of
|
||||
``STOCK_OPEN`` for the GTK backend.
|
||||
- Bugfix: Various bugs concerning exception handling fixed.
|
||||
- Bugfix: ``low(somestring)`` crashed the compiler.
|
||||
- Bugfix: ``strutils.endsWith`` lacked range checking.
|
||||
- Bugfix: Better detection for AMD64 on Mac OS X.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- Reversed parameter order for ``os.copyFile`` and ``os.moveFile``!!!
|
||||
- Procs not marked as ``procvar`` cannot only be passed to a procvar anymore,
|
||||
unless they are used in the same module.
|
||||
- Deprecated ``times.getStartMilsecs``: Use ``epochTime`` or ``cpuTime``
|
||||
instead.
|
||||
- Removed ``system.OpenFile``.
|
||||
- Removed ``system.CloseFile``.
|
||||
- Removed ``strutils.replaceStr``.
|
||||
- Removed ``strutils.deleteStr``.
|
||||
- Removed ``strutils.splitLinesSeq``.
|
||||
- Removed ``strutils.splitSeq``.
|
||||
- Removed ``strutils.toString``.
|
||||
- If a DLL cannot be loaded (via the ``dynlib`` pragma) ``EInvalidLibrary``
|
||||
is not raised anymore. Instead ``system.quit()`` is called. This is because
|
||||
raising an exception requires heap allocations. However the memory manager
|
||||
might be contained in the DLL that failed to load.
|
||||
- The ``re`` module (and the ``pcre`` wrapper) now depend on the pcre dll.
|
||||
|
||||
|
||||
Additions
|
||||
---------
|
||||
|
||||
- The ``{.compile: "file.c".}`` pragma uses a CRC check to see if the file
|
||||
needs to be recompiled.
|
||||
- Added ``system.reopen``.
|
||||
- Added ``system.getCurrentException``.
|
||||
- Added ``system.appType``.
|
||||
- Added ``system.compileOption``.
|
||||
- Added ``times.epochTime`` and ``times.cpuTime``.
|
||||
- Implemented explicit type arguments for generics.
|
||||
- Implemented ``{.size: sizeof(cint).}`` pragma for enum types. This is useful
|
||||
for interfacing with C.
|
||||
- Implemented ``{.pragma.}`` pragma for user defined pragmas.
|
||||
- Implemented ``{.extern.}`` pragma for better control of name mangling.
|
||||
- The ``importc`` and ``exportc`` pragmas support format strings:
|
||||
``proc p{.exportc: "nim_$1".}`` exports ``p`` as ``nim_p``. This is useful
|
||||
for user defined pragmas.
|
||||
- The standard library can be built as a DLL. Generating DLLs has been
|
||||
improved.
|
||||
- Added ``expat`` module.
|
||||
- Added ``json`` module.
|
||||
- Added support for a *Tiny C* backend. Currently this only works on Linux.
|
||||
You need to bootstrap with ``-d:tinyc`` to enable Tiny C support. Nimrod
|
||||
can then execute code directly via ``nimrod run myfile``.
|
||||
@@ -1,122 +0,0 @@
|
||||
Version 0.8.12 released
|
||||
==================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 10/07/2011
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Bugfix: ``httpclient`` correct passes the path starting with ``/``.
|
||||
- Bugfixes for the ``htmlparser`` module.
|
||||
- Bugfix: ``pegs.find`` did not respect ``start`` parameter.
|
||||
- Bugfix: ``dialogs.ChooseFilesToOpen`` did not work if only one file is
|
||||
selected.
|
||||
- Bugfix: niminst: ``nimrod`` is not default dir for *every* project.
|
||||
- Bugfix: Multiple yield statements in iterators did not cause local vars to be
|
||||
copied.
|
||||
- Bugfix: The compiler does not emit very inaccurate floating point literals
|
||||
anymore.
|
||||
- Bugfix: Subclasses are taken into account for ``try except`` matching.
|
||||
- Bugfix: Generics and macros are more stable. There are still known bugs left
|
||||
though.
|
||||
- Bugfix: Generated type information for tuples was sometimes wrong, causing
|
||||
random crashes.
|
||||
- Lots of other bugfixes: Too many to list them all.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- Operators starting with ``^`` are now right-associative and have the highest
|
||||
priority.
|
||||
- Deprecated ``os.getApplicationFilename``: Use ``os.getAppFilename`` instead.
|
||||
- Deprecated ``os.getApplicationDir``: Use ``os.getAppDir`` instead.
|
||||
- Deprecated ``system.copy``: Use ``substr`` or string slicing instead.
|
||||
- Changed and documented how generalized string literals work: The syntax
|
||||
``module.re"abc"`` is now supported.
|
||||
- Changed the behaviour of ``strutils.%``, ``ropes.%``
|
||||
if both notations ``$#`` and ``$i`` are involved.
|
||||
- The ``pegs`` and ``re`` modules distinguish between ``replace``
|
||||
and ``replacef`` operations.
|
||||
- The pointer dereference operation ``p^`` is deprecated and might become
|
||||
``^p`` in later versions or be dropped entirely since it is rarely used.
|
||||
Use the new notation ``p[]`` in the rare cases where you need to
|
||||
dereference a pointer explicitly.
|
||||
- ``system.readFile`` does not return ``nil`` anymore but raises an ``EIO``
|
||||
exception instead.
|
||||
- Unsound co-/contravariance for procvars has been removed.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- Source code filters are now documented.
|
||||
- Added the ``linearScanEnd``, ``unroll``, ``shallow`` pragmas.
|
||||
- Added ``emit`` pragma for direct code generator control.
|
||||
- Case statement branches support constant sets for programming convenience.
|
||||
- Tuple unpacking is not enforced in ``for`` loops anymore.
|
||||
- The compiler now supports array, sequence and string slicing.
|
||||
- A field in an ``enum`` may be given an explicit string representation.
|
||||
This yields more maintainable code than using a constant
|
||||
``array[TMyEnum, string]`` mapping.
|
||||
- Indices in array literals may be explicitly given, enhancing readability:
|
||||
``[enumValueA: "a", enumValueB: "b"]``.
|
||||
- Added thread support via the ``threads`` core module and
|
||||
the ``--threads:on`` command line switch.
|
||||
- The built-in iterators ``system.fields`` and ``system.fieldPairs`` can be
|
||||
used to iterate over any field of a tuple. With this mechanism operations
|
||||
like ``==`` and ``hash`` are lifted to tuples.
|
||||
- The slice ``..`` is now a first-class operator, allowing code like:
|
||||
``x in 1000..100_000``.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- The compiler supports IDEs via the new group of ``idetools`` command line
|
||||
options.
|
||||
- The *interactive mode* (REPL) has been improved and documented for the
|
||||
first time.
|
||||
- The compiler now might use hashing for string case statements depending
|
||||
on the number of string literals in the case statement.
|
||||
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added ``lists`` module which contains generic linked lists.
|
||||
- Added ``sets`` module which contains generic hash sets.
|
||||
- Added ``tables`` module which contains generic hash tables.
|
||||
- Added ``queues`` module which contains generic sequence based queues.
|
||||
- Added ``intsets`` module which contains a specialized int set data type.
|
||||
- Added ``scgi`` module.
|
||||
- Added ``smtp`` module.
|
||||
- Added ``encodings`` module.
|
||||
- Added ``re.findAll``, ``pegs.findAll``.
|
||||
- Added ``os.findExe``.
|
||||
- Added ``parseutils.parseUntil`` and ``parseutils.parseWhile``.
|
||||
- Added ``strutils.align``, ``strutils.tokenize``, ``strutils.wordWrap``.
|
||||
- Pegs support a *captured search loop operator* ``{@}``.
|
||||
- Pegs support new built-ins: ``\letter``, ``\upper``, ``\lower``,
|
||||
``\title``, ``\white``.
|
||||
- Pegs support the new built-in ``\skip`` operation.
|
||||
- Pegs support the ``$`` and ``^`` anchors.
|
||||
- Additional operations were added to the ``complex`` module.
|
||||
- Added ``strutils.formatFloat``, ``strutils.formatBiggestFloat``.
|
||||
- Added unary ``<`` for nice looking excluding upper bounds in ranges.
|
||||
- Added ``math.floor``.
|
||||
- Added ``system.reset`` and a version of ``system.open`` that
|
||||
returns a ``TFile`` and raises an exception in case of an error.
|
||||
- Added a wrapper for ``redis``.
|
||||
- Added a wrapper for ``0mq`` via the ``zmq`` module.
|
||||
- Added a wrapper for ``sphinx``.
|
||||
- Added ``system.newStringOfCap``.
|
||||
- Added ``system.raiseHook`` and ``system.outOfMemHook``.
|
||||
- Added ``system.writeFile``.
|
||||
- Added ``system.shallowCopy``.
|
||||
- ``system.echo`` is guaranteed to be thread-safe.
|
||||
- Added ``prelude`` include file for scripting convenience.
|
||||
- Added ``typeinfo`` core module for access to runtime type information.
|
||||
- Added ``marshal`` module for JSON serialization.
|
||||
@@ -1,168 +0,0 @@
|
||||
2012-02-09 Version 0.8.14 released
|
||||
==================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 09/02/2012
|
||||
|
||||
Version 0.8.14 has been released!
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed a serious memory corruption concerning message passing.
|
||||
- Fixed a serious bug concerning different instantiations of a generic proc.
|
||||
- Fixed a newly introduced bug where a wrong ``EIO`` exception was raised for
|
||||
the end of file for text files that do not end with a newline.
|
||||
- Bugfix c2nim, c2pas: the ``--out`` option has never worked properly.
|
||||
- Bugfix: forwarding of generic procs never worked.
|
||||
- Some more bugfixes for macros and compile-time evaluation.
|
||||
- The GC now takes into account interior pointers on the stack which may be
|
||||
introduced by aggressive C optimizers.
|
||||
- Nimrod's native allocator/GC now works on PowerPC.
|
||||
- Lots of other bugfixes: Too many to list them all.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- Removed deprecated ``os.AppendFileExt``, ``os.executeShellCommand``,
|
||||
``os.iterOverEnvironment``, ``os.pcDirectory``, ``os.pcLinkToDirectory``,
|
||||
``os.SplitPath``, ``os.extractDir``, ``os.SplitFilename``,
|
||||
``os.extractFileTrunk``, ``os.extractFileExt``, ``osproc.executeProcess``,
|
||||
``osproc.executeCommand``.
|
||||
- Removed deprecated ``parseopt.init``, ``parseopt.getRestOfCommandLine``.
|
||||
- Moved ``strutils.validEmailAddress`` to ``matchers.validEmailAddress``.
|
||||
- The pointer dereference operator ``^`` has been removed, so that ``^``
|
||||
can now be a user-defined operator.
|
||||
- ``implies`` is no keyword anymore.
|
||||
- The ``is`` operator is now the ``of`` operator.
|
||||
- The ``is`` operator is now used to check type equivalence in generic code.
|
||||
- The ``pure`` pragma for procs has been renamed to ``noStackFrame``.
|
||||
- The threading API has been completely redesigned.
|
||||
- The ``unidecode`` module is now thread-safe and its interface has changed.
|
||||
- The ``bind`` expression is deprecated, use a ``bind`` declaration instead.
|
||||
- ``system.raiseHook`` is now split into ``system.localRaiseHook`` and
|
||||
``system.globalRaiseHook`` to distinguish between thread local and global
|
||||
raise hooks.
|
||||
- Changed exception handling/error reporting for ``os.removeFile`` and
|
||||
``os.removeDir``.
|
||||
- The algorithm for searching and loading configuration files has been changed.
|
||||
- Operators now have diffent precedence rules: Assignment-like operators
|
||||
(like ``*=``) are now special-cased.
|
||||
- The fields in ``TStream`` have been renamed to have an ``Impl`` suffix
|
||||
because they should not be used directly anymore.
|
||||
Wrapper procs have been created that should be used instead.
|
||||
- ``export`` is now a keyword.
|
||||
- ``assert`` is now implemented in pure Nimrod as a template; it's easy
|
||||
to implement your own assertion templates with ``system.astToStr``.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- Added new ``is`` and ``of`` operators.
|
||||
- The built-in type ``void`` can be used to denote the absence of any type.
|
||||
This is useful in generic code.
|
||||
- Return types may be of the type ``var T`` to return an l-value.
|
||||
- The error pragma can now be used to mark symbols whose *usage* should trigger
|
||||
a compile-time error.
|
||||
- There is a new ``discardable`` pragma that can be used to mark a routine
|
||||
so that its result can be discarded implicitly.
|
||||
- Added a new ``noinit`` pragma to prevent automatic initialization to zero
|
||||
of variables.
|
||||
- Constants can now have the type ``seq``.
|
||||
- There is a new user-definable syntactic construct ``a{i, ...}``
|
||||
that has no semantics yet for built-in types and so can be overloaded to your
|
||||
heart's content.
|
||||
- ``bind`` (used for symbol binding in templates and generics) is now a
|
||||
declarative statement.
|
||||
- Nimrod now supports single assignment variables via the ``let`` statement.
|
||||
- Iterators named ``items`` and ``pairs`` are implicitly invoked when
|
||||
an explicit iterator is missing.
|
||||
- The slice assignment ``a[i..j] = b`` where ``a`` is a sequence or string
|
||||
now supports *splicing*.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- The compiler can generate C++ code for easier interfacing with C++.
|
||||
- The compiler can generate Objective C code for easier interfacing with
|
||||
Objective C.
|
||||
- The new pragmas ``importcpp`` and ``importobjc`` make interfacing with C++
|
||||
and Objective C somewhat easier.
|
||||
- Added a new pragma ``incompleteStruct`` to deal with incomplete C struct
|
||||
definitions.
|
||||
- Added a ``--nimcache:PATH`` configuration option for control over the output
|
||||
directory for generated code.
|
||||
- The ``--genScript`` option now produces different compilation scripts
|
||||
which do not contain absolute paths.
|
||||
- Added ``--cincludes:dir``, ``--clibdir:lib`` configuration options for
|
||||
modifying the C compiler's header/library search path in cross-platform way.
|
||||
- Added ``--clib:lib`` configuration option for specifying additional
|
||||
C libraries to be linked.
|
||||
- Added ``--mainmodule:file`` configuration options for specifying the main
|
||||
project file. This is intended to be used in project configuration files to
|
||||
allow commands like ``nimrod c`` or ``nimrod check`` to be executed anywhere
|
||||
within the project's directory structure.
|
||||
- Added a ``--app:staticlib`` option for creating static libraries.
|
||||
- Added a ``--tlsEmulation:on|off`` switch for control over thread local
|
||||
storage emulation.
|
||||
- The compiler and standard library now support a *taint mode*. Input strings
|
||||
are declared with the ``TaintedString`` string type. If the taint
|
||||
mode is turned on it is a distinct string type which helps to detect input
|
||||
validation errors.
|
||||
- The compiler now supports the compilation cache via ``--symbolFiles:on``.
|
||||
This potentially speeds up compilations by an order of magnitude, but is
|
||||
still highly experimental!
|
||||
- Added ``--import:file`` and ``--include:file`` configuration options
|
||||
for specifying modules that will be automatically imported/incluced.
|
||||
- ``nimrod i`` can now optionally be given a module to execute.
|
||||
- The compiler now performs a simple alias analysis to generate better code.
|
||||
- The compiler and ENDB now support *watchpoints*.
|
||||
- The compiler now supports proper compile time expressions of type ``bool``
|
||||
for ``on|off`` switches in pragmas. In order to not break existing code,
|
||||
``on`` and ``off`` are now aliases for ``true`` and ``false`` and declared
|
||||
in the system module.
|
||||
- The compiler finally supports **closures**. This is a preliminary
|
||||
implementation, which does not yet support nestings deeper than 1 level
|
||||
and still has many known bugs.
|
||||
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added ``system.allocShared``, ``system.allocShared0``,
|
||||
``system.deallocShared``, ``system.reallocShared``.
|
||||
- Slicing as implemented by the system module now supports *splicing*.
|
||||
- Added explicit channels for thread communication.
|
||||
- Added ``matchers`` module for email address etc. matching.
|
||||
- Added ``strutils.unindent``, ``strutils.countLines``,
|
||||
``strutils.replaceWord``.
|
||||
- Added ``system.slurp`` for easy resource embedding.
|
||||
- Added ``system.running`` for threads.
|
||||
- Added ``system.programResult``.
|
||||
- Added ``xmltree.innerText``.
|
||||
- Added ``os.isAbsolute``, ``os.dynLibFormat``, ``os.isRootDir``,
|
||||
``os.parentDirs``.
|
||||
- Added ``parseutils.interpolatedFragments``.
|
||||
- Added ``macros.treeRepr``, ``macros.lispRepr``, ``macros.dumpTree``,
|
||||
``macros.dumpLisp``, ``macros.parseExpr``, ``macros.parseStmt``,
|
||||
``macros.getAst``.
|
||||
- Added ``locks`` core module for more flexible locking support.
|
||||
- Added ``irc`` module.
|
||||
- Added ``ftpclient`` module.
|
||||
- Added ``memfiles`` module.
|
||||
- Added ``subexes`` module.
|
||||
- Added ``critbits`` module.
|
||||
- Added ``asyncio`` module.
|
||||
- Added ``actors`` module.
|
||||
- Added ``algorithm`` module for generic ``sort``, ``reverse`` etc. operations.
|
||||
- Added ``osproc.startCmd``, ``osproc.execCmdEx``.
|
||||
- The ``osproc`` module now uses ``posix_spawn`` instead of ``fork``
|
||||
and ``exec`` on Posix systems. Define the symbol ``useFork`` to revert to
|
||||
the old implementation.
|
||||
- Added ``intsets.assign``.
|
||||
- Added ``system.astToStr`` and ``system.rand``, ``system.doAssert``.
|
||||
- Added ``system.pairs`` for built-in types like arrays and strings.
|
||||
@@ -1,182 +0,0 @@
|
||||
Version 0.9.0 released
|
||||
======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 23/09/2012
|
||||
|
||||
Summary
|
||||
-------
|
||||
|
||||
* Unsigned integers have been added.
|
||||
* The integer type promotion rules changed.
|
||||
* The template and macro system evolved.
|
||||
* Closures have been implemented.
|
||||
* Term rewriting macros have been implemented.
|
||||
* First steps to unify expressions and statements have been taken.
|
||||
* Symbol lookup rules in generics have become stricter to catch more errors.
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed a bug where the compiler would "optimize away" valid constant parts of
|
||||
a string concatenation.
|
||||
- Fixed a bug concerning implicit type conversions in ``case`` statements.
|
||||
- Fixed a serious code generation bug that caused ``algorithm.sort`` to
|
||||
produce segmentation faults.
|
||||
- Fixed ambiguity in recvLine which meant that receiving ``\r\L`` was
|
||||
indistinguishable from disconnections.
|
||||
- Many more bugfixes, too many to list them all.
|
||||
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added the (already existing) module ``htmlgen`` to the documentation.
|
||||
- Added the (already existing) module ``cookies`` to the documentation.
|
||||
- Added ``system.shallow`` that can be used to speed up string and sequence
|
||||
assignments.
|
||||
- Added ``system.eval`` that can execute an anonymous block of code at
|
||||
compile time as if was a macro.
|
||||
- Added ``system.staticExec`` and ``system.gorge`` for compile-time execution
|
||||
of external programs.
|
||||
- Added ``system.staticRead`` as a synonym for ``system.slurp``.
|
||||
- Added ``macros.emit`` that can emit an arbitrary computed string as nimrod
|
||||
code during compilation.
|
||||
- Added ``strutils.parseEnum``.
|
||||
- Added ``json.%`` constructor operator.
|
||||
- The stdlib can now be avoided to a point where C code generation for 16bit
|
||||
micro controllers is feasible.
|
||||
- Added module ``oids``.
|
||||
- Added module ``endians``.
|
||||
- Added a new OpenGL wrapper that supports OpenGL up to version 4.2.
|
||||
- Added a wrapper for ``libsvm``.
|
||||
- Added a wrapper for ``mongodb``.
|
||||
- Added ``terminal.isatty``.
|
||||
- Added an overload for ``system.items`` that can be used to iterate over the
|
||||
values of an enum.
|
||||
- Added ``system.TInteger`` and ``system.TNumber`` type classes matching
|
||||
any of the corresponding types available in Nimrod.
|
||||
- Added ``system.clamp`` to limit a value within an interval ``[a, b]``.
|
||||
- Added ``strutils.continuesWith``.
|
||||
- Added ``system.getStackTrace``.
|
||||
- Added ``system.||`` for parallel ``for`` loop support.
|
||||
- The GC supports (soft) realtime systems via ``GC_setMaxPause``
|
||||
and ``GC_step`` procs.
|
||||
- The sockets module now supports ssl through the OpenSSL library, ``recvLine``
|
||||
is now much more efficient thanks to the newly implemented sockets buffering.
|
||||
- The httpclient module now supports ssl/tls.
|
||||
- Added ``times.format`` as well as many other utility functions
|
||||
for managing time.
|
||||
- Added ``system.@`` for converting an ``openarray`` to a ``seq`` (it used to
|
||||
only support fixed length arrays).
|
||||
- Added ``system.compiles`` which can be used to check whether a type supports
|
||||
some operation.
|
||||
- Added ``strutils.format``, ``subexes.format`` which use the
|
||||
new ``varargs`` type.
|
||||
- Added module ``fsmonitor``.
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- On Windows filenames and paths are supposed to be in UTF-8.
|
||||
The ``system``, ``os``, ``osproc`` and ``memfiles`` modules use the wide
|
||||
string versions of the WinAPI. Use the ``-d:useWinAnsi`` switch to revert
|
||||
back to the old behaviour which uses the Ansi string versions.
|
||||
- ``static``, ``do``, ``interface`` and ``mixin`` are now keywords.
|
||||
- Templates now participate in overloading resolution which can break code that
|
||||
uses templates in subtle ways. Use the new ``immediate`` pragma for templates
|
||||
to get a template of old behaviour.
|
||||
- There is now a proper distinction in the type system between ``expr`` and
|
||||
``PNimrodNode`` which unfortunately breaks the old macro system.
|
||||
- ``pegs.@`` has been renamed to ``pegs.!*`` and ``pegs.@@`` has been renamed
|
||||
to ``pegs.!*\`` as ``@`` operators now have different precedence.
|
||||
- The type ``proc`` (without any params or return type) is now considered a
|
||||
type class matching all proc types. Use ``proc ()`` to get the old meaning
|
||||
denoting a proc expecing no arguments and returing no value.
|
||||
- Deprecated ``system.GC_setStrategy``.
|
||||
- ``re.findAll`` and ``pegs.findAll`` don't return *captures* anymore but
|
||||
matching *substrings*.
|
||||
- RTTI and thus the ``marshall`` module don't contain the proper field names
|
||||
of tuples anymore. This had to be changed as the old behaviour never
|
||||
produced consistent results.
|
||||
- Deprecated the ``ssl`` module.
|
||||
- Deprecated ``nimrod pretty`` as it never worked good enough and has some
|
||||
inherent problems.
|
||||
- The integer promotion rules changed; the compiler is now less picky in some
|
||||
situations and more picky in other situations: In particular implicit
|
||||
conversions from ``int`` to ``int32`` are now forbidden.
|
||||
- ``system.byte`` is now an alias for ``uint8``; it used to be an alias
|
||||
to ``int8``.
|
||||
- ``bind`` expressions in templates are not properly supported anymore. Use
|
||||
the declarative ``bind`` statement instead.
|
||||
- The default calling convention for a procedural **type** is now ``closure``,
|
||||
for procs it remains ``nimcall`` (which is compatible to ``closure``).
|
||||
Activate the warning ``ImplicitClosure`` to make the compiler list the
|
||||
occurrences of proc types which are affected.
|
||||
- The Nimrod type system now distinguishes ``openarray`` from ``varargs``.
|
||||
- Templates are now ``hygienic``. Use the ``dirty`` pragma to get the old
|
||||
behaviour.
|
||||
- Objects that have no ancestor are now implicitly ``final``. Use
|
||||
the ``inheritable`` pragma to introduce new object roots apart
|
||||
from ``TObject``.
|
||||
- Macros now receive parameters like templates do; use the ``callsite`` builtin
|
||||
to gain access to the invocation AST.
|
||||
- Symbol lookup rules in generics have become stricter to catch more errors.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- Win64 is now an officially supported target.
|
||||
- The Nimrod compiler works on BSD again, but has some issues
|
||||
as ``os.getAppFilename`` and ``os.getAppDir`` cannot work reliably on BSD.
|
||||
- The compiler can detect and evaluate calls that can be evaluated at compile
|
||||
time for optimization purposes with the ``--implicitStatic`` command line
|
||||
option or pragma.
|
||||
- The compiler now generates marker procs that the GC can use instead of RTTI.
|
||||
This speeds up the GC quite a bit.
|
||||
- The compiler now includes a new advanced documentation generator
|
||||
via the ``doc2`` command. This new generator uses all of the semantic passes
|
||||
of the compiler and can thus generate documentation for symbols hiding in
|
||||
macros.
|
||||
- The compiler now supports the ``dynlib`` pragma for variables.
|
||||
- The compiler now supports ``bycopy`` and ``byref`` pragmas that affect how
|
||||
objects/tuples are passed.
|
||||
- The embedded profiler became a stack trace profiler and has been documented.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- Added explicit ``static`` sections for enforced compile time evaluation.
|
||||
- Added an alternative notation for lambdas with ``do``.
|
||||
- ``addr`` is now treated like a prefix operator syntactically.
|
||||
- Added ``global`` pragma that can be used to introduce new global variables
|
||||
from within procs.
|
||||
- ``when`` expressions are now allowed just like ``if`` expressions.
|
||||
- The precedence for operators starting with ``@`` is different now
|
||||
allowing for *sigil-like* operators.
|
||||
- Stand-alone ``finally`` and ``except`` blocks are now supported.
|
||||
- Macros and templates can now be invoked as pragmas.
|
||||
- The apostrophe in type suffixes for numerical literals is now optional.
|
||||
- Unsigned integer types have been added.
|
||||
- The integer promotion rules changed.
|
||||
- Nimrod now tracks proper intervals for ``range`` over some built-in operators.
|
||||
- In parameter lists a semicolon instead of a comma can be used to improve
|
||||
readability: ``proc divmod(a, b: int; resA, resB: var int)``.
|
||||
- A semicolon can now be used to have multiple simple statements on a single
|
||||
line: ``inc i; inc j``.
|
||||
- ``bind`` supports overloaded symbols and operators.
|
||||
- A ``distinct`` type can now borrow from generic procs.
|
||||
- Added the pragmas ``gensym``, ``inject`` and ``dirty`` for hygiene
|
||||
in templates.
|
||||
- Comments can be continued with a backslash continuation character so that
|
||||
comment pieces don't have to align on the same column.
|
||||
- Enums can be annotated with ``pure`` so that their field names do not pollute
|
||||
the current scope.
|
||||
- A proc body can consist of an expression that has a type. This is rewritten
|
||||
to ``result = expression`` then.
|
||||
- Term rewriting macros (see `trmacros <http://nimrod-code.org/trmacros.html>`_)
|
||||
have been implemented but are still in alpha.
|
||||
@@ -1,118 +0,0 @@
|
||||
Version 0.9.2 released
|
||||
======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 20/05/2013
|
||||
|
||||
We are pleased to announce that version 0.9.2 of the Nimrod compiler has been
|
||||
released. This release has attracted by far the most contributions in comparison
|
||||
to any other release.
|
||||
|
||||
This release brings with it many new features and bug fixes, a list of which
|
||||
can be seen later. One of the major new features is the effect system together
|
||||
with exception tracking which allows for checked exceptions and more,
|
||||
for further details check out the `manual <manual.html#effect-system>`_.
|
||||
Another major new feature is the introduction of statement list expressions,
|
||||
more details on these can be found `here <manual.html#statement-list-expression>`_.
|
||||
The ability to exclude symbols from modules has also been
|
||||
implemented, this feature can be used like so: ``import module except symbol``.
|
||||
|
||||
Thanks to all `contributors <https://github.com/Araq/Nimrod/contributors>`_!
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- The old GC never collected cycles correctly. Fixed but it can cause
|
||||
performance regressions. However you can deactivate the cycle collector
|
||||
with ``GC_disableMarkAndSweep`` and run it explicitly at an appropriate time
|
||||
or not at all. There is also a new GC you can activate
|
||||
with ``--gc:markAndSweep`` which does not have this problem but is slower in
|
||||
general and has no realtime guarantees.
|
||||
- ``cast`` for floating point types now does the bitcast as specified in the
|
||||
manual. This breaks code that erroneously uses ``cast`` to convert different
|
||||
floating point values.
|
||||
- SCGI module's performance has been improved greatly, it will no longer block
|
||||
on many concurrent requests.
|
||||
- In total fixed over 70 github issues and merged over 60 pull requests.
|
||||
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- There is a new experimental mark&sweep GC which can be faster (or much
|
||||
slower) than the default GC. Enable with ``--gc:markAndSweep``.
|
||||
- Added ``system.onRaise`` to support a condition system.
|
||||
- Added ``system.locals`` that provides access to a proc's locals.
|
||||
- Added ``macros.quote`` for AST quasi-quoting.
|
||||
- Added ``system.unsafeNew`` to support hacky variable length objects.
|
||||
- ``system.fields`` and ``system.fieldPairs`` support ``object`` too; they
|
||||
used to only support tuples.
|
||||
- Added ``system.CurrentSourcePath`` returning the full file-system path of
|
||||
the current source file.
|
||||
- The ``macros`` module now contains lots of useful helpers for building up
|
||||
abstract syntax trees.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- ``shared`` is a keyword now.
|
||||
- Deprecated ``sockets.recvLine`` and ``asyncio.recvLine``, added
|
||||
``readLine`` instead.
|
||||
- The way indentation is handled in the parser changed significantly. However,
|
||||
this affects very little (if any) real world code.
|
||||
- The expression/statement unification has been implemented. Again this
|
||||
only affects edge cases and no known real world code.
|
||||
- Changed the async interface of the ``scgi`` module.
|
||||
- WideStrings are now garbage collected like other string types.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- The ``doc2`` command does not generate output for the whole project anymore.
|
||||
Use the new ``--project`` switch to enable this behaviour.
|
||||
- The compiler can now warn about shadowed local variables. However, this needs
|
||||
to be turned on explicitly via ``--warning[ShadowIdent]:on``.
|
||||
- The compiler now supports almost every pragma in a ``push`` pragma.
|
||||
- Generic converters have been implemented.
|
||||
- Added a **highly experimental** ``noforward`` pragma enabling a special
|
||||
compilation mode that largely eliminates the need for forward declarations.
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- ``case expressions`` are now supported.
|
||||
- Table constructors now mimic more closely the syntax of the ``case``
|
||||
statement.
|
||||
- Nimrod can now infer the return type of a proc from its body.
|
||||
- Added a ``mixin`` declaration to affect symbol binding rules in generics.
|
||||
- Exception tracking has been added and the ``doc2`` command annotates possible
|
||||
exceptions for you.
|
||||
- User defined effects ("tags") tracking has been added and the ``doc2``
|
||||
command annotates possible tags for you.
|
||||
- Types can be annotated with the new syntax ``not nil`` to explicitly state
|
||||
that ``nil`` is not allowed. However currently the compiler performs no
|
||||
advanced static checking for this; for now it's merely for documentation
|
||||
purposes.
|
||||
- An ``export`` statement has been added to the language: It can be used for
|
||||
symbol forwarding so client modules don't have to import a module's
|
||||
dependencies explicitly.
|
||||
- Overloading based on ASTs has been implemented.
|
||||
- Generics are now supported for multi methods.
|
||||
- Objects can be initialized via an *object constructor expression*.
|
||||
- There is a new syntactic construct ``(;)`` unifying expressions and
|
||||
statements.
|
||||
- You can now use ``from module import nil`` if you want to import the module
|
||||
but want to enforce fully qualified access to every symbol in ``module``.
|
||||
|
||||
|
||||
Notes for the future
|
||||
--------------------
|
||||
|
||||
- The scope rules of ``if`` statements will change in 0.9.4. This affects the
|
||||
``=~`` pegs/re templates.
|
||||
- The ``sockets`` module will become a low-level wrapper of OS-specific socket
|
||||
functions. All the high-level features of the current ``sockets`` module
|
||||
will be moved to a ``network`` module.
|
||||
@@ -1,13 +0,0 @@
|
||||
New website design!
|
||||
===================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 09/12/2014
|
||||
|
||||
A brand new website including an improved forum is now live.
|
||||
All thanks go to Philip Witte and
|
||||
Dominik Picheta, Philip Witte for the design of the website (together with
|
||||
the logo) as well as the HTML and CSS code for his template, and Dominik Picheta
|
||||
for integrating Philip's design with Nim's forum. We're sure you will
|
||||
agree that Philip's design is beautiful.
|
||||
@@ -1,11 +0,0 @@
|
||||
2014-01-15 Andreas Rumpf's talk on Nimrod at Strange Loop 2013 is now online
|
||||
============================================================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 12/01/2014
|
||||
|
||||
Andreas Rumpf presented *Nimrod: A New Approach to Metaprogramming* at
|
||||
`Strange Loop 2013<https://thestrangeloop.com/sessions/nimrod-a-new-approach-to-meta-programming>`_.
|
||||
The `video and slides<http://www.infoq.com/presentations/nimrod>`_
|
||||
of the talk are now available.
|
||||
@@ -1,9 +0,0 @@
|
||||
Nimrod Featured in Dr. Dobb's Journal
|
||||
=====================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 11/02/2014
|
||||
|
||||
Nimrod has been `featured<http://www.drdobbs.com/open-source/nimrod-a-new-systems-programming-languag/240165321>`_
|
||||
as the cover story in the February 2014 issue of Dr. Dobb's Journal.
|
||||
@@ -1,179 +0,0 @@
|
||||
2014-04-21 Version 0.9.4 released
|
||||
=================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 21/04/2014
|
||||
|
||||
The Nimrod development community is proud to announce the release of version
|
||||
0.9.4 of the Nimrod compiler and tools. **Note: This release has to be
|
||||
considered beta quality! Lots of new features have been implemented but
|
||||
unfortunately some do not fulfill our quality standards yet.**
|
||||
|
||||
Prebuilt binaries and instructions for building from source are available
|
||||
on the `download page <download.html>`_.
|
||||
|
||||
This release includes about
|
||||
`1400 changes <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_
|
||||
in total including various bug
|
||||
fixes, new languages features and standard library additions and improvements.
|
||||
This release brings with it support for user-defined type classes, a brand
|
||||
new VM for executing Nimrod code at compile-time and new symbol binding
|
||||
rules for clean templates.
|
||||
|
||||
It also introduces support for the brand new
|
||||
`Babel package manager <https://github.com/nimrod-code/babel>`_ which
|
||||
has itself seen its first release recently. Many of the wrappers that were
|
||||
present in the standard library have been moved to separate repositories
|
||||
and should now be installed using Babel.
|
||||
|
||||
Apart from that a new **experimental** Asynchronous IO API has been added via
|
||||
the ``asyncdispatch`` and ``asyncnet`` modules. The ``net`` and ``rawsockets``
|
||||
modules have also been added and they will likely replace the sockets
|
||||
module in the next release. The Asynchronous IO API has been designed to
|
||||
take advantage of Linux's epoll and Windows' IOCP APIs, support for BSD's
|
||||
kqueue has not been implemented yet but will be in the future.
|
||||
The Asynchronous IO API provides both
|
||||
a callback interface and an interface which allows you to write code as you
|
||||
would if you were writing synchronous code. The latter is done through
|
||||
the use of an ``await`` macro which behaves similar to C#'s await. The
|
||||
following is a very simple chat server demonstrating Nimrod's new async
|
||||
capabilities.
|
||||
|
||||
.. code-block::nim
|
||||
import asyncnet, asyncdispatch
|
||||
|
||||
var clients: seq[PAsyncSocket] = @[]
|
||||
|
||||
proc processClient(client: PAsyncSocket) {.async.} =
|
||||
while true:
|
||||
let line = await client.recvLine()
|
||||
for c in clients:
|
||||
await c.send(line & "\c\L")
|
||||
|
||||
proc serve() {.async.} =
|
||||
var server = newAsyncSocket()
|
||||
server.bindAddr(TPort(12345))
|
||||
server.listen()
|
||||
|
||||
while true:
|
||||
let client = await server.accept()
|
||||
clients.add client
|
||||
|
||||
processClient(client)
|
||||
|
||||
serve()
|
||||
runForever()
|
||||
|
||||
|
||||
Note that this feature has been implemented with Nimrod's macro system and so
|
||||
``await`` and ``async`` are no keywords.
|
||||
|
||||
Syntactic sugar for anonymous procedures has also been introduced. It too has
|
||||
been implemented as a macro. The following shows some simple usage of the new
|
||||
syntax:
|
||||
|
||||
.. code-block::nim
|
||||
import future
|
||||
|
||||
var s = @[1, 2, 3, 4, 5]
|
||||
echo(s.map((x: int) => x * 5))
|
||||
|
||||
A list of changes follows, for a comprehensive list of changes take a look
|
||||
`here <https://github.com/Araq/Nimrod/compare/v0.9.2...v0.9.4>`_.
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added ``macros.genSym`` builtin for AST generation.
|
||||
- Added ``macros.newLit`` procs for easier AST generation.
|
||||
- Added module ``logging``.
|
||||
- Added module ``asyncdispatch``.
|
||||
- Added module ``asyncnet``.
|
||||
- Added module ``net``.
|
||||
- Added module ``rawsockets``.
|
||||
- Added module ``selectors``.
|
||||
- Added module ``asynchttpserver``.
|
||||
- Added support for the new asynchronous IO in the ``httpclient`` module.
|
||||
- Added a Python-inspired ``future`` module that features upcoming additions
|
||||
to the ``system`` module.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- The scoping rules for the ``if`` statement changed for better interaction
|
||||
with the new syntactic construct ``(;)``.
|
||||
- ``OSError`` family of procedures has been deprecated. Procedures with the same
|
||||
name but which take different parameters have been introduced. These procs now
|
||||
require an error code to be passed to them. This error code can be retrieved
|
||||
using the new ``OSLastError`` proc.
|
||||
- ``os.parentDir`` now returns "" if there is no parent dir.
|
||||
- In CGI scripts stacktraces are shown to the user only
|
||||
if ``cgi.setStackTraceStdout`` is used.
|
||||
- The symbol binding rules for clean templates changed: ``bind`` for any
|
||||
symbol that's not a parameter is now the default. ``mixin`` can be used
|
||||
to require instantiation scope for a symbol.
|
||||
- ``quoteIfContainsWhite`` now escapes argument in such way that it can be safely
|
||||
passed to shell, instead of just adding double quotes.
|
||||
- ``macros.dumpTree`` and ``macros.dumpLisp`` have been made ``immediate``,
|
||||
``dumpTreeImm`` and ``dumpLispImm`` are now deprecated.
|
||||
- The ``nil`` statement has been deprecated, use an empty ``discard`` instead.
|
||||
- ``sockets.select`` now prunes sockets that are **not** ready from the list
|
||||
of sockets given to it.
|
||||
- The ``noStackFrame`` pragma has been renamed to ``asmNoStackFrame`` to
|
||||
ensure you only use it when you know what you're doing.
|
||||
- Many of the wrappers that were present in the standard library have been
|
||||
moved to separate repositories and should now be installed using Babel.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- The compiler can now warn about "uninitialized" variables. (There are no
|
||||
real uninitialized variables in Nimrod as they are initialized to binary
|
||||
zero). Activate via ``{.warning[Uninit]:on.}``.
|
||||
- The compiler now enforces the ``not nil`` constraint.
|
||||
- The compiler now supports a ``codegenDecl`` pragma for even more control
|
||||
over the generated code.
|
||||
- The compiler now supports a ``computedGoto`` pragma to support very fast
|
||||
dispatching for interpreters and the like.
|
||||
- The old evaluation engine has been replaced by a proper register based
|
||||
virtual machine. This fixes numerous bugs for ``nimrod i`` and for macro
|
||||
evaluation.
|
||||
- ``--gc:none`` produces warnings when code uses the GC.
|
||||
- A ``union`` pragma for better C interoperability is now supported.
|
||||
- A ``packed`` pragma to control the memory packing/alignment of fields in
|
||||
an object.
|
||||
- Arrays can be annotated to be ``unchecked`` for easier low level
|
||||
manipulations of memory.
|
||||
- Support for the new Babel package manager.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- Arrays can now be declared with a single integer literal ``N`` instead of a
|
||||
range; the range is then ``0..N-1``.
|
||||
- Added ``requiresInit`` pragma to enforce explicit initialization.
|
||||
- Exported templates are allowed to access hidden fields.
|
||||
- The ``using statement`` enables you to more easily author domain-specific
|
||||
languages and libraries providing OOP-like syntactic sugar.
|
||||
- Added the possibility to override various dot operators in order to handle
|
||||
calls to missing procs and reads from undeclared fields at compile-time.
|
||||
- The overload resolution now supports ``static[T]`` params that must be
|
||||
evaluable at compile-time.
|
||||
- Support for user-defined type classes has been added.
|
||||
- The *command syntax* is supported in a lot more contexts.
|
||||
- Anonymous iterators are now supported and iterators can capture variables
|
||||
of an outer proc.
|
||||
- The experimental ``strongSpaces`` parsing mode has been implemented.
|
||||
- You can annotate pointer types with regions for increased type safety.
|
||||
- Added support for the builtin ``spawn`` for easy thread pool usage.
|
||||
|
||||
|
||||
Tools improvements
|
||||
------------------
|
||||
|
||||
- c2nim can deal with a subset of C++. Use the ``--cpp`` command line option
|
||||
to activate.
|
||||
@@ -1,65 +0,0 @@
|
||||
Version 0.9.6 released
|
||||
=================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 19/10/2014
|
||||
|
||||
**Note: 0.9.6 is the last release of Nimrod. The language is being renamed to
|
||||
Nim. Nim slightly breaks compatibility.**
|
||||
|
||||
This is a maintenance release. The upcoming 0.10.0 release has
|
||||
the new features and exciting developments.
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- ``spawn`` now uses an elaborate self-adapting thread pool and as such
|
||||
has been moved into its own module. So to use it, you now have to import
|
||||
``threadpool``.
|
||||
- The symbol binding rules in generics changed: ``bar`` in ``foo.bar`` is
|
||||
now considered for implicit early binding.
|
||||
- ``c2nim`` moved into its own repository and is now a Babel package.
|
||||
- ``pas2nim`` moved into its own repository and is now a Babel package.
|
||||
- ``system.$`` for floating point types now produces a human friendly string
|
||||
representation.
|
||||
- ``uri.TUrl`` as well as the ``parseurl`` module are now deprecated in favour
|
||||
of the new ``TUri`` type in the ``uri`` module.
|
||||
- The ``destructor`` pragma has been deprecated. Use the ``override`` pragma
|
||||
instead. The destructor's name has to be ``destroy`` now.
|
||||
- ``lambda`` is not a keyword anymore.
|
||||
- **system.defined has been split into system.defined and system.declared**.
|
||||
You have to use ``--symbol`` to declare new conditional symbols that can be
|
||||
set via ``--define``.
|
||||
- ``--threadanalysis:on`` is now the default. To make your program compile
|
||||
you can disable it but this is only a temporary solution as this option
|
||||
will disappear soon!
|
||||
|
||||
|
||||
Compiler improvements
|
||||
---------------------
|
||||
|
||||
- Multi method dispatching performance has been improved by a factor of 10x for
|
||||
pathological cases.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- This version introduces the ``deprecated`` pragma statement that is used
|
||||
to handle the upcoming massive amount of symbol renames.
|
||||
- ``spawn`` can now wrap proc that has a return value. It then returns a data
|
||||
flow variable of the wrapped return type.
|
||||
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added module ``cpuinfo``.
|
||||
- Added module ``threadpool``.
|
||||
- ``sequtils.distnct`` has been renamed to ``sequtils.deduplicate``.
|
||||
- Added ``algorithm.reversed``
|
||||
- Added ``uri.combine`` and ``uri.parseUri``.
|
||||
- Some sockets procedures now support a ``SafeDisconn`` flag which causes
|
||||
them to handle disconnection errors and not raise them.
|
||||
@@ -1,198 +0,0 @@
|
||||
Version 0.10.2 released
|
||||
=======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 29/12/2014
|
||||
|
||||
This release marks the completion of a very important change to the project:
|
||||
the official renaming from Nimrod to Nim. Version 0.10.2 contains many language
|
||||
changes, some of which may break your existing code. For your convenience, we
|
||||
added a new tool called `nimfix <nimfix.html>`_ that will help you convert your
|
||||
existing projects so that it works with the latest version of the compiler.
|
||||
|
||||
Progress towards version 1.0
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Although Nim is still pre-1.0, we were able to keep the number of breaking
|
||||
changes to a minimum so far. Starting with version 1.0, we will not introduce
|
||||
any breaking changes between major release versions.
|
||||
One of Nim's goals is to ensure that the compiler is as efficient as possible.
|
||||
Take a look at the
|
||||
`latest benchmarks <https://github.com/logicchains/LPATHBench/blob/master/writeup.md>`_,
|
||||
which show that Nim is consistently near
|
||||
the top and already nearly as fast as C and C++. Recent developments, such as
|
||||
the new ``asyncdispatch`` module will allow you to write efficient web server
|
||||
applications using non-blocking code. Nim now also has a built-in thread pool
|
||||
for lightweight threading through the use of ``spawn``.
|
||||
|
||||
The unpopular "T" and "P" prefixes on types have been deprecated. Nim also
|
||||
became more expressive by weakening the distinction between statements and
|
||||
expressions. We also added a new and searchable forum, a new website, and our
|
||||
documentation generator ``docgen`` has seen major improvements. Many thanks to
|
||||
Nick Greenfield for the much more beautiful documentation!
|
||||
|
||||
|
||||
|
||||
What's left to be done
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The 1.0 release is actually very close. Apart from bug fixes, there are
|
||||
two major features missing or incomplete:
|
||||
|
||||
* ``static[T]`` needs to be defined precisely and the bugs in the
|
||||
implementation need to be fixed.
|
||||
* Overloading of the assignment operator is required for some generic
|
||||
containers and needs to be implemented.
|
||||
|
||||
This means that fancy matrix libraries will finally start to work, which used
|
||||
to be a major point of pain in the language.
|
||||
|
||||
|
||||
Nimble and other Nim tools
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Outside of the language and the compiler itself many Nim tools have seen
|
||||
considerable improvements.
|
||||
|
||||
Babel the Nim package manager has been renamed to Nimble. Nimble's purpose
|
||||
is the installation of packages containing libraries and/or applications
|
||||
written in Nim.
|
||||
Even though Nimble is still very young it already is very
|
||||
functional. It can install packages by name, it does so by accessing a
|
||||
packages repository which is hosted on a GitHub repo. Packages can also be
|
||||
installed via a Git repo URL or Mercurial repo URL. The package repository
|
||||
is searchable through Nimble. Anyone is free to add their own packages to
|
||||
the package repository by forking the
|
||||
`nim-lang/packages <https://github.com/nim-lang/packages>`_ repo and creating
|
||||
a pull request. Nimble is fully cross-platform and should be fully functional
|
||||
on all major operating systems.
|
||||
It is of course completely written in Nim.
|
||||
|
||||
Changelog
|
||||
~~~~~~~~~
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- **The language has been renamed from Nimrod to Nim.** The name of the
|
||||
compiler changed from ``nimrod`` to ``nim`` too.
|
||||
- ``system.fileHandle`` has been renamed to ``system.getFileHandle`` to
|
||||
prevent name conflicts with the new type ``FileHandle``.
|
||||
- Comments are now not part of the AST anymore, as such you cannot use them
|
||||
in place of ``discard``.
|
||||
- Large parts of the stdlib got rid of the T/P type prefixes. Instead most
|
||||
types now simply start with an uppercased letter. The
|
||||
so called "partial case sensitivity" rule is now active allowing for code
|
||||
like ``var foo: Foo`` in more contexts.
|
||||
- String case (or any non-ordinal case) statements
|
||||
without 'else' are deprecated.
|
||||
- Recursive tuple types are not allowed anymore. Use ``object`` instead.
|
||||
- The PEGS module returns ``nil`` instead of ``""`` when an optional capture
|
||||
fails to match.
|
||||
- The re module returns ``nil`` instead of ``""`` when an optional capture
|
||||
fails to match.
|
||||
- The "symmetric set difference" operator (``-+-``) never worked and has been
|
||||
removed.
|
||||
- ``defer`` is a keyword now.
|
||||
- ``func`` is a keyword now.
|
||||
- The ``using`` language feature now needs to be activated via the new
|
||||
``{.experimental.}`` pragma that enables experimental language features.
|
||||
- Destructors are now officially *experimental*.
|
||||
- Standalone ``except`` and ``finally`` statements are deprecated now.
|
||||
The standalone ``finally`` can be replaced with ``defer``,
|
||||
standalone ``except`` requires an explicit ``try``.
|
||||
- Operators ending in ``>`` are considered as "arrow like" and have their
|
||||
own priority level and are right associative. This means that
|
||||
the ``=>`` and ``->`` operators from the `future <future.html>`_ module
|
||||
work better.
|
||||
- Field names in tuples are now ignored for type comparisons. This allows
|
||||
for greater interoperability between different modules.
|
||||
- Statement lists are not converted to an implicit ``do`` block anymore. This
|
||||
means the confusing ``nnkDo`` nodes when working with macros are gone for
|
||||
good.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- The new concurrency model has been implemented including ``locks`` sections,
|
||||
lock levels and object field ``guards``.
|
||||
- The ``parallel`` statement has been implemented.
|
||||
- ``deepCopy`` has been added to the language.
|
||||
- The builtin ``procCall`` can be used to get ``super``-like functionality
|
||||
for multi methods.
|
||||
- There is a new pragma ``{.experimental.}`` that enables experimental
|
||||
language features per module, or you can enable these features on a global
|
||||
level with the ``--experimental`` command line option.
|
||||
|
||||
|
||||
Compiler Additions
|
||||
------------------
|
||||
|
||||
- The compiler now supports *mixed* Objective C / C++ / C code generation:
|
||||
The modules that use ``importCpp`` or ``importObjc`` are compiled to C++
|
||||
or Objective C code, any other module is compiled to C code. This
|
||||
improves interoperability.
|
||||
- There is a new ``parallel`` statement for safe fork&join parallel computing.
|
||||
- ``guard`` and ``lock`` pragmas have been implemented to support safer
|
||||
concurrent programming.
|
||||
- The following procs are now available at compile-time::
|
||||
|
||||
math.sqrt, math.ln, math.log10, math.log2, math.exp, math.round,
|
||||
math.arccos, math.arcsin, math.arctan, math.arctan2, math.cos,
|
||||
math.cosh, math.hypot, math.sinh, math.sin, math.tan, math.tanh,
|
||||
math.pow, math.trunc, math.floor, math.ceil, math.fmod,
|
||||
os.getEnv, os.existsEnv, os.dirExists, os.fileExists,
|
||||
system.writeFile
|
||||
|
||||
- Two backticks now produce a single backtick within an ``emit`` or ``asm``
|
||||
statement.
|
||||
- There is a new tool, `nimfix <nimfix.html>`_ to help you in updating your
|
||||
code from Nimrod to Nim.
|
||||
- The compiler's output has been prettified.
|
||||
|
||||
Library Additions
|
||||
-----------------
|
||||
|
||||
- Added module ``fenv`` to control the handling of floating-point rounding and
|
||||
exceptions (overflow, division by zero, etc.).
|
||||
- ``system.setupForeignThreadGc`` can be used for better interaction with
|
||||
foreign libraries that create threads and run a Nim callback from these
|
||||
foreign threads.
|
||||
- List comprehensions have been implemented as a macro in the ``future``
|
||||
module.
|
||||
- The new Async module (``asyncnet``) now supports SSL.
|
||||
- The ``smtp`` module now has an async implementation.
|
||||
- Added module ``asyncfile`` which implements asynchronous file reading
|
||||
and writing.
|
||||
- ``osproc.kill`` has been added.
|
||||
- ``asyncnet`` and ``asynchttpserver`` now support ``SO_REUSEADDR``.
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- ``nil`` and ``NULL`` are now preserved between Nim and databases in the
|
||||
``db_*`` modules.
|
||||
- Fixed issue with OS module in non-unicode mode on Windows.
|
||||
- Fixed issue with ``x.low``
|
||||
(`#1366 <https://github.com/Araq/Nim/issues/1366>`_).
|
||||
- Fixed tuple unpacking issue inside closure iterators
|
||||
(`#1067 <https://github.com/Araq/Nim/issues/1067>`_).
|
||||
- Fixed ENDB compilation issues.
|
||||
- Many ``asynchttpserver`` fixes.
|
||||
- Macros can now keep global state across macro calls
|
||||
(`#903 <https://github.com/Araq/Nim/issues/903>`_).
|
||||
- ``osproc`` fixes on Windows.
|
||||
- ``osproc.terminate`` fixed.
|
||||
- Improvements to exception handling in async procedures.
|
||||
(`#1487 <https://github.com/Araq/Nim/issues/1487>`_).
|
||||
- ``try`` now works at compile-time.
|
||||
- Fixes ``T = ref T`` to be an illegal recursive type.
|
||||
- Self imports are now disallowed.
|
||||
- Improved effect inference.
|
||||
- Fixes for the ``math`` module on Windows.
|
||||
- User defined pragmas will now work for generics that have
|
||||
been instantiated in different modules.
|
||||
- Fixed queue exhaustion bug.
|
||||
- Many, many more.
|
||||
@@ -1,396 +0,0 @@
|
||||
Version 0.11.0 released
|
||||
=======================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 30/04/2015
|
||||
|
||||
With this release we are one step closer to reaching version 1.0 and by
|
||||
extension the persistence of the Nim specification. As mentioned in the
|
||||
previous release notes, starting with version 1.0, we will not be introducing
|
||||
any more breaking changes to Nim.
|
||||
|
||||
The *language* itself is very close to 1.0, the primary area that requires
|
||||
more work is the standard library.
|
||||
|
||||
Take a look at the `download <download.html>`_ page for binaries (Windows-only)
|
||||
and 0.11.0 snapshots of the source code. The Windows installer now also
|
||||
includes `Aporia <https://github.com/nim-lang/aporia>`_,
|
||||
`Nimble <https://github.com/nim-lang/nimble>`_ and other useful tools to get
|
||||
you started with Nim.
|
||||
|
||||
What's left to be done
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The 1.0 release is expected by the end of this year. Rumors say it will be in
|
||||
summer 2015. What's left:
|
||||
|
||||
* Bug fixes, bug fixes, bug fixes, in particular:
|
||||
- The remaining bugs of the lambda lifting pass that is responsible to enable
|
||||
closures and closure iterators need to be fixed.
|
||||
- ``concept`` needs to be refined, a nice name for the feature is not enough.
|
||||
- Destructors need to be refined.
|
||||
- ``static[T]`` needs to be fixed.
|
||||
- Finish the implementation of the 'parallel' statement.
|
||||
* ``immediate`` templates and macros will be deprecated as these will soon be
|
||||
completely unnecessary, instead the ``typed`` or ``untyped`` metatypes can
|
||||
be used.
|
||||
* More of the standard library should be moved to Nimble packages and what's
|
||||
left should use the features we have for concurrency and parallelism.
|
||||
|
||||
|
||||
|
||||
Changes affecting backwards compatibility
|
||||
-----------------------------------------
|
||||
|
||||
- Parameter names are finally properly ``gensym``'ed. This can break
|
||||
templates though that used to rely on the fact that they are not.
|
||||
(Bug #1915.) This means this doesn't compile anymore:
|
||||
|
||||
.. code-block:: nim
|
||||
|
||||
template doIt(body: stmt) {.immediate.} =
|
||||
# this used to inject the 'str' parameter:
|
||||
proc res(str: string) =
|
||||
body
|
||||
|
||||
doIt:
|
||||
echo str # Error: undeclared identifier: 'str'
|
||||
..
|
||||
|
||||
This used to inject the ``str`` parameter into the scope of the body.
|
||||
Declare the ``doIt`` template as ``immediate, dirty`` to get the old
|
||||
behaviour.
|
||||
- Tuple field names are not ignored anymore, this caused too many problems
|
||||
in practice so now the behaviour is as it was for version 0.9.6: If field
|
||||
names exist for the tuple type, they are checked.
|
||||
- ``logging.level`` and ``logging.handlers`` are no longer exported.
|
||||
``addHandler``, ``getHandlers``, ``setLogFilter`` and ``getLogFilter``
|
||||
should be used instead.
|
||||
- ``nim idetools`` has been replaced by a separate
|
||||
tool `nimsuggest <0.11.0/nimsuggest.html>`_.
|
||||
- *arrow like* operators are not right associative anymore and are required
|
||||
to end with either ``->``, ``~>`` or
|
||||
``=>``, not just ``>``. Examples of operators still considered arrow like:
|
||||
``->``, ``==>``, ``+=>``. On the other hand, the following operators are now
|
||||
considered regular operators again: ``|>``, ``-+>``, etc.
|
||||
- Typeless parameters are now only allowed in templates and macros. The old
|
||||
way turned out to be too error-prone.
|
||||
- The 'addr' and 'type' operators are now parsed as unary function
|
||||
application. This means ``type(x).name`` is now parsed as ``(type(x)).name``
|
||||
and not as ``type((x).name)``. Note that this also affects the AST
|
||||
structure; for immediate macro parameters ``nkCall('addr', 'x')`` is
|
||||
produced instead of ``nkAddr('x')``.
|
||||
- ``concept`` is now a keyword and is used instead of ``generic``.
|
||||
- The ``inc``, ``dec``, ``+=``, ``-=`` builtins now produce OverflowError
|
||||
exceptions. This means code like the following:
|
||||
|
||||
.. code-block:: nim
|
||||
var x = low(T)
|
||||
while x <= high(T):
|
||||
echo x
|
||||
inc x
|
||||
|
||||
Needs to be replaced by something like this:
|
||||
|
||||
.. code-block:: nim
|
||||
var x = low(T).int
|
||||
while x <= high(T).int:
|
||||
echo x.T
|
||||
inc x
|
||||
|
||||
- **Negative indexing for slicing does not work anymore!** Instead
|
||||
of ``a[0.. -1]`` you can
|
||||
use ``a[0.. ^1]``. This also works with accessing a single
|
||||
element ``a[^1]``. Note that we cannot detect this reliably as it is
|
||||
determined at **runtime** whether negative indexing is used!
|
||||
``a[0.. -1]`` now produces the empty string/sequence.
|
||||
- The compiler now warns about code like ``foo +=1`` which uses inconsistent
|
||||
spacing around binary operators. Later versions of the language will parse
|
||||
these as unary operators instead so that ``echo $foo`` finally can do what
|
||||
people expect it to do.
|
||||
- ``system.untyped`` and ``system.typed`` have been introduced as aliases
|
||||
for ``expr`` and ``stmt``. The new names capture the semantics much better
|
||||
and most likely ``expr`` and ``stmt`` will be deprecated in favor of the
|
||||
new names.
|
||||
- The ``split`` method in module ``re`` has changed. It now handles the case
|
||||
of matches having a length of 0, and empty strings being yielded from the
|
||||
iterator. A notable change might be that a pattern being matched at the
|
||||
beginning and end of a string, will result in an empty string being produced
|
||||
at the start and the end of the iterator.
|
||||
- The compiler and nimsuggest now count columns starting with 1, not 0 for
|
||||
consistency with the rest of the world.
|
||||
|
||||
|
||||
Language Additions
|
||||
------------------
|
||||
|
||||
- For empty ``case object`` branches ``discard`` can finally be used instead
|
||||
of ``nil``.
|
||||
- Automatic dereferencing is now done for the first argument of a routine
|
||||
call if overloading resolution produces no match otherwise. This feature
|
||||
has to be enabled with
|
||||
the `experimental <0.11.0/manual.html#pragmas-experimental-pragma>`_ pragma.
|
||||
- Objects that do not use inheritance nor ``case`` can be put into ``const``
|
||||
sections. This means that finally this is possible and produces rather
|
||||
nice code:
|
||||
|
||||
.. code-block:: nim
|
||||
import tables
|
||||
|
||||
const
|
||||
foo = {"ah": "finally", "this": "is", "possible.": "nice!"}.toTable()
|
||||
|
||||
|
||||
- Ordinary parameters can follow after a varargs parameter. This means the
|
||||
following is finally accepted by the compiler:
|
||||
|
||||
.. code-block:: nim
|
||||
template takesBlock(a, b: int, x: varargs[expr]; blck: stmt) =
|
||||
blck
|
||||
echo a, b
|
||||
|
||||
takesBlock 1, 2, "some", 0.90, "random stuff":
|
||||
echo "yay"
|
||||
|
||||
- Overloading by 'var T' is now finally possible:
|
||||
|
||||
.. code-block:: nim
|
||||
proc varOrConst(x: var int) = echo "var"
|
||||
proc varOrConst(x: int) = echo "const"
|
||||
|
||||
var x: int
|
||||
varOrConst(x) # "var"
|
||||
varOrConst(45) # "const"
|
||||
|
||||
- Array and seq indexing can now use the builtin ``^`` operator to access
|
||||
things from backwards: ``a[^1]`` is like Python's ``a[-1]``.
|
||||
- A first version of the specification and implementation of the overloading
|
||||
of the assignment operator has arrived!
|
||||
- ``system.len`` for strings and sequences now returns 0 for nil.
|
||||
|
||||
- A single underscore can now be used to discard values when unpacking tuples:
|
||||
|
||||
.. code-block:: nim
|
||||
let (path, _, _) = os.splitFile("path/file.ext")
|
||||
|
||||
|
||||
- ``marshal.$$`` and ``marshal.to`` can be executed at compile-time.
|
||||
- Interoperability with C++ improved tremendously; C++'s templates and
|
||||
operators can be wrapped directly. See
|
||||
`this <0.11.0/nimc.html#additional-features-importcpp-pragma>`_
|
||||
for more information.
|
||||
- ``macros.getType`` can be used to query an AST's type at compile-time. This
|
||||
enables more powerful macros, for instance *currying* can now be done with
|
||||
a macro.
|
||||
|
||||
|
||||
Library additions
|
||||
-----------------
|
||||
|
||||
- ``reversed`` proc added to the ``unicode`` module.
|
||||
- Added multipart param to httpclient's ``post`` and ``postContent`` together
|
||||
with a ``newMultipartData`` proc.
|
||||
- Added `%*` operator for JSON.
|
||||
- The compiler is now available as Nimble package for c2nim.
|
||||
- Added ``..^`` and ``..<`` templates to system so that the rather annoying
|
||||
space between ``.. <`` and ``.. ^`` is not necessary anymore.
|
||||
- Added ``system.xlen`` for strings and sequences to get back the old ``len``
|
||||
operation that doesn't check for ``nil`` for efficiency.
|
||||
- Added sexp.nim to parse and generate sexp.
|
||||
|
||||
|
||||
Bugfixes
|
||||
--------
|
||||
|
||||
- Fixed internal compiler error when using ``char()`` in an echo call
|
||||
(`#1788 <https://github.com/Araq/Nim/issues/1788>`_).
|
||||
- Fixed Windows cross-compilation on Linux.
|
||||
- Overload resolution now works for types distinguished only by a
|
||||
``static[int]`` param
|
||||
(`#1056 <https://github.com/Araq/Nim/issues/1056>`_).
|
||||
- Other fixes relating to generic types and static params.
|
||||
- Fixed some compiler crashes with unnamed tuples
|
||||
(`#1774 <https://github.com/Araq/Nim/issues/1774>`_).
|
||||
- Fixed ``channels.tryRecv`` blocking
|
||||
(`#1816 <https://github.com/Araq/Nim/issues/1816>`_).
|
||||
- Fixed generic instantiation errors with ``typedesc``
|
||||
(`#419 <https://github.com/Araq/Nim/issues/419>`_).
|
||||
- Fixed generic regression where the compiler no longer detected constant
|
||||
expressions properly (`#544 <https://github.com/Araq/Nim/issues/544>`_).
|
||||
- Fixed internal error with generic proc using ``static[T]`` in a specific
|
||||
way (`#1049 <https://github.com/Araq/Nim/issues/1049>`_).
|
||||
- More fixes relating to generics (`#1820 <https://github.com/Araq/Nim/issues/1820>`_,
|
||||
`#1050 <https://github.com/Araq/Nim/issues/1050>`_,
|
||||
`#1859 <https://github.com/Araq/Nim/issues/1859>`_,
|
||||
`#1858 <https://github.com/Araq/Nim/issues/1858>`_).
|
||||
- Fixed httpclient to properly encode queries.
|
||||
- Many fixes to the ``uri`` module.
|
||||
- Async sockets are now closed on error.
|
||||
- Fixes to httpclient's handling of multipart data.
|
||||
- Fixed GC segfaults with asynchronous sockets
|
||||
(`#1796 <https://github.com/Araq/Nim/issues/1796>`_).
|
||||
- Added more versions to openssl's DLL version list
|
||||
(`076f993 <https://github.com/Araq/Nim/commit/076f993>`_).
|
||||
- Fixed shallow copy in iterators being broken
|
||||
(`#1803 <https://github.com/Araq/Nim/issues/1803>`_).
|
||||
- ``nil`` can now be inserted into tables with the ``db_sqlite`` module
|
||||
(`#1866 <https://github.com/Araq/Nim/issues/1866>`_).
|
||||
- Fixed "Incorrect assembler generated"
|
||||
(`#1907 <https://github.com/Araq/Nim/issues/1907>`_)
|
||||
- Fixed "Expression templates that define macros are unusable in some contexts"
|
||||
(`#1903 <https://github.com/Araq/Nim/issues/1903>`_)
|
||||
- Fixed "a second level generic subclass causes the compiler to crash"
|
||||
(`#1919 <https://github.com/Araq/Nim/issues/1919>`_)
|
||||
- Fixed "nim 0.10.2 generates invalid AsyncHttpClient C code for MSVC "
|
||||
(`#1901 <https://github.com/Araq/Nim/issues/1901>`_)
|
||||
- Fixed "1 shl n produces wrong C code"
|
||||
(`#1928 <https://github.com/Araq/Nim/issues/1928>`_)
|
||||
- Fixed "Internal error on tuple yield"
|
||||
(`#1838 <https://github.com/Araq/Nim/issues/1838>`_)
|
||||
- Fixed "ICE with template"
|
||||
(`#1915 <https://github.com/Araq/Nim/issues/1915>`_)
|
||||
- Fixed "include the tool directory in the installer as it is required by koch"
|
||||
(`#1947 <https://github.com/Araq/Nim/issues/1947>`_)
|
||||
- Fixed "Can't compile if file location contains spaces on Windows"
|
||||
(`#1955 <https://github.com/Araq/Nim/issues/1955>`_)
|
||||
- Fixed "List comprehension macro only supports infix checks as guards"
|
||||
(`#1920 <https://github.com/Araq/Nim/issues/1920>`_)
|
||||
- Fixed "wrong field names of compatible tuples in generic types"
|
||||
(`#1910 <https://github.com/Araq/Nim/issues/1910>`_)
|
||||
- Fixed "Macros within templates no longer work as expected"
|
||||
(`#1944 <https://github.com/Araq/Nim/issues/1944>`_)
|
||||
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
|
||||
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
|
||||
- Fixed "Compiling for Standalone AVR broken in 0.10.2"
|
||||
(`#1964 <https://github.com/Araq/Nim/issues/1964>`_)
|
||||
- Fixed "Code generation for mitems with tuple elements"
|
||||
(`#1833 <https://github.com/Araq/Nim/issues/1833>`_)
|
||||
- Fixed "httpclient.HttpMethod should not be an enum"
|
||||
(`#1962 <https://github.com/Araq/Nim/issues/1962>`_)
|
||||
- Fixed "terminal / eraseScreen() throws an OverflowError"
|
||||
(`#1906 <https://github.com/Araq/Nim/issues/1906>`_)
|
||||
- Fixed "setControlCHook(nil) disables registered quit procs"
|
||||
(`#1546 <https://github.com/Araq/Nim/issues/1546>`_)
|
||||
- Fixed "Unexpected idetools behaviour"
|
||||
(`#325 <https://github.com/Araq/Nim/issues/325>`_)
|
||||
- Fixed "Unused lifted lambda does not compile"
|
||||
(`#1642 <https://github.com/Araq/Nim/issues/1642>`_)
|
||||
- Fixed "'low' and 'high' don't work with cstring asguments"
|
||||
(`#2030 <https://github.com/Araq/Nim/issues/2030>`_)
|
||||
- Fixed "Converting to int does not round in JS backend"
|
||||
(`#1959 <https://github.com/Araq/Nim/issues/1959>`_)
|
||||
- Fixed "Internal error genRecordField 2 when adding region to pointer."
|
||||
(`#2039 <https://github.com/Araq/Nim/issues/2039>`_)
|
||||
- Fixed "Macros fail to compile when compiled with --os:standalone"
|
||||
(`#2041 <https://github.com/Araq/Nim/issues/2041>`_)
|
||||
- Fixed "Reading from {.compileTime.} variables can cause code generation to fail"
|
||||
(`#2022 <https://github.com/Araq/Nim/issues/2022>`_)
|
||||
- Fixed "Passing overloaded symbols to templates fails inside generic procedures"
|
||||
(`#1988 <https://github.com/Araq/Nim/issues/1988>`_)
|
||||
- Fixed "Compiling iterator with object assignment in release mode causes "var not init""
|
||||
(`#2023 <https://github.com/Araq/Nim/issues/2023>`_)
|
||||
- Fixed "calling a large number of macros doing some computation fails"
|
||||
(`#1989 <https://github.com/Araq/Nim/issues/1989>`_)
|
||||
- Fixed "Can't get Koch to install nim under Windows"
|
||||
(`#2061 <https://github.com/Araq/Nim/issues/2061>`_)
|
||||
- Fixed "Template with two stmt parameters segfaults compiler"
|
||||
(`#2057 <https://github.com/Araq/Nim/issues/2057>`_)
|
||||
- Fixed "`noSideEffect` not affected by `echo`"
|
||||
(`#2011 <https://github.com/Araq/Nim/issues/2011>`_)
|
||||
- Fixed "Compiling with the cpp backend ignores --passc"
|
||||
(`#1601 <https://github.com/Araq/Nim/issues/1601>`_)
|
||||
- Fixed "Put untyped procedure parameters behind the experimental pragma"
|
||||
(`#1956 <https://github.com/Araq/Nim/issues/1956>`_)
|
||||
- Fixed "generic regression"
|
||||
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
|
||||
- Fixed "generic regression"
|
||||
(`#2073 <https://github.com/Araq/Nim/issues/2073>`_)
|
||||
- Fixed "Regression in template lookup with generics"
|
||||
(`#2004 <https://github.com/Araq/Nim/issues/2004>`_)
|
||||
- Fixed "GC's growObj is wrong for edge cases"
|
||||
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
|
||||
- Fixed "Compiler internal error when creating an array out of a typeclass"
|
||||
(`#1131 <https://github.com/Araq/Nim/issues/1131>`_)
|
||||
- Fixed "GC's growObj is wrong for edge cases"
|
||||
(`#2070 <https://github.com/Araq/Nim/issues/2070>`_)
|
||||
- Fixed "Invalid Objective-C code generated when calling class method"
|
||||
(`#2068 <https://github.com/Araq/Nim/issues/2068>`_)
|
||||
- Fixed "walkDirRec Error"
|
||||
(`#2116 <https://github.com/Araq/Nim/issues/2116>`_)
|
||||
- Fixed "Typo in code causes compiler SIGSEGV in evalAtCompileTime"
|
||||
(`#2113 <https://github.com/Araq/Nim/issues/2113>`_)
|
||||
- Fixed "Regression on exportc"
|
||||
(`#2118 <https://github.com/Araq/Nim/issues/2118>`_)
|
||||
- Fixed "Error message"
|
||||
(`#2102 <https://github.com/Araq/Nim/issues/2102>`_)
|
||||
- Fixed "hint[path] = off not working in nim.cfg"
|
||||
(`#2103 <https://github.com/Araq/Nim/issues/2103>`_)
|
||||
- Fixed "compiler crashes when getting a tuple from a sequence of generic tuples"
|
||||
(`#2121 <https://github.com/Araq/Nim/issues/2121>`_)
|
||||
- Fixed "nim check hangs with when"
|
||||
(`#2123 <https://github.com/Araq/Nim/issues/2123>`_)
|
||||
- Fixed "static[T] param in nested type resolve/caching issue"
|
||||
(`#2125 <https://github.com/Araq/Nim/issues/2125>`_)
|
||||
- Fixed "repr should display ``\0``"
|
||||
(`#2124 <https://github.com/Araq/Nim/issues/2124>`_)
|
||||
- Fixed "'nim check' never ends in case of recursive dependency "
|
||||
(`#2051 <https://github.com/Araq/Nim/issues/2051>`_)
|
||||
- Fixed "From macros: Error: unhandled exception: sons is not accessible"
|
||||
(`#2167 <https://github.com/Araq/Nim/issues/2167>`_)
|
||||
- Fixed "`fieldPairs` doesn't work inside templates"
|
||||
(`#1902 <https://github.com/Araq/Nim/issues/1902>`_)
|
||||
- Fixed "fields iterator misbehavior on break statement"
|
||||
(`#2134 <https://github.com/Araq/Nim/issues/2134>`_)
|
||||
- Fixed "Fix for compiler not building anymore since #c3244ef1ff"
|
||||
(`#2193 <https://github.com/Araq/Nim/issues/2193>`_)
|
||||
- Fixed "JSON parser fails in cpp output mode"
|
||||
(`#2199 <https://github.com/Araq/Nim/issues/2199>`_)
|
||||
- Fixed "macros.getType mishandles void return"
|
||||
(`#2211 <https://github.com/Araq/Nim/issues/2211>`_)
|
||||
- Fixed "Regression involving templates instantiated within generics"
|
||||
(`#2215 <https://github.com/Araq/Nim/issues/2215>`_)
|
||||
- Fixed ""Error: invalid type" for 'not nil' on generic type."
|
||||
(`#2216 <https://github.com/Araq/Nim/issues/2216>`_)
|
||||
- Fixed "--threads:on breaks async"
|
||||
(`#2074 <https://github.com/Araq/Nim/issues/2074>`_)
|
||||
- Fixed "Type mismatch not always caught, can generate bad code for C backend."
|
||||
(`#2169 <https://github.com/Araq/Nim/issues/2169>`_)
|
||||
- Fixed "Failed C compilation when storing proc to own type in object"
|
||||
(`#2233 <https://github.com/Araq/Nim/issues/2233>`_)
|
||||
- Fixed "Unknown line/column number in constant declaration type conversion error"
|
||||
(`#2252 <https://github.com/Araq/Nim/issues/2252>`_)
|
||||
- Fixed "Adding {.compile.} fails if nimcache already exists."
|
||||
(`#2247 <https://github.com/Araq/Nim/issues/2247>`_)
|
||||
- Fixed "Two different type names generated for a single type (C backend)"
|
||||
(`#2250 <https://github.com/Araq/Nim/issues/2250>`_)
|
||||
- Fixed "Ambigous call when it should not be"
|
||||
(`#2229 <https://github.com/Araq/Nim/issues/2229>`_)
|
||||
- Fixed "Make sure we can load root urls"
|
||||
(`#2227 <https://github.com/Araq/Nim/issues/2227>`_)
|
||||
- Fixed "Failure to slice a string with an int subrange type"
|
||||
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
|
||||
- Fixed "documentation error"
|
||||
(`#2205 <https://github.com/Araq/Nim/issues/2205>`_)
|
||||
- Fixed "Code growth when using `const`"
|
||||
(`#1940 <https://github.com/Araq/Nim/issues/1940>`_)
|
||||
- Fixed "Instances of generic types confuse overload resolution"
|
||||
(`#2220 <https://github.com/Araq/Nim/issues/2220>`_)
|
||||
- Fixed "Compiler error when initializing sdl2's EventType"
|
||||
(`#2316 <https://github.com/Araq/Nim/issues/2316>`_)
|
||||
- Fixed "Parallel disjoint checking can't handle `<`, `items`, or arrays"
|
||||
(`#2287 <https://github.com/Araq/Nim/issues/2287>`_)
|
||||
- Fixed "Strings aren't copied in parallel loop"
|
||||
(`#2286 <https://github.com/Araq/Nim/issues/2286>`_)
|
||||
- Fixed "JavaScript compiler crash with tables"
|
||||
(`#2298 <https://github.com/Araq/Nim/issues/2298>`_)
|
||||
- Fixed "Range checker too restrictive"
|
||||
(`#1845 <https://github.com/Araq/Nim/issues/1845>`_)
|
||||
- Fixed "Failure to slice a string with an int subrange type"
|
||||
(`#794 <https://github.com/Araq/Nim/issues/794>`_)
|
||||
- Fixed "Remind user when compiling in debug mode"
|
||||
(`#1868 <https://github.com/Araq/Nim/issues/1868>`_)
|
||||
- Fixed "Compiler user guide has jumbled options/commands."
|
||||
(`#1819 <https://github.com/Araq/Nim/issues/1819>`_)
|
||||
- Fixed "using `method`: 1 in a objects constructor fails when compiling"
|
||||
(`#1791 <https://github.com/Araq/Nim/issues/1791>`_)
|
||||
@@ -1,12 +0,0 @@
|
||||
Version 0.11.2 released
|
||||
==================================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Andreas Rumpf on 04/05/2015
|
||||
|
||||
This is just a bugfix release that fixes the most pressing regressions we
|
||||
introduced with version 0.11.0. The way types are computed was
|
||||
changed significantly causing all sort of problems. Sorry for the
|
||||
inconvenience; we grew overconfident our large test suite would prevent these
|
||||
things.
|
||||
@@ -1,26 +0,0 @@
|
||||
First Nim conference
|
||||
====================
|
||||
|
||||
.. container:: metadata
|
||||
|
||||
Posted by Dominik Picheta on 16/10/2015
|
||||
|
||||
.. raw::html
|
||||
|
||||
<img src="../assets/zeo/banner.jpg" alt="First Nim conference in Ukraine!" width="682"/>
|
||||
|
||||
This Autumn you have the unique opportunity to take part in the first Nim event
|
||||
held in Kyiv and to meet the creator of the Nim programming language -
|
||||
Andreas Rumpf. The event is hosted by Zeo Alliance and is taking place between
|
||||
14-15 November 2015 in Kyiv, Ukraine.
|
||||
|
||||
During the workshop you will learn:
|
||||
|
||||
- The basics of the language including its safe and unsafe subsets.
|
||||
- How to use Nim to develop web applications.
|
||||
- How Nim's meta programming capabilities make Nim the ultimate glue language,
|
||||
excellent at interoperability with C++, JavaScript, Java and others.
|
||||
- Games in Nim and the ability to rapidly prototype without sacrificing speed.
|
||||
|
||||
Registration is free, but the number of places is limited. More details
|
||||
can be found `here <https://nimworkshop.splashthat.com/>`_.
|
||||