From 25ddc4144e29c9bfe1f438d20c5fbf1a452d94ff Mon Sep 17 00:00:00 2001 From: Alejandro R Mosteo Date: Tue, 15 Oct 2024 16:23:10 +0200 Subject: [PATCH] Automated deployment: Fri Nov 22 00:28:13 UTC 2024 729b912568dde360305d724ed3426a76c8b046e9 --- .github/workflows/update.yaml | 21 + .gitignore | 5 + 404.html | 24 + CNAME | 1 + Gemfile | 33 + README.md | 2 + _badges/a0b_armv7m.json | 5 + _badges/a0b_armv7m_systick_clock.json | 5 + _badges/a0b_armv7m_systick_clock_timer.json | 5 + _badges/a0b_atsam3x8e.json | 5 + _badges/a0b_atsam3x8e_gpio.json | 5 + _badges/a0b_atsam3x8e_tc5_timer.json | 5 + _badges/a0b_atsam3x8e_twi_i2c.json | 5 + _badges/a0b_base.json | 5 + _badges/a0b_callbacks.json | 5 + _badges/a0b_exti.json | 5 + _badges/a0b_gpio.json | 5 + _badges/a0b_i2c.json | 5 + _badges/a0b_stm32f401.json | 5 + _badges/a0b_stm32f401_dma.json | 5 + _badges/a0b_stm32f401_gpio.json | 5 + _badges/a0b_stm32f401_i2c.json | 5 + _badges/a0b_stm32f401_tim11_timer.json | 5 + _badges/a0b_time.json | 5 + _badges/a0b_timer.json | 5 + _badges/aaa.json | 5 + _badges/ada_fuse.json | 5 + _badges/ada_gui.json | 5 + _badges/ada_language_server.json | 5 + _badges/ada_lua.json | 5 + _badges/ada_pretty.json | 5 + _badges/ada_toml.json | 5 + _badges/ada_voxel_space_demo.json | 5 + _badges/adabots.json | 5 + _badges/adacl.json | 5 + _badges/adare_dilithium5.json | 5 + _badges/adare_hqc256.json | 5 + _badges/adasat.json | 5 + _badges/adayaml.json | 5 + _badges/adl_middleware.json | 5 + _badges/admpfr.json | 5 + _badges/ado.json | 5 + _badges/ado_all.json | 5 + _badges/ado_mysql.json | 5 + _badges/ado_postgresql.json | 5 + _badges/ado_sqlite.json | 5 + _badges/aflex.json | 5 + _badges/agpl.json | 5 + _badges/aicwl.json | 5 + _badges/ajunitgen.json | 5 + _badges/akt.json | 5 + _badges/alire-badge.json | 5 + _badges/alr2appimage.json | 5 + _badges/anagram.json | 5 + _badges/ansiada.json | 5 + _badges/aoa_22.json | 5 + _badges/aoa_23.json | 5 + _badges/apdf.json | 5 + _badges/are.json | 5 + _badges/asfml.json | 5 + _badges/ashell.json | 5 + _badges/asis.json | 5 + _badges/atari_atr_tools.json | 5 + _badges/atari_exe_tools.json | 5 + _badges/atomic.json | 5 + _badges/audio_base.json | 5 + _badges/audio_wavefiles.json | 5 + _badges/aunit.json | 5 + _badges/automate.json | 5 + _badges/avltrees.json | 5 + _badges/avrada_examples.json | 5 + _badges/avrada_lib.json | 5 + _badges/avrada_mcu.json | 5 + _badges/avrada_rts.json | 5 + _badges/awa.json | 5 + _badges/awa_unit.json | 5 + _badges/aws.json | 5 + _badges/axmpp.json | 5 + _badges/ayacc.json | 5 + _badges/azip.json | 5 + _badges/b2ssum.json | 5 + _badges/bar_code_drawing.json | 5 + _badges/bar_codes.json | 5 + _badges/basalt.json | 5 + _badges/base64.json | 5 + _badges/bb_pico_bsp.json | 5 + _badges/bbqueue.json | 5 + _badges/bbs.json | 5 + _badges/bbs_embed_common.json | 5 + _badges/bbs_embed_linux.json | 5 + _badges/bbs_lisp.json | 5 + _badges/bbs_simcpu.json | 5 + _badges/bbs_webif.json | 5 + _badges/bbt.json | 5 + _badges/binary_trees.json | 5 + _badges/bingada.json | 5 + _badges/bit_sets.json | 5 + _badges/blake2s.json | 5 + _badges/blinkenlights.json | 5 + _badges/bme280.json | 5 + _badges/brackelib.json | 5 + _badges/c_strings.json | 5 + _badges/canberra_ada.json | 5 + _badges/cashe.json | 5 + _badges/cbsg.json | 5 + _badges/chacha20.json | 5 + _badges/checksum.json | 5 + _badges/cheddar.json | 5 + _badges/chests.json | 5 + _badges/chipmunk2d.json | 5 + _badges/clic.json | 5 + _badges/cmd_ada.json | 5 + _badges/cobs.json | 5 + _badges/controlled_io.json | 5 + _badges/cortex_m.json | 5 + _badges/crc_32.json | 5 + _badges/curl.json | 5 + _badges/dashera.json | 5 + _badges/db_maker.json | 5 + _badges/dcf.json | 5 + _badges/dependency_graph_extractor.json | 5 + _badges/dg_loada.json | 5 + _badges/dir_iterators.json | 5 + _badges/dirty_booleans.json | 5 + _badges/dotenv.json | 5 + _badges/dummyserver.json | 5 + _badges/dynamo.json | 5 + _badges/eagle_lander.json | 5 + _badges/easy_graphics.json | 5 + _badges/edc_client.json | 5 + _badges/eeprom_i2c.json | 5 + _badges/elada.json | 5 + _badges/elevator.json | 5 + _badges/elogs.json | 5 + _badges/emacs_ada_mode.json | 5 + _badges/emacs_gpr_mode.json | 5 + _badges/emacs_gpr_query.json | 5 + _badges/emacs_wisi.json | 5 + _badges/emacs_wisitoken_grammar_mode.json | 5 + _badges/embedded_components.json | 5 + _badges/emdee.json | 5 + _badges/emojis.json | 5 + _badges/encryption_utilities.json | 5 + _badges/endianness.json | 5 + _badges/enet.json | 5 + _badges/enet_stm32.json | 5 + _badges/epoll.json | 5 + _badges/esp_idf.json | 5 + _badges/ethernet.json | 5 + _badges/euler_tools.json | 5 + _badges/evdev.json | 5 + _badges/ews.json | 5 + _badges/excel_writer.json | 5 + _badges/fastpbkdf2_ada.json | 5 + _badges/felix.json | 5 + _badges/florist.json | 5 + _badges/florist_blady.json | 5 + _badges/freetypeada.json | 5 + _badges/garlic.json | 5 + _badges/geo_coords.json | 5 + _badges/geste.json | 5 + _badges/geste_examples.json | 5 + _badges/get_password.json | 5 + _badges/getada.json | 5 + _badges/getopt.json | 5 + _badges/gfx_core.json | 5 + _badges/gfx_rasteriser.json | 5 + _badges/gid.json | 5 + _badges/globe_3d.json | 5 + _badges/glut.json | 5 + _badges/gnat_arm_elf.json | 5 + _badges/gnat_avr_elf.json | 5 + _badges/gnat_external.json | 5 + _badges/gnat_math_extensions.json | 5 + _badges/gnat_native.json | 5 + _badges/gnat_riscv64_elf.json | 5 + _badges/gnat_xtensa_esp32_elf.json | 5 + _badges/gnatcoll.json | 5 + _badges/gnatcoll_gmp.json | 5 + _badges/gnatcoll_iconv.json | 5 + _badges/gnatcoll_lzma.json | 5 + _badges/gnatcoll_omp.json | 5 + _badges/gnatcoll_postgres.json | 5 + _badges/gnatcoll_python.json | 5 + _badges/gnatcoll_python3.json | 5 + _badges/gnatcoll_readline.json | 5 + _badges/gnatcoll_sql.json | 5 + _badges/gnatcoll_sqlite.json | 5 + _badges/gnatcoll_syslog.json | 5 + _badges/gnatcoll_xref.json | 5 + _badges/gnatcoll_zlib.json | 5 + _badges/gnatcov.json | 5 + _badges/gnatdist_garlic.json | 5 + _badges/gnatdoc.json | 5 + _badges/gnatformat.json | 5 + _badges/gnatprove.json | 5 + _badges/gnoga.json | 5 + _badges/gpr_unit_provider.json | 5 + _badges/gprbuild.json | 5 + _badges/gsl.json | 5 + _badges/gtkada.json | 5 + _badges/gwindows.json | 5 + _badges/hac.json | 5 + _badges/hal.json | 5 + _badges/hangman.json | 5 + _badges/hello.json | 5 + _badges/hex_format.json | 5 + _badges/hirtos.json | 5 + _badges/hirtos_separation_kernel.json | 5 + _badges/hmac.json | 5 + _badges/hmc5883.json | 5 + _badges/honki_tonks_zivilisationen.json | 5 + _badges/hp41cx_tools.json | 5 + _badges/hungarian.json | 5 + _badges/image_io.json | 5 + _badges/image_random.json | 5 + _badges/ini_files.json | 5 + _badges/inotify.json | 5 + _badges/intl.json | 5 + _badges/iso.json | 5 + _badges/iterators.json | 5 + _badges/itsybitsy_bsp.json | 5 + _badges/itsybitsy_rp2040_bsp.json | 5 + _badges/j2ada.json | 5 + _badges/jintp.json | 5 + _badges/journada.json | 5 + _badges/json.json | 5 + _badges/jupyter_kernel.json | 5 + _badges/jwt.json | 5 + _badges/keypadder.json | 5 + _badges/keystoreada.json | 5 + _badges/labs_radar.json | 5 + _badges/labs_solar_system.json | 5 + _badges/labs_standalone.json | 5 + _badges/lace.json | 5 + _badges/lace_box2d.json | 5 + _badges/lace_bullet.json | 5 + _badges/lace_c_math.json | 5 + _badges/lace_collada.json | 5 + _badges/lace_gel.json | 5 + _badges/lace_gel_animation_demo.json | 5 + _badges/lace_gel_full_demo.json | 5 + _badges/lace_math.json | 5 + _badges/lace_opengl.json | 5 + _badges/lace_physics.json | 5 + _badges/lace_shared.json | 5 + _badges/lace_swig.json | 5 + _badges/lace_xml.json | 5 + _badges/lal_highlight.json | 5 + _badges/lal_refactor.json | 5 + _badges/langkit_support.json | 5 + _badges/lea.json | 5 + _badges/learnadainy.json | 5 + _badges/libadalang.json | 5 + _badges/libadalang2xml.json | 5 + _badges/libadalang_tools.json | 5 + _badges/libblas.json | 5 + _badges/libbullet.json | 5 + _badges/libcanberra.json | 5 + _badges/libchipmunk.json | 5 + _badges/libclntsh.json | 5 + _badges/libcmark.json | 5 + _badges/libcsfml.json | 5 + _badges/libcurl.json | 5 + _badges/libegl.json | 5 + _badges/libexpat.json | 5 + _badges/libfbclient.json | 5 + _badges/libfreetype.json | 5 + _badges/libftdi1.json | 5 + _badges/libfuse.json | 5 + _badges/libglfw3.json | 5 + _badges/libglib.json | 5 + _badges/libgmp.json | 5 + _badges/libgnatdoc.json | 5 + _badges/libgnatformat.json | 5 + _badges/libgnutls.json | 5 + _badges/libgomp.json | 5 + _badges/libgpiod.json | 5 + _badges/libgpr.json | 5 + _badges/libgpr2.json | 5 + _badges/libgraph_easy_perl.json | 5 + _badges/libgsl.json | 5 + _badges/libgtk3.json | 5 + _badges/libhello.json | 5 + _badges/libhidapi.json | 5 + _badges/libi2c.json | 5 + _badges/libiconv.json | 5 + _badges/libkeccak.json | 5 + _badges/liblal_refactor.json | 5 + _badges/liblapack.json | 5 + _badges/liblua.json | 5 + _badges/liblzma.json | 5 + _badges/libmagic.json | 5 + _badges/libmariadb.json | 5 + _badges/libmesa.json | 5 + _badges/libmpfr.json | 5 + _badges/libmysqlclient.json | 5 + _badges/libopus.json | 5 + _badges/libpcap.json | 5 + _badges/libpq.json | 5 + _badges/libpulse.json | 5 + _badges/libpython2dev.json | 5 + _badges/libpython3dev.json | 5 + _badges/libraylib.json | 5 + _badges/libreadline.json | 5 + _badges/librtmidi.json | 5 + _badges/libsdl2.json | 5 + _badges/libsdl2_image.json | 5 + _badges/libsdl2_mixer.json | 5 + _badges/libsdl2_ttf.json | 5 + _badges/libsecret.json | 5 + _badges/libsimpleio.json | 5 + _badges/libsqlite3.json | 5 + _badges/libtcl.json | 5 + _badges/libtk.json | 5 + _badges/libtls.json | 5 + _badges/libusb.json | 5 + _badges/libwayland.json | 5 + _badges/libx11.json | 5 + _badges/libzmq.json | 5 + _badges/light_arduino_due.json | 5 + _badges/light_blackpill_stm32f401.json | 5 + _badges/light_fk723m1_zgt6.json | 5 + _badges/lined.json | 5 + _badges/linenoise_ada.json | 5 + _badges/linux_hal.json | 5 + _badges/lispcli.json | 5 + _badges/list_image.json | 5 + _badges/littlefs.json | 5 + _badges/lmdb_ada.json | 5 + _badges/loadcpm.json | 5 + _badges/loga.json | 5 + _badges/ltp_305.json | 5 + _badges/lvgl_ada.json | 5 + _badges/lvgl_ada_examples.json | 5 + _badges/lvgl_ada_simulator.json | 5 + _badges/lzmada.json | 5 + _badges/m4_tool.json | 5 + _badges/mage.json | 5 + _badges/mage_hat.json | 5 + _badges/magicada.json | 5 + _badges/make.json | 5 + _badges/mandelbrot_ascii.json | 5 + _badges/markdown.json | 5 + _badges/mathpaqs.json | 5 + _badges/matreshka_amf.json | 5 + _badges/matreshka_amf_dd.json | 5 + _badges/matreshka_amf_mofext.json | 5 + _badges/matreshka_amf_ocl.json | 5 + _badges/matreshka_amf_uml.json | 5 + _badges/matreshka_amf_utp.json | 5 + _badges/matreshka_fastcgi.json | 5 + _badges/matreshka_league.json | 5 + _badges/matreshka_servlet.json | 5 + _badges/matreshka_soap.json | 5 + _badges/matreshka_soap_wsse.json | 5 + _badges/matreshka_spikedog_api.json | 5 + _badges/matreshka_spikedog_awsd.json | 5 + _badges/matreshka_spikedog_core.json | 5 + _badges/matreshka_sql.json | 5 + _badges/matreshka_sql_firebird.json | 5 + _badges/matreshka_sql_mysql.json | 5 + _badges/matreshka_sql_oracle.json | 5 + _badges/matreshka_sql_postgresql.json | 5 + _badges/matreshka_sql_sqlite3.json | 5 + _badges/matreshka_xml.json | 5 + _badges/mcp2221.json | 5 + _badges/microbit_bsp.json | 5 + _badges/microbit_examples.json | 5 + _badges/midi.json | 5 + _badges/mine_detector.json | 5 + _badges/minimal_containers.json | 5 + _badges/minirest.json | 5 + _badges/minisamd51_bsp.json | 5 + _badges/minisamd51_example.json | 5 + _badges/mold.json | 5 + _badges/mold_lib.json | 5 + _badges/mos6502_create_led.json | 5 + _badges/mos6502_create_nop.json | 5 + _badges/mos6502_create_reset.json | 5 + _badges/msys2_runtime.json | 5 + _badges/muntsos_aarch64.json | 5 + _badges/muntsos_beaglebone.json | 5 + _badges/muntsos_dev_aarch64.json | 5 + _badges/muntsos_dev_beaglebone.json | 5 + _badges/muntsos_dev_raspberrypi1.json | 5 + _badges/muntsos_dev_raspberrypi2.json | 5 + _badges/muntsos_raspberrypi1.json | 5 + _badges/muntsos_raspberrypi2.json | 5 + _badges/muntsos_raspberrypi3.json | 5 + _badges/muntsos_raspberrypi4.json | 5 + _badges/muntsos_raspberrypi5.json | 5 + _badges/musicplayer.json | 5 + _badges/ncursesada.json | 5 + _badges/nrf5x_hal.json | 5 + _badges/ocarina_lib.json | 5 + _badges/openai.json | 5 + _badges/openapi.json | 5 + _badges/openapi_server.json | 5 + _badges/openglada.json | 5 + _badges/openglada_glfw.json | 5 + _badges/openglada_images.json | 5 + _badges/openglada_text.json | 5 + _badges/openssl.json | 5 + _badges/opentoken.json | 5 + _badges/optional.json | 5 + _badges/orka.json | 5 + _badges/orka_awt.json | 5 + _badges/orka_egl.json | 5 + _badges/orka_numerics.json | 5 + _badges/orka_opengl.json | 5 + _badges/orka_plugin_archives.json | 5 + _badges/orka_plugin_atmosphere.json | 5 + _badges/orka_plugin_gltf.json | 5 + _badges/orka_plugin_terrain.json | 5 + _badges/orka_simd.json | 5 + _badges/orka_tensors_cpu.json | 5 + _badges/orka_tensors_gpu.json | 5 + _badges/orka_tools.json | 5 + _badges/orka_transforms.json | 5 + _badges/orka_types.json | 5 + _badges/parallelize.json | 5 + _badges/parse_args.json | 5 + _badges/partord.json | 5 + _badges/password_gen.json | 5 + _badges/pbkdf2.json | 5 + _badges/phcpack.json | 5 + _badges/pico_bsp.json | 5 + _badges/pico_examples.json | 5 + _badges/pkg_config.json | 5 + _badges/pla_util.json | 5 + _badges/play_2048.json | 5 + _badges/plplot.json | 5 + _badges/portable_minimal_ada_rts.json | 5 + _badges/postgresql.json | 5 + _badges/powerjoular.json | 5 + _badges/ppag.json | 5 + _badges/pragmarc.json | 5 + _badges/prettier_ada.json | 5 + _badges/printer_toolkit.json | 5 + _badges/program_proofs_in_spark.json | 5 + _badges/progress_indicators.json | 5 + _badges/protobuf.json | 5 + _badges/pygamer_bsp.json | 5 + _badges/pygamer_simulator.json | 5 + _badges/qmc5883.json | 5 + _badges/qoi.json | 5 + _badges/qplt.json | 5 + _badges/raspberry_bsp.json | 5 + _badges/raylib.json | 5 + _badges/rclada.json | 5 + _badges/rclada_examples.json | 5 + _badges/re2c.json | 5 + _badges/rejuvenation.json | 5 + _badges/remoteio.json | 5 + _badges/resources.json | 5 + _badges/rewriters.json | 5 + _badges/ros2_foxy.json | 5 + _badges/rp2040_hal.json | 5 + _badges/rsfile.json | 5 + _badges/rtmidi.json | 5 + _badges/rxada.json | 5 + _badges/saatana.json | 5 + _badges/samd51_hal.json | 5 + _badges/sciada.json | 5 + _badges/scripted_testing.json | 5 + _badges/sdlada.json | 5 + _badges/secretada.json | 5 + _badges/security.json | 5 + _badges/semantic_versioning.json | 5 + _badges/septum.json | 5 + _badges/serverfaces.json | 5 + _badges/serverfaces_unit.json | 5 + _badges/servletada.json | 5 + _badges/servletada_aws.json | 5 + _badges/servletada_ews.json | 5 + _badges/servletada_unit.json | 5 + _badges/sh1107.json | 5 + _badges/sha1.json | 5 + _badges/sha2.json | 5 + _badges/shoot_n_loot.json | 5 + _badges/si_units.json | 5 + _badges/simcpucli.json | 5 + _badges/simh_tapes.json | 5 + _badges/simple_components.json | 5 + _badges/simple_logging.json | 5 + _badges/simple_regex.json | 5 + _badges/slip.json | 5 + _badges/socketcan.json | 5 + _badges/spark_unbound.json | 5 + _badges/sparknacl.json | 5 + _badges/spat.json | 5 + _badges/spawn.json | 5 + _badges/spawn_glib.json | 5 + _badges/spdx.json | 5 + _badges/specfun.json | 5 + _badges/splitter.json | 5 + _badges/spoon.json | 5 + _badges/ssl.json | 5 + _badges/st7789.json | 5 + _badges/startup_gen.json | 5 + _badges/stephes_ada_library.json | 5 + _badges/stm32f0x2_hal.json | 5 + _badges/stopwatch.json | 5 + _badges/suika_programing.json | 5 + _badges/svd2ada.json | 5 + _badges/system_random.json | 5 + _badges/tash.json | 5 + _badges/task_coroutines.json | 5 + _badges/templates_parser.json | 5 + _badges/texcad.json | 5 + _badges/tiled_code_gen.json | 5 + _badges/tiny_rp2040_bsp.json | 5 + _badges/tiny_text.json | 5 + _badges/tlsada.json | 5 + _badges/toml_slicer.json | 5 + _badges/trendy_terminal.json | 5 + _badges/trendy_test.json | 5 + _badges/tresses.json | 5 + _badges/ulid.json | 5 + _badges/umwi.json | 5 + _badges/universal_text_file.json | 5 + _badges/unixodbc.json | 5 + _badges/uri_ada.json | 5 + _badges/uri_mime.json | 5 + _badges/usb_embedded.json | 5 + _badges/utf8test.json | 5 + _badges/utilada.json | 5 + _badges/utilada_aws.json | 5 + _badges/utilada_curl.json | 5 + _badges/utilada_lzma.json | 5 + _badges/utilada_unit.json | 5 + _badges/utilada_xml.json | 5 + _badges/uxstrings.json | 5 + _badges/vanilla.json | 5 + _badges/vaton.json | 5 + _badges/virtapu.json | 5 + _badges/vss.json | 5 + _badges/wayland_ada_info.json | 5 + _badges/wayland_ada_scanner.json | 5 + _badges/wayland_client_ada.json | 5 + _badges/wayland_cursor_ada.json | 5 + _badges/wayland_egl_ada.json | 5 + _badges/wayland_protocols_ada.json | 5 + _badges/webdriver.json | 5 + _badges/webif_example.json | 5 + _badges/weechat_ada.json | 5 + _badges/whitakers_words.json | 5 + _badges/wikiada.json | 5 + _badges/wikibook.json | 5 + _badges/win32ada.json | 5 + _badges/winpthreads.json | 5 + _badges/wisitoken.json | 5 + _badges/wl_lib.json | 5 + _badges/wordle.json | 5 + _badges/wordlelib.json | 5 + _badges/wordlist.json | 5 + _badges/workers.json | 5 + _badges/xdg_base_dir.json | 5 + _badges/xia.json | 5 + _badges/xml_ez_out.json | 5 + _badges/xmlada.json | 5 + _badges/xoshiro.json | 5 + _badges/yass.json | 5 + _badges/yeison.json | 5 + _badges/z_compression.json | 5 + _badges/zeromq_ada.json | 5 + _badges/zipada.json | 5 + _badges/zipdcf.json | 5 + _badges/zlib.json | 5 + _badges/zlib_ada.json | 5 + _config.yml | 66 + _crates/a0b_armv7m.md | 24 + _crates/a0b_armv7m_systick_clock.md | 21 + _crates/a0b_armv7m_systick_clock_timer.md | 22 + _crates/a0b_atsam3x8e.md | 24 + _crates/a0b_atsam3x8e_gpio.md | 25 + _crates/a0b_atsam3x8e_tc5_timer.md | 23 + _crates/a0b_atsam3x8e_twi_i2c.md | 23 + _crates/a0b_base.md | 19 + _crates/a0b_callbacks.md | 18 + _crates/a0b_exti.md | 20 + _crates/a0b_gpio.md | 18 + _crates/a0b_i2c.md | 20 + _crates/a0b_stm32f401.md | 24 + _crates/a0b_stm32f401_dma.md | 24 + _crates/a0b_stm32f401_gpio.md | 24 + _crates/a0b_stm32f401_i2c.md | 24 + _crates/a0b_stm32f401_tim11_timer.md | 23 + _crates/a0b_time.md | 20 + _crates/a0b_timer.md | 22 + _crates/aaa.md | 27 + _crates/ada_fuse.md | 19 + _crates/ada_gui.md | 52 + _crates/ada_language_server.md | 26 + _crates/ada_lua.md | 19 + _crates/ada_pretty.md | 19 + _crates/ada_toml.md | 107 + _crates/ada_voxel_space_demo.md | 17 + _crates/adabots.md | 24 + _crates/adacl.md | 53 + _crates/adare_dilithium5.md | 33 + _crates/adare_hqc256.md | 32 + _crates/adasat.md | 25 + _crates/adayaml.md | 17 + _crates/adl_middleware.md | 32 + _crates/admpfr.md | 20 + _crates/ado.md | 52 + _crates/ado_all.md | 32 + _crates/ado_mysql.md | 29 + _crates/ado_postgresql.md | 28 + _crates/ado_sqlite.md | 28 + _crates/aflex.md | 38 + _crates/agpl.md | 17 + _crates/aicwl.md | 49 + _crates/ajunitgen.md | 18 + _crates/akt.md | 66 + _crates/alr2appimage.md | 42 + _crates/anagram.md | 22 + _crates/ansiada.md | 18 + _crates/aoa_22.md | 19 + _crates/aoa_23.md | 18 + _crates/apdf.md | 48 + _crates/are.md | 51 + _crates/asfml.md | 43 + _crates/ashell.md | 22 + _crates/asis.md | 18 + _crates/atari_atr_tools.md | 61 + _crates/atari_exe_tools.md | 60 + _crates/atomic.md | 21 + _crates/audio_base.md | 20 + _crates/audio_wavefiles.md | 21 + _crates/aunit.md | 19 + _crates/automate.md | 18 + _crates/avltrees.md | 18 + _crates/avrada_examples.md | 19 + _crates/avrada_lib.md | 22 + _crates/avrada_mcu.md | 20 + _crates/avrada_rts.md | 22 + _crates/awa.md | 61 + _crates/awa_unit.md | 48 + _crates/aws.md | 28 + _crates/axmpp.md | 22 + _crates/ayacc.md | 39 + _crates/azip.md | 44 + _crates/b2ssum.md | 20 + _crates/bar_code_drawing.md | 28 + _crates/bar_codes.md | 67 + _crates/basalt.md | 23 + _crates/base64.md | 17 + _crates/bb_pico_bsp.md | 29 + _crates/bbqueue.md | 24 + _crates/bbs.md | 17 + _crates/bbs_embed_common.md | 24 + _crates/bbs_embed_linux.md | 23 + _crates/bbs_lisp.md | 21 + _crates/bbs_simcpu.md | 17 + _crates/bbs_webif.md | 20 + _crates/bbt.md | 21 + _crates/binary_trees.md | 23 + _crates/bingada.md | 25 + _crates/bit_sets.md | 22 + _crates/blake2s.md | 21 + _crates/blinkenlights.md | 51 + _crates/bme280.md | 22 + _crates/brackelib.md | 20 + _crates/c_strings.md | 17 + _crates/canberra_ada.md | 20 + _crates/cashe.md | 21 + _crates/cbsg.md | 18 + _crates/chacha20.md | 19 + _crates/checksum.md | 23 + _crates/cheddar.md | 24 + _crates/chests.md | 20 + _crates/chipmunk2d.md | 18 + _crates/clic.md | 30 + _crates/cmd_ada.md | 18 + _crates/cobs.md | 20 + _crates/controlled_io.md | 32 + _crates/cortex_m.md | 31 + _crates/crc_32.md | 25 + _crates/curl.md | 1 + _crates/dashera.md | 20 + _crates/db_maker.md | 30 + _crates/dcf.md | 21 + _crates/dependency_graph_extractor.md | 22 + _crates/dg_loada.md | 21 + _crates/dir_iterators.md | 76 + _crates/dirty_booleans.md | 19 + _crates/dotenv.md | 22 + _crates/dummyserver.md | 21 + _crates/dynamo.md | 40 + _crates/eagle_lander.md | 19 + _crates/easy_graphics.md | 28 + _crates/edc_client.md | 18 + _crates/eeprom_i2c.md | 21 + _crates/elada.md | 38 + _crates/elevator.md | 18 + _crates/elogs.md | 24 + _crates/emacs_ada_mode.md | 22 + _crates/emacs_gpr_mode.md | 29 + _crates/emacs_gpr_query.md | 21 + _crates/emacs_wisi.md | 23 + _crates/emacs_wisitoken_grammar_mode.md | 29 + _crates/embedded_components.md | 30 + _crates/emdee.md | 38 + _crates/emojis.md | 20 + _crates/encryption_utilities.md | 36 + _crates/endianness.md | 19 + _crates/enet.md | 26 + _crates/enet_stm32.md | 25 + _crates/epoll.md | 19 + _crates/esp_idf.md | 22 + _crates/ethernet.md | 22 + _crates/euler_tools.md | 18 + _crates/evdev.md | 20 + _crates/ews.md | 23 + _crates/excel_writer.md | 59 + _crates/fastpbkdf2_ada.md | 18 + _crates/felix.md | 22 + _crates/florist.md | 1 + _crates/florist_blady.md | 20 + _crates/freetypeada.md | 18 + _crates/garlic.md | 21 + _crates/geo_coords.md | 23 + _crates/geste.md | 70 + _crates/geste_examples.md | 18 + _crates/get_password.md | 19 + _crates/getada.md | 22 + _crates/getopt.md | 20 + _crates/gfx_core.md | 17 + _crates/gfx_rasteriser.md | 17 + _crates/gid.md | 68 + _crates/globe_3d.md | 42 + _crates/glut.md | 1 + _crates/gnat_arm_elf.md | 17 + _crates/gnat_avr_elf.md | 17 + _crates/gnat_external.md | 1 + _crates/gnat_math_extensions.md | 20 + _crates/gnat_native.md | 17 + _crates/gnat_riscv64_elf.md | 17 + _crates/gnat_xtensa_esp32_elf.md | 17 + _crates/gnatcoll.md | 24 + _crates/gnatcoll_gmp.md | 23 + _crates/gnatcoll_iconv.md | 20 + _crates/gnatcoll_lzma.md | 23 + _crates/gnatcoll_omp.md | 21 + _crates/gnatcoll_postgres.md | 23 + _crates/gnatcoll_python.md | 21 + _crates/gnatcoll_python3.md | 21 + _crates/gnatcoll_readline.md | 21 + _crates/gnatcoll_sql.md | 20 + _crates/gnatcoll_sqlite.md | 22 + _crates/gnatcoll_syslog.md | 20 + _crates/gnatcoll_xref.md | 23 + _crates/gnatcoll_zlib.md | 23 + _crates/gnatcov.md | 19 + _crates/gnatdist_garlic.md | 21 + _crates/gnatdoc.md | 22 + _crates/gnatformat.md | 22 + _crates/gnatprove.md | 17 + _crates/gnoga.md | 24 + _crates/gpr_unit_provider.md | 18 + _crates/gprbuild.md | 17 + _crates/gsl.md | 18 + _crates/gtkada.md | 21 + _crates/gwindows.md | 40 + _crates/hac.md | 37 + _crates/hal.md | 30 + _crates/hangman.md | 17 + _crates/hello.md | 18 + _crates/hex_format.md | 22 + _crates/hirtos.md | 17 + _crates/hirtos_separation_kernel.md | 18 + _crates/hmac.md | 20 + _crates/hmc5883.md | 20 + _crates/honki_tonks_zivilisationen.md | 28 + _crates/hp41cx_tools.md | 32 + _crates/hungarian.md | 17 + _crates/image_io.md | 50 + _crates/image_random.md | 30 + _crates/ini_files.md | 31 + _crates/inotify.md | 18 + _crates/intl.md | 62 + _crates/iso.md | 20 + _crates/iterators.md | 19 + _crates/itsybitsy_bsp.md | 22 + _crates/itsybitsy_rp2040_bsp.md | 23 + _crates/j2ada.md | 18 + _crates/jintp.md | 19 + _crates/journada.md | 19 + _crates/json.md | 17 + _crates/jupyter_kernel.md | 28 + _crates/jwt.md | 21 + _crates/keypadder.md | 37 + _crates/keystoreada.md | 51 + _crates/labs_radar.md | 18 + _crates/labs_solar_system.md | 20 + _crates/labs_standalone.md | 19 + _crates/lace.md | 25 + _crates/lace_box2d.md | 17 + _crates/lace_bullet.md | 18 + _crates/lace_c_math.md | 18 + _crates/lace_collada.md | 18 + _crates/lace_gel.md | 19 + _crates/lace_gel_animation_demo.md | 17 + _crates/lace_gel_full_demo.md | 17 + _crates/lace_math.md | 30 + _crates/lace_opengl.md | 18 + _crates/lace_physics.md | 19 + _crates/lace_shared.md | 17 + _crates/lace_swig.md | 17 + _crates/lace_xml.md | 18 + _crates/lal_highlight.md | 19 + _crates/lal_refactor.md | 23 + _crates/langkit_support.md | 22 + _crates/lea.md | 48 + _crates/learnadainy.md | 17 + _crates/libadalang.md | 23 + _crates/libadalang2xml.md | 86 + _crates/libadalang_tools.md | 28 + _crates/libblas.md | 1 + _crates/libbullet.md | 1 + _crates/libcanberra.md | 1 + _crates/libchipmunk.md | 1 + _crates/libclntsh.md | 1 + _crates/libcmark.md | 1 + _crates/libcsfml.md | 1 + _crates/libcurl.md | 1 + _crates/libegl.md | 1 + _crates/libexpat.md | 1 + _crates/libfbclient.md | 1 + _crates/libfreetype.md | 1 + _crates/libftdi1.md | 1 + _crates/libfuse.md | 1 + _crates/libglfw3.md | 1 + _crates/libglib.md | 1 + _crates/libgmp.md | 1 + _crates/libgnatdoc.md | 22 + _crates/libgnatformat.md | 22 + _crates/libgnutls.md | 1 + _crates/libgomp.md | 1 + _crates/libgpiod.md | 1 + _crates/libgpr.md | 18 + _crates/libgpr2.md | 20 + _crates/libgraph_easy_perl.md | 1 + _crates/libgsl.md | 1 + _crates/libgtk3.md | 1 + _crates/libhello.md | 19 + _crates/libhidapi.md | 1 + _crates/libi2c.md | 1 + _crates/libiconv.md | 1 + _crates/libkeccak.md | 30 + _crates/liblal_refactor.md | 18 + _crates/liblapack.md | 1 + _crates/liblua.md | 1 + _crates/liblzma.md | 1 + _crates/libmagic.md | 1 + _crates/libmariadb.md | 1 + _crates/libmesa.md | 1 + _crates/libmpfr.md | 1 + _crates/libmysqlclient.md | 1 + _crates/libopus.md | 1 + _crates/libpcap.md | 1 + _crates/libpq.md | 1 + _crates/libpulse.md | 1 + _crates/libpython2dev.md | 1 + _crates/libpython3dev.md | 1 + _crates/libraylib.md | 1 + _crates/libreadline.md | 1 + _crates/librtmidi.md | 1 + _crates/libsdl2.md | 1 + _crates/libsdl2_image.md | 1 + _crates/libsdl2_mixer.md | 1 + _crates/libsdl2_ttf.md | 1 + _crates/libsecret.md | 1 + _crates/libsimpleio.md | 150 + _crates/libsqlite3.md | 1 + _crates/libtcl.md | 1 + _crates/libtk.md | 1 + _crates/libtls.md | 1 + _crates/libusb.md | 1 + _crates/libwayland.md | 1 + _crates/libx11.md | 1 + _crates/libzmq.md | 1 + _crates/light_arduino_due.md | 25 + _crates/light_blackpill_stm32f401.md | 24 + _crates/light_fk723m1_zgt6.md | 21 + _crates/lined.md | 23 + _crates/linenoise_ada.md | 19 + _crates/linux_hal.md | 27 + _crates/lispcli.md | 22 + _crates/list_image.md | 21 + _crates/littlefs.md | 28 + _crates/lmdb_ada.md | 18 + _crates/loadcpm.md | 18 + _crates/loga.md | 17 + _crates/ltp_305.md | 21 + _crates/lvgl_ada.md | 32 + _crates/lvgl_ada_examples.md | 19 + _crates/lvgl_ada_simulator.md | 20 + _crates/lzmada.md | 44 + _crates/m4_tool.md | 1 + _crates/mage.md | 19 + _crates/mage_hat.md | 19 + _crates/magicada.md | 57 + _crates/make.md | 1 + _crates/mandelbrot_ascii.md | 17 + _crates/markdown.md | 19 + _crates/mathpaqs.md | 50 + _crates/matreshka_amf.md | 21 + _crates/matreshka_amf_dd.md | 21 + _crates/matreshka_amf_mofext.md | 21 + _crates/matreshka_amf_ocl.md | 22 + _crates/matreshka_amf_uml.md | 21 + _crates/matreshka_amf_utp.md | 22 + _crates/matreshka_fastcgi.md | 20 + _crates/matreshka_league.md | 24 + _crates/matreshka_servlet.md | 20 + _crates/matreshka_soap.md | 22 + _crates/matreshka_soap_wsse.md | 21 + _crates/matreshka_spikedog_api.md | 20 + _crates/matreshka_spikedog_awsd.md | 21 + _crates/matreshka_spikedog_core.md | 20 + _crates/matreshka_sql.md | 20 + _crates/matreshka_sql_firebird.md | 23 + _crates/matreshka_sql_mysql.md | 24 + _crates/matreshka_sql_oracle.md | 23 + _crates/matreshka_sql_postgresql.md | 22 + _crates/matreshka_sql_sqlite3.md | 22 + _crates/matreshka_xml.md | 22 + _crates/mcp2221.md | 57 + _crates/microbit_bsp.md | 33 + _crates/microbit_examples.md | 98 + _crates/midi.md | 21 + _crates/mine_detector.md | 22 + _crates/minimal_containers.md | 24 + _crates/minirest.md | 18 + _crates/minisamd51_bsp.md | 21 + _crates/minisamd51_example.md | 20 + _crates/mold.md | 76 + _crates/mold_lib.md | 73 + _crates/mos6502_create_led.md | 31 + _crates/mos6502_create_nop.md | 31 + _crates/mos6502_create_reset.md | 31 + _crates/msys2_runtime.md | 1 + _crates/muntsos_aarch64.md | 21 + _crates/muntsos_beaglebone.md | 21 + _crates/muntsos_dev_aarch64.md | 1 + _crates/muntsos_dev_beaglebone.md | 1 + _crates/muntsos_dev_raspberrypi1.md | 1 + _crates/muntsos_dev_raspberrypi2.md | 1 + _crates/muntsos_raspberrypi1.md | 21 + _crates/muntsos_raspberrypi2.md | 21 + _crates/muntsos_raspberrypi3.md | 21 + _crates/muntsos_raspberrypi4.md | 21 + _crates/muntsos_raspberrypi5.md | 21 + _crates/musicplayer.md | 34 + _crates/ncursesada.md | 24 + _crates/nrf5x_hal.md | 25 + _crates/ocarina_lib.md | 19 + _crates/openai.md | 51 + _crates/openapi.md | 58 + _crates/openapi_server.md | 66 + _crates/openglada.md | 20 + _crates/openglada_glfw.md | 21 + _crates/openglada_images.md | 20 + _crates/openglada_text.md | 20 + _crates/openssl.md | 1 + _crates/opentoken.md | 18 + _crates/optional.md | 18 + _crates/orka.md | 30 + _crates/orka_awt.md | 33 + _crates/orka_egl.md | 19 + _crates/orka_numerics.md | 32 + _crates/orka_opengl.md | 23 + _crates/orka_plugin_archives.md | 20 + _crates/orka_plugin_atmosphere.md | 21 + _crates/orka_plugin_gltf.md | 20 + _crates/orka_plugin_terrain.md | 21 + _crates/orka_simd.md | 22 + _crates/orka_tensors_cpu.md | 31 + _crates/orka_tensors_gpu.md | 35 + _crates/orka_tools.md | 22 + _crates/orka_transforms.md | 22 + _crates/orka_types.md | 17 + _crates/parallelize.md | 18 + _crates/parse_args.md | 18 + _crates/partord.md | 17 + _crates/password_gen.md | 22 + _crates/pbkdf2.md | 21 + _crates/phcpack.md | 17 + _crates/pico_bsp.md | 22 + _crates/pico_examples.md | 21 + _crates/pkg_config.md | 1 + _crates/pla_util.md | 17 + _crates/play_2048.md | 21 + _crates/plplot.md | 1 + _crates/portable_minimal_ada_rts.md | 17 + _crates/postgresql.md | 1 + _crates/powerjoular.md | 19 + _crates/ppag.md | 18 + _crates/pragmarc.md | 27 + _crates/prettier_ada.md | 19 + _crates/printer_toolkit.md | 29 + _crates/program_proofs_in_spark.md | 18 + _crates/progress_indicators.md | 20 + _crates/protobuf.md | 20 + _crates/pygamer_bsp.md | 24 + _crates/pygamer_simulator.md | 22 + _crates/qmc5883.md | 20 + _crates/qoi.md | 21 + _crates/qplt.md | 50 + _crates/raspberry_bsp.md | 18 + _crates/raylib.md | 67 + _crates/rclada.md | 19 + _crates/rclada_examples.md | 19 + _crates/re2c.md | 1 + _crates/rejuvenation.md | 20 + _crates/remoteio.md | 54 + _crates/resources.md | 17 + _crates/rewriters.md | 19 + _crates/ros2_foxy.md | 1 + _crates/rp2040_hal.md | 28 + _crates/rsfile.md | 20 + _crates/rtmidi.md | 19 + _crates/rxada.md | 20 + _crates/saatana.md | 23 + _crates/samd51_hal.md | 25 + _crates/sciada.md | 34 + _crates/scripted_testing.md | 46 + _crates/sdlada.md | 24 + _crates/secretada.md | 51 + _crates/security.md | 49 + _crates/semantic_versioning.md | 19 + _crates/septum.md | 22 + _crates/serverfaces.md | 38 + _crates/serverfaces_unit.md | 43 + _crates/servletada.md | 34 + _crates/servletada_aws.md | 30 + _crates/servletada_ews.md | 30 + _crates/servletada_unit.md | 31 + _crates/sh1107.md | 18 + _crates/sha1.md | 19 + _crates/sha2.md | 19 + _crates/shoot_n_loot.md | 23 + _crates/si_units.md | 40 + _crates/simcpucli.md | 24 + _crates/simh_tapes.md | 22 + _crates/simple_components.md | 20 + _crates/simple_logging.md | 18 + _crates/simple_regex.md | 20 + _crates/slip.md | 19 + _crates/socketcan.md | 17 + _crates/spark_unbound.md | 29 + _crates/sparknacl.md | 24 + _crates/spat.md | 21 + _crates/spawn.md | 20 + _crates/spawn_glib.md | 21 + _crates/spdx.md | 18 + _crates/specfun.md | 21 + _crates/splitter.md | 21 + _crates/spoon.md | 19 + _crates/ssl.md | 1 + _crates/st7789.md | 25 + _crates/startup_gen.md | 21 + _crates/stephes_ada_library.md | 18 + _crates/stm32f0x2_hal.md | 25 + _crates/stopwatch.md | 19 + _crates/suika_programing.md | 24 + _crates/svd2ada.md | 17 + _crates/system_random.md | 20 + _crates/tash.md | 33 + _crates/task_coroutines.md | 18 + _crates/templates_parser.md | 17 + _crates/texcad.md | 40 + _crates/tiled_code_gen.md | 22 + _crates/tiny_rp2040_bsp.md | 23 + _crates/tiny_text.md | 20 + _crates/tlsada.md | 18 + _crates/toml_slicer.md | 17 + _crates/trendy_terminal.md | 20 + _crates/trendy_test.md | 134 + _crates/tresses.md | 21 + _crates/ulid.md | 35 + _crates/umwi.md | 26 + _crates/universal_text_file.md | 45 + _crates/unixodbc.md | 1 + _crates/uri_ada.md | 19 + _crates/uri_mime.md | 20 + _crates/usb_embedded.md | 25 + _crates/utf8test.md | 20 + _crates/utilada.md | 49 + _crates/utilada_aws.md | 33 + _crates/utilada_curl.md | 34 + _crates/utilada_lzma.md | 30 + _crates/utilada_unit.md | 26 + _crates/utilada_xml.md | 30 + _crates/uxstrings.md | 19 + _crates/vanilla.md | 24 + _crates/vaton.md | 30 + _crates/virtapu.md | 34 + _crates/vss.md | 22 + _crates/wayland_ada_info.md | 17 + _crates/wayland_ada_scanner.md | 19 + _crates/wayland_client_ada.md | 19 + _crates/wayland_cursor_ada.md | 18 + _crates/wayland_egl_ada.md | 19 + _crates/wayland_protocols_ada.md | 19 + _crates/webdriver.md | 21 + _crates/webif_example.md | 22 + _crates/weechat_ada.md | 19 + _crates/whitakers_words.md | 19 + _crates/wikiada.md | 39 + _crates/wikibook.md | 25 + _crates/win32ada.md | 19 + _crates/winpthreads.md | 1 + _crates/wisitoken.md | 21 + _crates/wl_lib.md | 18 + _crates/wordle.md | 23 + _crates/wordlelib.md | 20 + _crates/wordlist.md | 22 + _crates/workers.md | 19 + _crates/xdg_base_dir.md | 17 + _crates/xia.md | 21 + _crates/xml_ez_out.md | 17 + _crates/xmlada.md | 17 + _crates/xoshiro.md | 22 + _crates/yass.md | 22 + _crates/yeison.md | 20 + _crates/z_compression.md | 31 + _crates/zeromq_ada.md | 21 + _crates/zipada.md | 47 + _crates/zipdcf.md | 21 + _crates/zlib.md | 1 + _crates/zlib_ada.md | 17 + _data/badge.json | 3 + _data/meta.yaml | 1 + _data/tags.json | 5936 +++++++++++++++++++ _data/update.yml | 4 + _includes/crate_badge.html | 5 + _includes/footer.html | 2 + _includes/head.html | 40 + _includes/header.html | 81 + _includes/make_list.html | 5 + _layouts/badge.json | 7 + _layouts/crate.html | 122 + _layouts/default.html | 26 + _layouts/page.html | 9 + _layouts/page_full_width.html | 9 + _sass/devlog.scss | 296 + alire_install/LICENSE.txt | 674 +++ alire_install/bin/alr | Bin 0 -> 34577856 bytes assets/css/main.scss | 5 + assets/img/favicon.ico | Bin 0 -> 4286 bytes assets/img/profile.png | Bin 0 -> 2431 bytes assets/tipuesearch/css/tipuesearch.css | 251 + assets/tipuesearch/search.png | Bin 0 -> 1366 bytes assets/tipuesearch/tipuesearch.min.js | 178 + assets/tipuesearch/tipuesearch_content.js | 105 + assets/tipuesearch/tipuesearch_set.js | 80 + coty_banner.jpg | Bin 0 -> 395635 bytes crates.md | 41 + dependency_graph.py | 121 + deps_graph_data.json | 5321 +++++++++++++++++ docs/2018-03.alr-draft.pdf | Bin 0 -> 261151 bytes docs/alr-logo-black-white.svg | 205 + docs/alr-logo-sq.png | Bin 0 -> 11449 bytes docs/alr-logo-white.svg | 131 + docs/alr-logo.svg | 130 + docs/alr-logo.svg.png | Bin 0 -> 10037 bytes docs/catalog-format-spec.md | 1213 ++++ docs/classes.graphml | 220 + docs/getting-started.md | 406 ++ docs/index.md | 101 + docs/introduction.md | 20 + docs/policies.md | 111 + docs/publishing.md | 327 + docs/settings.md | 144 + docs/toolchains.md | 77 + docs/unicode.md | 165 + docs/upgrading.md | 62 + docs/user-changes.md | 1000 ++++ index.md | 150 + network.md | 161 + search.html | 22 + tags.md | 97 + transition_from_gnat_community.md | 151 + update-gh-pages.sh | 118 + 1189 files changed, 34124 insertions(+) create mode 100644 .github/workflows/update.yaml create mode 100644 .gitignore create mode 100644 404.html create mode 100644 CNAME create mode 100644 Gemfile create mode 100644 README.md create mode 100644 _badges/a0b_armv7m.json create mode 100644 _badges/a0b_armv7m_systick_clock.json create mode 100644 _badges/a0b_armv7m_systick_clock_timer.json create mode 100644 _badges/a0b_atsam3x8e.json create mode 100644 _badges/a0b_atsam3x8e_gpio.json create mode 100644 _badges/a0b_atsam3x8e_tc5_timer.json create mode 100644 _badges/a0b_atsam3x8e_twi_i2c.json create mode 100644 _badges/a0b_base.json create mode 100644 _badges/a0b_callbacks.json create mode 100644 _badges/a0b_exti.json create mode 100644 _badges/a0b_gpio.json create mode 100644 _badges/a0b_i2c.json create mode 100644 _badges/a0b_stm32f401.json create mode 100644 _badges/a0b_stm32f401_dma.json create mode 100644 _badges/a0b_stm32f401_gpio.json create mode 100644 _badges/a0b_stm32f401_i2c.json create mode 100644 _badges/a0b_stm32f401_tim11_timer.json create mode 100644 _badges/a0b_time.json create mode 100644 _badges/a0b_timer.json create mode 100644 _badges/aaa.json create mode 100644 _badges/ada_fuse.json create mode 100644 _badges/ada_gui.json create mode 100644 _badges/ada_language_server.json create mode 100644 _badges/ada_lua.json create mode 100644 _badges/ada_pretty.json create mode 100644 _badges/ada_toml.json create mode 100644 _badges/ada_voxel_space_demo.json create mode 100644 _badges/adabots.json create mode 100644 _badges/adacl.json create mode 100644 _badges/adare_dilithium5.json create mode 100644 _badges/adare_hqc256.json create mode 100644 _badges/adasat.json create mode 100644 _badges/adayaml.json create mode 100644 _badges/adl_middleware.json create mode 100644 _badges/admpfr.json create mode 100644 _badges/ado.json create mode 100644 _badges/ado_all.json create mode 100644 _badges/ado_mysql.json create mode 100644 _badges/ado_postgresql.json create mode 100644 _badges/ado_sqlite.json create mode 100644 _badges/aflex.json create mode 100644 _badges/agpl.json create mode 100644 _badges/aicwl.json create mode 100644 _badges/ajunitgen.json create mode 100644 _badges/akt.json create mode 100644 _badges/alire-badge.json create mode 100644 _badges/alr2appimage.json create mode 100644 _badges/anagram.json create mode 100644 _badges/ansiada.json create mode 100644 _badges/aoa_22.json create mode 100644 _badges/aoa_23.json create mode 100644 _badges/apdf.json create mode 100644 _badges/are.json create mode 100644 _badges/asfml.json create mode 100644 _badges/ashell.json create mode 100644 _badges/asis.json create mode 100644 _badges/atari_atr_tools.json create mode 100644 _badges/atari_exe_tools.json create mode 100644 _badges/atomic.json create mode 100644 _badges/audio_base.json create mode 100644 _badges/audio_wavefiles.json create mode 100644 _badges/aunit.json create mode 100644 _badges/automate.json create mode 100644 _badges/avltrees.json create mode 100644 _badges/avrada_examples.json create mode 100644 _badges/avrada_lib.json create mode 100644 _badges/avrada_mcu.json create mode 100644 _badges/avrada_rts.json create mode 100644 _badges/awa.json create mode 100644 _badges/awa_unit.json create mode 100644 _badges/aws.json create mode 100644 _badges/axmpp.json create mode 100644 _badges/ayacc.json create mode 100644 _badges/azip.json create mode 100644 _badges/b2ssum.json create mode 100644 _badges/bar_code_drawing.json create mode 100644 _badges/bar_codes.json create mode 100644 _badges/basalt.json create mode 100644 _badges/base64.json create mode 100644 _badges/bb_pico_bsp.json create mode 100644 _badges/bbqueue.json create mode 100644 _badges/bbs.json create mode 100644 _badges/bbs_embed_common.json create mode 100644 _badges/bbs_embed_linux.json create mode 100644 _badges/bbs_lisp.json create mode 100644 _badges/bbs_simcpu.json create mode 100644 _badges/bbs_webif.json create mode 100644 _badges/bbt.json create mode 100644 _badges/binary_trees.json create mode 100644 _badges/bingada.json create mode 100644 _badges/bit_sets.json create mode 100644 _badges/blake2s.json create mode 100644 _badges/blinkenlights.json create mode 100644 _badges/bme280.json create mode 100644 _badges/brackelib.json create mode 100644 _badges/c_strings.json create mode 100644 _badges/canberra_ada.json create mode 100644 _badges/cashe.json create mode 100644 _badges/cbsg.json create mode 100644 _badges/chacha20.json create mode 100644 _badges/checksum.json create mode 100644 _badges/cheddar.json create mode 100644 _badges/chests.json create mode 100644 _badges/chipmunk2d.json create mode 100644 _badges/clic.json create mode 100644 _badges/cmd_ada.json create mode 100644 _badges/cobs.json create mode 100644 _badges/controlled_io.json create mode 100644 _badges/cortex_m.json create mode 100644 _badges/crc_32.json create mode 100644 _badges/curl.json create mode 100644 _badges/dashera.json create mode 100644 _badges/db_maker.json create mode 100644 _badges/dcf.json create mode 100644 _badges/dependency_graph_extractor.json create mode 100644 _badges/dg_loada.json create mode 100644 _badges/dir_iterators.json create mode 100644 _badges/dirty_booleans.json create mode 100644 _badges/dotenv.json create mode 100644 _badges/dummyserver.json create mode 100644 _badges/dynamo.json create mode 100644 _badges/eagle_lander.json create mode 100644 _badges/easy_graphics.json create mode 100644 _badges/edc_client.json create mode 100644 _badges/eeprom_i2c.json create mode 100644 _badges/elada.json create mode 100644 _badges/elevator.json create mode 100644 _badges/elogs.json create mode 100644 _badges/emacs_ada_mode.json create mode 100644 _badges/emacs_gpr_mode.json create mode 100644 _badges/emacs_gpr_query.json create mode 100644 _badges/emacs_wisi.json create mode 100644 _badges/emacs_wisitoken_grammar_mode.json create mode 100644 _badges/embedded_components.json create mode 100644 _badges/emdee.json create mode 100644 _badges/emojis.json create mode 100644 _badges/encryption_utilities.json create mode 100644 _badges/endianness.json create mode 100644 _badges/enet.json create mode 100644 _badges/enet_stm32.json create mode 100644 _badges/epoll.json create mode 100644 _badges/esp_idf.json create mode 100644 _badges/ethernet.json create mode 100644 _badges/euler_tools.json create mode 100644 _badges/evdev.json create mode 100644 _badges/ews.json create mode 100644 _badges/excel_writer.json create mode 100644 _badges/fastpbkdf2_ada.json create mode 100644 _badges/felix.json create mode 100644 _badges/florist.json create mode 100644 _badges/florist_blady.json create mode 100644 _badges/freetypeada.json create mode 100644 _badges/garlic.json create mode 100644 _badges/geo_coords.json create mode 100644 _badges/geste.json create mode 100644 _badges/geste_examples.json create mode 100644 _badges/get_password.json create mode 100644 _badges/getada.json create mode 100644 _badges/getopt.json create mode 100644 _badges/gfx_core.json create mode 100644 _badges/gfx_rasteriser.json create mode 100644 _badges/gid.json create mode 100644 _badges/globe_3d.json create mode 100644 _badges/glut.json create mode 100644 _badges/gnat_arm_elf.json create mode 100644 _badges/gnat_avr_elf.json create mode 100644 _badges/gnat_external.json create mode 100644 _badges/gnat_math_extensions.json create mode 100644 _badges/gnat_native.json create mode 100644 _badges/gnat_riscv64_elf.json create mode 100644 _badges/gnat_xtensa_esp32_elf.json create mode 100644 _badges/gnatcoll.json create mode 100644 _badges/gnatcoll_gmp.json create mode 100644 _badges/gnatcoll_iconv.json create mode 100644 _badges/gnatcoll_lzma.json create mode 100644 _badges/gnatcoll_omp.json create mode 100644 _badges/gnatcoll_postgres.json create mode 100644 _badges/gnatcoll_python.json create mode 100644 _badges/gnatcoll_python3.json create mode 100644 _badges/gnatcoll_readline.json create mode 100644 _badges/gnatcoll_sql.json create mode 100644 _badges/gnatcoll_sqlite.json create mode 100644 _badges/gnatcoll_syslog.json create mode 100644 _badges/gnatcoll_xref.json create mode 100644 _badges/gnatcoll_zlib.json create mode 100644 _badges/gnatcov.json create mode 100644 _badges/gnatdist_garlic.json create mode 100644 _badges/gnatdoc.json create mode 100644 _badges/gnatformat.json create mode 100644 _badges/gnatprove.json create mode 100644 _badges/gnoga.json create mode 100644 _badges/gpr_unit_provider.json create mode 100644 _badges/gprbuild.json create mode 100644 _badges/gsl.json create mode 100644 _badges/gtkada.json create mode 100644 _badges/gwindows.json create mode 100644 _badges/hac.json create mode 100644 _badges/hal.json create mode 100644 _badges/hangman.json create mode 100644 _badges/hello.json create mode 100644 _badges/hex_format.json create mode 100644 _badges/hirtos.json create mode 100644 _badges/hirtos_separation_kernel.json create mode 100644 _badges/hmac.json create mode 100644 _badges/hmc5883.json create mode 100644 _badges/honki_tonks_zivilisationen.json create mode 100644 _badges/hp41cx_tools.json create mode 100644 _badges/hungarian.json create mode 100644 _badges/image_io.json create mode 100644 _badges/image_random.json create mode 100644 _badges/ini_files.json create mode 100644 _badges/inotify.json create mode 100644 _badges/intl.json create mode 100644 _badges/iso.json create mode 100644 _badges/iterators.json create mode 100644 _badges/itsybitsy_bsp.json create mode 100644 _badges/itsybitsy_rp2040_bsp.json create mode 100644 _badges/j2ada.json create mode 100644 _badges/jintp.json create mode 100644 _badges/journada.json create mode 100644 _badges/json.json create mode 100644 _badges/jupyter_kernel.json create mode 100644 _badges/jwt.json create mode 100644 _badges/keypadder.json create mode 100644 _badges/keystoreada.json create mode 100644 _badges/labs_radar.json create mode 100644 _badges/labs_solar_system.json create mode 100644 _badges/labs_standalone.json create mode 100644 _badges/lace.json create mode 100644 _badges/lace_box2d.json create mode 100644 _badges/lace_bullet.json create mode 100644 _badges/lace_c_math.json create mode 100644 _badges/lace_collada.json create mode 100644 _badges/lace_gel.json create mode 100644 _badges/lace_gel_animation_demo.json create mode 100644 _badges/lace_gel_full_demo.json create mode 100644 _badges/lace_math.json create mode 100644 _badges/lace_opengl.json create mode 100644 _badges/lace_physics.json create mode 100644 _badges/lace_shared.json create mode 100644 _badges/lace_swig.json create mode 100644 _badges/lace_xml.json create mode 100644 _badges/lal_highlight.json create mode 100644 _badges/lal_refactor.json create mode 100644 _badges/langkit_support.json create mode 100644 _badges/lea.json create mode 100644 _badges/learnadainy.json create mode 100644 _badges/libadalang.json create mode 100644 _badges/libadalang2xml.json create mode 100644 _badges/libadalang_tools.json create mode 100644 _badges/libblas.json create mode 100644 _badges/libbullet.json create mode 100644 _badges/libcanberra.json create mode 100644 _badges/libchipmunk.json create mode 100644 _badges/libclntsh.json create mode 100644 _badges/libcmark.json create mode 100644 _badges/libcsfml.json create mode 100644 _badges/libcurl.json create mode 100644 _badges/libegl.json create mode 100644 _badges/libexpat.json create mode 100644 _badges/libfbclient.json create mode 100644 _badges/libfreetype.json create mode 100644 _badges/libftdi1.json create mode 100644 _badges/libfuse.json create mode 100644 _badges/libglfw3.json create mode 100644 _badges/libglib.json create mode 100644 _badges/libgmp.json create mode 100644 _badges/libgnatdoc.json create mode 100644 _badges/libgnatformat.json create mode 100644 _badges/libgnutls.json create mode 100644 _badges/libgomp.json create mode 100644 _badges/libgpiod.json create mode 100644 _badges/libgpr.json create mode 100644 _badges/libgpr2.json create mode 100644 _badges/libgraph_easy_perl.json create mode 100644 _badges/libgsl.json create mode 100644 _badges/libgtk3.json create mode 100644 _badges/libhello.json create mode 100644 _badges/libhidapi.json create mode 100644 _badges/libi2c.json create mode 100644 _badges/libiconv.json create mode 100644 _badges/libkeccak.json create mode 100644 _badges/liblal_refactor.json create mode 100644 _badges/liblapack.json create mode 100644 _badges/liblua.json create mode 100644 _badges/liblzma.json create mode 100644 _badges/libmagic.json create mode 100644 _badges/libmariadb.json create mode 100644 _badges/libmesa.json create mode 100644 _badges/libmpfr.json create mode 100644 _badges/libmysqlclient.json create mode 100644 _badges/libopus.json create mode 100644 _badges/libpcap.json create mode 100644 _badges/libpq.json create mode 100644 _badges/libpulse.json create mode 100644 _badges/libpython2dev.json create mode 100644 _badges/libpython3dev.json create mode 100644 _badges/libraylib.json create mode 100644 _badges/libreadline.json create mode 100644 _badges/librtmidi.json create mode 100644 _badges/libsdl2.json create mode 100644 _badges/libsdl2_image.json create mode 100644 _badges/libsdl2_mixer.json create mode 100644 _badges/libsdl2_ttf.json create mode 100644 _badges/libsecret.json create mode 100644 _badges/libsimpleio.json create mode 100644 _badges/libsqlite3.json create mode 100644 _badges/libtcl.json create mode 100644 _badges/libtk.json create mode 100644 _badges/libtls.json create mode 100644 _badges/libusb.json create mode 100644 _badges/libwayland.json create mode 100644 _badges/libx11.json create mode 100644 _badges/libzmq.json create mode 100644 _badges/light_arduino_due.json create mode 100644 _badges/light_blackpill_stm32f401.json create mode 100644 _badges/light_fk723m1_zgt6.json create mode 100644 _badges/lined.json create mode 100644 _badges/linenoise_ada.json create mode 100644 _badges/linux_hal.json create mode 100644 _badges/lispcli.json create mode 100644 _badges/list_image.json create mode 100644 _badges/littlefs.json create mode 100644 _badges/lmdb_ada.json create mode 100644 _badges/loadcpm.json create mode 100644 _badges/loga.json create mode 100644 _badges/ltp_305.json create mode 100644 _badges/lvgl_ada.json create mode 100644 _badges/lvgl_ada_examples.json create mode 100644 _badges/lvgl_ada_simulator.json create mode 100644 _badges/lzmada.json create mode 100644 _badges/m4_tool.json create mode 100644 _badges/mage.json create mode 100644 _badges/mage_hat.json create mode 100644 _badges/magicada.json create mode 100644 _badges/make.json create mode 100644 _badges/mandelbrot_ascii.json create mode 100644 _badges/markdown.json create mode 100644 _badges/mathpaqs.json create mode 100644 _badges/matreshka_amf.json create mode 100644 _badges/matreshka_amf_dd.json create mode 100644 _badges/matreshka_amf_mofext.json create mode 100644 _badges/matreshka_amf_ocl.json create mode 100644 _badges/matreshka_amf_uml.json create mode 100644 _badges/matreshka_amf_utp.json create mode 100644 _badges/matreshka_fastcgi.json create mode 100644 _badges/matreshka_league.json create mode 100644 _badges/matreshka_servlet.json create mode 100644 _badges/matreshka_soap.json create mode 100644 _badges/matreshka_soap_wsse.json create mode 100644 _badges/matreshka_spikedog_api.json create mode 100644 _badges/matreshka_spikedog_awsd.json create mode 100644 _badges/matreshka_spikedog_core.json create mode 100644 _badges/matreshka_sql.json create mode 100644 _badges/matreshka_sql_firebird.json create mode 100644 _badges/matreshka_sql_mysql.json create mode 100644 _badges/matreshka_sql_oracle.json create mode 100644 _badges/matreshka_sql_postgresql.json create mode 100644 _badges/matreshka_sql_sqlite3.json create mode 100644 _badges/matreshka_xml.json create mode 100644 _badges/mcp2221.json create mode 100644 _badges/microbit_bsp.json create mode 100644 _badges/microbit_examples.json create mode 100644 _badges/midi.json create mode 100644 _badges/mine_detector.json create mode 100644 _badges/minimal_containers.json create mode 100644 _badges/minirest.json create mode 100644 _badges/minisamd51_bsp.json create mode 100644 _badges/minisamd51_example.json create mode 100644 _badges/mold.json create mode 100644 _badges/mold_lib.json create mode 100644 _badges/mos6502_create_led.json create mode 100644 _badges/mos6502_create_nop.json create mode 100644 _badges/mos6502_create_reset.json create mode 100644 _badges/msys2_runtime.json create mode 100644 _badges/muntsos_aarch64.json create mode 100644 _badges/muntsos_beaglebone.json create mode 100644 _badges/muntsos_dev_aarch64.json create mode 100644 _badges/muntsos_dev_beaglebone.json create mode 100644 _badges/muntsos_dev_raspberrypi1.json create mode 100644 _badges/muntsos_dev_raspberrypi2.json create mode 100644 _badges/muntsos_raspberrypi1.json create mode 100644 _badges/muntsos_raspberrypi2.json create mode 100644 _badges/muntsos_raspberrypi3.json create mode 100644 _badges/muntsos_raspberrypi4.json create mode 100644 _badges/muntsos_raspberrypi5.json create mode 100644 _badges/musicplayer.json create mode 100644 _badges/ncursesada.json create mode 100644 _badges/nrf5x_hal.json create mode 100644 _badges/ocarina_lib.json create mode 100644 _badges/openai.json create mode 100644 _badges/openapi.json create mode 100644 _badges/openapi_server.json create mode 100644 _badges/openglada.json create mode 100644 _badges/openglada_glfw.json create mode 100644 _badges/openglada_images.json create mode 100644 _badges/openglada_text.json create mode 100644 _badges/openssl.json create mode 100644 _badges/opentoken.json create mode 100644 _badges/optional.json create mode 100644 _badges/orka.json create mode 100644 _badges/orka_awt.json create mode 100644 _badges/orka_egl.json create mode 100644 _badges/orka_numerics.json create mode 100644 _badges/orka_opengl.json create mode 100644 _badges/orka_plugin_archives.json create mode 100644 _badges/orka_plugin_atmosphere.json create mode 100644 _badges/orka_plugin_gltf.json create mode 100644 _badges/orka_plugin_terrain.json create mode 100644 _badges/orka_simd.json create mode 100644 _badges/orka_tensors_cpu.json create mode 100644 _badges/orka_tensors_gpu.json create mode 100644 _badges/orka_tools.json create mode 100644 _badges/orka_transforms.json create mode 100644 _badges/orka_types.json create mode 100644 _badges/parallelize.json create mode 100644 _badges/parse_args.json create mode 100644 _badges/partord.json create mode 100644 _badges/password_gen.json create mode 100644 _badges/pbkdf2.json create mode 100644 _badges/phcpack.json create mode 100644 _badges/pico_bsp.json create mode 100644 _badges/pico_examples.json create mode 100644 _badges/pkg_config.json create mode 100644 _badges/pla_util.json create mode 100644 _badges/play_2048.json create mode 100644 _badges/plplot.json create mode 100644 _badges/portable_minimal_ada_rts.json create mode 100644 _badges/postgresql.json create mode 100644 _badges/powerjoular.json create mode 100644 _badges/ppag.json create mode 100644 _badges/pragmarc.json create mode 100644 _badges/prettier_ada.json create mode 100644 _badges/printer_toolkit.json create mode 100644 _badges/program_proofs_in_spark.json create mode 100644 _badges/progress_indicators.json create mode 100644 _badges/protobuf.json create mode 100644 _badges/pygamer_bsp.json create mode 100644 _badges/pygamer_simulator.json create mode 100644 _badges/qmc5883.json create mode 100644 _badges/qoi.json create mode 100644 _badges/qplt.json create mode 100644 _badges/raspberry_bsp.json create mode 100644 _badges/raylib.json create mode 100644 _badges/rclada.json create mode 100644 _badges/rclada_examples.json create mode 100644 _badges/re2c.json create mode 100644 _badges/rejuvenation.json create mode 100644 _badges/remoteio.json create mode 100644 _badges/resources.json create mode 100644 _badges/rewriters.json create mode 100644 _badges/ros2_foxy.json create mode 100644 _badges/rp2040_hal.json create mode 100644 _badges/rsfile.json create mode 100644 _badges/rtmidi.json create mode 100644 _badges/rxada.json create mode 100644 _badges/saatana.json create mode 100644 _badges/samd51_hal.json create mode 100644 _badges/sciada.json create mode 100644 _badges/scripted_testing.json create mode 100644 _badges/sdlada.json create mode 100644 _badges/secretada.json create mode 100644 _badges/security.json create mode 100644 _badges/semantic_versioning.json create mode 100644 _badges/septum.json create mode 100644 _badges/serverfaces.json create mode 100644 _badges/serverfaces_unit.json create mode 100644 _badges/servletada.json create mode 100644 _badges/servletada_aws.json create mode 100644 _badges/servletada_ews.json create mode 100644 _badges/servletada_unit.json create mode 100644 _badges/sh1107.json create mode 100644 _badges/sha1.json create mode 100644 _badges/sha2.json create mode 100644 _badges/shoot_n_loot.json create mode 100644 _badges/si_units.json create mode 100644 _badges/simcpucli.json create mode 100644 _badges/simh_tapes.json create mode 100644 _badges/simple_components.json create mode 100644 _badges/simple_logging.json create mode 100644 _badges/simple_regex.json create mode 100644 _badges/slip.json create mode 100644 _badges/socketcan.json create mode 100644 _badges/spark_unbound.json create mode 100644 _badges/sparknacl.json create mode 100644 _badges/spat.json create mode 100644 _badges/spawn.json create mode 100644 _badges/spawn_glib.json create mode 100644 _badges/spdx.json create mode 100644 _badges/specfun.json create mode 100644 _badges/splitter.json create mode 100644 _badges/spoon.json create mode 100644 _badges/ssl.json create mode 100644 _badges/st7789.json create mode 100644 _badges/startup_gen.json create mode 100644 _badges/stephes_ada_library.json create mode 100644 _badges/stm32f0x2_hal.json create mode 100644 _badges/stopwatch.json create mode 100644 _badges/suika_programing.json create mode 100644 _badges/svd2ada.json create mode 100644 _badges/system_random.json create mode 100644 _badges/tash.json create mode 100644 _badges/task_coroutines.json create mode 100644 _badges/templates_parser.json create mode 100644 _badges/texcad.json create mode 100644 _badges/tiled_code_gen.json create mode 100644 _badges/tiny_rp2040_bsp.json create mode 100644 _badges/tiny_text.json create mode 100644 _badges/tlsada.json create mode 100644 _badges/toml_slicer.json create mode 100644 _badges/trendy_terminal.json create mode 100644 _badges/trendy_test.json create mode 100644 _badges/tresses.json create mode 100644 _badges/ulid.json create mode 100644 _badges/umwi.json create mode 100644 _badges/universal_text_file.json create mode 100644 _badges/unixodbc.json create mode 100644 _badges/uri_ada.json create mode 100644 _badges/uri_mime.json create mode 100644 _badges/usb_embedded.json create mode 100644 _badges/utf8test.json create mode 100644 _badges/utilada.json create mode 100644 _badges/utilada_aws.json create mode 100644 _badges/utilada_curl.json create mode 100644 _badges/utilada_lzma.json create mode 100644 _badges/utilada_unit.json create mode 100644 _badges/utilada_xml.json create mode 100644 _badges/uxstrings.json create mode 100644 _badges/vanilla.json create mode 100644 _badges/vaton.json create mode 100644 _badges/virtapu.json create mode 100644 _badges/vss.json create mode 100644 _badges/wayland_ada_info.json create mode 100644 _badges/wayland_ada_scanner.json create mode 100644 _badges/wayland_client_ada.json create mode 100644 _badges/wayland_cursor_ada.json create mode 100644 _badges/wayland_egl_ada.json create mode 100644 _badges/wayland_protocols_ada.json create mode 100644 _badges/webdriver.json create mode 100644 _badges/webif_example.json create mode 100644 _badges/weechat_ada.json create mode 100644 _badges/whitakers_words.json create mode 100644 _badges/wikiada.json create mode 100644 _badges/wikibook.json create mode 100644 _badges/win32ada.json create mode 100644 _badges/winpthreads.json create mode 100644 _badges/wisitoken.json create mode 100644 _badges/wl_lib.json create mode 100644 _badges/wordle.json create mode 100644 _badges/wordlelib.json create mode 100644 _badges/wordlist.json create mode 100644 _badges/workers.json create mode 100644 _badges/xdg_base_dir.json create mode 100644 _badges/xia.json create mode 100644 _badges/xml_ez_out.json create mode 100644 _badges/xmlada.json create mode 100644 _badges/xoshiro.json create mode 100644 _badges/yass.json create mode 100644 _badges/yeison.json create mode 100644 _badges/z_compression.json create mode 100644 _badges/zeromq_ada.json create mode 100644 _badges/zipada.json create mode 100644 _badges/zipdcf.json create mode 100644 _badges/zlib.json create mode 100644 _badges/zlib_ada.json create mode 100644 _config.yml create mode 100644 _crates/a0b_armv7m.md create mode 100644 _crates/a0b_armv7m_systick_clock.md create mode 100644 _crates/a0b_armv7m_systick_clock_timer.md create mode 100644 _crates/a0b_atsam3x8e.md create mode 100644 _crates/a0b_atsam3x8e_gpio.md create mode 100644 _crates/a0b_atsam3x8e_tc5_timer.md create mode 100644 _crates/a0b_atsam3x8e_twi_i2c.md create mode 100644 _crates/a0b_base.md create mode 100644 _crates/a0b_callbacks.md create mode 100644 _crates/a0b_exti.md create mode 100644 _crates/a0b_gpio.md create mode 100644 _crates/a0b_i2c.md create mode 100644 _crates/a0b_stm32f401.md create mode 100644 _crates/a0b_stm32f401_dma.md create mode 100644 _crates/a0b_stm32f401_gpio.md create mode 100644 _crates/a0b_stm32f401_i2c.md create mode 100644 _crates/a0b_stm32f401_tim11_timer.md create mode 100644 _crates/a0b_time.md create mode 100644 _crates/a0b_timer.md create mode 100644 _crates/aaa.md create mode 100644 _crates/ada_fuse.md create mode 100644 _crates/ada_gui.md create mode 100644 _crates/ada_language_server.md create mode 100644 _crates/ada_lua.md create mode 100644 _crates/ada_pretty.md create mode 100644 _crates/ada_toml.md create mode 100644 _crates/ada_voxel_space_demo.md create mode 100644 _crates/adabots.md create mode 100644 _crates/adacl.md create mode 100644 _crates/adare_dilithium5.md create mode 100644 _crates/adare_hqc256.md create mode 100644 _crates/adasat.md create mode 100644 _crates/adayaml.md create mode 100644 _crates/adl_middleware.md create mode 100644 _crates/admpfr.md create mode 100644 _crates/ado.md create mode 100644 _crates/ado_all.md create mode 100644 _crates/ado_mysql.md create mode 100644 _crates/ado_postgresql.md create mode 100644 _crates/ado_sqlite.md create mode 100644 _crates/aflex.md create mode 100644 _crates/agpl.md create mode 100644 _crates/aicwl.md create mode 100644 _crates/ajunitgen.md create mode 100644 _crates/akt.md create mode 100644 _crates/alr2appimage.md create mode 100644 _crates/anagram.md create mode 100644 _crates/ansiada.md create mode 100644 _crates/aoa_22.md create mode 100644 _crates/aoa_23.md create mode 100644 _crates/apdf.md create mode 100644 _crates/are.md create mode 100644 _crates/asfml.md create mode 100644 _crates/ashell.md create mode 100644 _crates/asis.md create mode 100644 _crates/atari_atr_tools.md create mode 100644 _crates/atari_exe_tools.md create mode 100644 _crates/atomic.md create mode 100644 _crates/audio_base.md create mode 100644 _crates/audio_wavefiles.md create mode 100644 _crates/aunit.md create mode 100644 _crates/automate.md create mode 100644 _crates/avltrees.md create mode 100644 _crates/avrada_examples.md create mode 100644 _crates/avrada_lib.md create mode 100644 _crates/avrada_mcu.md create mode 100644 _crates/avrada_rts.md create mode 100644 _crates/awa.md create mode 100644 _crates/awa_unit.md create mode 100644 _crates/aws.md create mode 100644 _crates/axmpp.md create mode 100644 _crates/ayacc.md create mode 100644 _crates/azip.md create mode 100644 _crates/b2ssum.md create mode 100644 _crates/bar_code_drawing.md create mode 100644 _crates/bar_codes.md create mode 100644 _crates/basalt.md create mode 100644 _crates/base64.md create mode 100644 _crates/bb_pico_bsp.md create mode 100644 _crates/bbqueue.md create mode 100644 _crates/bbs.md create mode 100644 _crates/bbs_embed_common.md create mode 100644 _crates/bbs_embed_linux.md create mode 100644 _crates/bbs_lisp.md create mode 100644 _crates/bbs_simcpu.md create mode 100644 _crates/bbs_webif.md create mode 100644 _crates/bbt.md create mode 100644 _crates/binary_trees.md create mode 100644 _crates/bingada.md create mode 100644 _crates/bit_sets.md create mode 100644 _crates/blake2s.md create mode 100644 _crates/blinkenlights.md create mode 100644 _crates/bme280.md create mode 100644 _crates/brackelib.md create mode 100644 _crates/c_strings.md create mode 100644 _crates/canberra_ada.md create mode 100644 _crates/cashe.md create mode 100644 _crates/cbsg.md create mode 100644 _crates/chacha20.md create mode 100644 _crates/checksum.md create mode 100644 _crates/cheddar.md create mode 100644 _crates/chests.md create mode 100644 _crates/chipmunk2d.md create mode 100644 _crates/clic.md create mode 100644 _crates/cmd_ada.md create mode 100644 _crates/cobs.md create mode 100644 _crates/controlled_io.md create mode 100644 _crates/cortex_m.md create mode 100644 _crates/crc_32.md create mode 100644 _crates/curl.md create mode 100644 _crates/dashera.md create mode 100644 _crates/db_maker.md create mode 100644 _crates/dcf.md create mode 100644 _crates/dependency_graph_extractor.md create mode 100644 _crates/dg_loada.md create mode 100644 _crates/dir_iterators.md create mode 100644 _crates/dirty_booleans.md create mode 100644 _crates/dotenv.md create mode 100644 _crates/dummyserver.md create mode 100644 _crates/dynamo.md create mode 100644 _crates/eagle_lander.md create mode 100644 _crates/easy_graphics.md create mode 100644 _crates/edc_client.md create mode 100644 _crates/eeprom_i2c.md create mode 100644 _crates/elada.md create mode 100644 _crates/elevator.md create mode 100644 _crates/elogs.md create mode 100644 _crates/emacs_ada_mode.md create mode 100644 _crates/emacs_gpr_mode.md create mode 100644 _crates/emacs_gpr_query.md create mode 100644 _crates/emacs_wisi.md create mode 100644 _crates/emacs_wisitoken_grammar_mode.md create mode 100644 _crates/embedded_components.md create mode 100644 _crates/emdee.md create mode 100644 _crates/emojis.md create mode 100644 _crates/encryption_utilities.md create mode 100644 _crates/endianness.md create mode 100644 _crates/enet.md create mode 100644 _crates/enet_stm32.md create mode 100644 _crates/epoll.md create mode 100644 _crates/esp_idf.md create mode 100644 _crates/ethernet.md create mode 100644 _crates/euler_tools.md create mode 100644 _crates/evdev.md create mode 100644 _crates/ews.md create mode 100644 _crates/excel_writer.md create mode 100644 _crates/fastpbkdf2_ada.md create mode 100644 _crates/felix.md create mode 100644 _crates/florist.md create mode 100644 _crates/florist_blady.md create mode 100644 _crates/freetypeada.md create mode 100644 _crates/garlic.md create mode 100644 _crates/geo_coords.md create mode 100644 _crates/geste.md create mode 100644 _crates/geste_examples.md create mode 100644 _crates/get_password.md create mode 100644 _crates/getada.md create mode 100644 _crates/getopt.md create mode 100644 _crates/gfx_core.md create mode 100644 _crates/gfx_rasteriser.md create mode 100644 _crates/gid.md create mode 100644 _crates/globe_3d.md create mode 100644 _crates/glut.md create mode 100644 _crates/gnat_arm_elf.md create mode 100644 _crates/gnat_avr_elf.md create mode 100644 _crates/gnat_external.md create mode 100644 _crates/gnat_math_extensions.md create mode 100644 _crates/gnat_native.md create mode 100644 _crates/gnat_riscv64_elf.md create mode 100644 _crates/gnat_xtensa_esp32_elf.md create mode 100644 _crates/gnatcoll.md create mode 100644 _crates/gnatcoll_gmp.md create mode 100644 _crates/gnatcoll_iconv.md create mode 100644 _crates/gnatcoll_lzma.md create mode 100644 _crates/gnatcoll_omp.md create mode 100644 _crates/gnatcoll_postgres.md create mode 100644 _crates/gnatcoll_python.md create mode 100644 _crates/gnatcoll_python3.md create mode 100644 _crates/gnatcoll_readline.md create mode 100644 _crates/gnatcoll_sql.md create mode 100644 _crates/gnatcoll_sqlite.md create mode 100644 _crates/gnatcoll_syslog.md create mode 100644 _crates/gnatcoll_xref.md create mode 100644 _crates/gnatcoll_zlib.md create mode 100644 _crates/gnatcov.md create mode 100644 _crates/gnatdist_garlic.md create mode 100644 _crates/gnatdoc.md create mode 100644 _crates/gnatformat.md create mode 100644 _crates/gnatprove.md create mode 100644 _crates/gnoga.md create mode 100644 _crates/gpr_unit_provider.md create mode 100644 _crates/gprbuild.md create mode 100644 _crates/gsl.md create mode 100644 _crates/gtkada.md create mode 100644 _crates/gwindows.md create mode 100644 _crates/hac.md create mode 100644 _crates/hal.md create mode 100644 _crates/hangman.md create mode 100644 _crates/hello.md create mode 100644 _crates/hex_format.md create mode 100644 _crates/hirtos.md create mode 100644 _crates/hirtos_separation_kernel.md create mode 100644 _crates/hmac.md create mode 100644 _crates/hmc5883.md create mode 100644 _crates/honki_tonks_zivilisationen.md create mode 100644 _crates/hp41cx_tools.md create mode 100644 _crates/hungarian.md create mode 100644 _crates/image_io.md create mode 100644 _crates/image_random.md create mode 100644 _crates/ini_files.md create mode 100644 _crates/inotify.md create mode 100644 _crates/intl.md create mode 100644 _crates/iso.md create mode 100644 _crates/iterators.md create mode 100644 _crates/itsybitsy_bsp.md create mode 100644 _crates/itsybitsy_rp2040_bsp.md create mode 100644 _crates/j2ada.md create mode 100644 _crates/jintp.md create mode 100644 _crates/journada.md create mode 100644 _crates/json.md create mode 100644 _crates/jupyter_kernel.md create mode 100644 _crates/jwt.md create mode 100644 _crates/keypadder.md create mode 100644 _crates/keystoreada.md create mode 100644 _crates/labs_radar.md create mode 100644 _crates/labs_solar_system.md create mode 100644 _crates/labs_standalone.md create mode 100644 _crates/lace.md create mode 100644 _crates/lace_box2d.md create mode 100644 _crates/lace_bullet.md create mode 100644 _crates/lace_c_math.md create mode 100644 _crates/lace_collada.md create mode 100644 _crates/lace_gel.md create mode 100644 _crates/lace_gel_animation_demo.md create mode 100644 _crates/lace_gel_full_demo.md create mode 100644 _crates/lace_math.md create mode 100644 _crates/lace_opengl.md create mode 100644 _crates/lace_physics.md create mode 100644 _crates/lace_shared.md create mode 100644 _crates/lace_swig.md create mode 100644 _crates/lace_xml.md create mode 100644 _crates/lal_highlight.md create mode 100644 _crates/lal_refactor.md create mode 100644 _crates/langkit_support.md create mode 100644 _crates/lea.md create mode 100644 _crates/learnadainy.md create mode 100644 _crates/libadalang.md create mode 100644 _crates/libadalang2xml.md create mode 100644 _crates/libadalang_tools.md create mode 100644 _crates/libblas.md create mode 100644 _crates/libbullet.md create mode 100644 _crates/libcanberra.md create mode 100644 _crates/libchipmunk.md create mode 100644 _crates/libclntsh.md create mode 100644 _crates/libcmark.md create mode 100644 _crates/libcsfml.md create mode 100644 _crates/libcurl.md create mode 100644 _crates/libegl.md create mode 100644 _crates/libexpat.md create mode 100644 _crates/libfbclient.md create mode 100644 _crates/libfreetype.md create mode 100644 _crates/libftdi1.md create mode 100644 _crates/libfuse.md create mode 100644 _crates/libglfw3.md create mode 100644 _crates/libglib.md create mode 100644 _crates/libgmp.md create mode 100644 _crates/libgnatdoc.md create mode 100644 _crates/libgnatformat.md create mode 100644 _crates/libgnutls.md create mode 100644 _crates/libgomp.md create mode 100644 _crates/libgpiod.md create mode 100644 _crates/libgpr.md create mode 100644 _crates/libgpr2.md create mode 100644 _crates/libgraph_easy_perl.md create mode 100644 _crates/libgsl.md create mode 100644 _crates/libgtk3.md create mode 100644 _crates/libhello.md create mode 100644 _crates/libhidapi.md create mode 100644 _crates/libi2c.md create mode 100644 _crates/libiconv.md create mode 100644 _crates/libkeccak.md create mode 100644 _crates/liblal_refactor.md create mode 100644 _crates/liblapack.md create mode 100644 _crates/liblua.md create mode 100644 _crates/liblzma.md create mode 100644 _crates/libmagic.md create mode 100644 _crates/libmariadb.md create mode 100644 _crates/libmesa.md create mode 100644 _crates/libmpfr.md create mode 100644 _crates/libmysqlclient.md create mode 100644 _crates/libopus.md create mode 100644 _crates/libpcap.md create mode 100644 _crates/libpq.md create mode 100644 _crates/libpulse.md create mode 100644 _crates/libpython2dev.md create mode 100644 _crates/libpython3dev.md create mode 100644 _crates/libraylib.md create mode 100644 _crates/libreadline.md create mode 100644 _crates/librtmidi.md create mode 100644 _crates/libsdl2.md create mode 100644 _crates/libsdl2_image.md create mode 100644 _crates/libsdl2_mixer.md create mode 100644 _crates/libsdl2_ttf.md create mode 100644 _crates/libsecret.md create mode 100644 _crates/libsimpleio.md create mode 100644 _crates/libsqlite3.md create mode 100644 _crates/libtcl.md create mode 100644 _crates/libtk.md create mode 100644 _crates/libtls.md create mode 100644 _crates/libusb.md create mode 100644 _crates/libwayland.md create mode 100644 _crates/libx11.md create mode 100644 _crates/libzmq.md create mode 100644 _crates/light_arduino_due.md create mode 100644 _crates/light_blackpill_stm32f401.md create mode 100644 _crates/light_fk723m1_zgt6.md create mode 100644 _crates/lined.md create mode 100644 _crates/linenoise_ada.md create mode 100644 _crates/linux_hal.md create mode 100644 _crates/lispcli.md create mode 100644 _crates/list_image.md create mode 100644 _crates/littlefs.md create mode 100644 _crates/lmdb_ada.md create mode 100644 _crates/loadcpm.md create mode 100644 _crates/loga.md create mode 100644 _crates/ltp_305.md create mode 100644 _crates/lvgl_ada.md create mode 100644 _crates/lvgl_ada_examples.md create mode 100644 _crates/lvgl_ada_simulator.md create mode 100644 _crates/lzmada.md create mode 100644 _crates/m4_tool.md create mode 100644 _crates/mage.md create mode 100644 _crates/mage_hat.md create mode 100644 _crates/magicada.md create mode 100644 _crates/make.md create mode 100644 _crates/mandelbrot_ascii.md create mode 100644 _crates/markdown.md create mode 100644 _crates/mathpaqs.md create mode 100644 _crates/matreshka_amf.md create mode 100644 _crates/matreshka_amf_dd.md create mode 100644 _crates/matreshka_amf_mofext.md create mode 100644 _crates/matreshka_amf_ocl.md create mode 100644 _crates/matreshka_amf_uml.md create mode 100644 _crates/matreshka_amf_utp.md create mode 100644 _crates/matreshka_fastcgi.md create mode 100644 _crates/matreshka_league.md create mode 100644 _crates/matreshka_servlet.md create mode 100644 _crates/matreshka_soap.md create mode 100644 _crates/matreshka_soap_wsse.md create mode 100644 _crates/matreshka_spikedog_api.md create mode 100644 _crates/matreshka_spikedog_awsd.md create mode 100644 _crates/matreshka_spikedog_core.md create mode 100644 _crates/matreshka_sql.md create mode 100644 _crates/matreshka_sql_firebird.md create mode 100644 _crates/matreshka_sql_mysql.md create mode 100644 _crates/matreshka_sql_oracle.md create mode 100644 _crates/matreshka_sql_postgresql.md create mode 100644 _crates/matreshka_sql_sqlite3.md create mode 100644 _crates/matreshka_xml.md create mode 100644 _crates/mcp2221.md create mode 100644 _crates/microbit_bsp.md create mode 100644 _crates/microbit_examples.md create mode 100644 _crates/midi.md create mode 100644 _crates/mine_detector.md create mode 100644 _crates/minimal_containers.md create mode 100644 _crates/minirest.md create mode 100644 _crates/minisamd51_bsp.md create mode 100644 _crates/minisamd51_example.md create mode 100644 _crates/mold.md create mode 100644 _crates/mold_lib.md create mode 100644 _crates/mos6502_create_led.md create mode 100644 _crates/mos6502_create_nop.md create mode 100644 _crates/mos6502_create_reset.md create mode 100644 _crates/msys2_runtime.md create mode 100644 _crates/muntsos_aarch64.md create mode 100644 _crates/muntsos_beaglebone.md create mode 100644 _crates/muntsos_dev_aarch64.md create mode 100644 _crates/muntsos_dev_beaglebone.md create mode 100644 _crates/muntsos_dev_raspberrypi1.md create mode 100644 _crates/muntsos_dev_raspberrypi2.md create mode 100644 _crates/muntsos_raspberrypi1.md create mode 100644 _crates/muntsos_raspberrypi2.md create mode 100644 _crates/muntsos_raspberrypi3.md create mode 100644 _crates/muntsos_raspberrypi4.md create mode 100644 _crates/muntsos_raspberrypi5.md create mode 100644 _crates/musicplayer.md create mode 100644 _crates/ncursesada.md create mode 100644 _crates/nrf5x_hal.md create mode 100644 _crates/ocarina_lib.md create mode 100644 _crates/openai.md create mode 100644 _crates/openapi.md create mode 100644 _crates/openapi_server.md create mode 100644 _crates/openglada.md create mode 100644 _crates/openglada_glfw.md create mode 100644 _crates/openglada_images.md create mode 100644 _crates/openglada_text.md create mode 100644 _crates/openssl.md create mode 100644 _crates/opentoken.md create mode 100644 _crates/optional.md create mode 100644 _crates/orka.md create mode 100644 _crates/orka_awt.md create mode 100644 _crates/orka_egl.md create mode 100644 _crates/orka_numerics.md create mode 100644 _crates/orka_opengl.md create mode 100644 _crates/orka_plugin_archives.md create mode 100644 _crates/orka_plugin_atmosphere.md create mode 100644 _crates/orka_plugin_gltf.md create mode 100644 _crates/orka_plugin_terrain.md create mode 100644 _crates/orka_simd.md create mode 100644 _crates/orka_tensors_cpu.md create mode 100644 _crates/orka_tensors_gpu.md create mode 100644 _crates/orka_tools.md create mode 100644 _crates/orka_transforms.md create mode 100644 _crates/orka_types.md create mode 100644 _crates/parallelize.md create mode 100644 _crates/parse_args.md create mode 100644 _crates/partord.md create mode 100644 _crates/password_gen.md create mode 100644 _crates/pbkdf2.md create mode 100644 _crates/phcpack.md create mode 100644 _crates/pico_bsp.md create mode 100644 _crates/pico_examples.md create mode 100644 _crates/pkg_config.md create mode 100644 _crates/pla_util.md create mode 100644 _crates/play_2048.md create mode 100644 _crates/plplot.md create mode 100644 _crates/portable_minimal_ada_rts.md create mode 100644 _crates/postgresql.md create mode 100644 _crates/powerjoular.md create mode 100644 _crates/ppag.md create mode 100644 _crates/pragmarc.md create mode 100644 _crates/prettier_ada.md create mode 100644 _crates/printer_toolkit.md create mode 100644 _crates/program_proofs_in_spark.md create mode 100644 _crates/progress_indicators.md create mode 100644 _crates/protobuf.md create mode 100644 _crates/pygamer_bsp.md create mode 100644 _crates/pygamer_simulator.md create mode 100644 _crates/qmc5883.md create mode 100644 _crates/qoi.md create mode 100644 _crates/qplt.md create mode 100644 _crates/raspberry_bsp.md create mode 100644 _crates/raylib.md create mode 100644 _crates/rclada.md create mode 100644 _crates/rclada_examples.md create mode 100644 _crates/re2c.md create mode 100644 _crates/rejuvenation.md create mode 100644 _crates/remoteio.md create mode 100644 _crates/resources.md create mode 100644 _crates/rewriters.md create mode 100644 _crates/ros2_foxy.md create mode 100644 _crates/rp2040_hal.md create mode 100644 _crates/rsfile.md create mode 100644 _crates/rtmidi.md create mode 100644 _crates/rxada.md create mode 100644 _crates/saatana.md create mode 100644 _crates/samd51_hal.md create mode 100644 _crates/sciada.md create mode 100644 _crates/scripted_testing.md create mode 100644 _crates/sdlada.md create mode 100644 _crates/secretada.md create mode 100644 _crates/security.md create mode 100644 _crates/semantic_versioning.md create mode 100644 _crates/septum.md create mode 100644 _crates/serverfaces.md create mode 100644 _crates/serverfaces_unit.md create mode 100644 _crates/servletada.md create mode 100644 _crates/servletada_aws.md create mode 100644 _crates/servletada_ews.md create mode 100644 _crates/servletada_unit.md create mode 100644 _crates/sh1107.md create mode 100644 _crates/sha1.md create mode 100644 _crates/sha2.md create mode 100644 _crates/shoot_n_loot.md create mode 100644 _crates/si_units.md create mode 100644 _crates/simcpucli.md create mode 100644 _crates/simh_tapes.md create mode 100644 _crates/simple_components.md create mode 100644 _crates/simple_logging.md create mode 100644 _crates/simple_regex.md create mode 100644 _crates/slip.md create mode 100644 _crates/socketcan.md create mode 100644 _crates/spark_unbound.md create mode 100644 _crates/sparknacl.md create mode 100644 _crates/spat.md create mode 100644 _crates/spawn.md create mode 100644 _crates/spawn_glib.md create mode 100644 _crates/spdx.md create mode 100644 _crates/specfun.md create mode 100644 _crates/splitter.md create mode 100644 _crates/spoon.md create mode 100644 _crates/ssl.md create mode 100644 _crates/st7789.md create mode 100644 _crates/startup_gen.md create mode 100644 _crates/stephes_ada_library.md create mode 100644 _crates/stm32f0x2_hal.md create mode 100644 _crates/stopwatch.md create mode 100644 _crates/suika_programing.md create mode 100644 _crates/svd2ada.md create mode 100644 _crates/system_random.md create mode 100644 _crates/tash.md create mode 100644 _crates/task_coroutines.md create mode 100644 _crates/templates_parser.md create mode 100644 _crates/texcad.md create mode 100644 _crates/tiled_code_gen.md create mode 100644 _crates/tiny_rp2040_bsp.md create mode 100644 _crates/tiny_text.md create mode 100644 _crates/tlsada.md create mode 100644 _crates/toml_slicer.md create mode 100644 _crates/trendy_terminal.md create mode 100644 _crates/trendy_test.md create mode 100644 _crates/tresses.md create mode 100644 _crates/ulid.md create mode 100644 _crates/umwi.md create mode 100644 _crates/universal_text_file.md create mode 100644 _crates/unixodbc.md create mode 100644 _crates/uri_ada.md create mode 100644 _crates/uri_mime.md create mode 100644 _crates/usb_embedded.md create mode 100644 _crates/utf8test.md create mode 100644 _crates/utilada.md create mode 100644 _crates/utilada_aws.md create mode 100644 _crates/utilada_curl.md create mode 100644 _crates/utilada_lzma.md create mode 100644 _crates/utilada_unit.md create mode 100644 _crates/utilada_xml.md create mode 100644 _crates/uxstrings.md create mode 100644 _crates/vanilla.md create mode 100644 _crates/vaton.md create mode 100644 _crates/virtapu.md create mode 100644 _crates/vss.md create mode 100644 _crates/wayland_ada_info.md create mode 100644 _crates/wayland_ada_scanner.md create mode 100644 _crates/wayland_client_ada.md create mode 100644 _crates/wayland_cursor_ada.md create mode 100644 _crates/wayland_egl_ada.md create mode 100644 _crates/wayland_protocols_ada.md create mode 100644 _crates/webdriver.md create mode 100644 _crates/webif_example.md create mode 100644 _crates/weechat_ada.md create mode 100644 _crates/whitakers_words.md create mode 100644 _crates/wikiada.md create mode 100644 _crates/wikibook.md create mode 100644 _crates/win32ada.md create mode 100644 _crates/winpthreads.md create mode 100644 _crates/wisitoken.md create mode 100644 _crates/wl_lib.md create mode 100644 _crates/wordle.md create mode 100644 _crates/wordlelib.md create mode 100644 _crates/wordlist.md create mode 100644 _crates/workers.md create mode 100644 _crates/xdg_base_dir.md create mode 100644 _crates/xia.md create mode 100644 _crates/xml_ez_out.md create mode 100644 _crates/xmlada.md create mode 100644 _crates/xoshiro.md create mode 100644 _crates/yass.md create mode 100644 _crates/yeison.md create mode 100644 _crates/z_compression.md create mode 100644 _crates/zeromq_ada.md create mode 100644 _crates/zipada.md create mode 100644 _crates/zipdcf.md create mode 100644 _crates/zlib.md create mode 100644 _crates/zlib_ada.md create mode 100644 _data/badge.json create mode 100644 _data/meta.yaml create mode 100644 _data/tags.json create mode 100644 _data/update.yml create mode 100644 _includes/crate_badge.html create mode 100644 _includes/footer.html create mode 100644 _includes/head.html create mode 100644 _includes/header.html create mode 100644 _includes/make_list.html create mode 100644 _layouts/badge.json create mode 100644 _layouts/crate.html create mode 100644 _layouts/default.html create mode 100644 _layouts/page.html create mode 100644 _layouts/page_full_width.html create mode 100644 _sass/devlog.scss create mode 100644 alire_install/LICENSE.txt create mode 100755 alire_install/bin/alr create mode 100644 assets/css/main.scss create mode 100644 assets/img/favicon.ico create mode 100644 assets/img/profile.png create mode 100755 assets/tipuesearch/css/tipuesearch.css create mode 100644 assets/tipuesearch/search.png create mode 100644 assets/tipuesearch/tipuesearch.min.js create mode 100644 assets/tipuesearch/tipuesearch_content.js create mode 100644 assets/tipuesearch/tipuesearch_set.js create mode 100644 coty_banner.jpg create mode 100644 crates.md create mode 100644 dependency_graph.py create mode 100644 deps_graph_data.json create mode 100644 docs/2018-03.alr-draft.pdf create mode 100644 docs/alr-logo-black-white.svg create mode 100644 docs/alr-logo-sq.png create mode 100644 docs/alr-logo-white.svg create mode 100644 docs/alr-logo.svg create mode 100644 docs/alr-logo.svg.png create mode 100644 docs/catalog-format-spec.md create mode 100644 docs/classes.graphml create mode 100644 docs/getting-started.md create mode 100644 docs/index.md create mode 100644 docs/introduction.md create mode 100644 docs/policies.md create mode 100644 docs/publishing.md create mode 100644 docs/settings.md create mode 100644 docs/toolchains.md create mode 100644 docs/unicode.md create mode 100644 docs/upgrading.md create mode 100644 docs/user-changes.md create mode 100644 index.md create mode 100644 network.md create mode 100644 search.html create mode 100644 tags.md create mode 100644 transition_from_gnat_community.md create mode 100644 update-gh-pages.sh diff --git a/.github/workflows/update.yaml b/.github/workflows/update.yaml new file mode 100644 index 00000000..10e6f1ea --- /dev/null +++ b/.github/workflows/update.yaml @@ -0,0 +1,21 @@ +name: Update gh-pages branch on alire.ada.dev +on: + schedule: + - cron: '0 0 * * *' + push: +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - uses: alire-project/setup-alire@v4 + - run: bash -v update-gh-pages.sh + env: + GITHUB_TOKEN: ${{ secrets.GH_PAGES_UPDATE }} + + - name: Request Github Pages build job + run: >- + curl -L -X POST + -H "Content-Type: application/json" + -H "Authorization: token ${{ secrets.GH_PAGES_UPDATE }}" + "https://api.github.com/repos/${{ github.repository }}/pages/builds" diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..49448204 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +_site/ +.sass-cache/ +.jekyll-cache/ +.jekyll-metadata +Gemfile.lock diff --git a/404.html b/404.html new file mode 100644 index 00000000..c472b4ea --- /dev/null +++ b/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..e7611006 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +alire.ada.dev \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 00000000..75618b5b --- /dev/null +++ b/Gemfile @@ -0,0 +1,33 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 3.8.6" + +# gem "devlopr" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :install_if => Gem.win_platform? + diff --git a/README.md b/README.md new file mode 100644 index 00000000..f61b2896 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# alire.ada.dev +Official website for the project diff --git a/_badges/a0b_armv7m.json b/_badges/a0b_armv7m.json new file mode 100644 index 00000000..e99a8d02 --- /dev/null +++ b/_badges/a0b_armv7m.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_armv7m" +version: "0.1.0" +--- diff --git a/_badges/a0b_armv7m_systick_clock.json b/_badges/a0b_armv7m_systick_clock.json new file mode 100644 index 00000000..ead41dc7 --- /dev/null +++ b/_badges/a0b_armv7m_systick_clock.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_armv7m_systick_clock" +version: "0.1.0" +--- diff --git a/_badges/a0b_armv7m_systick_clock_timer.json b/_badges/a0b_armv7m_systick_clock_timer.json new file mode 100644 index 00000000..7869b1a7 --- /dev/null +++ b/_badges/a0b_armv7m_systick_clock_timer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_armv7m_systick_clock_timer" +version: "0.1.0" +--- diff --git a/_badges/a0b_atsam3x8e.json b/_badges/a0b_atsam3x8e.json new file mode 100644 index 00000000..fdf424e9 --- /dev/null +++ b/_badges/a0b_atsam3x8e.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_atsam3x8e" +version: "0.2.0" +--- diff --git a/_badges/a0b_atsam3x8e_gpio.json b/_badges/a0b_atsam3x8e_gpio.json new file mode 100644 index 00000000..147ca9e4 --- /dev/null +++ b/_badges/a0b_atsam3x8e_gpio.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_atsam3x8e_gpio" +version: "0.1.0" +--- diff --git a/_badges/a0b_atsam3x8e_tc5_timer.json b/_badges/a0b_atsam3x8e_tc5_timer.json new file mode 100644 index 00000000..d18f47d5 --- /dev/null +++ b/_badges/a0b_atsam3x8e_tc5_timer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_atsam3x8e_tc5_timer" +version: "0.1.0" +--- diff --git a/_badges/a0b_atsam3x8e_twi_i2c.json b/_badges/a0b_atsam3x8e_twi_i2c.json new file mode 100644 index 00000000..f3ca2aee --- /dev/null +++ b/_badges/a0b_atsam3x8e_twi_i2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_atsam3x8e_twi_i2c" +version: "0.1.0" +--- diff --git a/_badges/a0b_base.json b/_badges/a0b_base.json new file mode 100644 index 00000000..924418c1 --- /dev/null +++ b/_badges/a0b_base.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_base" +version: "0.2.0" +--- diff --git a/_badges/a0b_callbacks.json b/_badges/a0b_callbacks.json new file mode 100644 index 00000000..ed306139 --- /dev/null +++ b/_badges/a0b_callbacks.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_callbacks" +version: "0.1.0" +--- diff --git a/_badges/a0b_exti.json b/_badges/a0b_exti.json new file mode 100644 index 00000000..08fab237 --- /dev/null +++ b/_badges/a0b_exti.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_exti" +version: "0.1.0" +--- diff --git a/_badges/a0b_gpio.json b/_badges/a0b_gpio.json new file mode 100644 index 00000000..cdd3e002 --- /dev/null +++ b/_badges/a0b_gpio.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_gpio" +version: "0.1.0" +--- diff --git a/_badges/a0b_i2c.json b/_badges/a0b_i2c.json new file mode 100644 index 00000000..6c751a60 --- /dev/null +++ b/_badges/a0b_i2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_i2c" +version: "0.1.0" +--- diff --git a/_badges/a0b_stm32f401.json b/_badges/a0b_stm32f401.json new file mode 100644 index 00000000..0d29eb0b --- /dev/null +++ b/_badges/a0b_stm32f401.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_stm32f401" +version: "0.1.0" +--- diff --git a/_badges/a0b_stm32f401_dma.json b/_badges/a0b_stm32f401_dma.json new file mode 100644 index 00000000..e834ab79 --- /dev/null +++ b/_badges/a0b_stm32f401_dma.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_stm32f401_dma" +version: "0.1.0" +--- diff --git a/_badges/a0b_stm32f401_gpio.json b/_badges/a0b_stm32f401_gpio.json new file mode 100644 index 00000000..de4641da --- /dev/null +++ b/_badges/a0b_stm32f401_gpio.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_stm32f401_gpio" +version: "0.1.0" +--- diff --git a/_badges/a0b_stm32f401_i2c.json b/_badges/a0b_stm32f401_i2c.json new file mode 100644 index 00000000..e5450a5c --- /dev/null +++ b/_badges/a0b_stm32f401_i2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_stm32f401_i2c" +version: "0.1.0" +--- diff --git a/_badges/a0b_stm32f401_tim11_timer.json b/_badges/a0b_stm32f401_tim11_timer.json new file mode 100644 index 00000000..58318454 --- /dev/null +++ b/_badges/a0b_stm32f401_tim11_timer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_stm32f401_tim11_timer" +version: "0.1.0" +--- diff --git a/_badges/a0b_time.json b/_badges/a0b_time.json new file mode 100644 index 00000000..a25924cc --- /dev/null +++ b/_badges/a0b_time.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_time" +version: "0.2.0" +--- diff --git a/_badges/a0b_timer.json b/_badges/a0b_timer.json new file mode 100644 index 00000000..a25e715a --- /dev/null +++ b/_badges/a0b_timer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "a0b_timer" +version: "0.1.0" +--- diff --git a/_badges/aaa.json b/_badges/aaa.json new file mode 100644 index 00000000..4cbad2bb --- /dev/null +++ b/_badges/aaa.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aaa" +version: "0.2.6" +--- diff --git a/_badges/ada_fuse.json b/_badges/ada_fuse.json new file mode 100644 index 00000000..08c78ead --- /dev/null +++ b/_badges/ada_fuse.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_fuse" +version: "1.0.1" +--- diff --git a/_badges/ada_gui.json b/_badges/ada_gui.json new file mode 100644 index 00000000..089971b3 --- /dev/null +++ b/_badges/ada_gui.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_gui" +version: "20240224.0.1" +--- diff --git a/_badges/ada_language_server.json b/_badges/ada_language_server.json new file mode 100644 index 00000000..49b71647 --- /dev/null +++ b/_badges/ada_language_server.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_language_server" +version: "25.0.0" +--- diff --git a/_badges/ada_lua.json b/_badges/ada_lua.json new file mode 100644 index 00000000..e04779da --- /dev/null +++ b/_badges/ada_lua.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_lua" +version: "0.1.0" +--- diff --git a/_badges/ada_pretty.json b/_badges/ada_pretty.json new file mode 100644 index 00000000..385b0932 --- /dev/null +++ b/_badges/ada_pretty.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_pretty" +version: "1.0.0" +--- diff --git a/_badges/ada_toml.json b/_badges/ada_toml.json new file mode 100644 index 00000000..a2b2d43c --- /dev/null +++ b/_badges/ada_toml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_toml" +version: "0.5.0" +--- diff --git a/_badges/ada_voxel_space_demo.json b/_badges/ada_voxel_space_demo.json new file mode 100644 index 00000000..0cbb0510 --- /dev/null +++ b/_badges/ada_voxel_space_demo.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ada_voxel_space_demo" +version: "1.0.1" +--- diff --git a/_badges/adabots.json b/_badges/adabots.json new file mode 100644 index 00000000..55c9f428 --- /dev/null +++ b/_badges/adabots.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adabots" +version: "1.9.0" +--- diff --git a/_badges/adacl.json b/_badges/adacl.json new file mode 100644 index 00000000..ab816526 --- /dev/null +++ b/_badges/adacl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adacl" +version: "5.16.0" +--- diff --git a/_badges/adare_dilithium5.json b/_badges/adare_dilithium5.json new file mode 100644 index 00000000..664bb9e8 --- /dev/null +++ b/_badges/adare_dilithium5.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adare_dilithium5" +version: "0.2.3" +--- diff --git a/_badges/adare_hqc256.json b/_badges/adare_hqc256.json new file mode 100644 index 00000000..e78a202b --- /dev/null +++ b/_badges/adare_hqc256.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adare_hqc256" +version: "0.2.3" +--- diff --git a/_badges/adasat.json b/_badges/adasat.json new file mode 100644 index 00000000..f3ad60cc --- /dev/null +++ b/_badges/adasat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adasat" +version: "25.0.0" +--- diff --git a/_badges/adayaml.json b/_badges/adayaml.json new file mode 100644 index 00000000..d61e046b --- /dev/null +++ b/_badges/adayaml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adayaml" +version: "0.3.0" +--- diff --git a/_badges/adl_middleware.json b/_badges/adl_middleware.json new file mode 100644 index 00000000..3a284e55 --- /dev/null +++ b/_badges/adl_middleware.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "adl_middleware" +version: "0.2.0" +--- diff --git a/_badges/admpfr.json b/_badges/admpfr.json new file mode 100644 index 00000000..44bb3c21 --- /dev/null +++ b/_badges/admpfr.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "admpfr" +version: "4.1.0+20220920" +--- diff --git a/_badges/ado.json b/_badges/ado.json new file mode 100644 index 00000000..1aae8a7b --- /dev/null +++ b/_badges/ado.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ado" +version: "2.4.1" +--- diff --git a/_badges/ado_all.json b/_badges/ado_all.json new file mode 100644 index 00000000..f282c53d --- /dev/null +++ b/_badges/ado_all.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ado_all" +version: "2.4.0" +--- diff --git a/_badges/ado_mysql.json b/_badges/ado_mysql.json new file mode 100644 index 00000000..b07445f1 --- /dev/null +++ b/_badges/ado_mysql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ado_mysql" +version: "2.4.1" +--- diff --git a/_badges/ado_postgresql.json b/_badges/ado_postgresql.json new file mode 100644 index 00000000..5fecb4a3 --- /dev/null +++ b/_badges/ado_postgresql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ado_postgresql" +version: "2.4.1" +--- diff --git a/_badges/ado_sqlite.json b/_badges/ado_sqlite.json new file mode 100644 index 00000000..7905a7c2 --- /dev/null +++ b/_badges/ado_sqlite.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ado_sqlite" +version: "2.4.1" +--- diff --git a/_badges/aflex.json b/_badges/aflex.json new file mode 100644 index 00000000..525ccec6 --- /dev/null +++ b/_badges/aflex.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aflex" +version: "1.7.0" +--- diff --git a/_badges/agpl.json b/_badges/agpl.json new file mode 100644 index 00000000..fbe0a8ae --- /dev/null +++ b/_badges/agpl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "agpl" +version: "1.0.0" +--- diff --git a/_badges/aicwl.json b/_badges/aicwl.json new file mode 100644 index 00000000..922edff1 --- /dev/null +++ b/_badges/aicwl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aicwl" +version: "3.24.1" +--- diff --git a/_badges/ajunitgen.json b/_badges/ajunitgen.json new file mode 100644 index 00000000..4ae4656b --- /dev/null +++ b/_badges/ajunitgen.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ajunitgen" +version: "1.0.1" +--- diff --git a/_badges/akt.json b/_badges/akt.json new file mode 100644 index 00000000..61f0c743 --- /dev/null +++ b/_badges/akt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "akt" +version: "1.4.1" +--- diff --git a/_badges/alire-badge.json b/_badges/alire-badge.json new file mode 100644 index 00000000..3f740f62 --- /dev/null +++ b/_badges/alire-badge.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "" +version: "Alire" +--- diff --git a/_badges/alr2appimage.json b/_badges/alr2appimage.json new file mode 100644 index 00000000..d84983d4 --- /dev/null +++ b/_badges/alr2appimage.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "alr2appimage" +version: "0.9.3" +--- diff --git a/_badges/anagram.json b/_badges/anagram.json new file mode 100644 index 00000000..4c3bd758 --- /dev/null +++ b/_badges/anagram.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "anagram" +version: "1.0.0" +--- diff --git a/_badges/ansiada.json b/_badges/ansiada.json new file mode 100644 index 00000000..4c9aae72 --- /dev/null +++ b/_badges/ansiada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ansiada" +version: "1.0.0" +--- diff --git a/_badges/aoa_22.json b/_badges/aoa_22.json new file mode 100644 index 00000000..5f5543f3 --- /dev/null +++ b/_badges/aoa_22.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aoa_22" +version: "20220720.0.0" +--- diff --git a/_badges/aoa_23.json b/_badges/aoa_23.json new file mode 100644 index 00000000..a38a925f --- /dev/null +++ b/_badges/aoa_23.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aoa_23" +version: "20230119.0.0" +--- diff --git a/_badges/apdf.json b/_badges/apdf.json new file mode 100644 index 00000000..1c875078 --- /dev/null +++ b/_badges/apdf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "apdf" +version: "6.0.0" +--- diff --git a/_badges/are.json b/_badges/are.json new file mode 100644 index 00000000..5b23246f --- /dev/null +++ b/_badges/are.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "are" +version: "1.5.1" +--- diff --git a/_badges/asfml.json b/_badges/asfml.json new file mode 100644 index 00000000..fddea9c7 --- /dev/null +++ b/_badges/asfml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "asfml" +version: "2.6.1" +--- diff --git a/_badges/ashell.json b/_badges/ashell.json new file mode 100644 index 00000000..dfb10829 --- /dev/null +++ b/_badges/ashell.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ashell" +version: "1.3.0" +--- diff --git a/_badges/asis.json b/_badges/asis.json new file mode 100644 index 00000000..986749eb --- /dev/null +++ b/_badges/asis.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "asis" +version: "2019.0.0" +--- diff --git a/_badges/atari_atr_tools.json b/_badges/atari_atr_tools.json new file mode 100644 index 00000000..970bd203 --- /dev/null +++ b/_badges/atari_atr_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "atari_atr_tools" +version: "1.5.0" +--- diff --git a/_badges/atari_exe_tools.json b/_badges/atari_exe_tools.json new file mode 100644 index 00000000..552050e5 --- /dev/null +++ b/_badges/atari_exe_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "atari_exe_tools" +version: "1.5.0" +--- diff --git a/_badges/atomic.json b/_badges/atomic.json new file mode 100644 index 00000000..08356c65 --- /dev/null +++ b/_badges/atomic.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "atomic" +version: "1.0.0" +--- diff --git a/_badges/audio_base.json b/_badges/audio_base.json new file mode 100644 index 00000000..47745c1d --- /dev/null +++ b/_badges/audio_base.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "audio_base" +version: "1.0.0" +--- diff --git a/_badges/audio_wavefiles.json b/_badges/audio_wavefiles.json new file mode 100644 index 00000000..8398f5a8 --- /dev/null +++ b/_badges/audio_wavefiles.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "audio_wavefiles" +version: "2.0.0" +--- diff --git a/_badges/aunit.json b/_badges/aunit.json new file mode 100644 index 00000000..489020eb --- /dev/null +++ b/_badges/aunit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aunit" +version: "25.0.0" +--- diff --git a/_badges/automate.json b/_badges/automate.json new file mode 100644 index 00000000..5c3fdede --- /dev/null +++ b/_badges/automate.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "automate" +version: "3.0.0" +--- diff --git a/_badges/avltrees.json b/_badges/avltrees.json new file mode 100644 index 00000000..756f3aa5 --- /dev/null +++ b/_badges/avltrees.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "avltrees" +version: "0.1.0" +--- diff --git a/_badges/avrada_examples.json b/_badges/avrada_examples.json new file mode 100644 index 00000000..91d80b61 --- /dev/null +++ b/_badges/avrada_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "avrada_examples" +version: "1.0.1" +--- diff --git a/_badges/avrada_lib.json b/_badges/avrada_lib.json new file mode 100644 index 00000000..6f3c6aa5 --- /dev/null +++ b/_badges/avrada_lib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "avrada_lib" +version: "2.1.0" +--- diff --git a/_badges/avrada_mcu.json b/_badges/avrada_mcu.json new file mode 100644 index 00000000..552c045b --- /dev/null +++ b/_badges/avrada_mcu.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "avrada_mcu" +version: "2.2.0" +--- diff --git a/_badges/avrada_rts.json b/_badges/avrada_rts.json new file mode 100644 index 00000000..34d31a02 --- /dev/null +++ b/_badges/avrada_rts.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "avrada_rts" +version: "2.0.1" +--- diff --git a/_badges/awa.json b/_badges/awa.json new file mode 100644 index 00000000..f4aaef9b --- /dev/null +++ b/_badges/awa.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "awa" +version: "2.5.0" +--- diff --git a/_badges/awa_unit.json b/_badges/awa_unit.json new file mode 100644 index 00000000..88977f29 --- /dev/null +++ b/_badges/awa_unit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "awa_unit" +version: "2.5.0" +--- diff --git a/_badges/aws.json b/_badges/aws.json new file mode 100644 index 00000000..a2c15d8a --- /dev/null +++ b/_badges/aws.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "aws" +version: "24.0.0" +--- diff --git a/_badges/axmpp.json b/_badges/axmpp.json new file mode 100644 index 00000000..2c7933d0 --- /dev/null +++ b/_badges/axmpp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "axmpp" +version: "1.0.0" +--- diff --git a/_badges/ayacc.json b/_badges/ayacc.json new file mode 100644 index 00000000..78e8ceb7 --- /dev/null +++ b/_badges/ayacc.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ayacc" +version: "1.4.1" +--- diff --git a/_badges/azip.json b/_badges/azip.json new file mode 100644 index 00000000..0178676f --- /dev/null +++ b/_badges/azip.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "azip" +version: "2.7.0" +--- diff --git a/_badges/b2ssum.json b/_badges/b2ssum.json new file mode 100644 index 00000000..5b1a28c6 --- /dev/null +++ b/_badges/b2ssum.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "b2ssum" +version: "0.1.3" +--- diff --git a/_badges/bar_code_drawing.json b/_badges/bar_code_drawing.json new file mode 100644 index 00000000..8672306c --- /dev/null +++ b/_badges/bar_code_drawing.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bar_code_drawing" +version: "20240701.0.0" +--- diff --git a/_badges/bar_codes.json b/_badges/bar_codes.json new file mode 100644 index 00000000..44e60aa0 --- /dev/null +++ b/_badges/bar_codes.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bar_codes" +version: "5.0.0" +--- diff --git a/_badges/basalt.json b/_badges/basalt.json new file mode 100644 index 00000000..8a32d5fd --- /dev/null +++ b/_badges/basalt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "basalt" +version: "0.3.0" +--- diff --git a/_badges/base64.json b/_badges/base64.json new file mode 100644 index 00000000..38a93825 --- /dev/null +++ b/_badges/base64.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "base64" +version: "1.0.1" +--- diff --git a/_badges/bb_pico_bsp.json b/_badges/bb_pico_bsp.json new file mode 100644 index 00000000..a30b157d --- /dev/null +++ b/_badges/bb_pico_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bb_pico_bsp" +version: "0.1.0" +--- diff --git a/_badges/bbqueue.json b/_badges/bbqueue.json new file mode 100644 index 00000000..69bce4e2 --- /dev/null +++ b/_badges/bbqueue.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbqueue" +version: "1.0.0" +--- diff --git a/_badges/bbs.json b/_badges/bbs.json new file mode 100644 index 00000000..ca883bfc --- /dev/null +++ b/_badges/bbs.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs" +version: "0.1.0" +--- diff --git a/_badges/bbs_embed_common.json b/_badges/bbs_embed_common.json new file mode 100644 index 00000000..d15e399e --- /dev/null +++ b/_badges/bbs_embed_common.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs_embed_common" +version: "0.1.0" +--- diff --git a/_badges/bbs_embed_linux.json b/_badges/bbs_embed_linux.json new file mode 100644 index 00000000..6a9a3474 --- /dev/null +++ b/_badges/bbs_embed_linux.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs_embed_linux" +version: "0.1.0" +--- diff --git a/_badges/bbs_lisp.json b/_badges/bbs_lisp.json new file mode 100644 index 00000000..09d7d366 --- /dev/null +++ b/_badges/bbs_lisp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs_lisp" +version: "0.1.1" +--- diff --git a/_badges/bbs_simcpu.json b/_badges/bbs_simcpu.json new file mode 100644 index 00000000..df132537 --- /dev/null +++ b/_badges/bbs_simcpu.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs_simcpu" +version: "0.1.0" +--- diff --git a/_badges/bbs_webif.json b/_badges/bbs_webif.json new file mode 100644 index 00000000..ffc956f5 --- /dev/null +++ b/_badges/bbs_webif.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbs_webif" +version: "0.1.0" +--- diff --git a/_badges/bbt.json b/_badges/bbt.json new file mode 100644 index 00000000..ed2cd2f5 --- /dev/null +++ b/_badges/bbt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bbt" +version: "0.0.5" +--- diff --git a/_badges/binary_trees.json b/_badges/binary_trees.json new file mode 100644 index 00000000..22219fe8 --- /dev/null +++ b/_badges/binary_trees.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "binary_trees" +version: "20240519.0.0" +--- diff --git a/_badges/bingada.json b/_badges/bingada.json new file mode 100644 index 00000000..8d7e2f18 --- /dev/null +++ b/_badges/bingada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bingada" +version: "1.0.0" +--- diff --git a/_badges/bit_sets.json b/_badges/bit_sets.json new file mode 100644 index 00000000..5fac067e --- /dev/null +++ b/_badges/bit_sets.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bit_sets" +version: "1.0.0" +--- diff --git a/_badges/blake2s.json b/_badges/blake2s.json new file mode 100644 index 00000000..18002109 --- /dev/null +++ b/_badges/blake2s.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "blake2s" +version: "0.1.3" +--- diff --git a/_badges/blinkenlights.json b/_badges/blinkenlights.json new file mode 100644 index 00000000..024cc16e --- /dev/null +++ b/_badges/blinkenlights.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "blinkenlights" +version: "0.1.0" +--- diff --git a/_badges/bme280.json b/_badges/bme280.json new file mode 100644 index 00000000..0019f917 --- /dev/null +++ b/_badges/bme280.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "bme280" +version: "1.0.0" +--- diff --git a/_badges/brackelib.json b/_badges/brackelib.json new file mode 100644 index 00000000..624c068e --- /dev/null +++ b/_badges/brackelib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "brackelib" +version: "0.0.2" +--- diff --git a/_badges/c_strings.json b/_badges/c_strings.json new file mode 100644 index 00000000..0a790f6f --- /dev/null +++ b/_badges/c_strings.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "c_strings" +version: "1.0.0" +--- diff --git a/_badges/canberra_ada.json b/_badges/canberra_ada.json new file mode 100644 index 00000000..cac50145 --- /dev/null +++ b/_badges/canberra_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "canberra_ada" +version: "2.0.2" +--- diff --git a/_badges/cashe.json b/_badges/cashe.json new file mode 100644 index 00000000..f43afddb --- /dev/null +++ b/_badges/cashe.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cashe" +version: "1.0.0" +--- diff --git a/_badges/cbsg.json b/_badges/cbsg.json new file mode 100644 index 00000000..a4c803cc --- /dev/null +++ b/_badges/cbsg.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cbsg" +version: "0.0.1" +--- diff --git a/_badges/chacha20.json b/_badges/chacha20.json new file mode 100644 index 00000000..13dcc2b6 --- /dev/null +++ b/_badges/chacha20.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "chacha20" +version: "0.1.0" +--- diff --git a/_badges/checksum.json b/_badges/checksum.json new file mode 100644 index 00000000..aac9708a --- /dev/null +++ b/_badges/checksum.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "checksum" +version: "0.1.0" +--- diff --git a/_badges/cheddar.json b/_badges/cheddar.json new file mode 100644 index 00000000..a4147e2a --- /dev/null +++ b/_badges/cheddar.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cheddar" +version: "3.3.0" +--- diff --git a/_badges/chests.json b/_badges/chests.json new file mode 100644 index 00000000..20abd8d3 --- /dev/null +++ b/_badges/chests.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "chests" +version: "0.1.1" +--- diff --git a/_badges/chipmunk2d.json b/_badges/chipmunk2d.json new file mode 100644 index 00000000..b60232f3 --- /dev/null +++ b/_badges/chipmunk2d.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "chipmunk2d" +version: "0.1.0" +--- diff --git a/_badges/clic.json b/_badges/clic.json new file mode 100644 index 00000000..20aaa130 --- /dev/null +++ b/_badges/clic.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "clic" +version: "0.3.0" +--- diff --git a/_badges/cmd_ada.json b/_badges/cmd_ada.json new file mode 100644 index 00000000..c588ddef --- /dev/null +++ b/_badges/cmd_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cmd_ada" +version: "0.0.1" +--- diff --git a/_badges/cobs.json b/_badges/cobs.json new file mode 100644 index 00000000..d0dda808 --- /dev/null +++ b/_badges/cobs.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cobs" +version: "1.1.0" +--- diff --git a/_badges/controlled_io.json b/_badges/controlled_io.json new file mode 100644 index 00000000..fc9d8ab3 --- /dev/null +++ b/_badges/controlled_io.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "controlled_io" +version: "20240401.0.1" +--- diff --git a/_badges/cortex_m.json b/_badges/cortex_m.json new file mode 100644 index 00000000..7e18ccb7 --- /dev/null +++ b/_badges/cortex_m.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "cortex_m" +version: "1.0.0" +--- diff --git a/_badges/crc_32.json b/_badges/crc_32.json new file mode 100644 index 00000000..34891939 --- /dev/null +++ b/_badges/crc_32.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "crc_32" +version: "20240725.0.0" +--- diff --git a/_badges/curl.json b/_badges/curl.json new file mode 100644 index 00000000..2e7ad054 --- /dev/null +++ b/_badges/curl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "curl" +version: +--- diff --git a/_badges/dashera.json b/_badges/dashera.json new file mode 100644 index 00000000..8897e17e --- /dev/null +++ b/_badges/dashera.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dashera" +version: "0.15.1" +--- diff --git a/_badges/db_maker.json b/_badges/db_maker.json new file mode 100644 index 00000000..137adcd0 --- /dev/null +++ b/_badges/db_maker.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "db_maker" +version: "20240119.0.0" +--- diff --git a/_badges/dcf.json b/_badges/dcf.json new file mode 100644 index 00000000..28bfc627 --- /dev/null +++ b/_badges/dcf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dcf" +version: "2.0.3" +--- diff --git a/_badges/dependency_graph_extractor.json b/_badges/dependency_graph_extractor.json new file mode 100644 index 00000000..952efb80 --- /dev/null +++ b/_badges/dependency_graph_extractor.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dependency_graph_extractor" +version: "22.0.0" +--- diff --git a/_badges/dg_loada.json b/_badges/dg_loada.json new file mode 100644 index 00000000..fb611ebd --- /dev/null +++ b/_badges/dg_loada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dg_loada" +version: "1.4.3" +--- diff --git a/_badges/dir_iterators.json b/_badges/dir_iterators.json new file mode 100644 index 00000000..681556be --- /dev/null +++ b/_badges/dir_iterators.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dir_iterators" +version: "0.0.5" +--- diff --git a/_badges/dirty_booleans.json b/_badges/dirty_booleans.json new file mode 100644 index 00000000..2585c18d --- /dev/null +++ b/_badges/dirty_booleans.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dirty_booleans" +version: "0.1.0" +--- diff --git a/_badges/dotenv.json b/_badges/dotenv.json new file mode 100644 index 00000000..7153b268 --- /dev/null +++ b/_badges/dotenv.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dotenv" +version: "1.0.0" +--- diff --git a/_badges/dummyserver.json b/_badges/dummyserver.json new file mode 100644 index 00000000..7ed3d0a2 --- /dev/null +++ b/_badges/dummyserver.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dummyserver" +version: "1.0.0" +--- diff --git a/_badges/dynamo.json b/_badges/dynamo.json new file mode 100644 index 00000000..000b1106 --- /dev/null +++ b/_badges/dynamo.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "dynamo" +version: "1.4.0" +--- diff --git a/_badges/eagle_lander.json b/_badges/eagle_lander.json new file mode 100644 index 00000000..feb0bf94 --- /dev/null +++ b/_badges/eagle_lander.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "eagle_lander" +version: "1.2.0" +--- diff --git a/_badges/easy_graphics.json b/_badges/easy_graphics.json new file mode 100644 index 00000000..d09d53bf --- /dev/null +++ b/_badges/easy_graphics.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "easy_graphics" +version: "0.1.0" +--- diff --git a/_badges/edc_client.json b/_badges/edc_client.json new file mode 100644 index 00000000..c1dd0d62 --- /dev/null +++ b/_badges/edc_client.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "edc_client" +version: "1.5.1" +--- diff --git a/_badges/eeprom_i2c.json b/_badges/eeprom_i2c.json new file mode 100644 index 00000000..a9a41fe3 --- /dev/null +++ b/_badges/eeprom_i2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "eeprom_i2c" +version: "6.0.0" +--- diff --git a/_badges/elada.json b/_badges/elada.json new file mode 100644 index 00000000..5919869f --- /dev/null +++ b/_badges/elada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "elada" +version: "1.8.7" +--- diff --git a/_badges/elevator.json b/_badges/elevator.json new file mode 100644 index 00000000..825fbf61 --- /dev/null +++ b/_badges/elevator.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "elevator" +version: "1.0.0" +--- diff --git a/_badges/elogs.json b/_badges/elogs.json new file mode 100644 index 00000000..047c76ae --- /dev/null +++ b/_badges/elogs.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "elogs" +version: "1.2.0" +--- diff --git a/_badges/emacs_ada_mode.json b/_badges/emacs_ada_mode.json new file mode 100644 index 00000000..43382cd0 --- /dev/null +++ b/_badges/emacs_ada_mode.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emacs_ada_mode" +version: "8.1.0" +--- diff --git a/_badges/emacs_gpr_mode.json b/_badges/emacs_gpr_mode.json new file mode 100644 index 00000000..7c3dcfda --- /dev/null +++ b/_badges/emacs_gpr_mode.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emacs_gpr_mode" +version: "1.0.5" +--- diff --git a/_badges/emacs_gpr_query.json b/_badges/emacs_gpr_query.json new file mode 100644 index 00000000..7213cff1 --- /dev/null +++ b/_badges/emacs_gpr_query.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emacs_gpr_query" +version: "1.0.2" +--- diff --git a/_badges/emacs_wisi.json b/_badges/emacs_wisi.json new file mode 100644 index 00000000..309997dc --- /dev/null +++ b/_badges/emacs_wisi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emacs_wisi" +version: "4.3.2" +--- diff --git a/_badges/emacs_wisitoken_grammar_mode.json b/_badges/emacs_wisitoken_grammar_mode.json new file mode 100644 index 00000000..2db00df8 --- /dev/null +++ b/_badges/emacs_wisitoken_grammar_mode.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emacs_wisitoken_grammar_mode" +version: "1.3.0" +--- diff --git a/_badges/embedded_components.json b/_badges/embedded_components.json new file mode 100644 index 00000000..24c9a353 --- /dev/null +++ b/_badges/embedded_components.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "embedded_components" +version: "0.3.0" +--- diff --git a/_badges/emdee.json b/_badges/emdee.json new file mode 100644 index 00000000..fadbf545 --- /dev/null +++ b/_badges/emdee.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emdee" +version: "0.2.1" +--- diff --git a/_badges/emojis.json b/_badges/emojis.json new file mode 100644 index 00000000..0f703389 --- /dev/null +++ b/_badges/emojis.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "emojis" +version: "1.0.1" +--- diff --git a/_badges/encryption_utilities.json b/_badges/encryption_utilities.json new file mode 100644 index 00000000..a66b3d58 --- /dev/null +++ b/_badges/encryption_utilities.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "encryption_utilities" +version: "20220701.0.0" +--- diff --git a/_badges/endianness.json b/_badges/endianness.json new file mode 100644 index 00000000..0bd81c53 --- /dev/null +++ b/_badges/endianness.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "endianness" +version: "1.0.0" +--- diff --git a/_badges/enet.json b/_badges/enet.json new file mode 100644 index 00000000..cb169064 --- /dev/null +++ b/_badges/enet.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "enet" +version: "1.0.0" +--- diff --git a/_badges/enet_stm32.json b/_badges/enet_stm32.json new file mode 100644 index 00000000..bfbccf23 --- /dev/null +++ b/_badges/enet_stm32.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "enet_stm32" +version: "1.0.0" +--- diff --git a/_badges/epoll.json b/_badges/epoll.json new file mode 100644 index 00000000..70d304f8 --- /dev/null +++ b/_badges/epoll.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "epoll" +version: "0.1.1" +--- diff --git a/_badges/esp_idf.json b/_badges/esp_idf.json new file mode 100644 index 00000000..62ec49a2 --- /dev/null +++ b/_badges/esp_idf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "esp_idf" +version: "5.0.2-1" +--- diff --git a/_badges/ethernet.json b/_badges/ethernet.json new file mode 100644 index 00000000..772d96dc --- /dev/null +++ b/_badges/ethernet.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ethernet" +version: "1.0.0" +--- diff --git a/_badges/euler_tools.json b/_badges/euler_tools.json new file mode 100644 index 00000000..86355466 --- /dev/null +++ b/_badges/euler_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "euler_tools" +version: "1.3.0" +--- diff --git a/_badges/evdev.json b/_badges/evdev.json new file mode 100644 index 00000000..6db74200 --- /dev/null +++ b/_badges/evdev.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "evdev" +version: "2.0.2" +--- diff --git a/_badges/ews.json b/_badges/ews.json new file mode 100644 index 00000000..88af324e --- /dev/null +++ b/_badges/ews.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ews" +version: "1.11.0" +--- diff --git a/_badges/excel_writer.json b/_badges/excel_writer.json new file mode 100644 index 00000000..3fab1191 --- /dev/null +++ b/_badges/excel_writer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "excel_writer" +version: "19.0.0" +--- diff --git a/_badges/fastpbkdf2_ada.json b/_badges/fastpbkdf2_ada.json new file mode 100644 index 00000000..d0d751d1 --- /dev/null +++ b/_badges/fastpbkdf2_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "fastpbkdf2_ada" +version: "2.0.0" +--- diff --git a/_badges/felix.json b/_badges/felix.json new file mode 100644 index 00000000..d596a4dc --- /dev/null +++ b/_badges/felix.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "felix" +version: "0.2.0" +--- diff --git a/_badges/florist.json b/_badges/florist.json new file mode 100644 index 00000000..9184c663 --- /dev/null +++ b/_badges/florist.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "florist" +version: +--- diff --git a/_badges/florist_blady.json b/_badges/florist_blady.json new file mode 100644 index 00000000..5253d194 --- /dev/null +++ b/_badges/florist_blady.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "florist_blady" +version: "6.1.0" +--- diff --git a/_badges/freetypeada.json b/_badges/freetypeada.json new file mode 100644 index 00000000..a65ad3f1 --- /dev/null +++ b/_badges/freetypeada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "freetypeada" +version: "0.1.0" +--- diff --git a/_badges/garlic.json b/_badges/garlic.json new file mode 100644 index 00000000..24c7e171 --- /dev/null +++ b/_badges/garlic.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "garlic" +version: "6.0.1" +--- diff --git a/_badges/geo_coords.json b/_badges/geo_coords.json new file mode 100644 index 00000000..e02d7dc4 --- /dev/null +++ b/_badges/geo_coords.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "geo_coords" +version: "1.0.0" +--- diff --git a/_badges/geste.json b/_badges/geste.json new file mode 100644 index 00000000..27ce1924 --- /dev/null +++ b/_badges/geste.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "geste" +version: "1.1.0" +--- diff --git a/_badges/geste_examples.json b/_badges/geste_examples.json new file mode 100644 index 00000000..987eddc6 --- /dev/null +++ b/_badges/geste_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "geste_examples" +version: "1.0.1" +--- diff --git a/_badges/get_password.json b/_badges/get_password.json new file mode 100644 index 00000000..e7ab8065 --- /dev/null +++ b/_badges/get_password.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "get_password" +version: "1.0.0-rc" +--- diff --git a/_badges/getada.json b/_badges/getada.json new file mode 100644 index 00000000..fd8e1a99 --- /dev/null +++ b/_badges/getada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "getada" +version: "1.0.1" +--- diff --git a/_badges/getopt.json b/_badges/getopt.json new file mode 100644 index 00000000..b47be5e2 --- /dev/null +++ b/_badges/getopt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "getopt" +version: "2.0.0" +--- diff --git a/_badges/gfx_core.json b/_badges/gfx_core.json new file mode 100644 index 00000000..4cf90270 --- /dev/null +++ b/_badges/gfx_core.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gfx_core" +version: "0.1.0" +--- diff --git a/_badges/gfx_rasteriser.json b/_badges/gfx_rasteriser.json new file mode 100644 index 00000000..eef1fef1 --- /dev/null +++ b/_badges/gfx_rasteriser.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gfx_rasteriser" +version: "0.1.0" +--- diff --git a/_badges/gid.json b/_badges/gid.json new file mode 100644 index 00000000..c3344ac6 --- /dev/null +++ b/_badges/gid.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gid" +version: "13.0.1" +--- diff --git a/_badges/globe_3d.json b/_badges/globe_3d.json new file mode 100644 index 00000000..4d9858d1 --- /dev/null +++ b/_badges/globe_3d.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "globe_3d" +version: "2023.11.12" +--- diff --git a/_badges/glut.json b/_badges/glut.json new file mode 100644 index 00000000..dd7881c3 --- /dev/null +++ b/_badges/glut.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "glut" +version: +--- diff --git a/_badges/gnat_arm_elf.json b/_badges/gnat_arm_elf.json new file mode 100644 index 00000000..884a1608 --- /dev/null +++ b/_badges/gnat_arm_elf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_arm_elf" +version: "14.2.1" +--- diff --git a/_badges/gnat_avr_elf.json b/_badges/gnat_avr_elf.json new file mode 100644 index 00000000..9e3d031a --- /dev/null +++ b/_badges/gnat_avr_elf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_avr_elf" +version: "14.2.1" +--- diff --git a/_badges/gnat_external.json b/_badges/gnat_external.json new file mode 100644 index 00000000..920d279f --- /dev/null +++ b/_badges/gnat_external.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_external" +version: +--- diff --git a/_badges/gnat_math_extensions.json b/_badges/gnat_math_extensions.json new file mode 100644 index 00000000..682c4129 --- /dev/null +++ b/_badges/gnat_math_extensions.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_math_extensions" +version: "1.1.0" +--- diff --git a/_badges/gnat_native.json b/_badges/gnat_native.json new file mode 100644 index 00000000..76d9f5b8 --- /dev/null +++ b/_badges/gnat_native.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_native" +version: "14.2.1" +--- diff --git a/_badges/gnat_riscv64_elf.json b/_badges/gnat_riscv64_elf.json new file mode 100644 index 00000000..57008977 --- /dev/null +++ b/_badges/gnat_riscv64_elf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_riscv64_elf" +version: "14.2.1" +--- diff --git a/_badges/gnat_xtensa_esp32_elf.json b/_badges/gnat_xtensa_esp32_elf.json new file mode 100644 index 00000000..bbb97c60 --- /dev/null +++ b/_badges/gnat_xtensa_esp32_elf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnat_xtensa_esp32_elf" +version: "14.2.1" +--- diff --git a/_badges/gnatcoll.json b/_badges/gnatcoll.json new file mode 100644 index 00000000..a168b8b1 --- /dev/null +++ b/_badges/gnatcoll.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_gmp.json b/_badges/gnatcoll_gmp.json new file mode 100644 index 00000000..494f01cc --- /dev/null +++ b/_badges/gnatcoll_gmp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_gmp" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_iconv.json b/_badges/gnatcoll_iconv.json new file mode 100644 index 00000000..8d518ec6 --- /dev/null +++ b/_badges/gnatcoll_iconv.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_iconv" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_lzma.json b/_badges/gnatcoll_lzma.json new file mode 100644 index 00000000..904b28cc --- /dev/null +++ b/_badges/gnatcoll_lzma.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_lzma" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_omp.json b/_badges/gnatcoll_omp.json new file mode 100644 index 00000000..b21a533e --- /dev/null +++ b/_badges/gnatcoll_omp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_omp" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_postgres.json b/_badges/gnatcoll_postgres.json new file mode 100644 index 00000000..0bfb2a2a --- /dev/null +++ b/_badges/gnatcoll_postgres.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_postgres" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_python.json b/_badges/gnatcoll_python.json new file mode 100644 index 00000000..e0813a7c --- /dev/null +++ b/_badges/gnatcoll_python.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_python" +version: "21.0.0" +--- diff --git a/_badges/gnatcoll_python3.json b/_badges/gnatcoll_python3.json new file mode 100644 index 00000000..cb3d8f42 --- /dev/null +++ b/_badges/gnatcoll_python3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_python3" +version: "23.0.0" +--- diff --git a/_badges/gnatcoll_readline.json b/_badges/gnatcoll_readline.json new file mode 100644 index 00000000..cdb23725 --- /dev/null +++ b/_badges/gnatcoll_readline.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_readline" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_sql.json b/_badges/gnatcoll_sql.json new file mode 100644 index 00000000..2f91dc1e --- /dev/null +++ b/_badges/gnatcoll_sql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_sql" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_sqlite.json b/_badges/gnatcoll_sqlite.json new file mode 100644 index 00000000..a8c18264 --- /dev/null +++ b/_badges/gnatcoll_sqlite.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_sqlite" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_syslog.json b/_badges/gnatcoll_syslog.json new file mode 100644 index 00000000..44995e9a --- /dev/null +++ b/_badges/gnatcoll_syslog.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_syslog" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_xref.json b/_badges/gnatcoll_xref.json new file mode 100644 index 00000000..43ce6309 --- /dev/null +++ b/_badges/gnatcoll_xref.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_xref" +version: "25.0.0" +--- diff --git a/_badges/gnatcoll_zlib.json b/_badges/gnatcoll_zlib.json new file mode 100644 index 00000000..8ef686dd --- /dev/null +++ b/_badges/gnatcoll_zlib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcoll_zlib" +version: "25.0.0" +--- diff --git a/_badges/gnatcov.json b/_badges/gnatcov.json new file mode 100644 index 00000000..d3ceb46c --- /dev/null +++ b/_badges/gnatcov.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatcov" +version: "22.0.1" +--- diff --git a/_badges/gnatdist_garlic.json b/_badges/gnatdist_garlic.json new file mode 100644 index 00000000..3ef6a132 --- /dev/null +++ b/_badges/gnatdist_garlic.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatdist_garlic" +version: "6.0.1" +--- diff --git a/_badges/gnatdoc.json b/_badges/gnatdoc.json new file mode 100644 index 00000000..859820eb --- /dev/null +++ b/_badges/gnatdoc.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatdoc" +version: "25.0.0" +--- diff --git a/_badges/gnatformat.json b/_badges/gnatformat.json new file mode 100644 index 00000000..7a83e917 --- /dev/null +++ b/_badges/gnatformat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatformat" +version: "25.0.0" +--- diff --git a/_badges/gnatprove.json b/_badges/gnatprove.json new file mode 100644 index 00000000..8cbdb620 --- /dev/null +++ b/_badges/gnatprove.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnatprove" +version: "14.1.1" +--- diff --git a/_badges/gnoga.json b/_badges/gnoga.json new file mode 100644 index 00000000..786fc3bd --- /dev/null +++ b/_badges/gnoga.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gnoga" +version: "2.1.2" +--- diff --git a/_badges/gpr_unit_provider.json b/_badges/gpr_unit_provider.json new file mode 100644 index 00000000..b82873a2 --- /dev/null +++ b/_badges/gpr_unit_provider.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gpr_unit_provider" +version: "23.0.0" +--- diff --git a/_badges/gprbuild.json b/_badges/gprbuild.json new file mode 100644 index 00000000..0527cd58 --- /dev/null +++ b/_badges/gprbuild.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gprbuild" +version: "24.0.1" +--- diff --git a/_badges/gsl.json b/_badges/gsl.json new file mode 100644 index 00000000..3cbde198 --- /dev/null +++ b/_badges/gsl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gsl" +version: "0.1.0" +--- diff --git a/_badges/gtkada.json b/_badges/gtkada.json new file mode 100644 index 00000000..2b2e514a --- /dev/null +++ b/_badges/gtkada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gtkada" +version: "25.0.1" +--- diff --git a/_badges/gwindows.json b/_badges/gwindows.json new file mode 100644 index 00000000..ec2ce382 --- /dev/null +++ b/_badges/gwindows.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "gwindows" +version: "1.4.3" +--- diff --git a/_badges/hac.json b/_badges/hac.json new file mode 100644 index 00000000..573b07f8 --- /dev/null +++ b/_badges/hac.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hac" +version: "0.40.0" +--- diff --git a/_badges/hal.json b/_badges/hal.json new file mode 100644 index 00000000..e99020ea --- /dev/null +++ b/_badges/hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hal" +version: "1.0.0" +--- diff --git a/_badges/hangman.json b/_badges/hangman.json new file mode 100644 index 00000000..4c3bca53 --- /dev/null +++ b/_badges/hangman.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hangman" +version: "1.0.0" +--- diff --git a/_badges/hello.json b/_badges/hello.json new file mode 100644 index 00000000..8a74f279 --- /dev/null +++ b/_badges/hello.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hello" +version: "1.0.2" +--- diff --git a/_badges/hex_format.json b/_badges/hex_format.json new file mode 100644 index 00000000..c916f888 --- /dev/null +++ b/_badges/hex_format.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hex_format" +version: "0.1.0" +--- diff --git a/_badges/hirtos.json b/_badges/hirtos.json new file mode 100644 index 00000000..4e18f870 --- /dev/null +++ b/_badges/hirtos.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hirtos" +version: "2.0.0" +--- diff --git a/_badges/hirtos_separation_kernel.json b/_badges/hirtos_separation_kernel.json new file mode 100644 index 00000000..d1fefd2f --- /dev/null +++ b/_badges/hirtos_separation_kernel.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hirtos_separation_kernel" +version: "2.0.0" +--- diff --git a/_badges/hmac.json b/_badges/hmac.json new file mode 100644 index 00000000..bd679f0a --- /dev/null +++ b/_badges/hmac.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hmac" +version: "2.0.0" +--- diff --git a/_badges/hmc5883.json b/_badges/hmc5883.json new file mode 100644 index 00000000..539dceaf --- /dev/null +++ b/_badges/hmc5883.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hmc5883" +version: "1.0.0" +--- diff --git a/_badges/honki_tonks_zivilisationen.json b/_badges/honki_tonks_zivilisationen.json new file mode 100644 index 00000000..8ea36317 --- /dev/null +++ b/_badges/honki_tonks_zivilisationen.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "honki_tonks_zivilisationen" +version: "0.5.5305" +--- diff --git a/_badges/hp41cx_tools.json b/_badges/hp41cx_tools.json new file mode 100644 index 00000000..53d2b317 --- /dev/null +++ b/_badges/hp41cx_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hp41cx_tools" +version: "1.6.0" +--- diff --git a/_badges/hungarian.json b/_badges/hungarian.json new file mode 100644 index 00000000..1f13beff --- /dev/null +++ b/_badges/hungarian.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "hungarian" +version: "1.0.0" +--- diff --git a/_badges/image_io.json b/_badges/image_io.json new file mode 100644 index 00000000..2a17f12c --- /dev/null +++ b/_badges/image_io.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "image_io" +version: "20240725.0.0" +--- diff --git a/_badges/image_random.json b/_badges/image_random.json new file mode 100644 index 00000000..ab2dcdef --- /dev/null +++ b/_badges/image_random.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "image_random" +version: "20200720.0.0" +--- diff --git a/_badges/ini_files.json b/_badges/ini_files.json new file mode 100644 index 00000000..508ee7ce --- /dev/null +++ b/_badges/ini_files.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ini_files" +version: "11.0.0" +--- diff --git a/_badges/inotify.json b/_badges/inotify.json new file mode 100644 index 00000000..c7c5b260 --- /dev/null +++ b/_badges/inotify.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "inotify" +version: "2.0.1" +--- diff --git a/_badges/intl.json b/_badges/intl.json new file mode 100644 index 00000000..7b67bdfd --- /dev/null +++ b/_badges/intl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "intl" +version: "1.0.1" +--- diff --git a/_badges/iso.json b/_badges/iso.json new file mode 100644 index 00000000..a4766c8f --- /dev/null +++ b/_badges/iso.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "iso" +version: "2.0.0" +--- diff --git a/_badges/iterators.json b/_badges/iterators.json new file mode 100644 index 00000000..d97d8c19 --- /dev/null +++ b/_badges/iterators.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "iterators" +version: "0.2.0" +--- diff --git a/_badges/itsybitsy_bsp.json b/_badges/itsybitsy_bsp.json new file mode 100644 index 00000000..a7ed7fe2 --- /dev/null +++ b/_badges/itsybitsy_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "itsybitsy_bsp" +version: "0.0.4" +--- diff --git a/_badges/itsybitsy_rp2040_bsp.json b/_badges/itsybitsy_rp2040_bsp.json new file mode 100644 index 00000000..247cb772 --- /dev/null +++ b/_badges/itsybitsy_rp2040_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "itsybitsy_rp2040_bsp" +version: "0.2.0" +--- diff --git a/_badges/j2ada.json b/_badges/j2ada.json new file mode 100644 index 00000000..c05f54bd --- /dev/null +++ b/_badges/j2ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "j2ada" +version: "1.4.2" +--- diff --git a/_badges/jintp.json b/_badges/jintp.json new file mode 100644 index 00000000..7dd9b1c1 --- /dev/null +++ b/_badges/jintp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "jintp" +version: "0.1.0" +--- diff --git a/_badges/journada.json b/_badges/journada.json new file mode 100644 index 00000000..8855a522 --- /dev/null +++ b/_badges/journada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "journada" +version: "1.0.0" +--- diff --git a/_badges/json.json b/_badges/json.json new file mode 100644 index 00000000..a00d7bf6 --- /dev/null +++ b/_badges/json.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "json" +version: "6.0.0" +--- diff --git a/_badges/jupyter_kernel.json b/_badges/jupyter_kernel.json new file mode 100644 index 00000000..7e767aff --- /dev/null +++ b/_badges/jupyter_kernel.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "jupyter_kernel" +version: "1.0.0" +--- diff --git a/_badges/jwt.json b/_badges/jwt.json new file mode 100644 index 00000000..e7d1305a --- /dev/null +++ b/_badges/jwt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "jwt" +version: "1.0.0" +--- diff --git a/_badges/keypadder.json b/_badges/keypadder.json new file mode 100644 index 00000000..a2486b18 --- /dev/null +++ b/_badges/keypadder.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "keypadder" +version: "0.3.0" +--- diff --git a/_badges/keystoreada.json b/_badges/keystoreada.json new file mode 100644 index 00000000..aeefda3d --- /dev/null +++ b/_badges/keystoreada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "keystoreada" +version: "1.4.1" +--- diff --git a/_badges/labs_radar.json b/_badges/labs_radar.json new file mode 100644 index 00000000..c945201c --- /dev/null +++ b/_badges/labs_radar.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "labs_radar" +version: "1.0.0" +--- diff --git a/_badges/labs_solar_system.json b/_badges/labs_solar_system.json new file mode 100644 index 00000000..7a475104 --- /dev/null +++ b/_badges/labs_solar_system.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "labs_solar_system" +version: "1.1.0" +--- diff --git a/_badges/labs_standalone.json b/_badges/labs_standalone.json new file mode 100644 index 00000000..8ea471b9 --- /dev/null +++ b/_badges/labs_standalone.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "labs_standalone" +version: "0.1.0" +--- diff --git a/_badges/lace.json b/_badges/lace.json new file mode 100644 index 00000000..18ac3d1b --- /dev/null +++ b/_badges/lace.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace" +version: "0.1.0" +--- diff --git a/_badges/lace_box2d.json b/_badges/lace_box2d.json new file mode 100644 index 00000000..48600380 --- /dev/null +++ b/_badges/lace_box2d.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_box2d" +version: "0.1.0" +--- diff --git a/_badges/lace_bullet.json b/_badges/lace_bullet.json new file mode 100644 index 00000000..c12f1389 --- /dev/null +++ b/_badges/lace_bullet.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_bullet" +version: "0.1.0" +--- diff --git a/_badges/lace_c_math.json b/_badges/lace_c_math.json new file mode 100644 index 00000000..059a29c5 --- /dev/null +++ b/_badges/lace_c_math.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_c_math" +version: "0.1.0" +--- diff --git a/_badges/lace_collada.json b/_badges/lace_collada.json new file mode 100644 index 00000000..7c4cd835 --- /dev/null +++ b/_badges/lace_collada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_collada" +version: "0.1.0" +--- diff --git a/_badges/lace_gel.json b/_badges/lace_gel.json new file mode 100644 index 00000000..56f9dcea --- /dev/null +++ b/_badges/lace_gel.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_gel" +version: "0.1.0" +--- diff --git a/_badges/lace_gel_animation_demo.json b/_badges/lace_gel_animation_demo.json new file mode 100644 index 00000000..8a431792 --- /dev/null +++ b/_badges/lace_gel_animation_demo.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_gel_animation_demo" +version: "0.1.0" +--- diff --git a/_badges/lace_gel_full_demo.json b/_badges/lace_gel_full_demo.json new file mode 100644 index 00000000..89bd6655 --- /dev/null +++ b/_badges/lace_gel_full_demo.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_gel_full_demo" +version: "0.1.0" +--- diff --git a/_badges/lace_math.json b/_badges/lace_math.json new file mode 100644 index 00000000..50b536f3 --- /dev/null +++ b/_badges/lace_math.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_math" +version: "0.1.0" +--- diff --git a/_badges/lace_opengl.json b/_badges/lace_opengl.json new file mode 100644 index 00000000..a4d9ebdb --- /dev/null +++ b/_badges/lace_opengl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_opengl" +version: "0.1.0" +--- diff --git a/_badges/lace_physics.json b/_badges/lace_physics.json new file mode 100644 index 00000000..7cea0cbc --- /dev/null +++ b/_badges/lace_physics.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_physics" +version: "0.1.0" +--- diff --git a/_badges/lace_shared.json b/_badges/lace_shared.json new file mode 100644 index 00000000..2414400e --- /dev/null +++ b/_badges/lace_shared.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_shared" +version: "0.1.0" +--- diff --git a/_badges/lace_swig.json b/_badges/lace_swig.json new file mode 100644 index 00000000..62e65528 --- /dev/null +++ b/_badges/lace_swig.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_swig" +version: "0.1.0" +--- diff --git a/_badges/lace_xml.json b/_badges/lace_xml.json new file mode 100644 index 00000000..c8e31cc9 --- /dev/null +++ b/_badges/lace_xml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lace_xml" +version: "0.1.0" +--- diff --git a/_badges/lal_highlight.json b/_badges/lal_highlight.json new file mode 100644 index 00000000..6a7fc48c --- /dev/null +++ b/_badges/lal_highlight.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lal_highlight" +version: "21.0.0" +--- diff --git a/_badges/lal_refactor.json b/_badges/lal_refactor.json new file mode 100644 index 00000000..79f4c172 --- /dev/null +++ b/_badges/lal_refactor.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lal_refactor" +version: "25.0.0" +--- diff --git a/_badges/langkit_support.json b/_badges/langkit_support.json new file mode 100644 index 00000000..20ee5190 --- /dev/null +++ b/_badges/langkit_support.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "langkit_support" +version: "25.0.0" +--- diff --git a/_badges/lea.json b/_badges/lea.json new file mode 100644 index 00000000..c8657a2b --- /dev/null +++ b/_badges/lea.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lea" +version: "0.90.0" +--- diff --git a/_badges/learnadainy.json b/_badges/learnadainy.json new file mode 100644 index 00000000..e5c4286c --- /dev/null +++ b/_badges/learnadainy.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "learnadainy" +version: "0.2.0" +--- diff --git a/_badges/libadalang.json b/_badges/libadalang.json new file mode 100644 index 00000000..3cc27ba2 --- /dev/null +++ b/_badges/libadalang.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libadalang" +version: "25.0.0" +--- diff --git a/_badges/libadalang2xml.json b/_badges/libadalang2xml.json new file mode 100644 index 00000000..67ce553b --- /dev/null +++ b/_badges/libadalang2xml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libadalang2xml" +version: "1.0.2" +--- diff --git a/_badges/libadalang_tools.json b/_badges/libadalang_tools.json new file mode 100644 index 00000000..240b5ed8 --- /dev/null +++ b/_badges/libadalang_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libadalang_tools" +version: "25.0.0" +--- diff --git a/_badges/libblas.json b/_badges/libblas.json new file mode 100644 index 00000000..07b7c3d7 --- /dev/null +++ b/_badges/libblas.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libblas" +version: +--- diff --git a/_badges/libbullet.json b/_badges/libbullet.json new file mode 100644 index 00000000..5349595f --- /dev/null +++ b/_badges/libbullet.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libbullet" +version: +--- diff --git a/_badges/libcanberra.json b/_badges/libcanberra.json new file mode 100644 index 00000000..5d89ec25 --- /dev/null +++ b/_badges/libcanberra.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libcanberra" +version: +--- diff --git a/_badges/libchipmunk.json b/_badges/libchipmunk.json new file mode 100644 index 00000000..f5328e6f --- /dev/null +++ b/_badges/libchipmunk.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libchipmunk" +version: +--- diff --git a/_badges/libclntsh.json b/_badges/libclntsh.json new file mode 100644 index 00000000..c36fdaeb --- /dev/null +++ b/_badges/libclntsh.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libclntsh" +version: +--- diff --git a/_badges/libcmark.json b/_badges/libcmark.json new file mode 100644 index 00000000..ac03c1e6 --- /dev/null +++ b/_badges/libcmark.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libcmark" +version: +--- diff --git a/_badges/libcsfml.json b/_badges/libcsfml.json new file mode 100644 index 00000000..c1aedb5f --- /dev/null +++ b/_badges/libcsfml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libcsfml" +version: +--- diff --git a/_badges/libcurl.json b/_badges/libcurl.json new file mode 100644 index 00000000..51a01252 --- /dev/null +++ b/_badges/libcurl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libcurl" +version: +--- diff --git a/_badges/libegl.json b/_badges/libegl.json new file mode 100644 index 00000000..ea80d363 --- /dev/null +++ b/_badges/libegl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libegl" +version: +--- diff --git a/_badges/libexpat.json b/_badges/libexpat.json new file mode 100644 index 00000000..21beee74 --- /dev/null +++ b/_badges/libexpat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libexpat" +version: +--- diff --git a/_badges/libfbclient.json b/_badges/libfbclient.json new file mode 100644 index 00000000..57e28a70 --- /dev/null +++ b/_badges/libfbclient.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libfbclient" +version: +--- diff --git a/_badges/libfreetype.json b/_badges/libfreetype.json new file mode 100644 index 00000000..e4397d3b --- /dev/null +++ b/_badges/libfreetype.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libfreetype" +version: +--- diff --git a/_badges/libftdi1.json b/_badges/libftdi1.json new file mode 100644 index 00000000..ae47afc3 --- /dev/null +++ b/_badges/libftdi1.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libftdi1" +version: +--- diff --git a/_badges/libfuse.json b/_badges/libfuse.json new file mode 100644 index 00000000..ae24dd40 --- /dev/null +++ b/_badges/libfuse.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libfuse" +version: +--- diff --git a/_badges/libglfw3.json b/_badges/libglfw3.json new file mode 100644 index 00000000..26310bdb --- /dev/null +++ b/_badges/libglfw3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libglfw3" +version: +--- diff --git a/_badges/libglib.json b/_badges/libglib.json new file mode 100644 index 00000000..2dc6fe0b --- /dev/null +++ b/_badges/libglib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libglib" +version: +--- diff --git a/_badges/libgmp.json b/_badges/libgmp.json new file mode 100644 index 00000000..615ed262 --- /dev/null +++ b/_badges/libgmp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgmp" +version: +--- diff --git a/_badges/libgnatdoc.json b/_badges/libgnatdoc.json new file mode 100644 index 00000000..7f49082d --- /dev/null +++ b/_badges/libgnatdoc.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgnatdoc" +version: "25.0.0" +--- diff --git a/_badges/libgnatformat.json b/_badges/libgnatformat.json new file mode 100644 index 00000000..b0dc9616 --- /dev/null +++ b/_badges/libgnatformat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgnatformat" +version: "25.0.0" +--- diff --git a/_badges/libgnutls.json b/_badges/libgnutls.json new file mode 100644 index 00000000..7c1a5b38 --- /dev/null +++ b/_badges/libgnutls.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgnutls" +version: +--- diff --git a/_badges/libgomp.json b/_badges/libgomp.json new file mode 100644 index 00000000..fccbd18d --- /dev/null +++ b/_badges/libgomp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgomp" +version: +--- diff --git a/_badges/libgpiod.json b/_badges/libgpiod.json new file mode 100644 index 00000000..8cc26fda --- /dev/null +++ b/_badges/libgpiod.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgpiod" +version: +--- diff --git a/_badges/libgpr.json b/_badges/libgpr.json new file mode 100644 index 00000000..9d8ae84f --- /dev/null +++ b/_badges/libgpr.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgpr" +version: "25.0.0" +--- diff --git a/_badges/libgpr2.json b/_badges/libgpr2.json new file mode 100644 index 00000000..1e840571 --- /dev/null +++ b/_badges/libgpr2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgpr2" +version: "25.0.0" +--- diff --git a/_badges/libgraph_easy_perl.json b/_badges/libgraph_easy_perl.json new file mode 100644 index 00000000..02408cbd --- /dev/null +++ b/_badges/libgraph_easy_perl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgraph_easy_perl" +version: +--- diff --git a/_badges/libgsl.json b/_badges/libgsl.json new file mode 100644 index 00000000..422bd151 --- /dev/null +++ b/_badges/libgsl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgsl" +version: +--- diff --git a/_badges/libgtk3.json b/_badges/libgtk3.json new file mode 100644 index 00000000..4f8f0ab3 --- /dev/null +++ b/_badges/libgtk3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libgtk3" +version: +--- diff --git a/_badges/libhello.json b/_badges/libhello.json new file mode 100644 index 00000000..20cffae5 --- /dev/null +++ b/_badges/libhello.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libhello" +version: "1.0.1" +--- diff --git a/_badges/libhidapi.json b/_badges/libhidapi.json new file mode 100644 index 00000000..f100bcc5 --- /dev/null +++ b/_badges/libhidapi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libhidapi" +version: +--- diff --git a/_badges/libi2c.json b/_badges/libi2c.json new file mode 100644 index 00000000..55413e1e --- /dev/null +++ b/_badges/libi2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libi2c" +version: +--- diff --git a/_badges/libiconv.json b/_badges/libiconv.json new file mode 100644 index 00000000..fc4aaaeb --- /dev/null +++ b/_badges/libiconv.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libiconv" +version: +--- diff --git a/_badges/libkeccak.json b/_badges/libkeccak.json new file mode 100644 index 00000000..974e9d93 --- /dev/null +++ b/_badges/libkeccak.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libkeccak" +version: "3.0.0" +--- diff --git a/_badges/liblal_refactor.json b/_badges/liblal_refactor.json new file mode 100644 index 00000000..300c0ceb --- /dev/null +++ b/_badges/liblal_refactor.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "liblal_refactor" +version: "25.0.0" +--- diff --git a/_badges/liblapack.json b/_badges/liblapack.json new file mode 100644 index 00000000..3f0b3716 --- /dev/null +++ b/_badges/liblapack.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "liblapack" +version: +--- diff --git a/_badges/liblua.json b/_badges/liblua.json new file mode 100644 index 00000000..0c48ee03 --- /dev/null +++ b/_badges/liblua.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "liblua" +version: +--- diff --git a/_badges/liblzma.json b/_badges/liblzma.json new file mode 100644 index 00000000..c557d6d0 --- /dev/null +++ b/_badges/liblzma.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "liblzma" +version: +--- diff --git a/_badges/libmagic.json b/_badges/libmagic.json new file mode 100644 index 00000000..51a9d6e3 --- /dev/null +++ b/_badges/libmagic.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libmagic" +version: +--- diff --git a/_badges/libmariadb.json b/_badges/libmariadb.json new file mode 100644 index 00000000..f93267b4 --- /dev/null +++ b/_badges/libmariadb.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libmariadb" +version: +--- diff --git a/_badges/libmesa.json b/_badges/libmesa.json new file mode 100644 index 00000000..32e17404 --- /dev/null +++ b/_badges/libmesa.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libmesa" +version: +--- diff --git a/_badges/libmpfr.json b/_badges/libmpfr.json new file mode 100644 index 00000000..2e965b78 --- /dev/null +++ b/_badges/libmpfr.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libmpfr" +version: +--- diff --git a/_badges/libmysqlclient.json b/_badges/libmysqlclient.json new file mode 100644 index 00000000..9534ee9a --- /dev/null +++ b/_badges/libmysqlclient.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libmysqlclient" +version: +--- diff --git a/_badges/libopus.json b/_badges/libopus.json new file mode 100644 index 00000000..01188f8a --- /dev/null +++ b/_badges/libopus.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libopus" +version: +--- diff --git a/_badges/libpcap.json b/_badges/libpcap.json new file mode 100644 index 00000000..5c0a3a4a --- /dev/null +++ b/_badges/libpcap.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libpcap" +version: +--- diff --git a/_badges/libpq.json b/_badges/libpq.json new file mode 100644 index 00000000..3debbdd1 --- /dev/null +++ b/_badges/libpq.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libpq" +version: +--- diff --git a/_badges/libpulse.json b/_badges/libpulse.json new file mode 100644 index 00000000..a4c020eb --- /dev/null +++ b/_badges/libpulse.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libpulse" +version: +--- diff --git a/_badges/libpython2dev.json b/_badges/libpython2dev.json new file mode 100644 index 00000000..00769993 --- /dev/null +++ b/_badges/libpython2dev.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libpython2dev" +version: +--- diff --git a/_badges/libpython3dev.json b/_badges/libpython3dev.json new file mode 100644 index 00000000..741bc3ba --- /dev/null +++ b/_badges/libpython3dev.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libpython3dev" +version: +--- diff --git a/_badges/libraylib.json b/_badges/libraylib.json new file mode 100644 index 00000000..e1f96e3f --- /dev/null +++ b/_badges/libraylib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libraylib" +version: +--- diff --git a/_badges/libreadline.json b/_badges/libreadline.json new file mode 100644 index 00000000..475e6a4c --- /dev/null +++ b/_badges/libreadline.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libreadline" +version: +--- diff --git a/_badges/librtmidi.json b/_badges/librtmidi.json new file mode 100644 index 00000000..062396c6 --- /dev/null +++ b/_badges/librtmidi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "librtmidi" +version: +--- diff --git a/_badges/libsdl2.json b/_badges/libsdl2.json new file mode 100644 index 00000000..4fb45652 --- /dev/null +++ b/_badges/libsdl2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsdl2" +version: +--- diff --git a/_badges/libsdl2_image.json b/_badges/libsdl2_image.json new file mode 100644 index 00000000..02cdfffa --- /dev/null +++ b/_badges/libsdl2_image.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsdl2_image" +version: +--- diff --git a/_badges/libsdl2_mixer.json b/_badges/libsdl2_mixer.json new file mode 100644 index 00000000..7f6bec97 --- /dev/null +++ b/_badges/libsdl2_mixer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsdl2_mixer" +version: +--- diff --git a/_badges/libsdl2_ttf.json b/_badges/libsdl2_ttf.json new file mode 100644 index 00000000..c3b4890b --- /dev/null +++ b/_badges/libsdl2_ttf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsdl2_ttf" +version: +--- diff --git a/_badges/libsecret.json b/_badges/libsecret.json new file mode 100644 index 00000000..19501e69 --- /dev/null +++ b/_badges/libsecret.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsecret" +version: +--- diff --git a/_badges/libsimpleio.json b/_badges/libsimpleio.json new file mode 100644 index 00000000..8a5c74c9 --- /dev/null +++ b/_badges/libsimpleio.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsimpleio" +version: "2.22364.1" +--- diff --git a/_badges/libsqlite3.json b/_badges/libsqlite3.json new file mode 100644 index 00000000..22b3ed53 --- /dev/null +++ b/_badges/libsqlite3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libsqlite3" +version: +--- diff --git a/_badges/libtcl.json b/_badges/libtcl.json new file mode 100644 index 00000000..fc52bcb5 --- /dev/null +++ b/_badges/libtcl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libtcl" +version: +--- diff --git a/_badges/libtk.json b/_badges/libtk.json new file mode 100644 index 00000000..593380b6 --- /dev/null +++ b/_badges/libtk.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libtk" +version: +--- diff --git a/_badges/libtls.json b/_badges/libtls.json new file mode 100644 index 00000000..a2b68e47 --- /dev/null +++ b/_badges/libtls.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libtls" +version: +--- diff --git a/_badges/libusb.json b/_badges/libusb.json new file mode 100644 index 00000000..dbd31807 --- /dev/null +++ b/_badges/libusb.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libusb" +version: +--- diff --git a/_badges/libwayland.json b/_badges/libwayland.json new file mode 100644 index 00000000..e8ac8e6c --- /dev/null +++ b/_badges/libwayland.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libwayland" +version: +--- diff --git a/_badges/libx11.json b/_badges/libx11.json new file mode 100644 index 00000000..9679e801 --- /dev/null +++ b/_badges/libx11.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libx11" +version: +--- diff --git a/_badges/libzmq.json b/_badges/libzmq.json new file mode 100644 index 00000000..c60585c0 --- /dev/null +++ b/_badges/libzmq.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "libzmq" +version: +--- diff --git a/_badges/light_arduino_due.json b/_badges/light_arduino_due.json new file mode 100644 index 00000000..489a95ff --- /dev/null +++ b/_badges/light_arduino_due.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "light_arduino_due" +version: "0.2.0" +--- diff --git a/_badges/light_blackpill_stm32f401.json b/_badges/light_blackpill_stm32f401.json new file mode 100644 index 00000000..9a60771c --- /dev/null +++ b/_badges/light_blackpill_stm32f401.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "light_blackpill_stm32f401" +version: "0.1.0" +--- diff --git a/_badges/light_fk723m1_zgt6.json b/_badges/light_fk723m1_zgt6.json new file mode 100644 index 00000000..bec7ab03 --- /dev/null +++ b/_badges/light_fk723m1_zgt6.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "light_fk723m1_zgt6" +version: "0.1.0" +--- diff --git a/_badges/lined.json b/_badges/lined.json new file mode 100644 index 00000000..d13e1b64 --- /dev/null +++ b/_badges/lined.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lined" +version: "20240419.0.0" +--- diff --git a/_badges/linenoise_ada.json b/_badges/linenoise_ada.json new file mode 100644 index 00000000..6bda75ec --- /dev/null +++ b/_badges/linenoise_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "linenoise_ada" +version: "1.1.2" +--- diff --git a/_badges/linux_hal.json b/_badges/linux_hal.json new file mode 100644 index 00000000..9559e330 --- /dev/null +++ b/_badges/linux_hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "linux_hal" +version: "1.1.0" +--- diff --git a/_badges/lispcli.json b/_badges/lispcli.json new file mode 100644 index 00000000..8aed10fa --- /dev/null +++ b/_badges/lispcli.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lispcli" +version: "0.1.1" +--- diff --git a/_badges/list_image.json b/_badges/list_image.json new file mode 100644 index 00000000..39dd7da7 --- /dev/null +++ b/_badges/list_image.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "list_image" +version: "1.0.0" +--- diff --git a/_badges/littlefs.json b/_badges/littlefs.json new file mode 100644 index 00000000..470be714 --- /dev/null +++ b/_badges/littlefs.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "littlefs" +version: "0.3.1" +--- diff --git a/_badges/lmdb_ada.json b/_badges/lmdb_ada.json new file mode 100644 index 00000000..639f6f91 --- /dev/null +++ b/_badges/lmdb_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lmdb_ada" +version: "1.2.0" +--- diff --git a/_badges/loadcpm.json b/_badges/loadcpm.json new file mode 100644 index 00000000..c161dfc5 --- /dev/null +++ b/_badges/loadcpm.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "loadcpm" +version: "0.1.0" +--- diff --git a/_badges/loga.json b/_badges/loga.json new file mode 100644 index 00000000..a6354588 --- /dev/null +++ b/_badges/loga.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "loga" +version: "1.0.0" +--- diff --git a/_badges/ltp_305.json b/_badges/ltp_305.json new file mode 100644 index 00000000..508324db --- /dev/null +++ b/_badges/ltp_305.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ltp_305" +version: "0.2.0" +--- diff --git a/_badges/lvgl_ada.json b/_badges/lvgl_ada.json new file mode 100644 index 00000000..ce393dad --- /dev/null +++ b/_badges/lvgl_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lvgl_ada" +version: "1.0.0" +--- diff --git a/_badges/lvgl_ada_examples.json b/_badges/lvgl_ada_examples.json new file mode 100644 index 00000000..9ebcb387 --- /dev/null +++ b/_badges/lvgl_ada_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lvgl_ada_examples" +version: "0.1.0" +--- diff --git a/_badges/lvgl_ada_simulator.json b/_badges/lvgl_ada_simulator.json new file mode 100644 index 00000000..ffcdae91 --- /dev/null +++ b/_badges/lvgl_ada_simulator.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lvgl_ada_simulator" +version: "1.0.0" +--- diff --git a/_badges/lzmada.json b/_badges/lzmada.json new file mode 100644 index 00000000..ba2f2e6a --- /dev/null +++ b/_badges/lzmada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "lzmada" +version: "1.1.4" +--- diff --git a/_badges/m4_tool.json b/_badges/m4_tool.json new file mode 100644 index 00000000..6fa35a3c --- /dev/null +++ b/_badges/m4_tool.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "m4_tool" +version: +--- diff --git a/_badges/mage.json b/_badges/mage.json new file mode 100644 index 00000000..c6b39665 --- /dev/null +++ b/_badges/mage.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mage" +version: "0.6.1" +--- diff --git a/_badges/mage_hat.json b/_badges/mage_hat.json new file mode 100644 index 00000000..26e91166 --- /dev/null +++ b/_badges/mage_hat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mage_hat" +version: "0.3.0" +--- diff --git a/_badges/magicada.json b/_badges/magicada.json new file mode 100644 index 00000000..09028b87 --- /dev/null +++ b/_badges/magicada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "magicada" +version: "1.0.1" +--- diff --git a/_badges/make.json b/_badges/make.json new file mode 100644 index 00000000..35bca1df --- /dev/null +++ b/_badges/make.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "make" +version: +--- diff --git a/_badges/mandelbrot_ascii.json b/_badges/mandelbrot_ascii.json new file mode 100644 index 00000000..3b868db4 --- /dev/null +++ b/_badges/mandelbrot_ascii.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mandelbrot_ascii" +version: "1.0.0" +--- diff --git a/_badges/markdown.json b/_badges/markdown.json new file mode 100644 index 00000000..3fbf3aec --- /dev/null +++ b/_badges/markdown.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "markdown" +version: "25.0.0" +--- diff --git a/_badges/mathpaqs.json b/_badges/mathpaqs.json new file mode 100644 index 00000000..ac56c890 --- /dev/null +++ b/_badges/mathpaqs.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mathpaqs" +version: "20230121.0.0" +--- diff --git a/_badges/matreshka_amf.json b/_badges/matreshka_amf.json new file mode 100644 index 00000000..c8706188 --- /dev/null +++ b/_badges/matreshka_amf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf" +version: "21.0.0" +--- diff --git a/_badges/matreshka_amf_dd.json b/_badges/matreshka_amf_dd.json new file mode 100644 index 00000000..d4b01cdf --- /dev/null +++ b/_badges/matreshka_amf_dd.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf_dd" +version: "21.0.0" +--- diff --git a/_badges/matreshka_amf_mofext.json b/_badges/matreshka_amf_mofext.json new file mode 100644 index 00000000..421fb09c --- /dev/null +++ b/_badges/matreshka_amf_mofext.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf_mofext" +version: "21.0.0" +--- diff --git a/_badges/matreshka_amf_ocl.json b/_badges/matreshka_amf_ocl.json new file mode 100644 index 00000000..8e9ff390 --- /dev/null +++ b/_badges/matreshka_amf_ocl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf_ocl" +version: "21.0.0" +--- diff --git a/_badges/matreshka_amf_uml.json b/_badges/matreshka_amf_uml.json new file mode 100644 index 00000000..3f7a6ecd --- /dev/null +++ b/_badges/matreshka_amf_uml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf_uml" +version: "21.0.0" +--- diff --git a/_badges/matreshka_amf_utp.json b/_badges/matreshka_amf_utp.json new file mode 100644 index 00000000..ad388fb5 --- /dev/null +++ b/_badges/matreshka_amf_utp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_amf_utp" +version: "21.0.0" +--- diff --git a/_badges/matreshka_fastcgi.json b/_badges/matreshka_fastcgi.json new file mode 100644 index 00000000..ebd671a2 --- /dev/null +++ b/_badges/matreshka_fastcgi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_fastcgi" +version: "21.0.0" +--- diff --git a/_badges/matreshka_league.json b/_badges/matreshka_league.json new file mode 100644 index 00000000..d19bc93c --- /dev/null +++ b/_badges/matreshka_league.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_league" +version: "21.0.0" +--- diff --git a/_badges/matreshka_servlet.json b/_badges/matreshka_servlet.json new file mode 100644 index 00000000..cbcc1ca3 --- /dev/null +++ b/_badges/matreshka_servlet.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_servlet" +version: "21.0.0" +--- diff --git a/_badges/matreshka_soap.json b/_badges/matreshka_soap.json new file mode 100644 index 00000000..23742f7e --- /dev/null +++ b/_badges/matreshka_soap.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_soap" +version: "21.0.0" +--- diff --git a/_badges/matreshka_soap_wsse.json b/_badges/matreshka_soap_wsse.json new file mode 100644 index 00000000..7eb60a84 --- /dev/null +++ b/_badges/matreshka_soap_wsse.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_soap_wsse" +version: "21.0.0" +--- diff --git a/_badges/matreshka_spikedog_api.json b/_badges/matreshka_spikedog_api.json new file mode 100644 index 00000000..47e34299 --- /dev/null +++ b/_badges/matreshka_spikedog_api.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_spikedog_api" +version: "21.0.0" +--- diff --git a/_badges/matreshka_spikedog_awsd.json b/_badges/matreshka_spikedog_awsd.json new file mode 100644 index 00000000..47a45993 --- /dev/null +++ b/_badges/matreshka_spikedog_awsd.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_spikedog_awsd" +version: "21.0.0" +--- diff --git a/_badges/matreshka_spikedog_core.json b/_badges/matreshka_spikedog_core.json new file mode 100644 index 00000000..123abbd1 --- /dev/null +++ b/_badges/matreshka_spikedog_core.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_spikedog_core" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql.json b/_badges/matreshka_sql.json new file mode 100644 index 00000000..a9b1c437 --- /dev/null +++ b/_badges/matreshka_sql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql_firebird.json b/_badges/matreshka_sql_firebird.json new file mode 100644 index 00000000..3c2ff176 --- /dev/null +++ b/_badges/matreshka_sql_firebird.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql_firebird" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql_mysql.json b/_badges/matreshka_sql_mysql.json new file mode 100644 index 00000000..d9094207 --- /dev/null +++ b/_badges/matreshka_sql_mysql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql_mysql" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql_oracle.json b/_badges/matreshka_sql_oracle.json new file mode 100644 index 00000000..51db66a7 --- /dev/null +++ b/_badges/matreshka_sql_oracle.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql_oracle" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql_postgresql.json b/_badges/matreshka_sql_postgresql.json new file mode 100644 index 00000000..817989a4 --- /dev/null +++ b/_badges/matreshka_sql_postgresql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql_postgresql" +version: "21.0.0" +--- diff --git a/_badges/matreshka_sql_sqlite3.json b/_badges/matreshka_sql_sqlite3.json new file mode 100644 index 00000000..5a452967 --- /dev/null +++ b/_badges/matreshka_sql_sqlite3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_sql_sqlite3" +version: "21.0.0" +--- diff --git a/_badges/matreshka_xml.json b/_badges/matreshka_xml.json new file mode 100644 index 00000000..b06f12cd --- /dev/null +++ b/_badges/matreshka_xml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "matreshka_xml" +version: "21.0.0" +--- diff --git a/_badges/mcp2221.json b/_badges/mcp2221.json new file mode 100644 index 00000000..3157d467 --- /dev/null +++ b/_badges/mcp2221.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mcp2221" +version: "2.22364.1" +--- diff --git a/_badges/microbit_bsp.json b/_badges/microbit_bsp.json new file mode 100644 index 00000000..c8dd7f47 --- /dev/null +++ b/_badges/microbit_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "microbit_bsp" +version: "0.2.0" +--- diff --git a/_badges/microbit_examples.json b/_badges/microbit_examples.json new file mode 100644 index 00000000..1f565f63 --- /dev/null +++ b/_badges/microbit_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "microbit_examples" +version: "0.1.0" +--- diff --git a/_badges/midi.json b/_badges/midi.json new file mode 100644 index 00000000..9588bd2b --- /dev/null +++ b/_badges/midi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "midi" +version: "0.2.0" +--- diff --git a/_badges/mine_detector.json b/_badges/mine_detector.json new file mode 100644 index 00000000..a7b5861a --- /dev/null +++ b/_badges/mine_detector.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mine_detector" +version: "20220720.0.0" +--- diff --git a/_badges/minimal_containers.json b/_badges/minimal_containers.json new file mode 100644 index 00000000..219e325d --- /dev/null +++ b/_badges/minimal_containers.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "minimal_containers" +version: "1.2.0" +--- diff --git a/_badges/minirest.json b/_badges/minirest.json new file mode 100644 index 00000000..7621a975 --- /dev/null +++ b/_badges/minirest.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "minirest" +version: "0.2.0" +--- diff --git a/_badges/minisamd51_bsp.json b/_badges/minisamd51_bsp.json new file mode 100644 index 00000000..25764833 --- /dev/null +++ b/_badges/minisamd51_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "minisamd51_bsp" +version: "0.1.0" +--- diff --git a/_badges/minisamd51_example.json b/_badges/minisamd51_example.json new file mode 100644 index 00000000..476f8e3d --- /dev/null +++ b/_badges/minisamd51_example.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "minisamd51_example" +version: "0.1.1" +--- diff --git a/_badges/mold.json b/_badges/mold.json new file mode 100644 index 00000000..5428822d --- /dev/null +++ b/_badges/mold.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mold" +version: "1.0.3" +--- diff --git a/_badges/mold_lib.json b/_badges/mold_lib.json new file mode 100644 index 00000000..a190d929 --- /dev/null +++ b/_badges/mold_lib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mold_lib" +version: "2.2.1" +--- diff --git a/_badges/mos6502_create_led.json b/_badges/mos6502_create_led.json new file mode 100644 index 00000000..a5ddb151 --- /dev/null +++ b/_badges/mos6502_create_led.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mos6502_create_led" +version: "1.5.0" +--- diff --git a/_badges/mos6502_create_nop.json b/_badges/mos6502_create_nop.json new file mode 100644 index 00000000..847fd093 --- /dev/null +++ b/_badges/mos6502_create_nop.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mos6502_create_nop" +version: "1.5.0" +--- diff --git a/_badges/mos6502_create_reset.json b/_badges/mos6502_create_reset.json new file mode 100644 index 00000000..5910b8b3 --- /dev/null +++ b/_badges/mos6502_create_reset.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "mos6502_create_reset" +version: "1.5.0" +--- diff --git a/_badges/msys2_runtime.json b/_badges/msys2_runtime.json new file mode 100644 index 00000000..88bb0b52 --- /dev/null +++ b/_badges/msys2_runtime.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "msys2_runtime" +version: +--- diff --git a/_badges/muntsos_aarch64.json b/_badges/muntsos_aarch64.json new file mode 100644 index 00000000..7b8b62ab --- /dev/null +++ b/_badges/muntsos_aarch64.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_aarch64" +version: "9.1.0" +--- diff --git a/_badges/muntsos_beaglebone.json b/_badges/muntsos_beaglebone.json new file mode 100644 index 00000000..240b44ec --- /dev/null +++ b/_badges/muntsos_beaglebone.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_beaglebone" +version: "9.1.0" +--- diff --git a/_badges/muntsos_dev_aarch64.json b/_badges/muntsos_dev_aarch64.json new file mode 100644 index 00000000..8bf8735d --- /dev/null +++ b/_badges/muntsos_dev_aarch64.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_dev_aarch64" +version: +--- diff --git a/_badges/muntsos_dev_beaglebone.json b/_badges/muntsos_dev_beaglebone.json new file mode 100644 index 00000000..29992d9c --- /dev/null +++ b/_badges/muntsos_dev_beaglebone.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_dev_beaglebone" +version: +--- diff --git a/_badges/muntsos_dev_raspberrypi1.json b/_badges/muntsos_dev_raspberrypi1.json new file mode 100644 index 00000000..40e6bcbb --- /dev/null +++ b/_badges/muntsos_dev_raspberrypi1.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_dev_raspberrypi1" +version: +--- diff --git a/_badges/muntsos_dev_raspberrypi2.json b/_badges/muntsos_dev_raspberrypi2.json new file mode 100644 index 00000000..4298e1c1 --- /dev/null +++ b/_badges/muntsos_dev_raspberrypi2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_dev_raspberrypi2" +version: +--- diff --git a/_badges/muntsos_raspberrypi1.json b/_badges/muntsos_raspberrypi1.json new file mode 100644 index 00000000..b83dbaf1 --- /dev/null +++ b/_badges/muntsos_raspberrypi1.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_raspberrypi1" +version: "9.1.0" +--- diff --git a/_badges/muntsos_raspberrypi2.json b/_badges/muntsos_raspberrypi2.json new file mode 100644 index 00000000..fd8dd86e --- /dev/null +++ b/_badges/muntsos_raspberrypi2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_raspberrypi2" +version: "9.1.0" +--- diff --git a/_badges/muntsos_raspberrypi3.json b/_badges/muntsos_raspberrypi3.json new file mode 100644 index 00000000..c4d4331d --- /dev/null +++ b/_badges/muntsos_raspberrypi3.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_raspberrypi3" +version: "9.1.0" +--- diff --git a/_badges/muntsos_raspberrypi4.json b/_badges/muntsos_raspberrypi4.json new file mode 100644 index 00000000..5389be4a --- /dev/null +++ b/_badges/muntsos_raspberrypi4.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_raspberrypi4" +version: "9.1.0" +--- diff --git a/_badges/muntsos_raspberrypi5.json b/_badges/muntsos_raspberrypi5.json new file mode 100644 index 00000000..853aa4f9 --- /dev/null +++ b/_badges/muntsos_raspberrypi5.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "muntsos_raspberrypi5" +version: "9.1.0" +--- diff --git a/_badges/musicplayer.json b/_badges/musicplayer.json new file mode 100644 index 00000000..8de59c80 --- /dev/null +++ b/_badges/musicplayer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "musicplayer" +version: "20210719.0.0" +--- diff --git a/_badges/ncursesada.json b/_badges/ncursesada.json new file mode 100644 index 00000000..764a9786 --- /dev/null +++ b/_badges/ncursesada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ncursesada" +version: "6.3.0" +--- diff --git a/_badges/nrf5x_hal.json b/_badges/nrf5x_hal.json new file mode 100644 index 00000000..e80db7f9 --- /dev/null +++ b/_badges/nrf5x_hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "nrf5x_hal" +version: "0.1.0" +--- diff --git a/_badges/ocarina_lib.json b/_badges/ocarina_lib.json new file mode 100644 index 00000000..2114dbc0 --- /dev/null +++ b/_badges/ocarina_lib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ocarina_lib" +version: "1.1.0-20070603" +--- diff --git a/_badges/openai.json b/_badges/openai.json new file mode 100644 index 00000000..1d7825bb --- /dev/null +++ b/_badges/openai.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openai" +version: "1.0.0" +--- diff --git a/_badges/openapi.json b/_badges/openapi.json new file mode 100644 index 00000000..5101aaa7 --- /dev/null +++ b/_badges/openapi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openapi" +version: "0.8.0" +--- diff --git a/_badges/openapi_server.json b/_badges/openapi_server.json new file mode 100644 index 00000000..03c2dca6 --- /dev/null +++ b/_badges/openapi_server.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openapi_server" +version: "0.8.0" +--- diff --git a/_badges/openglada.json b/_badges/openglada.json new file mode 100644 index 00000000..40da67f2 --- /dev/null +++ b/_badges/openglada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openglada" +version: "0.9.0" +--- diff --git a/_badges/openglada_glfw.json b/_badges/openglada_glfw.json new file mode 100644 index 00000000..ddbdd702 --- /dev/null +++ b/_badges/openglada_glfw.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openglada_glfw" +version: "0.9.0" +--- diff --git a/_badges/openglada_images.json b/_badges/openglada_images.json new file mode 100644 index 00000000..cf48e982 --- /dev/null +++ b/_badges/openglada_images.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openglada_images" +version: "0.9.0" +--- diff --git a/_badges/openglada_text.json b/_badges/openglada_text.json new file mode 100644 index 00000000..180b32d3 --- /dev/null +++ b/_badges/openglada_text.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openglada_text" +version: "0.9.0" +--- diff --git a/_badges/openssl.json b/_badges/openssl.json new file mode 100644 index 00000000..0ca36a7e --- /dev/null +++ b/_badges/openssl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "openssl" +version: +--- diff --git a/_badges/opentoken.json b/_badges/opentoken.json new file mode 100644 index 00000000..a9545e3a --- /dev/null +++ b/_badges/opentoken.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "opentoken" +version: "6.0.3" +--- diff --git a/_badges/optional.json b/_badges/optional.json new file mode 100644 index 00000000..0b723740 --- /dev/null +++ b/_badges/optional.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "optional" +version: "0.2.0" +--- diff --git a/_badges/orka.json b/_badges/orka.json new file mode 100644 index 00000000..b19145c2 --- /dev/null +++ b/_badges/orka.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka" +version: "1.0.0" +--- diff --git a/_badges/orka_awt.json b/_badges/orka_awt.json new file mode 100644 index 00000000..72d5cf53 --- /dev/null +++ b/_badges/orka_awt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_awt" +version: "1.0.0" +--- diff --git a/_badges/orka_egl.json b/_badges/orka_egl.json new file mode 100644 index 00000000..1237f81c --- /dev/null +++ b/_badges/orka_egl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_egl" +version: "1.0.0" +--- diff --git a/_badges/orka_numerics.json b/_badges/orka_numerics.json new file mode 100644 index 00000000..51629d44 --- /dev/null +++ b/_badges/orka_numerics.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_numerics" +version: "1.0.0" +--- diff --git a/_badges/orka_opengl.json b/_badges/orka_opengl.json new file mode 100644 index 00000000..eeb55a4e --- /dev/null +++ b/_badges/orka_opengl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_opengl" +version: "1.0.0" +--- diff --git a/_badges/orka_plugin_archives.json b/_badges/orka_plugin_archives.json new file mode 100644 index 00000000..378f1140 --- /dev/null +++ b/_badges/orka_plugin_archives.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_plugin_archives" +version: "1.0.0" +--- diff --git a/_badges/orka_plugin_atmosphere.json b/_badges/orka_plugin_atmosphere.json new file mode 100644 index 00000000..31f74052 --- /dev/null +++ b/_badges/orka_plugin_atmosphere.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_plugin_atmosphere" +version: "1.0.0" +--- diff --git a/_badges/orka_plugin_gltf.json b/_badges/orka_plugin_gltf.json new file mode 100644 index 00000000..990a984b --- /dev/null +++ b/_badges/orka_plugin_gltf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_plugin_gltf" +version: "1.0.0" +--- diff --git a/_badges/orka_plugin_terrain.json b/_badges/orka_plugin_terrain.json new file mode 100644 index 00000000..60b8da0f --- /dev/null +++ b/_badges/orka_plugin_terrain.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_plugin_terrain" +version: "1.0.0" +--- diff --git a/_badges/orka_simd.json b/_badges/orka_simd.json new file mode 100644 index 00000000..b92cf1fb --- /dev/null +++ b/_badges/orka_simd.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_simd" +version: "1.0.0" +--- diff --git a/_badges/orka_tensors_cpu.json b/_badges/orka_tensors_cpu.json new file mode 100644 index 00000000..8159258b --- /dev/null +++ b/_badges/orka_tensors_cpu.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_tensors_cpu" +version: "1.0.0" +--- diff --git a/_badges/orka_tensors_gpu.json b/_badges/orka_tensors_gpu.json new file mode 100644 index 00000000..cfa7a150 --- /dev/null +++ b/_badges/orka_tensors_gpu.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_tensors_gpu" +version: "1.0.0" +--- diff --git a/_badges/orka_tools.json b/_badges/orka_tools.json new file mode 100644 index 00000000..b590320a --- /dev/null +++ b/_badges/orka_tools.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_tools" +version: "1.0.0" +--- diff --git a/_badges/orka_transforms.json b/_badges/orka_transforms.json new file mode 100644 index 00000000..c992fcb4 --- /dev/null +++ b/_badges/orka_transforms.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_transforms" +version: "1.0.0" +--- diff --git a/_badges/orka_types.json b/_badges/orka_types.json new file mode 100644 index 00000000..6d3df3fc --- /dev/null +++ b/_badges/orka_types.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "orka_types" +version: "1.0.0" +--- diff --git a/_badges/parallelize.json b/_badges/parallelize.json new file mode 100644 index 00000000..40b77e89 --- /dev/null +++ b/_badges/parallelize.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "parallelize" +version: "1.0.0" +--- diff --git a/_badges/parse_args.json b/_badges/parse_args.json new file mode 100644 index 00000000..6fad1425 --- /dev/null +++ b/_badges/parse_args.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "parse_args" +version: "0.9.0" +--- diff --git a/_badges/partord.json b/_badges/partord.json new file mode 100644 index 00000000..194f8b32 --- /dev/null +++ b/_badges/partord.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "partord" +version: "1.0.0" +--- diff --git a/_badges/password_gen.json b/_badges/password_gen.json new file mode 100644 index 00000000..248f301c --- /dev/null +++ b/_badges/password_gen.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "password_gen" +version: "20220720.0.0" +--- diff --git a/_badges/pbkdf2.json b/_badges/pbkdf2.json new file mode 100644 index 00000000..5173e128 --- /dev/null +++ b/_badges/pbkdf2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pbkdf2" +version: "3.0.0" +--- diff --git a/_badges/phcpack.json b/_badges/phcpack.json new file mode 100644 index 00000000..4f03d1c9 --- /dev/null +++ b/_badges/phcpack.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "phcpack" +version: "2.4.88" +--- diff --git a/_badges/pico_bsp.json b/_badges/pico_bsp.json new file mode 100644 index 00000000..d42edf1c --- /dev/null +++ b/_badges/pico_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pico_bsp" +version: "2.2.0" +--- diff --git a/_badges/pico_examples.json b/_badges/pico_examples.json new file mode 100644 index 00000000..c3fc341f --- /dev/null +++ b/_badges/pico_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pico_examples" +version: "2.2.0" +--- diff --git a/_badges/pkg_config.json b/_badges/pkg_config.json new file mode 100644 index 00000000..4f17b541 --- /dev/null +++ b/_badges/pkg_config.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pkg_config" +version: +--- diff --git a/_badges/pla_util.json b/_badges/pla_util.json new file mode 100644 index 00000000..9941eac5 --- /dev/null +++ b/_badges/pla_util.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pla_util" +version: "2.1.2" +--- diff --git a/_badges/play_2048.json b/_badges/play_2048.json new file mode 100644 index 00000000..328dbea5 --- /dev/null +++ b/_badges/play_2048.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "play_2048" +version: "1.0.0" +--- diff --git a/_badges/plplot.json b/_badges/plplot.json new file mode 100644 index 00000000..2235da8b --- /dev/null +++ b/_badges/plplot.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "plplot" +version: +--- diff --git a/_badges/portable_minimal_ada_rts.json b/_badges/portable_minimal_ada_rts.json new file mode 100644 index 00000000..6911a654 --- /dev/null +++ b/_badges/portable_minimal_ada_rts.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "portable_minimal_ada_rts" +version: "1.0.0" +--- diff --git a/_badges/postgresql.json b/_badges/postgresql.json new file mode 100644 index 00000000..99b18f55 --- /dev/null +++ b/_badges/postgresql.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "postgresql" +version: +--- diff --git a/_badges/powerjoular.json b/_badges/powerjoular.json new file mode 100644 index 00000000..7dcaae45 --- /dev/null +++ b/_badges/powerjoular.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "powerjoular" +version: "1.0.4" +--- diff --git a/_badges/ppag.json b/_badges/ppag.json new file mode 100644 index 00000000..93277422 --- /dev/null +++ b/_badges/ppag.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ppag" +version: "2.1.1" +--- diff --git a/_badges/pragmarc.json b/_badges/pragmarc.json new file mode 100644 index 00000000..90fd61c7 --- /dev/null +++ b/_badges/pragmarc.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pragmarc" +version: "20240810.0.0" +--- diff --git a/_badges/prettier_ada.json b/_badges/prettier_ada.json new file mode 100644 index 00000000..f61004b2 --- /dev/null +++ b/_badges/prettier_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "prettier_ada" +version: "25.0.0" +--- diff --git a/_badges/printer_toolkit.json b/_badges/printer_toolkit.json new file mode 100644 index 00000000..f2efc071 --- /dev/null +++ b/_badges/printer_toolkit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "printer_toolkit" +version: "0.2.0" +--- diff --git a/_badges/program_proofs_in_spark.json b/_badges/program_proofs_in_spark.json new file mode 100644 index 00000000..3792ba98 --- /dev/null +++ b/_badges/program_proofs_in_spark.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "program_proofs_in_spark" +version: "0.1.1" +--- diff --git a/_badges/progress_indicators.json b/_badges/progress_indicators.json new file mode 100644 index 00000000..da31813f --- /dev/null +++ b/_badges/progress_indicators.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "progress_indicators" +version: "0.0.1" +--- diff --git a/_badges/protobuf.json b/_badges/protobuf.json new file mode 100644 index 00000000..45eac263 --- /dev/null +++ b/_badges/protobuf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "protobuf" +version: "1.0.0" +--- diff --git a/_badges/pygamer_bsp.json b/_badges/pygamer_bsp.json new file mode 100644 index 00000000..71a3b1e1 --- /dev/null +++ b/_badges/pygamer_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pygamer_bsp" +version: "1.0.0" +--- diff --git a/_badges/pygamer_simulator.json b/_badges/pygamer_simulator.json new file mode 100644 index 00000000..f0458d8c --- /dev/null +++ b/_badges/pygamer_simulator.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "pygamer_simulator" +version: "1.0.0" +--- diff --git a/_badges/qmc5883.json b/_badges/qmc5883.json new file mode 100644 index 00000000..e39c3139 --- /dev/null +++ b/_badges/qmc5883.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "qmc5883" +version: "1.0.0" +--- diff --git a/_badges/qoi.json b/_badges/qoi.json new file mode 100644 index 00000000..2620f649 --- /dev/null +++ b/_badges/qoi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "qoi" +version: "0.1.0" +--- diff --git a/_badges/qplt.json b/_badges/qplt.json new file mode 100644 index 00000000..e41098e0 --- /dev/null +++ b/_badges/qplt.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "qplt" +version: "20230720.0.0" +--- diff --git a/_badges/raspberry_bsp.json b/_badges/raspberry_bsp.json new file mode 100644 index 00000000..d9d6c44b --- /dev/null +++ b/_badges/raspberry_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "raspberry_bsp" +version: "1.0.0" +--- diff --git a/_badges/raylib.json b/_badges/raylib.json new file mode 100644 index 00000000..6f7a4092 --- /dev/null +++ b/_badges/raylib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "raylib" +version: "1.0.1" +--- diff --git a/_badges/rclada.json b/_badges/rclada.json new file mode 100644 index 00000000..013cac4f --- /dev/null +++ b/_badges/rclada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rclada" +version: "0.1.0" +--- diff --git a/_badges/rclada_examples.json b/_badges/rclada_examples.json new file mode 100644 index 00000000..7918b71c --- /dev/null +++ b/_badges/rclada_examples.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rclada_examples" +version: "0.1.0" +--- diff --git a/_badges/re2c.json b/_badges/re2c.json new file mode 100644 index 00000000..f2fa06d3 --- /dev/null +++ b/_badges/re2c.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "re2c" +version: +--- diff --git a/_badges/rejuvenation.json b/_badges/rejuvenation.json new file mode 100644 index 00000000..a604100c --- /dev/null +++ b/_badges/rejuvenation.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rejuvenation" +version: "23.0.0" +--- diff --git a/_badges/remoteio.json b/_badges/remoteio.json new file mode 100644 index 00000000..1926aa85 --- /dev/null +++ b/_badges/remoteio.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "remoteio" +version: "2.22357.1" +--- diff --git a/_badges/resources.json b/_badges/resources.json new file mode 100644 index 00000000..8854d1d6 --- /dev/null +++ b/_badges/resources.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "resources" +version: "0.1.0" +--- diff --git a/_badges/rewriters.json b/_badges/rewriters.json new file mode 100644 index 00000000..edf30a21 --- /dev/null +++ b/_badges/rewriters.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rewriters" +version: "23.0.0" +--- diff --git a/_badges/ros2_foxy.json b/_badges/ros2_foxy.json new file mode 100644 index 00000000..8df21c43 --- /dev/null +++ b/_badges/ros2_foxy.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ros2_foxy" +version: +--- diff --git a/_badges/rp2040_hal.json b/_badges/rp2040_hal.json new file mode 100644 index 00000000..83a6f213 --- /dev/null +++ b/_badges/rp2040_hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rp2040_hal" +version: "2.4.1" +--- diff --git a/_badges/rsfile.json b/_badges/rsfile.json new file mode 100644 index 00000000..8cba6bfa --- /dev/null +++ b/_badges/rsfile.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rsfile" +version: "1.0.1" +--- diff --git a/_badges/rtmidi.json b/_badges/rtmidi.json new file mode 100644 index 00000000..90c8c51b --- /dev/null +++ b/_badges/rtmidi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rtmidi" +version: "0.1.0" +--- diff --git a/_badges/rxada.json b/_badges/rxada.json new file mode 100644 index 00000000..20d1d515 --- /dev/null +++ b/_badges/rxada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "rxada" +version: "0.1.1" +--- diff --git a/_badges/saatana.json b/_badges/saatana.json new file mode 100644 index 00000000..492d39d4 --- /dev/null +++ b/_badges/saatana.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "saatana" +version: "2.0.2" +--- diff --git a/_badges/samd51_hal.json b/_badges/samd51_hal.json new file mode 100644 index 00000000..f3168915 --- /dev/null +++ b/_badges/samd51_hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "samd51_hal" +version: "0.3.0" +--- diff --git a/_badges/sciada.json b/_badges/sciada.json new file mode 100644 index 00000000..ab80861b --- /dev/null +++ b/_badges/sciada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sciada" +version: "0.4.0" +--- diff --git a/_badges/scripted_testing.json b/_badges/scripted_testing.json new file mode 100644 index 00000000..76f4db34 --- /dev/null +++ b/_badges/scripted_testing.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "scripted_testing" +version: "2.0.0" +--- diff --git a/_badges/sdlada.json b/_badges/sdlada.json new file mode 100644 index 00000000..ea6303c8 --- /dev/null +++ b/_badges/sdlada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sdlada" +version: "2.5.20" +--- diff --git a/_badges/secretada.json b/_badges/secretada.json new file mode 100644 index 00000000..343e6ccf --- /dev/null +++ b/_badges/secretada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "secretada" +version: "1.0.0" +--- diff --git a/_badges/security.json b/_badges/security.json new file mode 100644 index 00000000..4fb10c44 --- /dev/null +++ b/_badges/security.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "security" +version: "1.5.1" +--- diff --git a/_badges/semantic_versioning.json b/_badges/semantic_versioning.json new file mode 100644 index 00000000..2b536a8b --- /dev/null +++ b/_badges/semantic_versioning.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "semantic_versioning" +version: "2.1.0" +--- diff --git a/_badges/septum.json b/_badges/septum.json new file mode 100644 index 00000000..a5195beb --- /dev/null +++ b/_badges/septum.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "septum" +version: "0.0.8" +--- diff --git a/_badges/serverfaces.json b/_badges/serverfaces.json new file mode 100644 index 00000000..81f608c9 --- /dev/null +++ b/_badges/serverfaces.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "serverfaces" +version: "1.6.1" +--- diff --git a/_badges/serverfaces_unit.json b/_badges/serverfaces_unit.json new file mode 100644 index 00000000..2096f05e --- /dev/null +++ b/_badges/serverfaces_unit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "serverfaces_unit" +version: "1.6.1" +--- diff --git a/_badges/servletada.json b/_badges/servletada.json new file mode 100644 index 00000000..12aced01 --- /dev/null +++ b/_badges/servletada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "servletada" +version: "1.7.1" +--- diff --git a/_badges/servletada_aws.json b/_badges/servletada_aws.json new file mode 100644 index 00000000..da150a9e --- /dev/null +++ b/_badges/servletada_aws.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "servletada_aws" +version: "1.7.1" +--- diff --git a/_badges/servletada_ews.json b/_badges/servletada_ews.json new file mode 100644 index 00000000..cec01ac8 --- /dev/null +++ b/_badges/servletada_ews.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "servletada_ews" +version: "1.7.1" +--- diff --git a/_badges/servletada_unit.json b/_badges/servletada_unit.json new file mode 100644 index 00000000..907036eb --- /dev/null +++ b/_badges/servletada_unit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "servletada_unit" +version: "1.7.1" +--- diff --git a/_badges/sh1107.json b/_badges/sh1107.json new file mode 100644 index 00000000..22be7ac5 --- /dev/null +++ b/_badges/sh1107.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sh1107" +version: "1.2.2" +--- diff --git a/_badges/sha1.json b/_badges/sha1.json new file mode 100644 index 00000000..d014a6e9 --- /dev/null +++ b/_badges/sha1.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sha1" +version: "2.0.0" +--- diff --git a/_badges/sha2.json b/_badges/sha2.json new file mode 100644 index 00000000..f4b34bd3 --- /dev/null +++ b/_badges/sha2.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sha2" +version: "2.0.0" +--- diff --git a/_badges/shoot_n_loot.json b/_badges/shoot_n_loot.json new file mode 100644 index 00000000..7d9ee6ef --- /dev/null +++ b/_badges/shoot_n_loot.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "shoot_n_loot" +version: "1.0.0" +--- diff --git a/_badges/si_units.json b/_badges/si_units.json new file mode 100644 index 00000000..607b0ca4 --- /dev/null +++ b/_badges/si_units.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "si_units" +version: "0.2.0" +--- diff --git a/_badges/simcpucli.json b/_badges/simcpucli.json new file mode 100644 index 00000000..9c745269 --- /dev/null +++ b/_badges/simcpucli.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "simcpucli" +version: "0.1.0" +--- diff --git a/_badges/simh_tapes.json b/_badges/simh_tapes.json new file mode 100644 index 00000000..12998786 --- /dev/null +++ b/_badges/simh_tapes.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "simh_tapes" +version: "0.1.1" +--- diff --git a/_badges/simple_components.json b/_badges/simple_components.json new file mode 100644 index 00000000..94482c82 --- /dev/null +++ b/_badges/simple_components.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "simple_components" +version: "4.68.0" +--- diff --git a/_badges/simple_logging.json b/_badges/simple_logging.json new file mode 100644 index 00000000..7c4c64fa --- /dev/null +++ b/_badges/simple_logging.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "simple_logging" +version: "1.2.0" +--- diff --git a/_badges/simple_regex.json b/_badges/simple_regex.json new file mode 100644 index 00000000..c0313d77 --- /dev/null +++ b/_badges/simple_regex.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "simple_regex" +version: "0.1.0" +--- diff --git a/_badges/slip.json b/_badges/slip.json new file mode 100644 index 00000000..868da875 --- /dev/null +++ b/_badges/slip.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "slip" +version: "0.0.1" +--- diff --git a/_badges/socketcan.json b/_badges/socketcan.json new file mode 100644 index 00000000..8f16a1a2 --- /dev/null +++ b/_badges/socketcan.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "socketcan" +version: "1.0.0" +--- diff --git a/_badges/spark_unbound.json b/_badges/spark_unbound.json new file mode 100644 index 00000000..d59a5c7a --- /dev/null +++ b/_badges/spark_unbound.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spark_unbound" +version: "0.2.1" +--- diff --git a/_badges/sparknacl.json b/_badges/sparknacl.json new file mode 100644 index 00000000..d2a33692 --- /dev/null +++ b/_badges/sparknacl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "sparknacl" +version: "4.0.0" +--- diff --git a/_badges/spat.json b/_badges/spat.json new file mode 100644 index 00000000..f99c502f --- /dev/null +++ b/_badges/spat.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spat" +version: "1.3.0" +--- diff --git a/_badges/spawn.json b/_badges/spawn.json new file mode 100644 index 00000000..9fc3a0c7 --- /dev/null +++ b/_badges/spawn.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spawn" +version: "25.0.0" +--- diff --git a/_badges/spawn_glib.json b/_badges/spawn_glib.json new file mode 100644 index 00000000..b83cfbc7 --- /dev/null +++ b/_badges/spawn_glib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spawn_glib" +version: "25.0.0" +--- diff --git a/_badges/spdx.json b/_badges/spdx.json new file mode 100644 index 00000000..712ae270 --- /dev/null +++ b/_badges/spdx.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spdx" +version: "0.2.0" +--- diff --git a/_badges/specfun.json b/_badges/specfun.json new file mode 100644 index 00000000..c08943ac --- /dev/null +++ b/_badges/specfun.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "specfun" +version: "1.0.0" +--- diff --git a/_badges/splitter.json b/_badges/splitter.json new file mode 100644 index 00000000..0e21cd59 --- /dev/null +++ b/_badges/splitter.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "splitter" +version: "1.0.2" +--- diff --git a/_badges/spoon.json b/_badges/spoon.json new file mode 100644 index 00000000..630adff3 --- /dev/null +++ b/_badges/spoon.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "spoon" +version: "1.0.1" +--- diff --git a/_badges/ssl.json b/_badges/ssl.json new file mode 100644 index 00000000..704acc10 --- /dev/null +++ b/_badges/ssl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ssl" +version: +--- diff --git a/_badges/st7789.json b/_badges/st7789.json new file mode 100644 index 00000000..f2ff576a --- /dev/null +++ b/_badges/st7789.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "st7789" +version: "0.1.0" +--- diff --git a/_badges/startup_gen.json b/_badges/startup_gen.json new file mode 100644 index 00000000..4a41b3d2 --- /dev/null +++ b/_badges/startup_gen.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "startup_gen" +version: "25.0.0" +--- diff --git a/_badges/stephes_ada_library.json b/_badges/stephes_ada_library.json new file mode 100644 index 00000000..0a87a68c --- /dev/null +++ b/_badges/stephes_ada_library.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "stephes_ada_library" +version: "3.7.3" +--- diff --git a/_badges/stm32f0x2_hal.json b/_badges/stm32f0x2_hal.json new file mode 100644 index 00000000..fe40f5fd --- /dev/null +++ b/_badges/stm32f0x2_hal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "stm32f0x2_hal" +version: "0.1.0" +--- diff --git a/_badges/stopwatch.json b/_badges/stopwatch.json new file mode 100644 index 00000000..f22282e2 --- /dev/null +++ b/_badges/stopwatch.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "stopwatch" +version: "0.1.0" +--- diff --git a/_badges/suika_programing.json b/_badges/suika_programing.json new file mode 100644 index 00000000..5d611d44 --- /dev/null +++ b/_badges/suika_programing.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "suika_programing" +version: "0.1.0" +--- diff --git a/_badges/svd2ada.json b/_badges/svd2ada.json new file mode 100644 index 00000000..fd3f8060 --- /dev/null +++ b/_badges/svd2ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "svd2ada" +version: "0.1.0" +--- diff --git a/_badges/system_random.json b/_badges/system_random.json new file mode 100644 index 00000000..14a660e4 --- /dev/null +++ b/_badges/system_random.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "system_random" +version: "1.0.0" +--- diff --git a/_badges/tash.json b/_badges/tash.json new file mode 100644 index 00000000..8a40a21a --- /dev/null +++ b/_badges/tash.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tash" +version: "8.7.2" +--- diff --git a/_badges/task_coroutines.json b/_badges/task_coroutines.json new file mode 100644 index 00000000..6e715253 --- /dev/null +++ b/_badges/task_coroutines.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "task_coroutines" +version: "0.1.0" +--- diff --git a/_badges/templates_parser.json b/_badges/templates_parser.json new file mode 100644 index 00000000..40bbd1c1 --- /dev/null +++ b/_badges/templates_parser.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "templates_parser" +version: "25.0.0" +--- diff --git a/_badges/texcad.json b/_badges/texcad.json new file mode 100644 index 00000000..9739e0ae --- /dev/null +++ b/_badges/texcad.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "texcad" +version: "4.5.3" +--- diff --git a/_badges/tiled_code_gen.json b/_badges/tiled_code_gen.json new file mode 100644 index 00000000..e57542ec --- /dev/null +++ b/_badges/tiled_code_gen.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tiled_code_gen" +version: "0.1.0" +--- diff --git a/_badges/tiny_rp2040_bsp.json b/_badges/tiny_rp2040_bsp.json new file mode 100644 index 00000000..bf2fefd0 --- /dev/null +++ b/_badges/tiny_rp2040_bsp.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tiny_rp2040_bsp" +version: "0.2.1" +--- diff --git a/_badges/tiny_text.json b/_badges/tiny_text.json new file mode 100644 index 00000000..a5fe9a21 --- /dev/null +++ b/_badges/tiny_text.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tiny_text" +version: "1.3.0" +--- diff --git a/_badges/tlsada.json b/_badges/tlsada.json new file mode 100644 index 00000000..5eba57b6 --- /dev/null +++ b/_badges/tlsada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tlsada" +version: "2.5.2" +--- diff --git a/_badges/toml_slicer.json b/_badges/toml_slicer.json new file mode 100644 index 00000000..03fdf640 --- /dev/null +++ b/_badges/toml_slicer.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "toml_slicer" +version: "0.1.1" +--- diff --git a/_badges/trendy_terminal.json b/_badges/trendy_terminal.json new file mode 100644 index 00000000..2618e28e --- /dev/null +++ b/_badges/trendy_terminal.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "trendy_terminal" +version: "0.0.5" +--- diff --git a/_badges/trendy_test.json b/_badges/trendy_test.json new file mode 100644 index 00000000..f43c6525 --- /dev/null +++ b/_badges/trendy_test.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "trendy_test" +version: "0.0.3" +--- diff --git a/_badges/tresses.json b/_badges/tresses.json new file mode 100644 index 00000000..a0efce67 --- /dev/null +++ b/_badges/tresses.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "tresses" +version: "0.1.0" +--- diff --git a/_badges/ulid.json b/_badges/ulid.json new file mode 100644 index 00000000..3397feef --- /dev/null +++ b/_badges/ulid.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "ulid" +version: "20240921.0.0" +--- diff --git a/_badges/umwi.json b/_badges/umwi.json new file mode 100644 index 00000000..5e42c9f5 --- /dev/null +++ b/_badges/umwi.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "umwi" +version: "0.1.0" +--- diff --git a/_badges/universal_text_file.json b/_badges/universal_text_file.json new file mode 100644 index 00000000..48c29005 --- /dev/null +++ b/_badges/universal_text_file.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "universal_text_file" +version: "20220720.0.0" +--- diff --git a/_badges/unixodbc.json b/_badges/unixodbc.json new file mode 100644 index 00000000..a816767d --- /dev/null +++ b/_badges/unixodbc.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "unixodbc" +version: +--- diff --git a/_badges/uri_ada.json b/_badges/uri_ada.json new file mode 100644 index 00000000..c1e0cc8d --- /dev/null +++ b/_badges/uri_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "uri_ada" +version: "2.0.0" +--- diff --git a/_badges/uri_mime.json b/_badges/uri_mime.json new file mode 100644 index 00000000..39af3d67 --- /dev/null +++ b/_badges/uri_mime.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "uri_mime" +version: "1.4.0" +--- diff --git a/_badges/usb_embedded.json b/_badges/usb_embedded.json new file mode 100644 index 00000000..fecdb47c --- /dev/null +++ b/_badges/usb_embedded.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "usb_embedded" +version: "1.0.0" +--- diff --git a/_badges/utf8test.json b/_badges/utf8test.json new file mode 100644 index 00000000..69c012a7 --- /dev/null +++ b/_badges/utf8test.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utf8test" +version: "0.1.0" +--- diff --git a/_badges/utilada.json b/_badges/utilada.json new file mode 100644 index 00000000..11d9a84f --- /dev/null +++ b/_badges/utilada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada" +version: "2.8.0" +--- diff --git a/_badges/utilada_aws.json b/_badges/utilada_aws.json new file mode 100644 index 00000000..592013c4 --- /dev/null +++ b/_badges/utilada_aws.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada_aws" +version: "2.8.0" +--- diff --git a/_badges/utilada_curl.json b/_badges/utilada_curl.json new file mode 100644 index 00000000..ec39b798 --- /dev/null +++ b/_badges/utilada_curl.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada_curl" +version: "2.8.0" +--- diff --git a/_badges/utilada_lzma.json b/_badges/utilada_lzma.json new file mode 100644 index 00000000..bfcf8f2a --- /dev/null +++ b/_badges/utilada_lzma.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada_lzma" +version: "2.8.0" +--- diff --git a/_badges/utilada_unit.json b/_badges/utilada_unit.json new file mode 100644 index 00000000..e439ea00 --- /dev/null +++ b/_badges/utilada_unit.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada_unit" +version: "2.8.0" +--- diff --git a/_badges/utilada_xml.json b/_badges/utilada_xml.json new file mode 100644 index 00000000..fec993c0 --- /dev/null +++ b/_badges/utilada_xml.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "utilada_xml" +version: "2.8.0" +--- diff --git a/_badges/uxstrings.json b/_badges/uxstrings.json new file mode 100644 index 00000000..1266068b --- /dev/null +++ b/_badges/uxstrings.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "uxstrings" +version: "0.8.1+alpha-20241006" +--- diff --git a/_badges/vanilla.json b/_badges/vanilla.json new file mode 100644 index 00000000..358ce7d2 --- /dev/null +++ b/_badges/vanilla.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "vanilla" +version: "0.9.8" +--- diff --git a/_badges/vaton.json b/_badges/vaton.json new file mode 100644 index 00000000..244ccb3c --- /dev/null +++ b/_badges/vaton.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "vaton" +version: "0.1.0" +--- diff --git a/_badges/virtapu.json b/_badges/virtapu.json new file mode 100644 index 00000000..a53dd0b6 --- /dev/null +++ b/_badges/virtapu.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "virtapu" +version: "0.2.0" +--- diff --git a/_badges/vss.json b/_badges/vss.json new file mode 100644 index 00000000..c84d82de --- /dev/null +++ b/_badges/vss.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "vss" +version: "25.0.0" +--- diff --git a/_badges/wayland_ada_info.json b/_badges/wayland_ada_info.json new file mode 100644 index 00000000..a02f86dc --- /dev/null +++ b/_badges/wayland_ada_info.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_ada_info" +version: "1.0.0" +--- diff --git a/_badges/wayland_ada_scanner.json b/_badges/wayland_ada_scanner.json new file mode 100644 index 00000000..4958877e --- /dev/null +++ b/_badges/wayland_ada_scanner.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_ada_scanner" +version: "1.0.0" +--- diff --git a/_badges/wayland_client_ada.json b/_badges/wayland_client_ada.json new file mode 100644 index 00000000..0846054d --- /dev/null +++ b/_badges/wayland_client_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_client_ada" +version: "1.0.0" +--- diff --git a/_badges/wayland_cursor_ada.json b/_badges/wayland_cursor_ada.json new file mode 100644 index 00000000..14db8b9b --- /dev/null +++ b/_badges/wayland_cursor_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_cursor_ada" +version: "1.0.0" +--- diff --git a/_badges/wayland_egl_ada.json b/_badges/wayland_egl_ada.json new file mode 100644 index 00000000..a04045da --- /dev/null +++ b/_badges/wayland_egl_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_egl_ada" +version: "1.0.0" +--- diff --git a/_badges/wayland_protocols_ada.json b/_badges/wayland_protocols_ada.json new file mode 100644 index 00000000..071133f6 --- /dev/null +++ b/_badges/wayland_protocols_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wayland_protocols_ada" +version: "1.0.0" +--- diff --git a/_badges/webdriver.json b/_badges/webdriver.json new file mode 100644 index 00000000..508bc7e3 --- /dev/null +++ b/_badges/webdriver.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "webdriver" +version: "1.0.0" +--- diff --git a/_badges/webif_example.json b/_badges/webif_example.json new file mode 100644 index 00000000..83d94451 --- /dev/null +++ b/_badges/webif_example.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "webif_example" +version: "0.1.0" +--- diff --git a/_badges/weechat_ada.json b/_badges/weechat_ada.json new file mode 100644 index 00000000..caab691c --- /dev/null +++ b/_badges/weechat_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "weechat_ada" +version: "3.0.1" +--- diff --git a/_badges/whitakers_words.json b/_badges/whitakers_words.json new file mode 100644 index 00000000..64ee63ab --- /dev/null +++ b/_badges/whitakers_words.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "whitakers_words" +version: "0.20240801.0" +--- diff --git a/_badges/wikiada.json b/_badges/wikiada.json new file mode 100644 index 00000000..87a84cf0 --- /dev/null +++ b/_badges/wikiada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wikiada" +version: "1.4.2" +--- diff --git a/_badges/wikibook.json b/_badges/wikibook.json new file mode 100644 index 00000000..5b21f5d9 --- /dev/null +++ b/_badges/wikibook.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wikibook" +version: "1.0.1" +--- diff --git a/_badges/win32ada.json b/_badges/win32ada.json new file mode 100644 index 00000000..19534c1b --- /dev/null +++ b/_badges/win32ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "win32ada" +version: "23.0.0" +--- diff --git a/_badges/winpthreads.json b/_badges/winpthreads.json new file mode 100644 index 00000000..b2a40ad3 --- /dev/null +++ b/_badges/winpthreads.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "winpthreads" +version: +--- diff --git a/_badges/wisitoken.json b/_badges/wisitoken.json new file mode 100644 index 00000000..3d8fa176 --- /dev/null +++ b/_badges/wisitoken.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wisitoken" +version: "4.2.1" +--- diff --git a/_badges/wl_lib.json b/_badges/wl_lib.json new file mode 100644 index 00000000..747d0d98 --- /dev/null +++ b/_badges/wl_lib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wl_lib" +version: "0.1.4" +--- diff --git a/_badges/wordle.json b/_badges/wordle.json new file mode 100644 index 00000000..057660c8 --- /dev/null +++ b/_badges/wordle.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wordle" +version: "0.1.1" +--- diff --git a/_badges/wordlelib.json b/_badges/wordlelib.json new file mode 100644 index 00000000..e100ef88 --- /dev/null +++ b/_badges/wordlelib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wordlelib" +version: "0.1.0" +--- diff --git a/_badges/wordlist.json b/_badges/wordlist.json new file mode 100644 index 00000000..dff173ab --- /dev/null +++ b/_badges/wordlist.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "wordlist" +version: "0.1.3" +--- diff --git a/_badges/workers.json b/_badges/workers.json new file mode 100644 index 00000000..7ed0bee3 --- /dev/null +++ b/_badges/workers.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "workers" +version: "0.1.0" +--- diff --git a/_badges/xdg_base_dir.json b/_badges/xdg_base_dir.json new file mode 100644 index 00000000..6697b798 --- /dev/null +++ b/_badges/xdg_base_dir.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "xdg_base_dir" +version: "1.0.0" +--- diff --git a/_badges/xia.json b/_badges/xia.json new file mode 100644 index 00000000..938f9ae8 --- /dev/null +++ b/_badges/xia.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "xia" +version: "1.4.1" +--- diff --git a/_badges/xml_ez_out.json b/_badges/xml_ez_out.json new file mode 100644 index 00000000..97f5fc96 --- /dev/null +++ b/_badges/xml_ez_out.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "xml_ez_out" +version: "1.6.0" +--- diff --git a/_badges/xmlada.json b/_badges/xmlada.json new file mode 100644 index 00000000..e990203c --- /dev/null +++ b/_badges/xmlada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "xmlada" +version: "25.0.0" +--- diff --git a/_badges/xoshiro.json b/_badges/xoshiro.json new file mode 100644 index 00000000..f6782507 --- /dev/null +++ b/_badges/xoshiro.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "xoshiro" +version: "1.0.0" +--- diff --git a/_badges/yass.json b/_badges/yass.json new file mode 100644 index 00000000..9a423e80 --- /dev/null +++ b/_badges/yass.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "yass" +version: "3.1.0" +--- diff --git a/_badges/yeison.json b/_badges/yeison.json new file mode 100644 index 00000000..115290d6 --- /dev/null +++ b/_badges/yeison.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "yeison" +version: "0.1.0" +--- diff --git a/_badges/z_compression.json b/_badges/z_compression.json new file mode 100644 index 00000000..f7bd53cd --- /dev/null +++ b/_badges/z_compression.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "z_compression" +version: "20240724.0.0" +--- diff --git a/_badges/zeromq_ada.json b/_badges/zeromq_ada.json new file mode 100644 index 00000000..87918c43 --- /dev/null +++ b/_badges/zeromq_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "zeromq_ada" +version: "4.1.5" +--- diff --git a/_badges/zipada.json b/_badges/zipada.json new file mode 100644 index 00000000..39bb21cf --- /dev/null +++ b/_badges/zipada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "zipada" +version: "60.0.0" +--- diff --git a/_badges/zipdcf.json b/_badges/zipdcf.json new file mode 100644 index 00000000..2a6ad3b9 --- /dev/null +++ b/_badges/zipdcf.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "zipdcf" +version: "2.0.3" +--- diff --git a/_badges/zlib.json b/_badges/zlib.json new file mode 100644 index 00000000..73e56f4c --- /dev/null +++ b/_badges/zlib.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "zlib" +version: +--- diff --git a/_badges/zlib_ada.json b/_badges/zlib_ada.json new file mode 100644 index 00000000..16970f09 --- /dev/null +++ b/_badges/zlib_ada.json @@ -0,0 +1,5 @@ +--- +layout: badge +crate: "zlib_ada" +version: "1.3.0" +--- diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..b29f531b --- /dev/null +++ b/_config.yml @@ -0,0 +1,66 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Alire +description: A catalog of ready-to-use Ada libraries +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com + +# Build settings +markdown: kramdown +# theme: devlopr +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +exclude: + - README.md + - Gemfile + - Gemfile.lock + - node_modules + +collections: + crates: + output: true + badges: + output: true + +include: + - docs + +header_pages: + - crates.md + - search.html + - docs/index.md + +# Devlopr +author_logo: profile.png +twitter_username: adaprogrammers +github_username: alire-project +gitter_room: ada-lang/Alire + +# Search settings +tipue_search: + include: + pages: true + exclude: + files: [index.md, search.html] + +# Set Kramdown table-of-content levels. This setting is for the entire site, +# but so far TOC is only used in the docs. +kramdown: + toc_levels: 1..2 diff --git a/_crates/a0b_armv7m.md b/_crates/a0b_armv7m.md new file mode 100644 index 00000000..55da2940 --- /dev/null +++ b/_crates/a0b_armv7m.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_armv7m" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"armv7m", +"cortex-m", +"cortex-m3", +"cortex-m4", +"cortex-m7"] +version: "0.1.0" +short_description: "A0B: ARMv7-M support (Cortex-M3, Cortex-M4, Cortex-M7)" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [{name: 'FPU_Extension', type: 'Enum (none, VFPv4, VFPv5)'}] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_armv7m_systick_clock.md b/_crates/a0b_armv7m_systick_clock.md new file mode 100644 index 00000000..2c9756c6 --- /dev/null +++ b/_crates/a0b_armv7m_systick_clock.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "a0b_armv7m_systick_clock" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"time", +"armv7m"] +version: "0.1.0" +short_description: "A0B Monotonic Clock by ARMv7M SysTick" +dependencies: [{crate: "a0b_armv7m", version: "*"}, +{crate: "a0b_base", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_armv7m_systick_clock_timer.md b/_crates/a0b_armv7m_systick_clock_timer.md new file mode 100644 index 00000000..e187314c --- /dev/null +++ b/_crates/a0b_armv7m_systick_clock_timer.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "a0b_armv7m_systick_clock_timer" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"time", +"timer", +"systick"] +version: "0.1.0" +short_description: "A0B Monotonic Clock and Timer by ARMv7M SysTick" +dependencies: [{crate: "a0b_armv7m", version: "*"}, +{crate: "a0b_base", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_atsam3x8e.md b/_crates/a0b_atsam3x8e.md new file mode 100644 index 00000000..fd563629 --- /dev/null +++ b/_crates/a0b_atsam3x8e.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_atsam3x8e" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"atsam3x8e", +"sam3x8e", +"arduino", +"due", +"svd"] +version: "0.2.0" +short_description: "A0B ATSAM3X8E MCU Support" +dependencies: [{crate: "a0b_armv7m", version: "*"}, +{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_atsam3x8e_gpio.md b/_crates/a0b_atsam3x8e_gpio.md new file mode 100644 index 00000000..7877c9c3 --- /dev/null +++ b/_crates/a0b_atsam3x8e_gpio.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "a0b_atsam3x8e_gpio" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"gpio", +"atsam3x8e", +"sam3x8e", +"arduino", +"due"] +version: "0.1.0" +short_description: "A0B ATSAM3X8E GPIO/EXTI" +dependencies: [{crate: "a0b_atsam3x8e", version: "*"}, +{crate: "a0b_exti", version: "*"}, +{crate: "a0b_gpio", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_atsam3x8e_tc5_timer.md b/_crates/a0b_atsam3x8e_tc5_timer.md new file mode 100644 index 00000000..88b47b9c --- /dev/null +++ b/_crates/a0b_atsam3x8e_tc5_timer.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "a0b_atsam3x8e_tc5_timer" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"timer", +"atsam3x8e", +"sam3x8e", +"arduino", +"due"] +version: "0.1.0" +short_description: "A0B ATSAM3X8E High Resulotion Timer on top of TC5" +dependencies: [{crate: "a0b_atsam3x8e", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_atsam3x8e_twi_i2c.md b/_crates/a0b_atsam3x8e_twi_i2c.md new file mode 100644 index 00000000..f5aa2e12 --- /dev/null +++ b/_crates/a0b_atsam3x8e_twi_i2c.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "a0b_atsam3x8e_twi_i2c" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["embedded", +"i2c", +"atsam3x8e", +"twi", +"arduino", +"due"] +version: "0.1.0" +short_description: "A0B ATSAM3X8E TWI I2C Driver" +dependencies: [{crate: "a0b_atsam3x8e_gpio", version: "*"}, +{crate: "a0b_i2c", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_base.md b/_crates/a0b_base.md new file mode 100644 index 00000000..4f886fa0 --- /dev/null +++ b/_crates/a0b_base.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "a0b_base" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"types", +"builtins"] +version: "0.2.0" +short_description: "A0B: Base components" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_callbacks.md b/_crates/a0b_callbacks.md new file mode 100644 index 00000000..69150dfe --- /dev/null +++ b/_crates/a0b_callbacks.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "a0b_callbacks" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["embedded", +"callbacks"] +version: "0.1.0" +short_description: "A0B Callbacks" +dependencies: [{crate: "a0b_base", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_exti.md b/_crates/a0b_exti.md new file mode 100644 index 00000000..1e1b0bee --- /dev/null +++ b/_crates/a0b_exti.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "a0b_exti" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"exti"] +version: "0.1.0" +short_description: "A0B: EXTI API" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_callbacks", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_gpio.md b/_crates/a0b_gpio.md new file mode 100644 index 00000000..1b8e1fd2 --- /dev/null +++ b/_crates/a0b_gpio.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "a0b_gpio" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["embedded", +"gpio"] +version: "0.1.0" +short_description: "A0B GIOP API" +dependencies: [{crate: "a0b_base", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_i2c.md b/_crates/a0b_i2c.md new file mode 100644 index 00000000..2877129e --- /dev/null +++ b/_crates/a0b_i2c.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "a0b_i2c" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"i2c"] +version: "0.1.0" +short_description: "A0B I2C API" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_callbacks", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_stm32f401.md b/_crates/a0b_stm32f401.md new file mode 100644 index 00000000..f2354972 --- /dev/null +++ b/_crates/a0b_stm32f401.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_stm32f401" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"svd", +"stm32", +"stm32f4", +"stm32f401"] +version: "0.1.0" +short_description: "A0B: STM32F401 base and SVD package" +dependencies: [{crate: "a0b_armv7m", version: "*"}, +{crate: "a0b_base", version: "*"}, +{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_stm32f401_dma.md b/_crates/a0b_stm32f401_dma.md new file mode 100644 index 00000000..f3f33765 --- /dev/null +++ b/_crates/a0b_stm32f401_dma.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_stm32f401_dma" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"dma", +"stm32", +"stm32f4", +"stm32f401"] +version: "0.1.0" +short_description: "A0B: STM32F401 DMA" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_callbacks", version: "*"}, +{crate: "a0b_stm32f401", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_stm32f401_gpio.md b/_crates/a0b_stm32f401_gpio.md new file mode 100644 index 00000000..aea43959 --- /dev/null +++ b/_crates/a0b_stm32f401_gpio.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_stm32f401_gpio" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"stm32", +"stm32f401", +"gpio", +"exti"] +version: "0.1.0" +short_description: "A0B: STM32F401 GPIO/EXTI" +dependencies: [{crate: "a0b_exti", version: "*"}, +{crate: "a0b_gpio", version: "*"}, +{crate: "a0b_stm32f401", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_stm32f401_i2c.md b/_crates/a0b_stm32f401_i2c.md new file mode 100644 index 00000000..7bcf0d8a --- /dev/null +++ b/_crates/a0b_stm32f401_i2c.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "a0b_stm32f401_i2c" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"i2c", +"stm32", +"stm32f4", +"stm32f401"] +version: "0.1.0" +short_description: "A0B: STM32F401 I2C" +dependencies: [{crate: "a0b_i2c", version: "*"}, +{crate: "a0b_stm32f401_dma", version: "*"}, +{crate: "a0b_stm32f401_gpio", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_stm32f401_tim11_timer.md b/_crates/a0b_stm32f401_tim11_timer.md new file mode 100644 index 00000000..b2c63309 --- /dev/null +++ b/_crates/a0b_stm32f401_tim11_timer.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "a0b_stm32f401_tim11_timer" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"timer", +"stm32", +"stm32f4", +"stm32f401"] +version: "0.1.0" +short_description: "A0B: Timer based on STM32F401 TIM11" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_stm32f401", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_time.md b/_crates/a0b_time.md new file mode 100644 index 00000000..ac6824bb --- /dev/null +++ b/_crates/a0b_time.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "a0b_time" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"time"] +version: "0.2.0" +short_description: "A0B Monotonic Time" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_time_platform", version: "0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/a0b_timer.md b/_crates/a0b_timer.md new file mode 100644 index 00000000..d04c3176 --- /dev/null +++ b/_crates/a0b_timer.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "a0b_timer" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"timer"] +version: "0.1.0" +short_description: "A0B Timer" +dependencies: [{crate: "a0b_base", version: "*"}, +{crate: "a0b_callbacks", version: "*"}, +{crate: "a0b_time", version: "*"}, +{crate: "a0b_timer_platform", version: "0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/aaa.md b/_crates/aaa.md new file mode 100644 index 00000000..d28e72e5 --- /dev/null +++ b/_crates/aaa.md @@ -0,0 +1,27 @@ +--- +layout: crate +crate: "aaa" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/mosteo/aaa"] +tags: ["miscellanea", +"utility"] +version: "0.2.6" +short_description: "Alex's Ada Assortment (of miscellaneous utilities)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Alex's Ada Assortment of Utilities + +- Text formatting (paragraphs, tables). +- Indefinite containers. +- Enumeration validity/conversions of string images. +- On-demand stack backtraces. +- String containers and utilities. +- Simple subprocess spawning. +- Write-through minimal cache for objects stored in files + + diff --git a/_crates/ada_fuse.md b/_crates/ada_fuse.md new file mode 100644 index 00000000..300d4ad1 --- /dev/null +++ b/_crates/ada_fuse.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "ada_fuse" +authors: ["Alexander Herr ", +"Nicolai Ruckel ", +"Christopher Lübbemeier "] +maintainers: ["Nicolai Ruckel "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/medsec/ada-fuse"] +tags: [] +version: "1.0.1" +short_description: "Ada bindings for Fuse (Filesystem in Userspace)" +dependencies: [{crate: "libfuse", version: "^2.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ada_gui.md b/_crates/ada_gui.md new file mode 100644 index 00000000..4fb2f01b --- /dev/null +++ b/_crates/ada_gui.md @@ -0,0 +1,52 @@ +--- +layout: crate +crate: "ada_gui" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Ada_GUI"] +tags: ["gui", +"widgets", +"html"] +version: "20240224.0.1" +short_description: "An Ada-oriented GUI" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "simple_components", version: "^4.68.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Ada_GUI +An Ada-oriented GUI + +Traditionally, GUIs have been implemented by the client registering callback operations, then giving up its thread of control to the GUI. This is a hack to address the inherent parallelism of a GUI in sequential languages. It results in code that is unnecessarily difficult to understand. + +In a concurrent language like Ada, a better design for a GUI is for the GUI to have its own task, so it doesn't require that its client give up a thread of control. GUI events are communicated to the client through a protected queue of events. The client software can be written in the clearest way possible, unconstrained by the GUI. + +Ada_GUI is such a GUI. + +The purpose of Ada_GUI is to provide the specification, in hopes that multiple implementations will be created. Note that some of the comments in the specification are specific to the sample implementation, and should be removed or modified for other implementations. Especially interesting would be an implementation that is not GNAT specific. + +## Sample Implementation + +A sample implementation of Ada_GUI is supplied, derived from Gnoga, but simplified, reorganized, and converted to put events on a protected queue rather than call callbacks. The name Gnoga has been retained for the name of the implementation hierarchy, located at Ada_GUI.Gnoga, in recognition. Those parts of Kazakov's Simple Components used by the implementation are provided as well, with some minor modifications. If you have your own version of the Simple Components, you may use it instead: Delete all Ada source files that do not begin with ada_gui. + +The sample implementation is reasonably full-featured and useful. The implementation is more responsive than the former proof-of-concept directly on full Gnoga. + +The Test directory contains boot.html, boot.js, and jquery.min.js. These files must be available to every Ada-GUI program. It also contains favicon.ico, an icon of Ada. + +Show_All creates at least one of each widget. Visibility, playing audio, and responding to key-press events is demonstrated. Changing this program is the easiest way to experiment with the sample implementation. The audio file glass.ogg and image file rgb.jpg are used by Show_All. + +Luhn_Gen calculates Luhn checksum digits. Enter the first 15 digits of your credit-card number and it will generate the 16th. + +Random_Int is a Gnoga program that has been revised to use Ada GUI instead. It will generate random integers in a desired range. + +## Installation of the Sample Implementation + +Gnoga and the Simple Components require a recent GNAT compiler, so Ada_GUI cannot be compiled with another compiler. The file gnat.adc is needed to compile the Simple Components extensions to GNAT.Sockets. The use of gnatmake is recommended, as gprbuild is for mixed-language or complicated builds, which this is not. After compiling, it is recommended that you write-protect the .ali files. Typically, you can use a command such as + +gnatmake -m -j0 -gnat12 -gnatan -gnato2 -O2 -fstack-check Test/show_all.adb + +If you keep the Ada-GUI source files in a single directory, including the Simple Components source files, and have the compiler put the object and .ali files in that directory, then you need only add -I/path/to/Ada_GUI/ to your program's gnatmake command to use Ada_GUI. + + diff --git a/_crates/ada_language_server.md b/_crates/ada_language_server.md new file mode 100644 index 00000000..e9772fe9 --- /dev/null +++ b/_crates/ada_language_server.md @@ -0,0 +1,26 @@ +--- +layout: crate +crate: "ada_language_server" +authors: ["AdaCore"] +maintainers: ["Maxim Reznik "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/AdaCore/ada_language_server"] +tags: ["lsp", +"vscode"] +version: "25.0.0" +short_description: "An implementation of the Microsoft's Language Server Protocol for Ada" +dependencies: [{crate: "gnatcoll", version: "25.0.0"}, +{crate: "libadalang", version: "25.0.0"}, +{crate: "libadalang_tools", version: "25.0.0"}, +{crate: "libgnatdoc", version: "25.0.0"}, +{crate: "libgnatformat", version: "25.0.0"}, +{crate: "liblal_refactor", version: "25.0.0"}, +{crate: "prettier_ada", version: "25.0.0"}, +{crate: "spawn", version: "25.0.0"}, +{crate: "vss", version: "25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ada_lua.md b/_crates/ada_lua.md new file mode 100644 index 00000000..d5443cc2 --- /dev/null +++ b/_crates/ada_lua.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "ada_lua" +authors: ["Nicolas Roche "] +maintainers: ["Nicolas Roche "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/ada-lua"] +tags: ["lua", +"binding", +"script"] +version: "0.1.0" +short_description: "An Ada binding for lua" +dependencies: [{crate: "liblua", version: "~5.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ada_pretty.md b/_crates/ada_pretty.md new file mode 100644 index 00000000..5537ae18 --- /dev/null +++ b/_crates/ada_pretty.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "ada_pretty" +authors: ["Maxim Reznik"] +maintainers: ["Maxim Reznik "] +licenses: ["MIT"] +websites: ["https://github.com/reznikmm/ada-pretty/"] +tags: ["pretty", +"printing", +"generator"] +version: "1.0.0" +short_description: "Ada Pretty Printer Library" +dependencies: [{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ada_toml.md b/_crates/ada_toml.md new file mode 100644 index 00000000..72fbb4b6 --- /dev/null +++ b/_crates/ada_toml.md @@ -0,0 +1,107 @@ +--- +layout: crate +crate: "ada_toml" +authors: ["AdaCore", +"Pierre-Marie de Rodat "] +maintainers: ["pmderodat@kawie.fr"] +licenses: ["BSD-3-Clause"] +websites: [] +tags: [] +version: "0.5.0" +short_description: "TOML parser for Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +ada-toml: TOML parser for Ada +============================= + +`ada-toml` is a pure Ada library for parsing and creating +[TOML](https://github.com/toml-lang/toml#toml) documents. It conforms to the +[version 1.0.0](https://toml.io/en/v1.0.0) of the format standard. + + +Quick tutorial +-------------- + +All basic types and subprograms are in the `TOML` package. All "nodes" in a +TOML documents are materialized using the `TOML.TOML_Value` type. Since TOML +values make up a tree, this type has reference semantics. This means that +modifying a TOML node does not modify the corresponding `TOML_Value` value +itself, but rather the TOML value that is referenced. + +Parsing a TOML file is as easy as using the `TOML.File_IO.Load_File` function: + +```ada +declare + Result : constant TOML.Read_Result := + TOML.File_IO.Load_File ("config.toml"); +begin + if Result.Success then + Ada.Text_IO.Put_Line ("config.toml loaded with success!"); + else + Ada.Text_IO.Put_Line ("error while loading config.toml:"); + Ada.Text_IO.Put_Line + (Ada.Strings.Unbounded.To_String (Result.Message)); + end if; +end; +``` + +Each TOML value has kind, defining which data it contains (a boolean, an +integer, a string, a table, ...). To each kind, one or several primitives are +associated to let one process the underlying data: + +```ada +case Result.Kind is + when TOML.TOML_Boolean => + Ada.Text_IO.Put_Line ("Boolean: " & Result.As_Boolean'Image); + + when TOML.TOML_Integer => + Ada.Text_IO.Put_Line ("Boolean: " & Result.As_Integer'Image); + + when TOML.TOML_String => + Ada.Text_IO.Put_Line ("Boolean: " & Result.As_String); + + when TOML.TOML_Array => + Ada.Text_IO.Put_Line ("Array of " & Result.Length & " elements"); + + when others => + null; +end case; +``` + +There are also primitives to build TOML values: + +```ada +declare + Bool : constant TOML.TOML_Value := TOML.Create_Boolean (False); + Int : constant TOML.TOML_Value := TOML.Create_Integer (10); + Str : constant TOML.TOML_Value := TOML.Create_String ("Hello, world"); + + Table : constant TOML.TOML_Value := TOML.Create_Table; +begin + Table.Set ("bool_field", Bool); + Table.Set ("int_field", Int); + Table.Set ("str_field", Str); +end; +``` + +And finally one can turn a tree of TOML nodes back in text form: + +```ada +Ada.Text_IO.Put_Line ("TOML document:"); +Ada.Text_IO.Put_Line (Table.Dump_As_String); +``` + + +Contributing +------------ + +The development of `ada-toml` happens on +[GitHub](https://github.com/pmderodat/ada-toml). Everyone is welcome to +contribute to this project: please read our [contribution +rules](https://github.com/pmderodat/ada-toml/tree/master/CONTRIBUTING.rst) if +you consider doing so. + + diff --git a/_crates/ada_voxel_space_demo.md b/_crates/ada_voxel_space_demo.md new file mode 100644 index 00000000..693932e3 --- /dev/null +++ b/_crates/ada_voxel_space_demo.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "ada_voxel_space_demo" +authors: [] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: [] +tags: [] +version: "1.0.1" +short_description: "Voxel Space render engine demo in Ada" +dependencies: [{crate: "sdlada", version: "^2.3.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/adabots.md b/_crates/adabots.md new file mode 100644 index 00000000..6f3efdeb --- /dev/null +++ b/_crates/adabots.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "adabots" +authors: ["Tama McGlinn"] +maintainers: ["Tama McGlinn "] +licenses: ["MIT"] +websites: [] +tags: ["learn", +"ada", +"minecraft", +"computercraft", +"robots", +"teach", +"children"] +version: "1.9.0" +short_description: "Learn Ada by programming Minecraft robots" +dependencies: [{crate: "utilada_curl", version: "^2.5.0"}, +{crate: "json", version: "^5.0.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/adacl.md b/_crates/adacl.md new file mode 100644 index 00000000..9010466f --- /dev/null +++ b/_crates/adacl.md @@ -0,0 +1,53 @@ +--- +layout: crate +crate: "adacl" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/adacl/"] +tags: ["library", +"command-line", +"trace", +"logging", +"string", +"aunit", +"assert", +"container", +"smart-pointer", +"ada2022"] +version: "5.16.0" +short_description: "Ada Class Library (String, Trace, AUnit, Smart Pointer. GetOpt)" +dependencies: [{crate: "gnat_native", version: "^14.2"}] +configuration_variables: [] +configuration_values: [] + +--- +A class library for Ada for those who like OO programming. + +Currently the following functionality is migrated to Ada 2022: + +* Getopt commandline argument parser +* String utilities +* Trace utility +* Smart pointer + * Reference counted + * Unique pointer + * Shared pointer +* AUnit compatible informative asserts + * generic for access types + * generic for arrays types + * generic for discrete types + * generic for float types + * generic for vector types + +See [GNATdoc](https://adacl.sourceforge.net/gnatdoc/adacl/index.html) for details. + +Development versions and testsuite available using the follwowing index: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code and testsuite available on [SourceForge](https://git.code.sf.net/p/adacl/git) + + diff --git a/_crates/adare_dilithium5.md b/_crates/adare_dilithium5.md new file mode 100644 index 00000000..a7921a37 --- /dev/null +++ b/_crates/adare_dilithium5.md @@ -0,0 +1,33 @@ +--- +layout: crate +crate: "adare_dilithium5" +authors: ["Daniel Norte de Moraes"] +maintainers: ["Daniel Norte de Moraes "] +licenses: ["Unlicense"] +websites: [""] +tags: ["signature", +"pqc"] +version: "0.2.3" +short_description: "Post Quantum Computer Resistant Cryptograph Sign, Dilithium5 Ada bind." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Dilithium is a digital signature scheme that is strongly secure under + chosen message attacks based on the hardness of lattice problems + over module lattices. The security notion means that an adversary + having access to a signing oracle cannot produce a signature of a + message whose signature he hasn't yet seen, nor produce a different + signature of a message that he already saw signed. Dilithium is one + of the candidate algorithms submitted to the + NIST post-quantum cryptography project. + + Adare_Dilithium5 is a Ada 2012 bind to Dilithium5 C. + + (C version at https://github.com/PQClean/PQClean) + + How a Bonus all Ada packages in this lib is "Ada Pure"! :-) + + + diff --git a/_crates/adare_hqc256.md b/_crates/adare_hqc256.md new file mode 100644 index 00000000..436ffa0e --- /dev/null +++ b/_crates/adare_hqc256.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "adare_hqc256" +authors: ["Daniel Norte de Moraes"] +maintainers: ["Daniel Norte de Moraes "] +licenses: ["Unlicense"] +websites: [""] +tags: ["kem", +"pqc", +"ss512bits"] +version: "0.2.3" +short_description: "Post Quantum Computer Resistant Cryptograph KEM, HQC 256 Ada bind." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +HQC (Hamming Quasi-Cyclic) is a code-based public key encryption scheme + designed to provide security against attacks by + both classical and quantum computers. HQC has been submitted + to the NIST's Post-Quantum Cryptography Standardization Project. + + Adare_HQC256 is a Ada 2012 bind to HQC-256 C. + + Adare_HQC256 has a 512 bits Shared Secret size. + + (C version at https://github.com/PQClean/PQClean) + + How a Bonus all Ada packages in this lib is "Ada Pure"! :-) + + + diff --git a/_crates/adasat.md b/_crates/adasat.md new file mode 100644 index 00000000..3bb1cd86 --- /dev/null +++ b/_crates/adasat.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "adasat" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/adasat"] +tags: ["sat", +"solver", +"theories"] +version: "25.0.0" +short_description: "Implementation of a DPLL-based SAT solver in Ada." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Main features: + + - [X] Conflict analysis and backjumping + - [X] Two-watched literals scheme + - [X] Built-in support for At-Most-One constraints + - [X] Custom theories + + diff --git a/_crates/adayaml.md b/_crates/adayaml.md new file mode 100644 index 00000000..df0abd95 --- /dev/null +++ b/_crates/adayaml.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "adayaml" +authors: ["Felix Krause"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["MIT"] +websites: ["https://ada.yaml.io/"] +tags: [] +version: "0.3.0" +short_description: "Experimental YAML 1.3 implementation in Ada" +dependencies: [{crate: "simple_components", version: "^4.27"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/adl_middleware.md b/_crates/adl_middleware.md new file mode 100644 index 00000000..5da71520 --- /dev/null +++ b/_crates/adl_middleware.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "adl_middleware" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"nostd", +"fat", +"bitmap"] +version: "0.2.0" +short_description: "Middleware layer of the Ada Drivers Library project" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [{name: 'Max_Mount_Name_Length', type: 'Integer range 1 .. 9223372036854775807', default: "128"}, +{name: 'Max_Mount_Points', type: 'Integer range 1 .. 9223372036854775807', default: "2"}, +{name: 'Max_Path_Length', type: 'Integer range 1 .. 9223372036854775807', default: "1024"}] +configuration_values: [] + +--- +# adl_middleware + +Middleware layer of the Ada Drivers Library project. + +This crate is a snapshot of the `middleware` of [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/middleware). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + + + diff --git a/_crates/admpfr.md b/_crates/admpfr.md new file mode 100644 index 00000000..76cb6581 --- /dev/null +++ b/_crates/admpfr.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "admpfr" +authors: ["Laurent Thévenoux"] +maintainers: ["Laurent Thévenoux "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/thvnx/admpfr"] +tags: ["mpfr", +"floating-point", +"bindings"] +version: "4.1.0+20220920" +short_description: "Ada bindings for MPFR" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}, +{crate: "libmpfr", version: "^4.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ado.md b/_crates/ado.md new file mode 100644 index 00000000..87b161cc --- /dev/null +++ b/_crates/ado.md @@ -0,0 +1,52 @@ +--- +layout: crate +crate: "ado" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-ado"] +tags: ["database", +"uml", +"sql"] +version: "2.4.1" +short_description: "Ada Database Objects (Core library)" +dependencies: [{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-ado/badge/?version=latest)](https://ada-ado.readthedocs.io/en/latest/?badge=latest) + +Ada Database Objects is an Ada05 library that provides +object relational mapping to access a database in Ada05. +The library supports Postgresql, MySQL, SQLite as databases. +Most of the concepts developped for ADO come from the Java Hibernate ORM. + +The ORM uses an YAML, XML mapping file or an UML model, a code generator and a runtime library +for the implementation. It provides a database driver for [Postgresql](https://www.postgresql.org/), +[MySQL](https://www.mysql.com/) and [SQLite](https://www.sqlite.org/). The ORM helps your +application by providing a mapping of your database tables directly in the target programming +language: Ada05 in our case. The development process is the following: + + * You design your database model either using a UML tool or by writing a YAML or XML description, + * You generate the Ada05 mapping files by using the [Dynamo](https://github.com/stcarrez/dynamo) code generator, + * You generate the SQL database tables by using the same tool, + * You write your application on top of the generated code that gives you direct and simplified access to your database. + +![ADO Development model](https://github.com/stcarrez/ada-ado/wiki/images/ado-orm.png) + +You need at least one of these databases (or all of then). The configure script will now +fail if no supported database was found. Check the [Database Drivers](#database-drivers) +section to install them and run the configure again after the installation. + +# Documentation + + * [Ada Database Objects Programmer's Guide](https://ada-ado.readthedocs.io/en/latest/) + * [Persistence with Ada Database Objects](https://fr.slideshare.net/StephaneCarrez1/persistence-with-ada-database-objects-ado) FOSDEM 2019 + + + diff --git a/_crates/ado_all.md b/_crates/ado_all.md new file mode 100644 index 00000000..486a0099 --- /dev/null +++ b/_crates/ado_all.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "ado_all" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-ado"] +tags: ["database", +"uml", +"sql", +"mysql", +"mariadb", +"sqlite", +"postgresql"] +version: "2.4.0" +short_description: "Ada Database Objects (All drivers)" +dependencies: [{crate: "ado_mysql", version: "^2.4.0"}, +{crate: "ado_postgresql", version: "^2.4.0"}, +{crate: "ado_sqlite", version: "^2.4.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-ado/badge/?version=latest)](https://ada-ado.readthedocs.io/en/latest/?badge=latest) + +This crate give access to the PostgreSQL, MySQL and SQLite drivers for the Ada Database Objects library. + + + diff --git a/_crates/ado_mysql.md b/_crates/ado_mysql.md new file mode 100644 index 00000000..f5b0b648 --- /dev/null +++ b/_crates/ado_mysql.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "ado_mysql" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-ado"] +tags: ["database", +"uml", +"sql", +"mysql", +"mariadb"] +version: "2.4.1" +short_description: "Ada Database Objects (Mysql)" +dependencies: [{crate: "ado", version: "^2.4.0"}, +{crate: "libmariadb", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-ado/badge/?version=latest)](https://ada-ado.readthedocs.io/en/latest/?badge=latest) + +This is the MySQL driver for the Ada Database Objects library. + + + diff --git a/_crates/ado_postgresql.md b/_crates/ado_postgresql.md new file mode 100644 index 00000000..5ad5abb8 --- /dev/null +++ b/_crates/ado_postgresql.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "ado_postgresql" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-ado"] +tags: ["database", +"uml", +"sql", +"postgresql"] +version: "2.4.1" +short_description: "Ada Database Objects (PostgreSQL)" +dependencies: [{crate: "ado", version: "^2.4.0"}, +{crate: "libpq", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-ado/badge/?version=latest)](https://ada-ado.readthedocs.io/en/latest/?badge=latest) + +This is the PostgreSQL driver for the Ada Database Objects library. + + + diff --git a/_crates/ado_sqlite.md b/_crates/ado_sqlite.md new file mode 100644 index 00000000..a06b4a64 --- /dev/null +++ b/_crates/ado_sqlite.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "ado_sqlite" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-ado"] +tags: ["database", +"uml", +"sql", +"sqlite"] +version: "2.4.1" +short_description: "Ada Database Objects (SQLite)" +dependencies: [{crate: "ado", version: "^2.4.0"}, +{crate: "libsqlite3", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-ado/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-ado/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-ado/badge/?version=latest)](https://ada-ado.readthedocs.io/en/latest/?badge=latest) + +This is the SQLite driver for the Ada Database Objects library. + + + diff --git a/_crates/aflex.md b/_crates/aflex.md new file mode 100644 index 00000000..f3a52116 --- /dev/null +++ b/_crates/aflex.md @@ -0,0 +1,38 @@ +--- +layout: crate +crate: "aflex" +authors: ["John Self"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Unlicense"] +websites: ["https://github.com/Ada-France/aflex"] +tags: ["parser", +"generator", +"grammar"] +version: "1.7.0" +short_description: "An Ada Lexical Analyzer Generator" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Aflex is a lexical analyzer generating tool similar to the Unix tool lex. + +The first implementation was written by John Self of the Arcadia project +at the University of California, Irvine. The last version that was released +appeared to be the aflex 1.4a released in 1994. + +Aflex was used and improved by P2Ada, the Pascal to Ada translator. +This version of Aflex is derived from the P2Ada aflex implementation +released in August 2010. + +This version brings a number of improvements: + +- Aflex generates the spec and body files as separate files so that + there is no need to use gnatchop to split the DFA and IO files. +- Aflex uses the lex file name to generate the package name and + it supports child package with the `%unit` directive. +- Aflex supports reentrant scanner through the use of `%option reentrant`, + `%yyvar` and `%yydecl` directives. + + + diff --git a/_crates/agpl.md b/_crates/agpl.md new file mode 100644 index 00000000..081a3205 --- /dev/null +++ b/_crates/agpl.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "agpl" +authors: ["alejandro@mosteo.com"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: [] +version: "1.0.0" +short_description: "Ada General Purpose Library with a robotics flavor" +dependencies: [{crate: "libgsl", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/aicwl.md b/_crates/aicwl.md new file mode 100644 index 00000000..d6da8299 --- /dev/null +++ b/_crates/aicwl.md @@ -0,0 +1,49 @@ +--- +layout: crate +crate: "aicwl" +authors: ["Dmitry A. Kazakov "] +maintainers: ["Vinzent \"Jellix\" Saranen "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-2.0"] +websites: ["http://www.dmitry-kazakov.de/ada/aicwl.htm"] +tags: ["widgets", +"gauge", +"graphics", +"ui", +"gtk"] +version: "3.24.1" +short_description: "Ada Industrial Control Widgets Library" +dependencies: [{crate: "gtkada", version: ">=17"}] +configuration_variables: [] +configuration_values: [] + +--- +This crate provides a library for designing high-quality industrial control +widgets for Ada applications. The software is based on +[GtkAda](https://docs.adacore.com/live/wave/gtkada/html/gtkada_rm/index.html), +Ada bindings to [Gtk+](https://www.gtk.org/), and +[cairo](https://www.cairographics.org/manual/index.html). + +The key features of the library are: + +* Widgets composed of transparent layers drawn by cairo +* Fully scalable graphics +* Support of time controlled refresh policy for real-time and heavy-duty applications +* Caching graphical operations +* Stream I/O support for serialization and deserialization +* Ready-to-use gauge, meter, oscilloscope widgets +* Editor widget for WYSIWYG design of complex dashboards + +For further information, visit the +[AICWL website](http://www.dmitry-kazakov.de/ada/aicwl.htm). + +Maintainer's note: + +This Alire crate is packaged in a rather minimalistic way to keep dependencies +on external libraries at a minimum. The crate's definition covers the core +functionality of AICWL, though, so it should be sufficient for most needs. + +For example, the original distribution has references to +[Simple Components](http://www.dmitry-kazakov.de/ada/components.htm) which are +not strictly necessary for the core functionality of the library. + + diff --git a/_crates/ajunitgen.md b/_crates/ajunitgen.md new file mode 100644 index 00000000..94211c6c --- /dev/null +++ b/_crates/ajunitgen.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "ajunitgen" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: ["junit", +"xml"] +version: "1.0.1" +short_description: "Generator of JUnit-compatible XML reports" +dependencies: [{crate: "xml_ez_out", version: "^1.6"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/akt.md b/_crates/akt.md new file mode 100644 index 00000000..05f5349d --- /dev/null +++ b/_crates/akt.md @@ -0,0 +1,66 @@ +--- +layout: crate +crate: "akt" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-keystore"] +tags: ["security", +"storage", +"nosql"] +version: "1.4.1" +short_description: "Ada Keystore Tool" +dependencies: [{crate: "intl", version: "^1.0.1"}, +{crate: "keystoreada", version: "^1.4.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "ada_fuse", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/summary) + +# Overview + +AKT is a tool to store and protect your sensitive information and documents by +encrypting them in secure keystore (AES-256, HMAC-256). + +Create the keystore and protect it with a gpg public key: +``` + akt create secure.akt --gpg ... +``` + +Store a small content: +``` + akt set secure.akt bank.password 012345 +``` + +Store files, directory or a tar file: +``` + akt store secure.akt notes.txt + akt store secure.akt contract.doc + akt store secure.akt directory + tar czf - . | akt store secure.akt -- backup +``` + +Edit a content with your $EDITOR: +``` + akt edit secure.akt bank.password + akt edit secure.akt notes.txt +``` + +Get a content: +``` + akt get secure.akt bank.password + akt extract secure.akt contract.doc + akt extract secure.akt -- backup | tar xzf - +``` + +## Documents + +* [Ada Keystore Guide](https://ada-keystore.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-keystore/blob/master/docs/keystore-book.pdf) + + + diff --git a/_crates/alr2appimage.md b/_crates/alr2appimage.md new file mode 100644 index 00000000..ea6dbe82 --- /dev/null +++ b/_crates/alr2appimage.md @@ -0,0 +1,42 @@ +--- +layout: crate +crate: "alr2appimage" +authors: ["Manuel Gomez"] +maintainers: ["Manuel Gomez "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/mgrojo/alr2appimage"] +tags: ["utility", +"appimage", +"alire", +"linux", +"packaging"] +version: "0.9.3" +short_description: "Tool to create an AppImage executable from an Alire crate" +dependencies: [{crate: "ada_toml", version: "^0.3.0"}, +{crate: "spoon", version: "^1.0.1"}, +{crate: "parse_args", version: "~0.9.0"}, +{crate: "resources", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +There are two prerequisites for your project to work with this tool: +- It has to be a crate with an `executables` field. Its first value + has to be the main application program. +- It must be installable using Alire, including all the needed resources. + +`alr2appimage` will use the following command for installing it (this requires Alire 2.0): +```shell +alr install +``` +Or it will run `gprinstall` inside `alr exec`, if the former fails (Alire 1.x). + +If you simply run the tool inside an Alire crate, it will read the +metadata from your `alire.toml` file and create a default AppImage +from it. + +NOTE: `alr2appimage` is an independent project; it is not +affiliated to, nor supported by, the Alire or AppImage projects. + + + diff --git a/_crates/anagram.md b/_crates/anagram.md new file mode 100644 index 00000000..9c5610e0 --- /dev/null +++ b/_crates/anagram.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "anagram" +authors: ["Maxim Reznik"] +maintainers: ["Maxim Reznik "] +licenses: ["MIT"] +websites: ["https://github.com/reznikmm/anagram"] +tags: ["grammar", +"syntax", +"analysis", +"bnf", +"ebnf", +"generator"] +version: "1.0.0" +short_description: "Grammar handling and parser generation Ada library" +dependencies: [{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ansiada.md b/_crates/ansiada.md new file mode 100644 index 00000000..bcff0556 --- /dev/null +++ b/_crates/ansiada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "ansiada" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["ansi", +"terminal"] +version: "1.0.0" +short_description: "ANSI escape sequences" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/aoa_22.md b/_crates/aoa_22.md new file mode 100644 index 00000000..b4982b0e --- /dev/null +++ b/_crates/aoa_22.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "aoa_22" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/AoA_22"] +tags: ["adventofada", +"2022"] +version: "20220720.0.0" +short_description: "Advent of Ada 22 Solutions" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/aoa_23.md b/_crates/aoa_23.md new file mode 100644 index 00000000..f26e2b66 --- /dev/null +++ b/_crates/aoa_23.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "aoa_23" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/AoA_23"] +tags: ["2023"] +version: "20230119.0.0" +short_description: "Some Advent of Ada 2023 solutions" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/apdf.md b/_crates/apdf.md new file mode 100644 index 00000000..5e42eeb0 --- /dev/null +++ b/_crates/apdf.md @@ -0,0 +1,48 @@ +--- +layout: crate +crate: "apdf" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://apdf.sourceforge.io/"] +tags: ["pdf", +"adobe"] +version: "6.0.0" +short_description: "Portable package for producing dynamically PDF documents" +dependencies: [{crate: "gid", version: ">=9.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +**PDF_Out** is an Ada package for producing easily and automatically PDF files, from an Ada program, with text, vector graphics and raster graphics. + +![Ada PDF Screenshot](https://apdf.sourceforge.io/pw_ari_parcel_m.png "Screenshot of a page produced by PDF_Out") + +* Ideal for the dynamic production of reports, invoices, tickets, charts, maps etc. +* Vector graphics +* Inclusion of JPEG images +* Object oriented +* Task safe +* Endian-neutral +* Multi-platform, but native code build +* Standalone (no dependency on other libraires, bindings, etc.; no extra component needed for running) +* Unconditionally portable code: OS-, CPU-, compiler- independent code +* Pure Ada 95: this package can be used in projects in Ada 95, Ada 2005, Ada 2012 and later language versions +* Free, open-source + +The creation of a PDF file is as simple as this small procedure: + +```ada +with PDF_Out; + +procedure Small_Demo is + pdf : PDF_Out.PDF_Out_File; +begin + pdf.Create ("small.pdf"); + pdf.Put_Line ("This is a very small demo for PDF_Out..."); + pdf.Close; +end Small_Demo; +``` + + + diff --git a/_crates/are.md b/_crates/are.md new file mode 100644 index 00000000..0f6e228c --- /dev/null +++ b/_crates/are.md @@ -0,0 +1,51 @@ +--- +layout: crate +crate: "are" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/resource-embedder"] +tags: ["resource", +"embedder", +"generator"] +version: "1.5.1" +short_description: "Advanced Resource Embedder" +dependencies: [{crate: "elada", version: "^1.8.6"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "xmlada", version: "^23.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/resource-embedder/badges/build.json)](https://porion.vacs.fr/porion/projects/view/resource-embedder) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/resource-embedder/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/resource-embedder) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/resource-embedder/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/resource-embedder) +[![Documentation Status](https://readthedocs.org/projects/resource-embedder/badge/?version=latest)](https://resource-embedder.readthedocs.io/en/latest/?badge=latest) + +The resource embedder allows to embed files in binaries by producing C, Ada or Go source +files that contain the original files. + +To generate a `config.ads` and `config.adb` Ada package with the resources, you may use: + +``` +are --lang=Ada -o src --resource=config --name-access --fileset='**/*.conf' config +``` + +Complex resource integrations are best described with and XML and are generated with: + +``` +are --lang=Ada -o src --rule=package.xml --name-access . +``` + +For Ada, it generates the following package declaration with the `Get_Content` function +that gives access to the files. The Ada body contains the content of each embedded file. + +```Ada +package Config is + function Get_Content (Name : in String) + return access constant String; +end Config; +``` + + + diff --git a/_crates/asfml.md b/_crates/asfml.md new file mode 100644 index 00000000..8cef293e --- /dev/null +++ b/_crates/asfml.md @@ -0,0 +1,43 @@ +--- +layout: crate +crate: "asfml" +authors: ["Manuel Gomez", +"Dan Lee Vazquez Garcia"] +maintainers: ["Manuel Gomez "] +licenses: ["custom-zlib-acknowledgement"] +websites: ["https://mgrojo.github.io/ASFML/"] +tags: ["audio", +"games", +"opengl", +"cross-platform", +"multimedia", +"binding", +"graphics", +"sfml"] +version: "2.6.1" +short_description: "Ada binding to SFML, the Simple and Fast Multimedia Library" +dependencies: [{crate: "libcsfml", version: "^2.6.1"}] +configuration_variables: [] +configuration_values: [] + +--- +[![ASFML logo](https://raw.githubusercontent.com/mgrojo/ASFML/master/images/ASFML_Logo.svg)](https://www.sfml-dev.org) +![Ada (GNAT)](https://github.com/mgrojo/ASFML/workflows/Ada%20(GNAT)/badge.svg) +[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/ada-lang/Lobby) +[![Mentioned in Awesome Ada](https://awesome.re/mentioned-badge.svg)](https://github.com/ohenley/awesome-ada) + +ASFML is an Ada semi-thick binding to the +[SFML](https://www.sfml-dev.org/) library. It uses Ada types and +portable defined types which eliminates the inclusion of Ada interface +libraries, but most of the functions are directly imported. + +# Documentation +Generated API documentation can be consulted [online](https://mgrojo.github.io/ASFML/doc/). + +The Ada API follows the [CSFML](https://26.customprotocol.com/csfml/index.htm) interface, but +with some changes and additions for ease of use. + +Applicability of the [SFML documentation](https://www.sfml-dev.org/learn.php) is usually straightforward. + + + diff --git a/_crates/ashell.md b/_crates/ashell.md new file mode 100644 index 00000000..be53a47a --- /dev/null +++ b/_crates/ashell.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "ashell" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: ["https://github.com/charlie5/aShell"] +tags: ["spawn", +"os", +"command", +"process", +"directories"] +version: "1.3.0" +short_description: "Allows running and interacting with OS programs." +dependencies: [{crate: "florist_blady", version: "^6.0.0"}, +{crate: "gcc", version: "^11.2.4"}] +configuration_variables: [] +configuration_values: [] + +--- +Useful for writing shell-like applications or applications which start, stop and interact with spawned OS programs. + diff --git a/_crates/asis.md b/_crates/asis.md new file mode 100644 index 00000000..b6b9eeff --- /dev/null +++ b/_crates/asis.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "asis" +authors: ["AdaCore"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["GPL-3.0-only"] +websites: ["https://www.adacore.com/download/more"] +tags: [] +version: "2019.0.0" +short_description: "Ada Semantic Interface Specification or ASIS (library part)" +dependencies: [{crate: "gnat", version: "=2019"}, +{crate: "make", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/atari_atr_tools.md b/_crates/atari_atr_tools.md new file mode 100644 index 00000000..e327dccf --- /dev/null +++ b/_crates/atari_atr_tools.md @@ -0,0 +1,61 @@ +--- +layout: crate +crate: "atari_atr_tools" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/tutorial-6502"] +tags: ["atari", +"tools", +"retrocomputing", +"ada-2022"] +version: "1.5.0" +short_description: "Atari / SIO2PC tools for ATR-files" +dependencies: [{crate: "adacl", version: "^5.15.1"}, +{crate: "gnat", version: ">=12 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a tool to analyse, create and convert ATR files. + +ATR files are used by various Atari 8bit emulators and hardware add ons. Currently implemented + +# Print Header + +```sh +>atr_tools-main --print-header test-DD-DS-80.atr +File name : test-DD-DS-80.atr +Magic : 16#296# +Paragraphs : 46056 +Sector size : 256 +Flags : 2#1# +Bad Sectors : 0 +Unused : 16#0# +Sectors : 2880 +Bytes : 736896 +Boot Sectors : true + +Floppy disk double density, double sided, 80 track +``` + +# Create Floppy image + +```sh +>atr_tools-main --verbose --format-floppy --density=DD --side=SS --track=80 test-DD-SS-80.atr +File created : test-DD-SS-80.atr +Sector size : 256 +Sector per track : 18 +Tracks per side : 80 +Sides per disk : 1 +``` + +Development versions available with: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code and testsuite available on [SourceForge](https://git.code.sf.net/p/tutorial-6502/git) + + diff --git a/_crates/atari_exe_tools.md b/_crates/atari_exe_tools.md new file mode 100644 index 00000000..29d6dab5 --- /dev/null +++ b/_crates/atari_exe_tools.md @@ -0,0 +1,60 @@ +--- +layout: crate +crate: "atari_exe_tools" +authors: ["Martin Krischik"] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/tutorial-6502"] +tags: ["atari", +"tools", +"retrocomputing", +"ada-2022"] +version: "1.5.0" +short_description: "Atari tools for for handling EXE-files" +dependencies: [{crate: "adacl", version: "^5.15.1"}, +{crate: "gnat", version: ">=12 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a tool to analyse Atari 8 bit EXE files. + +# Print Header + +```sh +>exe_tools-main --print-header ./test/share/atari_check_exe_test/HELLO_C.EXE" +File: ./test/share/atari_check_exe_test/HELLO_C.EXE +Magic: $FFFF; Start: $2E00; End: $2EF5; Length: 246 +Magic: $0000; Start: $02E2; End: $02E3; Length: 2; Init: $2E47 +Magic: $0000; Start: $2400; End: $28DE; Length: 1247 +Magic: $0000; Start: $02E0; End: $02E1; Length: 2; Run: $2401 +``` + +# Print Data + +```sh +--print-data ./test/share/atari_check_exe_test/HELLO_A.EXE" +File: ./test/share/atari_check_exe_test/HELLO_A.EXE +2400: 60 60 A2 00 A9 0B 9D 42 03 A9 3F 9D 44 03 A9 24 +2410: 9D 45 03 A9 2E 9D 48 03 A9 00 9D 49 03 20 56 E4 +2420: A2 00 A9 07 9D 42 03 A9 6D 9D 44 03 A9 24 9D 45 +2430: 03 A9 01 9D 48 03 A9 00 9D 49 03 20 56 E4 60 48 +2440: 65 6C 6C 6F 20 57 6F 72 6C 64 21 9B 28 75 73 69 +2450: 6E 67 20 61 20 65 78 65 63 75 74 61 62 6C 65 20 +2460: 69 6E 20 61 73 73 65 6D 62 65 72 29 9B 00 +02E0: 02 24 +Run: $2402 +>exe_tools-main +``` + +The ATASCII part of the hexdump has been removed as Alire is not UTF8 compatible. + +Development versions and testsuite available using the follwowing index: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code including AUnit tests available on [SourceForge](https://git.code.sf.net/p/tutorial-6502/git) + + diff --git a/_crates/atomic.md b/_crates/atomic.md new file mode 100644 index 00000000..2f6afd99 --- /dev/null +++ b/_crates/atomic.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "atomic" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/atomic"] +tags: ["atomic", +"spark", +"embedded", +"nostd"] +version: "1.0.0" +short_description: "Standalone Ada/SPARK bindings to GCC atomic built-ins" +dependencies: [] +configuration_variables: [{name: 'Backend', type: 'Enum (Intrinsic, armv6m, rp2040_spinlock)', default: "Intrinsic"}, +{name: 'RP2040_Spinlock_ID', type: 'Integer range 0 .. 31', default: "31"}] +configuration_values: [] + +--- + + diff --git a/_crates/audio_base.md b/_crates/audio_base.md new file mode 100644 index 00000000..19ada2b6 --- /dev/null +++ b/_crates/audio_base.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "audio_base" +authors: ["Gustavo A. Hoffmann"] +maintainers: ["gusthoff@gusthoff.com"] +licenses: ["MIT"] +websites: ["https://github.com/Ada-Audio/audio_base"] +tags: ["audio", +"riff"] +version: "1.0.0" +short_description: "Basic Ada packages for audio applications" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +# Audio Base +This crate contains basic Ada packages for audio applications. + + diff --git a/_crates/audio_wavefiles.md b/_crates/audio_wavefiles.md new file mode 100644 index 00000000..5e11af63 --- /dev/null +++ b/_crates/audio_wavefiles.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "audio_wavefiles" +authors: ["Gustavo A. Hoffmann"] +maintainers: ["gusthoff@gusthoff.com"] +licenses: ["MIT"] +websites: ["https://github.com/Ada-Audio/audio_wavefiles"] +tags: ["audio", +"riff", +"wavefiles"] +version: "2.0.0" +short_description: "Ada Wavefile Library" +dependencies: [{crate: "audio_base", version: "^1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Ada Wavefile Library +This crate contains Ada packages for wavefile I/O. + + diff --git a/_crates/aunit.md b/_crates/aunit.md new file mode 100644 index 00000000..487ba73e --- /dev/null +++ b/_crates/aunit.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "aunit" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: ["unit", +"test", +"unit-test"] +version: "25.0.0" +short_description: "Ada unit test framework" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/automate.md b/_crates/automate.md new file mode 100644 index 00000000..1be75015 --- /dev/null +++ b/_crates/automate.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "automate" +authors: ["Pascal Pignard"] +maintainers: ["Pascal Pignard "] +licenses: ["CECILL-2.1"] +websites: ["https://github.com/Blady-Com/Automate"] +tags: ["automaton", +"generator"] +version: "3.0.0" +short_description: "Ada finite-state machine generator" +dependencies: [{crate: "uxstrings", version: ">=0.6"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/avltrees.md b/_crates/avltrees.md new file mode 100644 index 00000000..8a2f3fe6 --- /dev/null +++ b/_crates/avltrees.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "avltrees" +authors: ["Lev Kujawski"] +maintainers: ["Lev Kujawski "] +licenses: ["LGPL-3.0-or-later"] +websites: ["https://github.com/lkujaw/avltrees"] +tags: ["ada1987", +"data-structures"] +version: "0.1.0" +short_description: "Threaded AVL trees library for Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/avrada_examples.md b/_crates/avrada_examples.md new file mode 100644 index 00000000..7665469e --- /dev/null +++ b/_crates/avrada_examples.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "avrada_examples" +authors: ["Rolf Ebert"] +maintainers: ["Rolf Ebert "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-3.1"] +websites: ["https://sourceforge.net/projects/avr-ada/"] +tags: ["avr", +"embedded", +"demo"] +version: "1.0.1" +short_description: "Sample applications in Ada for AVR microcontrollers" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/avrada_lib.md b/_crates/avrada_lib.md new file mode 100644 index 00000000..a9df8a16 --- /dev/null +++ b/_crates/avrada_lib.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "avrada_lib" +authors: ["Rolf Ebert"] +maintainers: ["Rolf Ebert "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-3.1"] +websites: ["https://sourceforge.net/projects/avr-ada/"] +tags: ["avr", +"embedded", +"drivers"] +version: "2.1.0" +short_description: "Library of drivers for AVR microcontrollers" +dependencies: [{crate: "avrada_mcu", version: "^2.1"}, +{crate: "avrada_rts", version: "^2.0.1"}, +{crate: "gnat_avr_elf", version: "^11 | ^12.2"}] +configuration_variables: [{name: 'Process_Timing_Events_In_Ticks', type: 'Boolean', default: "false"}, +{name: 'UART_Receive_Mode', type: 'Enum (polled, interrupt)', default: "polled"}] +configuration_values: [] + +--- + + diff --git a/_crates/avrada_mcu.md b/_crates/avrada_mcu.md new file mode 100644 index 00000000..6a917fa1 --- /dev/null +++ b/_crates/avrada_mcu.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "avrada_mcu" +authors: ["Rolf Ebert"] +maintainers: ["Rolf Ebert "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-3.1"] +websites: ["https://sourceforge.net/projects/avr-ada/"] +tags: ["avr", +"embedded", +"rts"] +version: "2.2.0" +short_description: "Device (MCU) specific definitions for AVR microcontrollers" +dependencies: [{crate: "avrada_rts", version: "^2.0.1"}, +{crate: "gnat_avr_elf", version: "^11 | ^12.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/avrada_rts.md b/_crates/avrada_rts.md new file mode 100644 index 00000000..ed6c012a --- /dev/null +++ b/_crates/avrada_rts.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "avrada_rts" +authors: ["Adacore", +"Rolf Ebert"] +maintainers: ["Rolf Ebert "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-3.1"] +websites: ["https://sourceforge.net/projects/avr-ada/"] +tags: ["avr", +"embedded", +"rts"] +version: "2.0.1" +short_description: "Minimal run time system (RTS) for AVR 8bit controllers" +dependencies: [{crate: "gnat_avr_elf", version: "^11 | ^12.2"}] +configuration_variables: [{name: 'AVR_MCU', type: 'String', default: "atmega328p"}, +{name: 'Clock_Frequency', type: 'Integer range 0 .. 9223372036854775807', default: "0"}, +{name: 'Sec_Stack_Size', type: 'Integer range 0 .. 1024', default: "63"}] +configuration_values: [] + +--- + + diff --git a/_crates/awa.md b/_crates/awa.md new file mode 100644 index 00000000..fe5967ac --- /dev/null +++ b/_crates/awa.md @@ -0,0 +1,61 @@ +--- +layout: crate +crate: "awa" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-awa"] +tags: ["web", +"users", +"jobs", +"wiki", +"framework", +"storage", +"blog"] +version: "2.5.0" +short_description: "Ada Web Application" +dependencies: [{crate: "ado", version: "^2.4.0"}, +{crate: "aws", version: "~24.0"}, +{crate: "elada", version: "^1.8.6"}, +{crate: "keystoreada", version: "^1.4.0"}, +{crate: "security", version: "^1.5.0"}, +{crate: "serverfaces", version: "^1.6.0"}, +{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}, +{crate: "wikiada", version: "^1.4.1"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +Ada Web Application is a framework to build a Web Application in Ada 2012. +The framework provides several ready to use and extendable modules that are common +to many web application. This includes the login, authentication, users, permissions, +managing comments, tags, votes, documents, images. It provides a complete blog, +question and answers and a wiki module. + +AWA simplifies the Web Application development by taking care of user management with +Google+, Facebook authentication and by providing the foundations on top of which you +can construct your own application. AWA provides a powerful permission management +that gives flexibility to applications to grant access and protect your user's resources. + +![AWA Features](https://github.com/stcarrez/ada-awa/wiki/images/awa-features.png) + +# Documentation + +The Ada Web Application programmer's guide describes how to setup the framework, +how you can setup and design your first web application with it, +and it provides detailed description of AWA components: + + * [Ada Web Application programmer's guide](https://ada-awa.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-awa/blob/master/awa/docs/awa-book.pdf) + * [Ada Database Objects Programmer's Guide](https://ada-ado.readthedocs.io/en/latest/) + * [Ada Security Programmer's Guide](https://ada-security.readthedocs.io/en/latest/) + * [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) + + + diff --git a/_crates/awa_unit.md b/_crates/awa_unit.md new file mode 100644 index 00000000..abeb448e --- /dev/null +++ b/_crates/awa_unit.md @@ -0,0 +1,48 @@ +--- +layout: crate +crate: "awa_unit" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-awa"] +tags: ["web", +"users", +"jobs", +"framework", +"testing"] +version: "2.5.0" +short_description: "Ada Web Application (Testing framework)" +dependencies: [{crate: "awa", version: "^2.5.0"}, +{crate: "serverfaces_unit", version: "^1.6.0"}, +{crate: "servletada_unit", version: "^1.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +Ada Web Application is a framework to build a Web Application in Ada 2012. +The framework provides several ready to use and extendable modules that are common +to many web application. This includes the login, authentication, users, permissions, +managing comments, tags, votes, documents, images. It provides a complete blog, +question and answers and a wiki module. + +This library provides a testing framework on top of AWA top help implementing +unit tests for AWA applications. + +# Documentation + +The Ada Web Application programmer's guide describes how to setup the framework, +how you can setup and design your first web application with it, +and it provides detailed description of AWA components: + + * [Ada Web Application programmer's guide](https://ada-awa.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-awa/blob/master/awa/docs/awa-book.pdf) + * [Ada Database Objects Programmer's Guide](https://ada-ado.readthedocs.io/en/latest/) + * [Ada Security Programmer's Guide](https://ada-security.readthedocs.io/en/latest/) + * [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) + + + diff --git a/_crates/aws.md b/_crates/aws.md new file mode 100644 index 00000000..29d86fc0 --- /dev/null +++ b/_crates/aws.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "aws" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-only WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/aws"] +tags: ["aws", +"web", +"server", +"http", +"https", +"soap", +"wsdl", +"ssl"] +version: "24.0.0" +short_description: "Ada Web Server" +dependencies: [{crate: "gnat", version: ">=12"}, +{crate: "gnatcoll", version: "~24.0.0"}, +{crate: "make", version: "*"}, +{crate: "openssl", version: "*"}, +{crate: "xmlada", version: "~24.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/axmpp.md b/_crates/axmpp.md new file mode 100644 index 00000000..724326e5 --- /dev/null +++ b/_crates/axmpp.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "axmpp" +authors: ["Alexander Basov", +"Vadim Godunko"] +maintainers: ["Alexander Basov ", +"Max Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/coopht/axmpp"] +tags: ["xmpp", +"jabber", +"messaging"] +version: "1.0.0" +short_description: "XMPP client library in Ada" +dependencies: [{crate: "libgnutls", version: "*"}, +{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ayacc.md b/_crates/ayacc.md new file mode 100644 index 00000000..8d5c6a56 --- /dev/null +++ b/_crates/ayacc.md @@ -0,0 +1,39 @@ +--- +layout: crate +crate: "ayacc" +authors: ["David Taback", +"Deepak Tolani"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Unlicense"] +websites: ["https://github.com/Ada-France/ayacc"] +tags: ["parser", +"generator", +"grammar"] +version: "1.4.1" +short_description: "An Ada LARL(1) parser generator" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Ayacc is an Ada parser generator in the style of yacc(1). + +The first implementation was written by David Taback and Deepak Tolani +at the University of California, Irvine. The last version that was released +appeared to be the Ayacc 1.1 released in 1994. + +Ayacc was used and improved by P2Ada, the Pascal to Ada translator. +This version of Ayacc is derived from the P2Ada ayacc implementation +released in August 2010. + +This version brings a number of improvements: + +- Ayacc now uses more standard options to configure the code generation +- The parser was improved to configure the parser stack size and + support Ada child packages. +- The grammar supports the %unit directive to control the Ada child packages. +- Several options provide a better control of the generated code. +- Ayacc can generate a reentrant parser. + + + diff --git a/_crates/azip.md b/_crates/azip.md new file mode 100644 index 00000000..a055fe4f --- /dev/null +++ b/_crates/azip.md @@ -0,0 +1,44 @@ +--- +layout: crate +crate: "azip" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://azip.sourceforge.io/"] +tags: ["application", +"azip", +"zip", +"archive", +"file-manager"] +version: "2.7.0" +short_description: "AZip - A portable Zip Archive Manager" +dependencies: [{crate: "ini_files", version: ">=11.0.0"}, +{crate: "gwindows", version: ">=1.4.3"}, +{crate: "zipada", version: ">=59.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +  azip screenshot 1azip screenshot 2azip screenshot 3 + +**AZip** is a free Zip Archive Manager with unique features such as: built-in content Search, smart archive Update, archive Recompression. + +Features: + +* In addition to usual archive management (Add / Remove / Extract files), AZip provides the following unique functions: +* Super-fast in-archive Search function: content and/or entry name search through a Zip archive. No temp files written! +* Smart archive Updater: changes only new, modified files +* Archive Recompression: makes Zip archives smaller +* Easy toggle from Flat view to Tree view, and back +* Multi-document +* Compression methods supported: Reduce, Shrink, Implode, Deflate, Deflate64, BZip2, LZMA +* Encryption +* Portable (no installation needed, no DLL) +* Can operate with a config file instead of the registry (stealth mode) +* Installable if desired (application is its own installer) +* Compatible with other Zip archivers, regardless of the Operating System +* **Free**, Open-Source + + diff --git a/_crates/b2ssum.md b/_crates/b2ssum.md new file mode 100644 index 00000000..c9837cb0 --- /dev/null +++ b/_crates/b2ssum.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "b2ssum" +authors: ["Lev Kujawski"] +maintainers: ["Lev Kujawski "] +licenses: ["MIT-0"] +websites: ["https://github.com/lkujaw/blake2s"] +tags: ["ada1995", +"hash", +"blake2", +"blake2s"] +version: "0.1.3" +short_description: "BLAKE2s file hash utility" +dependencies: [{crate: "blake2s", version: "~0.1.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bar_code_drawing.md b/_crates/bar_code_drawing.md new file mode 100644 index 00000000..4a3cb420 --- /dev/null +++ b/_crates/bar_code_drawing.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "bar_code_drawing" +authors: ["Jeffrey Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Bar_Code_Drawing"] +tags: ["barcode", +"code128", +"msi", +"qr", +"upca", +"ean13", +"bmp", +"pbm", +"svg"] +version: "20240701.0.0" +short_description: "Creation of bar codes and qr codes" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "ada_gui", version: "^20240224.0.0"}, +{crate: "image_io", version: "^20240601.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bar_codes.md b/_crates/bar_codes.md new file mode 100644 index 00000000..0f75d3be --- /dev/null +++ b/_crates/bar_codes.md @@ -0,0 +1,67 @@ +--- +layout: crate +crate: "bar_codes" +authors: ["Gautier de Montmollin"] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: ["https://ada-bar-codes.sourceforge.io/"] +tags: ["bar", +"code", +"barcode", +"bar-code", +"datamatrix", +"data-matrix", +"qr", +"qrcode", +"qr-code", +"code128", +"msi", +"ean13", +"upca", +"pbm", +"pdf", +"png", +"svg"] +version: "5.0.0" +short_description: "Generate various types of bar codes (1D or 2D) on various media" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + QRCode 128Data Matrix + +Some features: + +* 1D bar codes supported: Code 128, EAN-13, MSI, UPC-A +* 2D bar codes supported: Data Matrix, QR Codes +* Task safe +* Endian-neutral +* Multi-platform, but native code build +* Standalone (no dependency on other libraires, bindings, etc.; no extra component needed for running) +* Unconditionally portable code: OS-, CPU-, compiler- independent code. +* Pure Ada 2012: this package can be used in projects in Ada 2012 and later versions of the Ada language +* Tests and demos included +* *Free*, open-source + +The creation of a bar code is as simple as this small procedure: + +```ada +with Ada.Text_IO, Bar_Codes, Bar_Codes_Media; + +procedure Small_Demo is + use Ada.Text_IO; + svg : File_Type; +begin + Create (svg, Out_File, "qr_code.svg"); + Put_Line + (svg, + Bar_Codes_Media.SVG_Bar_Code + (Bar_Codes.Code_QR_Low, 100.0, 100.0, "mm", "Hello")); + Close (svg); +end Small_Demo; +``` + + diff --git a/_crates/basalt.md b/_crates/basalt.md new file mode 100644 index 00000000..987f88ff --- /dev/null +++ b/_crates/basalt.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "basalt" +authors: [] +maintainers: ["kliemann@adacore.com"] +licenses: ["AGPL-3.0-only"] +websites: [] +tags: ["embedded", +"nostd", +"queue", +"spark", +"stack", +"string", +"utils"] +version: "0.3.0" +short_description: "Collection of formally verified building blocks" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/base64.md b/_crates/base64.md new file mode 100644 index 00000000..92e197f8 --- /dev/null +++ b/_crates/base64.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "base64" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/base64"] +tags: ["base64"] +version: "1.0.1" +short_description: "Base64 encoding/decoding routines" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bb_pico_bsp.md b/_crates/bb_pico_bsp.md new file mode 100644 index 00000000..53a9d616 --- /dev/null +++ b/_crates/bb_pico_bsp.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "bb_pico_bsp" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/bb_pico_bsp"] +tags: ["embedded", +"pico", +"handheld", +"featherwing"] +version: "0.1.0" +short_description: "Ada BSP for the Keyboard Featherwing + RPI PICO" +dependencies: [{crate: "embedded_components", version: "~0.1.0"}, +{crate: "lvgl_ada", version: "~0.2.0"}, +{crate: "pico_bsp", version: "^1.0.0"}] +configuration_variables: [] +configuration_values: [{crate: 'lvgl_ada', settings: [{name: 'Color_16_SWAP', value: "true"}, +{name: 'Density_Per_Inch', value: "50"}, +{name: 'Double_Buffering', value: "true"}, +{name: 'Horizontal_Resolution', value: "320"}, +{name: 'Pixel_Bit_Depth', value: "Pix_16bit"}, +{name: 'Theme_Live_Update', value: "true"}, +{name: 'Vertical_Resolution', value: "240"}, +{name: 'Virtual_Display_Buffer_Size', value: "30720"}]}] + +--- + + diff --git a/_crates/bbqueue.md b/_crates/bbqueue.md new file mode 100644 index 00000000..bcaae053 --- /dev/null +++ b/_crates/bbqueue.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "bbqueue" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/bbqueue-spark"] +tags: ["spark", +"nostd", +"embedded", +"lockfree", +"dma", +"bipbuffer"] +version: "1.0.0" +short_description: "DMA friendly lock-free BipBuffer" +dependencies: [{crate: "atomic", version: "^1.0.0"}, +{crate: "gnat", version: ">=10"}] +configuration_variables: [] +configuration_values: [] + +--- +An Ada/SPARK proved implementation of James Munns' +BBQueue (https://github.com/jamesmunns/bbqueue) + diff --git a/_crates/bbs.md b/_crates/bbs.md new file mode 100644 index 00000000..8ec8c087 --- /dev/null +++ b/_crates/bbs.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "bbs" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["0BSD"] +websites: ["https://github.com/BrentSeidel/BBS-Ada"] +tags: ["units"] +version: "0.1.0" +short_description: "Root package for other crates and contains some physical units" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bbs_embed_common.md b/_crates/bbs_embed_common.md new file mode 100644 index 00000000..346eedd0 --- /dev/null +++ b/_crates/bbs_embed_common.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "bbs_embed_common" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/BBS-BBB-Ada"] +tags: ["embedded"] +version: "0.1.0" +short_description: "Abstract hardware drivers and drivers for some i2c bus devices." +dependencies: [{crate: "bbs", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This crate contains base classes for some hardware devices such as Analog +Inputs, GPIO pins, I2C bus, and SPI bus. It also contains drivers for +devices that use, for example, an I2C bus. + +By itself, this crate isn't much use. It will need to be used with the +bbs_embed_linux crate which contains hardware drivers for the Raspberry Pi +and BeagleBone Black. + + diff --git a/_crates/bbs_embed_linux.md b/_crates/bbs_embed_linux.md new file mode 100644 index 00000000..e65c1996 --- /dev/null +++ b/_crates/bbs_embed_linux.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "bbs_embed_linux" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/BBS-BBB-Ada"] +tags: ["embedded", +"devices", +"hardware"] +version: "0.1.0" +short_description: "Physical device drivers for Raspberry Pi and BeagleBone Black" +dependencies: [{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_embed_common", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This contains device drivers for unix-type systems. The physical devices +are defined for the Raspberry Pi and BeagleBone Black, but it should +compile on any unix-type environment. + + diff --git a/_crates/bbs_lisp.md b/_crates/bbs_lisp.md new file mode 100644 index 00000000..c38b62de --- /dev/null +++ b/_crates/bbs_lisp.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "bbs_lisp" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Ada-Lisp"] +tags: ["lisp", +"embedded"] +version: "0.1.1" +short_description: "Embedable tiny lisp interpreter" +dependencies: [{crate: "bbs", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This is the core of a simple tiny lisp that is intended to be embedded in +other applications. It can be extended with new commands specific to +the application. + + diff --git a/_crates/bbs_simcpu.md b/_crates/bbs_simcpu.md new file mode 100644 index 00000000..365b61cc --- /dev/null +++ b/_crates/bbs_simcpu.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "bbs_simcpu" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Sim-CPU"] +tags: ["cpu-simulator"] +version: "0.1.0" +short_description: "CPU Simulator for multiple CPUs" +dependencies: [{crate: "bbs", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bbs_webif.md b/_crates/bbs_webif.md new file mode 100644 index 00000000..e9ebbe41 --- /dev/null +++ b/_crates/bbs_webif.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "bbs_webif" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Ada-Web-Server"] +tags: ["http", +"html", +"embedded", +"web"] +version: "0.1.0" +short_description: "Simple web server to provide an interface to embedded instruments" +dependencies: [{crate: "bbs", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bbt.md b/_crates/bbt.md new file mode 100644 index 00000000..6f25d9bf --- /dev/null +++ b/_crates/bbt.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "bbt" +authors: ["Lionel Draghi"] +maintainers: ["Lionel Draghi "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["gherkin", +"test", +"markdown", +"tdd", +"black-box"] +version: "0.0.5" +short_description: "Black box test runner" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/binary_trees.md b/_crates/binary_trees.md new file mode 100644 index 00000000..6ca174f7 --- /dev/null +++ b/_crates/binary_trees.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "binary_trees" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Binary_Trees"] +tags: ["binarytrees", +"trees", +"noaccess"] +version: "20240519.0.0" +short_description: " Ordered binary trees implemented without access types" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# Binary_Trees +Ordered binary trees implemented without access types + +Demonstration of a technique to be presented at the Ada Developers Workshop of the 2024 Ada-Europe conference + + diff --git a/_crates/bingada.md b/_crates/bingada.md new file mode 100644 index 00000000..215fa20e --- /dev/null +++ b/_crates/bingada.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "bingada" +authors: ["Javier Fuica Fernández", +"Manuel Gómez"] +maintainers: ["Manuel Gómez "] +licenses: ["MIT"] +websites: ["https://github.com/jfuica/bingada"] +tags: ["bingo", +"game", +"chance", +"family", +"sound", +"gtk", +"sfml"] +version: "1.0.0" +short_description: "Bingo application in GTKAda with sound in ASFML" +dependencies: [{crate: "gtkada", version: "^21.0.0"}, +{crate: "asfml", version: "^2.5.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/bit_sets.md b/_crates/bit_sets.md new file mode 100644 index 00000000..476546a8 --- /dev/null +++ b/_crates/bit_sets.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "bit_sets" +authors: ["Michael Hardeman"] +maintainers: ["Michael Hardeman "] +licenses: ["GPL-2.0-or-later"] +websites: ["https://github.com/michael-hardeman/bit_sets"] +tags: ["bit", +"set", +"boolean", +"array", +"packed", +"performance"] +version: "1.0.0" +short_description: "A packed boolean array that saves space and is performant" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/blake2s.md b/_crates/blake2s.md new file mode 100644 index 00000000..2e639231 --- /dev/null +++ b/_crates/blake2s.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "blake2s" +authors: ["Lev Kujawski"] +maintainers: ["Lev Kujawski "] +licenses: ["MIT-0"] +websites: ["https://github.com/lkujaw/blake2s"] +tags: ["ada1987", +"spark", +"hash", +"blake2", +"blake2s"] +version: "0.1.3" +short_description: "SPARK83 implementation of the BLAKE2s hash function" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/blinkenlights.md b/_crates/blinkenlights.md new file mode 100644 index 00000000..96eb708c --- /dev/null +++ b/_crates/blinkenlights.md @@ -0,0 +1,51 @@ +--- +layout: crate +crate: "blinkenlights" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Pi-Mainframe"] +tags: ["embedded", +"simulation", +"i8080", +"m68000", +"hardware"] +version: "0.1.0" +short_description: "Project to blink LEDs in interesting patterns" +dependencies: [{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_embed_common", version: "~0.1.0"}, +{crate: "bbs_embed_linux", version: "~0.1.0"}, +{crate: "bbs_webif", version: "~0.1.0"}, +{crate: "bbs_simcpu", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a complex project involving 3D printing and soldering as well as +software. Alr will take care of the software dependencies for you, but +you will have to read the README and documentation to find the other parts. + +This project is intended to replicate the look and feel of older computers +with the switches and lights. It uses the simulators from bbs_simcpu to +drive the LEDs and act on the switches. Using the Intel 8080 simulator, +I was actually able to toggle a bootstrap program in using the panel and +get it to boot CP/M. If you use the Motorola 68000 simulator, it will +load and run a simple multitasking OS. The example simulator can be used +to flash the lights in a variaty of ways. + +There is a lamp test program in the lamp-test directory that may be useful +for debugging the hardware. + +Note that since each cycle of the simulator involves multiple I2C bus +transactions to read switches and set LEDs, any CPU simulation will run +rather slowly. The intention of this project is more for display than +simulator usage. + +There is also a web server that can be used to select the CPU variant. +This is most useful with the example simulator to select the light pattern. + +This project run on a Raspberry Pi. It will build on most Unix or Unix-like +systems, but unless the hardware interface matches the Raspberry Pi, it +won't run. You are welcome to try porting it to other systems, if you like. + + diff --git a/_crates/bme280.md b/_crates/bme280.md new file mode 100644 index 00000000..3500d85a --- /dev/null +++ b/_crates/bme280.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "bme280" +authors: ["Max Reznik"] +maintainers: ["Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/reznikmm/bme280"] +tags: ["sensor", +"humidity", +"temperature", +"pressure", +"driver"] +version: "1.0.0" +short_description: "Driver for BME280 Humidity sensor" +dependencies: [{crate: "gnat", version: ">=11 & <2000"}, +{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/brackelib.md b/_crates/brackelib.md new file mode 100644 index 00000000..e4945574 --- /dev/null +++ b/_crates/brackelib.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "brackelib" +authors: ["Bent Bracke"] +maintainers: ["Bent Bracke "] +licenses: ["CC0-1.0"] +websites: ["https://github.com/bracke/brackelib"] +tags: ["utility", +"adt", +"stack", +"queue"] +version: "0.0.2" +short_description: "Library which contains various utility packages." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Ada library which contains various utility packages. Currently only a few implementations of abstract data types. + diff --git a/_crates/c_strings.md b/_crates/c_strings.md new file mode 100644 index 00000000..99e6fde7 --- /dev/null +++ b/_crates/c_strings.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "c_strings" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: [] +version: "1.0.0" +short_description: "Convenience subprograms to interact with C strings" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/canberra_ada.md b/_crates/canberra_ada.md new file mode 100644 index 00000000..874fcbc4 --- /dev/null +++ b/_crates/canberra_ada.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "canberra_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/canberra-ada"] +tags: ["canberra", +"audio", +"sound", +"linux"] +version: "2.0.2" +short_description: "Ada 2012 bindings for libcanberra" +dependencies: [{crate: "libcanberra", version: "~0.30.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/cashe.md b/_crates/cashe.md new file mode 100644 index 00000000..8b39205f --- /dev/null +++ b/_crates/cashe.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "cashe" +authors: ["AJ Ianozi"] +maintainers: ["AJ Ianozi "] +licenses: ["MIT"] +websites: ["https://github.com/AJ-Ianozi/Cashe/"] +tags: ["currency", +"money", +"decimal", +"finance"] +version: "1.0.0" +short_description: "A fixed-point decimal money library written in Ada." +dependencies: [{crate: "gnat", version: ">=12 & <2000"}, +{crate: "iso", version: "^2.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/cbsg.md b/_crates/cbsg.md new file mode 100644 index 00000000..eaf754b9 --- /dev/null +++ b/_crates/cbsg.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "cbsg" +authors: ["Gautier de Montmollin"] +maintainers: ["Frédéric Praca "] +licenses: ["Apache-2.0"] +websites: ["http://cbsg.sf.net/"] +tags: ["text", +"console"] +version: "0.0.1" +short_description: "Corporate Bullshit Generator library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/chacha20.md b/_crates/chacha20.md new file mode 100644 index 00000000..129e8f10 --- /dev/null +++ b/_crates/chacha20.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "chacha20" +authors: ["Mateus de Lima Oliveira"] +maintainers: ["Mateus de Lima Oliveira "] +licenses: ["MIT"] +websites: ["https://ativarsoft.com"] +tags: ["chacha20", +"security", +"cryptography"] +version: "0.1.0" +short_description: "ChaCha20 implementation in Ada." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/checksum.md b/_crates/checksum.md new file mode 100644 index 00000000..04b39557 --- /dev/null +++ b/_crates/checksum.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "checksum" +authors: ["Miko Elbrecht"] +maintainers: ["Miko Elbrecht "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/ATPStorages/checksum.git"] +tags: ["crc", +"crc32", +"adler32", +"redundancy", +"error", +"checking", +"error-checking"] +version: "0.1.0" +short_description: "Algorithms for error-checking" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/cheddar.md b/_crates/cheddar.md new file mode 100644 index 00000000..b5d49d9f --- /dev/null +++ b/_crates/cheddar.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "cheddar" +authors: ["Lab-STICC"] +maintainers: ["Maxim Reznik "] +licenses: ["GPL-3.0-only"] +websites: ["http://beru.univ-brest.fr/cheddar"] +tags: ["realtime", +"model", +"simulator", +"analyzer"] +version: "3.3.0" +short_description: "Cheddar is a real time scheduling analysis tool." +dependencies: [{crate: "gtkada", version: "*"}, +{crate: "ocarina_lib", version: "=1.1.0-20070603"}, +{crate: "xmlada", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +To run cheddar you should set CHEDDAR_INSTALL_PATH or change +current working directory to the crate root. + + diff --git a/_crates/chests.md b/_crates/chests.md new file mode 100644 index 00000000..555e9a17 --- /dev/null +++ b/_crates/chests.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "chests" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/JeremyGrosser/chests"] +tags: ["containers", +"bounded", +"nostd", +"embedded"] +version: "0.1.1" +short_description: "Chests are bounded containers" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/chipmunk2d.md b/_crates/chipmunk2d.md new file mode 100644 index 00000000..1f2b22bc --- /dev/null +++ b/_crates/chipmunk2d.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "chipmunk2d" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: [""] +tags: ["gamedev", +"binding"] +version: "0.1.0" +short_description: "Ada bindings for Chipmunk2D" +dependencies: [{crate: "libchipmunk", version: "^7.0.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/clic.md b/_crates/clic.md new file mode 100644 index 00000000..d11c0fcd --- /dev/null +++ b/_crates/clic.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "clic" +authors: ["Alejandro R. Mosteo", +"Fabien Chouteau"] +maintainers: ["alejandro@mosteo.com", +"Fabien Chouteau "] +licenses: ["MIT AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/alire-project/clic"] +tags: ["cli", +"command-line", +"user-input", +"tty"] +version: "0.3.0" +short_description: "Command Line Interface Components" +dependencies: [{crate: "aaa", version: "~0.2.4"}, +{crate: "ada_toml", version: "~0.2|~0.3"}, +{crate: "ansiada", version: "^1.0"}, +{crate: "simple_logging", version: "^1.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- +Command Line Interface Components: + - "git like" subcommand handling + - TTY color and formatting + - User input queries + - User configuration + + diff --git a/_crates/cmd_ada.md b/_crates/cmd_ada.md new file mode 100644 index 00000000..156cb600 --- /dev/null +++ b/_crates/cmd_ada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "cmd_ada" +authors: ["Henrik Härkönen"] +maintainers: ["Henrik Härkönen "] +licenses: ["Apache-2.0"] +websites: [] +tags: ["ui", +"command-line"] +version: "0.0.1" +short_description: "Command based text UI, inspired by Python cmd module" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/cobs.md b/_crates/cobs.md new file mode 100644 index 00000000..af23eefd --- /dev/null +++ b/_crates/cobs.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "cobs" +authors: ["Daniel King"] +maintainers: ["Daniel King "] +licenses: ["MIT"] +websites: ["https://github.com/damaki/cobs"] +tags: ["cobs", +"spark", +"embedded", +"nostd"] +version: "1.1.0" +short_description: "Consistent Overhead Byte Stuffing (COBS) encoder/decoder" +dependencies: [{crate: "gnat", version: ">=11.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/controlled_io.md b/_crates/controlled_io.md new file mode 100644 index 00000000..1ec6e309 --- /dev/null +++ b/_crates/controlled_io.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "controlled_io" +authors: ["Jeffrey Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Controlled_IO"] +tags: ["io", +"files", +"controlled", +"scope", +"binary", +"text"] +version: "20240401.0.1" +short_description: "Files that are open while they exist and closed when they don't " +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# Controlled_IO +Files that are open while they exist and closed when they don't + +This is a draft response to a request for a library for [Scope-based files](https://forum.ada-lang.io/t/ada-library-wishlist/14/5). Both binary and text I/O is supported. Please comment on whether or not you find this useful. + +The library is completely portable. It has been compiled and tested with GNAT and ObjectAda, on Linux and Windows. + +Controlled_Test and Controlled_Text are test programs. Both are user-unfriendly file-copy programs. Controlled_Test performs a binary copy; the output should always be identical to the input. Controlled_Text performs a line-by-line copy of text files; the output may have different line terminators than the input. + +Controlled_UTF is a user-unfriendly program to convert a native text file to a [Universal Text File](https://github.com/jrcarter/Universal-Text-File). + + diff --git a/_crates/cortex_m.md b/_crates/cortex_m.md new file mode 100644 index 00000000..2bc5b099 --- /dev/null +++ b/_crates/cortex_m.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "cortex_m" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"arm", +"nostd"] +version: "1.0.0" +short_description: "Drivers for Cortex-M micro-controllers (NVIC, SysTick, etc.)" +dependencies: [{crate: "gnat_arm_elf", version: ">=12"}, +{crate: "hal", version: "^1.0.0"}] +configuration_variables: [{name: 'core', type: 'Enum (m0, m0p, m4, m4f, m7f, m7df)'}] +configuration_values: [] + +--- +# cortex-m + +Ada drivers for the peripherals of ARM Cortex-M micro-controllers +(NVIC,\nSysTick, etc.) + +This crate is a snapshot of the `Cortex-M` support in [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/arch/ARM/cortex_m). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + + + diff --git a/_crates/crc_32.md b/_crates/crc_32.md new file mode 100644 index 00000000..33c4d0a6 --- /dev/null +++ b/_crates/crc_32.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "crc_32" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/CRC-32"] +tags: ["crc", +"iso3309", +"data", +"redundancy", +"verification"] +version: "20240725.0.0" +short_description: "Cyclic Redundancy Check to verify data integrity (ISO 3309)" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# CRC-32 +Cyclic Redundancy Check to verify data integrity (ISO 3309) + +Derived, with extensive modifications, from Zip.CRC_Crypto by Gautier de Montmollin. + + diff --git a/_crates/curl.md b/_crates/curl.md new file mode 100644 index 00000000..187f2a1a --- /dev/null +++ b/_crates/curl.md @@ -0,0 +1 @@ +Not found: curl* diff --git a/_crates/dashera.md b/_crates/dashera.md new file mode 100644 index 00000000..e8ea4220 --- /dev/null +++ b/_crates/dashera.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "dashera" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["MIT"] +websites: ["https://github.com/SMerrony/dashera"] +tags: ["gtk", +"terminal", +"dasher", +"emulator"] +version: "0.15.1" +short_description: "DASHER Terminal Emulator" +dependencies: [{crate: "gtkada", version: "^23.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/db_maker.md b/_crates/db_maker.md new file mode 100644 index 00000000..09075423 --- /dev/null +++ b/_crates/db_maker.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "db_maker" +authors: ["Jeff Carter "] +maintainers: ["Bent Bracke "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/bracke/DB_Maker"] +tags: ["database", +"table"] +version: "20240119.0.0" +short_description: "A generic for creating simple DBs (one table in an RDBMS)" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "ada_gui", version: "^20240224.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# DB_Maker +A generic for creating simple DBs (one table in an RDBMS) with PragmARC.Persistent_Skip_List_Unbounded and Ada GUI. + +Searching does not use the O(log N) search of the underlying skip list, but instead does a linear search for fields that have the corresponding search text as a substring (case insensitive). This is much slower, but is still quite fast. If you have less than 100,000 records it should be fast enough. "Search" starts from the 1st record; "Search More" from the record after the last search. "Clear" clears the edit fields to make entering a new search easier. + +Because searching is case insensitive and matches substrings, searching for "son" would match "Orson Welles", "Fowler De Johnsone", and "Son House". + +Only about 7 fields will fit vertically in the typical browser window. This could perhaps be increased by making the font smaller. A vertical scroll bar will appear if needed. + +Movies is a small demo program that could be used to catalogue a collection of films. DB_Strings is a non-limited replacement for PragmARC.B_Strings, since type B_String is limited in the Ada-12 version of the PragmARCs. + + diff --git a/_crates/dcf.md b/_crates/dcf.md new file mode 100644 index 00000000..d4cb1237 --- /dev/null +++ b/_crates/dcf.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "dcf" +authors: ["onox", +"Gautier de Montmollin"] +maintainers: ["onox "] +licenses: ["MIT"] +websites: ["https://github.com/onox/dcf-ada"] +tags: ["zip", +"document", +"container", +"archive"] +version: "2.0.3" +short_description: "Ada 2012 library for document container files, Zip-based archive files" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/dependency_graph_extractor.md b/_crates/dependency_graph_extractor.md new file mode 100644 index 00000000..3c23076e --- /dev/null +++ b/_crates/dependency_graph_extractor.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "dependency_graph_extractor" +authors: ["Jeroen Ketema", +"Pierre van de Laar"] +maintainers: ["Pierre van de Laar "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/TNO/Dependency_Graph_Extractor-Ada"] +tags: ["extract", +"dependency", +"analysis", +"graph", +"graphml"] +version: "22.0.0" +short_description: "Extract dependency information from Ada projects" +dependencies: [{crate: "libadalang", version: "^22.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/dg_loada.md b/_crates/dg_loada.md new file mode 100644 index 00000000..5a33d18b --- /dev/null +++ b/_crates/dg_loada.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "dg_loada" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["MIT"] +websites: ["https://github.com/SMerrony/dg_loada"] +tags: ["legacy", +"recovering-data", +"dg", +"data-general", +"aos-vs"] +version: "1.4.3" +short_description: "dg_loada loads (restores) legacy DG AOS/VS DUMP_II files" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +dg_loada loads (restores) backup files created by Data General's AOS/VS DUMP_II, and maybe DUMP_III, files on any modern system supported by GNAT Ada. + diff --git a/_crates/dir_iterators.md b/_crates/dir_iterators.md new file mode 100644 index 00000000..1765eaf8 --- /dev/null +++ b/_crates/dir_iterators.md @@ -0,0 +1,76 @@ +--- +layout: crate +crate: "dir_iterators" +authors: ["Paul Jarrett"] +maintainers: ["Paul Jarrett "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/pyjarrett/dir_iterators"] +tags: ["dir", +"files", +"walk"] +version: "0.0.5" +short_description: "Ways of moving around directory trees" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://github.com/pyjarrett/dir_iterators/actions/workflows/build.yml/badge.svg)](https://github.com/pyjarrett/dir_iterators/actions) +[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/dir_iterators.json)](https://alire.ada.dev/crates/dir_iterators.html) + +## Iterator-based directory walks + +Provides convenient ways to walk directories based on Ada 2012 user-defined +iterators. + +Inspired by [walkdir for Rust](https://github.com/BurntSushi/walkdir). + + +## Walking a directory tree recursively + +```ada +with Ada.Directories; +with Ada.Text_IO; +with Dir_Iterators.Recursive; + +-- ... + +Dir_Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk + := Dir_Iterators.Recursive.Walk (Dir); + +for Dir_Entry of Dir_Walk loop + Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry)); +end loop; +``` + +## Walking a directory tree recursively with a filter + +Use a filter to prune directories and files from the walk. + +```ada +with Ada.Directories; +with Ada.Text_IO; +with Dir_Iterators.Recursive; + +package AD renames Ada.Directories; + +-- ... + + procedure Foo (Include_Dot_Files : Boolean; Dir_Root : String) is + function Filter (E : Ada.Directories.Directory_Entry_Type) return Boolean is + Name : constant String := Ada.Directories.Simple_Name(E); + begin + return Include_Dot_Files + or else (not (Name'Length > 1 and then Name(1) = '.')); + end Filter; + + Walk : constant Dir_Iterators.Recursive.Recursive_Dir_Walk := + Dir_Iterators.Recursive.Walk (Dir_Root, Filter'Access); + begin + for Dir_Entry of Walk loop + Ada.Text_IO.Put_Line(Ada.Directories.Full_Name(Dir_Entry)); + end loop; + end Foo; +``` + + diff --git a/_crates/dirty_booleans.md b/_crates/dirty_booleans.md new file mode 100644 index 00000000..bf57cbe7 --- /dev/null +++ b/_crates/dirty_booleans.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "dirty_booleans" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["boolean", +"dirty", +"comparison"] +version: "0.1.0" +short_description: "Comparisons with 0/1, T/F, Y/N, Yes/No, etc." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/dotenv.md b/_crates/dotenv.md new file mode 100644 index 00000000..92233513 --- /dev/null +++ b/_crates/dotenv.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "dotenv" +authors: ["Heziode"] +maintainers: ["Heziode "] +licenses: ["BSD-2-Clause"] +websites: ["https://github.com/Heziode/ada-dotenv"] +tags: ["dotenv", +"env", +"environment", +"variables", +"config", +"settings"] +version: "1.0.0" +short_description: "Loads environment variables from .env for Ada projects." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/dummyserver.md b/_crates/dummyserver.md new file mode 100644 index 00000000..e3fb6da2 --- /dev/null +++ b/_crates/dummyserver.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "dummyserver" +authors: ["Bent Bracke"] +maintainers: ["Bent Bracke "] +licenses: ["CC0-1.0"] +websites: ["https://github.com/bracke/dummyserver"] +tags: ["http", +"server", +"test", +"terminal", +"console"] +version: "1.0.0" +short_description: "DummyServer is a terminal program that serves dummy content" +dependencies: [{crate: "json", version: "^5.0.3"}] +configuration_variables: [] +configuration_values: [] + +--- +DummyServer is a terminal program that serves dummy content (resources). These resources are defined in a single JSON configuration and configuration is thus very simple and fast. The prime purpose of DummyServer is to serve content to test client applications. + diff --git a/_crates/dynamo.md b/_crates/dynamo.md new file mode 100644 index 00000000..f2ae5679 --- /dev/null +++ b/_crates/dynamo.md @@ -0,0 +1,40 @@ +--- +layout: crate +crate: "dynamo" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/dynamo"] +tags: ["uml", +"generator", +"database"] +version: "1.4.0" +short_description: "Dynamo Ada Generator" +dependencies: [{crate: "ado_all", version: "2.4.0"}, +{crate: "ado_mysql", version: "2.4.0"}, +{crate: "ado_postgresql", version: "2.4.0"}, +{crate: "ado_sqlite", version: "2.4.0"}, +{crate: "elada", version: "^1.8.6"}, +{crate: "libgpr", version: "*"}, +{crate: "security", version: "^1.5.0"}, +{crate: "serverfaces", version: "1.6.0"}, +{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}, +{crate: "xmlada", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/dynamo/badges/build.json)](https://porion.vacs.fr/porion/projects/view/dynamo/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/dynamo/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/dynamo/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/dynamo/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/dynamo/summary) + +This Ada05 application is a code generator used to generate +an Ada Web Application or database mappings from hibernate-like +XML description, YAML doctrine model or UML models. It provides various commands for the +generation of a web application which uses the Ada Web Application framework +(https://gitlab.com/stcarrez/ada-awa/). + + + diff --git a/_crates/eagle_lander.md b/_crates/eagle_lander.md new file mode 100644 index 00000000..f55d4a69 --- /dev/null +++ b/_crates/eagle_lander.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "eagle_lander" +authors: [] +maintainers: ["fabien.choutea@gmail.com"] +licenses: ["GPL-3.0-only"] +websites: [] +tags: ["simulator", +"game", +"gtk"] +version: "1.2.0" +short_description: "Apollo 11 lunar lander simulator" +dependencies: [{crate: "gtkada", version: "^21"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/easy_graphics.md b/_crates/easy_graphics.md new file mode 100644 index 00000000..fcefdc5e --- /dev/null +++ b/_crates/easy_graphics.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "easy_graphics" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/SMerrony/easy_graphic"] +tags: ["graphics", +"image", +"ppm", +"pam", +"gif", +"turtle"] +version: "0.1.0" +short_description: "Very Simple Graphics Package" +dependencies: [{crate: "gnat", version: ">=13.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Overview + +Easy_Graphics is a simple library for generating graphical output from your Ada program. + +Typical use cases might be educational projects, prototyping, programming challenges, +or simply when you want to visualise something quickly in a larger system. + + diff --git a/_crates/edc_client.md b/_crates/edc_client.md new file mode 100644 index 00000000..6ff1ade6 --- /dev/null +++ b/_crates/edc_client.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "edc_client" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/edc_client"] +tags: ["embedded", +"rp2040"] +version: "1.5.1" +short_description: "Client library for: github.com/hgrodriguez/embedded-dashboard-console" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/eeprom_i2c.md b/_crates/eeprom_i2c.md new file mode 100644 index 00000000..c38b4f49 --- /dev/null +++ b/_crates/eeprom_i2c.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "eeprom_i2c" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/eeprom_i2c"] +tags: ["embedded", +"nostd", +"eeprom", +"rp2040", +"i2c"] +version: "6.0.0" +short_description: "EEPROM I2C drivers library for embedded platforms" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/elada.md b/_crates/elada.md new file mode 100644 index 00000000..b48d4bf5 --- /dev/null +++ b/_crates/elada.md @@ -0,0 +1,38 @@ +--- +layout: crate +crate: "elada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-el"] +tags: ["web", +"expression", +"expander", +"parser"] +version: "1.8.7" +short_description: "Expression Language Library (JSR245)" +dependencies: [{crate: "utilada", version: "^2.5.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-el/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-el/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-el/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-el/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-el/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-el/summary) + +This Ada05 library provides the support for a simple Expression Language +close to the Java Unified Expression Language (EL). + +The API provided by the EL library is inspired from the Java +Unified Expression Language shared by the JSP 2.1 and JSF 1.2 technologies. +See Expression Language specification in JSR245 +(https://jcp.org/en/jsr/summary?id=245) + +The EL expression is intensively used in web development applications built +on top of various Java technologies but also on top of +[Ada Web Application](https://gitlab.com/stcarrez/ada-awa) +and [Ada Server Faces](https://gitlab.com/stcarrez/ada-asf). + + + + diff --git a/_crates/elevator.md b/_crates/elevator.md new file mode 100644 index 00000000..2e0dc959 --- /dev/null +++ b/_crates/elevator.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "elevator" +authors: ["Thai Son Hoang"] +maintainers: ["Thai Son Hoang "] +licenses: ["CC-BY-SA-4.0"] +websites: ["https://github.com/ada-Soton/elevator"] +tags: ["elevator", +"teaching"] +version: "1.0.0" +short_description: "A Simple Elevator System" +dependencies: [{crate: "gnatprove", version: "^12.1.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/elogs.md b/_crates/elogs.md new file mode 100644 index 00000000..dfa4180d --- /dev/null +++ b/_crates/elogs.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "elogs" +authors: ["Kevin Chadwick"] +maintainers: ["Kevin Chadwick "] +licenses: ["ISC OR BSD-2-Clause"] +websites: ["https://github.com/kevlar700/elogs"] +tags: ["spark", +"embedded", +"zfp", +"logging", +"log"] +version: "1.2.0" +short_description: "Embedded logging, proven absent of runtime errors" +dependencies: [{crate: "gnat", version: "(>=13 & <2000) | ^11 | >=2020"}] +configuration_variables: [{name: 'Device_ID_Length', type: 'Integer range -9223372036854775808 .. 9223372036854775807', default: "12"}, +{name: 'Max_Log_Count', type: 'Integer range -9223372036854775808 .. 9223372036854775807', default: "50"}, +{name: 'Max_Message_Length', type: 'Integer range -9223372036854775808 .. 9223372036854775807', default: "200"}, +{name: 'Version_Length', type: 'Integer range -9223372036854775808 .. 9223372036854775807', default: "8"}] +configuration_values: [] + +--- + + diff --git a/_crates/emacs_ada_mode.md b/_crates/emacs_ada_mode.md new file mode 100644 index 00000000..29a6f1da --- /dev/null +++ b/_crates/emacs_ada_mode.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "emacs_ada_mode" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://www.nongnu.org/ada-mode/"] +tags: ["emacs", +"ada-mode"] +version: "8.1.0" +short_description: "Parser for Emacs ada-mode" +dependencies: [{crate: "emacs_wisi", version: "~4.3.0"}, +{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "re2c", version: ">=2.0.3"}, +{crate: "stephes_ada_library", version: "~3.7.3"}, +{crate: "wisitoken", version: "~4.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/emacs_gpr_mode.md b/_crates/emacs_gpr_mode.md new file mode 100644 index 00000000..dad23b5d --- /dev/null +++ b/_crates/emacs_gpr_mode.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "emacs_gpr_mode" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://elpa.gnu.org/packages/gpr-mode.html"] +tags: ["indent", +"highlight", +"parser", +"gpr", +"emacs"] +version: "1.0.5" +short_description: "parser for Emacs gpr mode" +dependencies: [{crate: "emacs_wisi", version: "~4.3.2"}, +{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "re2c", version: ">=2.0.3"}, +{crate: "stephes_ada_library", version: "~3.7.3"}, +{crate: "wisitoken", version: "~4.2.1"}] +configuration_variables: [] +configuration_values: [] + +--- +Generalized LR error-correcting parser generated using WisiToken, +interfaced to Emacs via the wisi package. + +Provides semantic highlighting, indent, single-file navigation. + + diff --git a/_crates/emacs_gpr_query.md b/_crates/emacs_gpr_query.md new file mode 100644 index 00000000..03c309b8 --- /dev/null +++ b/_crates/emacs_gpr_query.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "emacs_gpr_query" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://elpa.gnu.org/packages/gpr-query.html"] +tags: ["emacs", +"xref"] +version: "1.0.2" +short_description: "Emacs xref backend using information output by GNAT compiler." +dependencies: [{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "gnatcoll", version: "^22.0.0"}, +{crate: "gnatcoll_sqlite", version: "^22.0.0"}, +{crate: "gnatcoll_xref", version: "^22.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/emacs_wisi.md b/_crates/emacs_wisi.md new file mode 100644 index 00000000..bb9fb9b7 --- /dev/null +++ b/_crates/emacs_wisi.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "emacs_wisi" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://elpa.gnu.org/packages/wisi.html"] +tags: ["emacs", +"indent", +"project", +"compile", +"xref"] +version: "4.3.2" +short_description: "Ada code for Emacs wisi ELPA package" +dependencies: [{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "stephes_ada_library", version: "~3.7.2"}, +{crate: "wisitoken", version: "~4.2.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/emacs_wisitoken_grammar_mode.md b/_crates/emacs_wisitoken_grammar_mode.md new file mode 100644 index 00000000..b8309c0a --- /dev/null +++ b/_crates/emacs_wisitoken_grammar_mode.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "emacs_wisitoken_grammar_mode" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://elpa.gnu.org/packages/wisitoken-grammar-mode.html"] +tags: ["indent", +"highlight", +"parser", +"emacs"] +version: "1.3.0" +short_description: "parser for Emacs wisitoken-grammar mode" +dependencies: [{crate: "emacs_wisi", version: "~4.2.0"}, +{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "re2c", version: ">=2.2"}, +{crate: "stephes_ada_library", version: "~3.7.2"}, +{crate: "wisitoken", version: "~4.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +Generalized LR error-correcting parser for WisiToken grammar source +files, generated using WisiToken, interfaced to Emacs via the wisi +package. + +Provides semantic highlighting, indent, single-file navigation. + + diff --git a/_crates/embedded_components.md b/_crates/embedded_components.md new file mode 100644 index 00000000..4cd31beb --- /dev/null +++ b/_crates/embedded_components.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "embedded_components" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"nostd"] +version: "0.3.0" +short_description: "Platform agnostic drivers to interface external components" +dependencies: [{crate: "adl_middleware", version: "~0.2.0"}, +{crate: "gnat", version: ">=11.2 & <2000"}, +{crate: "hal", version: "~0.3.1"}] +configuration_variables: [] +configuration_values: [] + +--- +# embedded-components + +Platform agnostic drivers to interface external components. + +This crate is a snapshot of the `components` of [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/components). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + + + diff --git a/_crates/emdee.md b/_crates/emdee.md new file mode 100644 index 00000000..38d493fb --- /dev/null +++ b/_crates/emdee.md @@ -0,0 +1,38 @@ +--- +layout: crate +crate: "emdee" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/SMerrony/emdee"] +tags: ["performance", +"theatre", +"midi", +"mp3", +"soundtrack", +"player", +"wav", +"flac", +"ogg", +"music", +"ffplay", +"aplaymidi", +"playsmf"] +version: "0.2.1" +short_description: "Performance assistant for Musical Directors" +dependencies: [{crate: "gnat", version: "^13.0"}, +{crate: "gtkada", version: "^24.0.0"}, +{crate: "ada_toml", version: "~0.4.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Overview + +`eMDee` is a live performance and rehearsal assistant for musical directors which removes the need to have folders of tracks and command-line windows open in order to play backing tracks for performance groups such as singers, choirs, and theatre-groups. + +The MD can plan in advance the order of performance; later, `eMDee` will facilitate the playing of each track in the specfied order during the performance. + +Additional controls may be added to specific tracks such as changing the volume level. + + diff --git a/_crates/emojis.md b/_crates/emojis.md new file mode 100644 index 00000000..10d4c207 --- /dev/null +++ b/_crates/emojis.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "emojis" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/emojis"] +tags: ["emoji", +"string", +"text", +"unicode"] +version: "1.0.1" +short_description: "A library to replace names between colons with emojis" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/encryption_utilities.md b/_crates/encryption_utilities.md new file mode 100644 index 00000000..1cf65118 --- /dev/null +++ b/_crates/encryption_utilities.md @@ -0,0 +1,36 @@ +--- +layout: crate +crate: "encryption_utilities" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/bracke/Encryption-utilities"] +tags: ["threefish256", +"threefish512", +"threefish1024", +"xor"] +version: "20220701.0.0" +short_description: "Utility programs for the encryption algorithms included in the PragmARC" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Encryption utilities + +The PragmAda Reusable Components (https://github.com/jrcarter/PragmARC) contain implementations of the Threefish-256 (implemented directly from the specification in Section 3.3 of the Skein paper V1.3 [https://www.schneier.com/skein.pdf]), Threefish-512, Threefish-1024, and XOR encryption algorithms. Threefish-512 and Threefish-1024 are provided by Daniel Norte de Moraes (https://github.com/danieagle). + +Test cases specifically for Threefish are at https://sites.google.com/site/bartoszmalkowski/threefish and https://github.com/bmalkow/java-bc-threefish. + +Tf_Test runs the test cases for Threefish-256 successfully (on a little-endian machine). It also encrypts certain blocks and presents the encrypted blocks, and shows that they decrypt correctly. Tf_Test uses PragmARC.Images from https://github.com/jrcarter/PragmARC. Tf_Test_512 and Tf_Test_1024, provided by Daniel Norte de Moraes (https://github.com/danieagle), do the same for Threefish-512 and Threefish-1024. + +TF_Crypt is a command-line program for encrypting and decrypting files with Threefish-256. TF_Crypt uses Password_Line. Files encrypted with TF_Crypt built with GNAT and running on Linux are correctly decrypted by TF_Crypt build with ObjectAda and running on Windows, and vice versa. + +Xcrypt is a command-line program for encrypting and decrypting files with XOR. It uses Password_Line. Since XOR is symmetrical, the same algorithm is used for encrypting and decrypting. One can encrypt twice with multiple keys, and decrypt with the keys in any order. This gives results equivalent to encrypting with a key length of the least common multiple of the lengths of the keys. + +Password_Line is a function for obtaining secret input from a user without echoing it to the screen. It has been tested and works with GNAT on Linux and Windows and ObjectAda 10.3 on Windows. + +Tf_Test*, TF_Crypt, and Xcrypt are GPL-3; Password_Line is GMGPL. + + diff --git a/_crates/endianness.md b/_crates/endianness.md new file mode 100644 index 00000000..1fb0b9b4 --- /dev/null +++ b/_crates/endianness.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "endianness" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/endianness"] +tags: ["spark", +"endianness", +"system"] +version: "1.0.0" +short_description: "Convenience subprograms to convert between Big- and Little-endianness" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/enet.md b/_crates/enet.md new file mode 100644 index 00000000..edb4ff34 --- /dev/null +++ b/_crates/enet.md @@ -0,0 +1,26 @@ +--- +layout: crate +crate: "enet" +authors: ["Stephane Carrez"] +maintainers: ["Stephane Carrez ", +"Max Reznik "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/stcarrez/ada-enet"] +tags: ["network", +"ip", +"ipv4", +"icmp", +"udp", +"arp", +"dns", +"dhcp", +"ntp"] +version: "1.0.0" +short_description: "Ada Embedded Network Stack" +dependencies: [] +configuration_variables: [{name: 'Default_Random', type: 'Enum (discrete, null)', default: "discrete"}] +configuration_values: [] + +--- + + diff --git a/_crates/enet_stm32.md b/_crates/enet_stm32.md new file mode 100644 index 00000000..0d92f201 --- /dev/null +++ b/_crates/enet_stm32.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "enet_stm32" +authors: ["Stephane Carrez"] +maintainers: ["Stephane Carrez ", +"Max Reznik "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/stcarrez/ada-enet"] +tags: ["stm32", +"enet", +"driver", +"network"] +version: "1.0.0" +short_description: "ENet driver for STM32" +dependencies: [{crate: "cortex_m", version: "~0.5"}, +{crate: "enet", version: "^1.0.0"}, +{crate: "ethernet", version: "^1.0.0"}] +configuration_variables: [{name: 'Extra_Buffers', type: 'Integer range 0 .. 1024', default: "8"}, +{name: 'RX_Ring_Size', type: 'Integer range 0 .. 1024', default: "8"}, +{name: 'TX_Ring_Size', type: 'Integer range 0 .. 1024', default: "8"}] +configuration_values: [] + +--- + + diff --git a/_crates/epoll.md b/_crates/epoll.md new file mode 100644 index 00000000..ac3e5237 --- /dev/null +++ b/_crates/epoll.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "epoll" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/JeremyGrosser/epoll-ada"] +tags: ["linux", +"epoll", +"net"] +version: "0.1.1" +short_description: "Linux epoll binding" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/esp_idf.md b/_crates/esp_idf.md new file mode 100644 index 00000000..e2e6026b --- /dev/null +++ b/_crates/esp_idf.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "esp_idf" +authors: [] +maintainers: ["jk@jkliemann.de"] +licenses: ["MIT"] +websites: [] +tags: ["embedded", +"nostd", +"esp", +"binding", +"riscv", +"xtensa"] +version: "5.0.2-1" +short_description: "Ada binding for the ESP-IDF SDK" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ethernet.md b/_crates/ethernet.md new file mode 100644 index 00000000..edea1666 --- /dev/null +++ b/_crates/ethernet.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "ethernet" +authors: ["Max Reznik"] +maintainers: ["Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/reznikmm/ethernet"] +tags: ["network", +"mdio", +"smi", +"miim", +"phy", +"driver"] +version: "1.0.0" +short_description: "Root crate for ethernet namespace and MDIO/SMI/MIIM interface" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/euler_tools.md b/_crates/euler_tools.md new file mode 100644 index 00000000..20633dd9 --- /dev/null +++ b/_crates/euler_tools.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "euler_tools" +authors: ["Francesc Rocher"] +maintainers: ["Francesc Rocher "] +licenses: ["MIT"] +websites: ["https://github.com/rocher/euler_tools"] +tags: ["project-euler", +"mathematics"] +version: "1.3.0" +short_description: "Assortment of mathematical functions to solve Project Euler problems." +dependencies: [{crate: "gnat", version: ">=2021 | (>=12 & <2000)"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/evdev.md b/_crates/evdev.md new file mode 100644 index 00000000..6792ec19 --- /dev/null +++ b/_crates/evdev.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "evdev" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/evdev-ada"] +tags: ["evdev", +"force-feedback", +"linux", +"input"] +version: "2.0.2" +short_description: "Library for input devices and force-feedback using Linux' evdev API" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ews.md b/_crates/ews.md new file mode 100644 index 00000000..a7f9ab44 --- /dev/null +++ b/_crates/ews.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "ews" +authors: ["Simon Wright "] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/simonjwright/ews"] +tags: ["web", +"server"] +version: "1.11.0" +short_description: "Embedded Web Server" +dependencies: [{crate: "xmlada", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +EWS is a web server construction kit, designed for embedded +applications using the GNAT Ada compiler. + +The project is hosted at https://github.com/simonjwright/ews. + + + diff --git a/_crates/excel_writer.md b/_crates/excel_writer.md new file mode 100644 index 00000000..9670e018 --- /dev/null +++ b/_crates/excel_writer.md @@ -0,0 +1,59 @@ +--- +layout: crate +crate: "excel_writer" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://excel-writer.sourceforge.io/"] +tags: ["excel", +"spreadsheet", +"xls", +"csv"] +version: "19.0.0" +short_description: "Produce Excel spreadsheets" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +![Excel Writer logo](https://excel-writer.sourceforge.io/ew_logo_no_shadow.png) + +Excel_Out is a standalone, portable Ada package for writing Excel spreadsheets with basic formattings and formulas, easily and programmatically. + +* Enables the automatic production of reports +* Fast: 50 sheets per second, with 10,000 data cells each on a slow 1.66 GHz computer +* No interaction needed with Excel or MS Office +* Unconditionally portable (*) +* Endian-neutral +* Object oriented +* Task safe +* Pure Ada 95 (nothing compiler/system specific), can be used in projects in Ada 95, Ada 2005, Ada 2012 and later versions of the language +* Floating-point hardware neutral: no IEEE hardware required +* Tests and demos included +* Includes a CSV parser with related tools. +* Free, open-source + +The creation of an Excel file is as simple as this small procedure: + +```ada +with Excel_Out; + +procedure Small_Demo is + xl : Excel_Out.Excel_Out_File; +begin + xl.Create ("small.xls"); + xl.Put_Line ("This is a small demo for Excel_Out"); + for row in 3 .. 8 loop + for column in 1 .. 8 loop + xl.Write (row, column, row * 1000 + column); + end loop; + end loop; + xl.Close; +end Small_Demo; +``` + +___ + +(*) within limits of compiler's provided integer types and target architecture capacity. + + diff --git a/_crates/fastpbkdf2_ada.md b/_crates/fastpbkdf2_ada.md new file mode 100644 index 00000000..2cb83f67 --- /dev/null +++ b/_crates/fastpbkdf2_ada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "fastpbkdf2_ada" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/fastpbkdf2_ada"] +tags: ["pbkdf2", +"cryptography"] +version: "2.0.0" +short_description: "Binding and an Ada wrapper to fastpbkdf2" +dependencies: [{crate: "openssl", version: "~1.1.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/felix.md b/_crates/felix.md new file mode 100644 index 00000000..965e41a5 --- /dev/null +++ b/_crates/felix.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "felix" +authors: ["Lev Kujawski"] +maintainers: ["Lev Kujawski "] +licenses: ["MIT-0"] +websites: ["https://github.com/lkujaw/felix"] +tags: ["ada1995", +"i18n", +"nls", +"localization", +"localisation", +"l10n"] +version: "0.2.0" +short_description: "X/Open Native Language System (NLS) for Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/florist.md b/_crates/florist.md new file mode 100644 index 00000000..c8595a95 --- /dev/null +++ b/_crates/florist.md @@ -0,0 +1 @@ +Not found: florist* diff --git a/_crates/florist_blady.md b/_crates/florist_blady.md new file mode 100644 index 00000000..25192ad0 --- /dev/null +++ b/_crates/florist_blady.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "florist_blady" +authors: ["Florida State University (FSU)", +"AdaCore"] +maintainers: ["Pascal Pignard "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/Blady-Com/florist"] +tags: ["florist", +"posix", +"bindings"] +version: "6.1.0" +short_description: "POSIX Ada Bindings" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/freetypeada.md b/_crates/freetypeada.md new file mode 100644 index 00000000..2edb84a6 --- /dev/null +++ b/_crates/freetypeada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "freetypeada" +authors: ["Felix Krause"] +maintainers: ["Felix Krause "] +licenses: ["MIT"] +websites: ["https://github.com/flyx/FreeTypeAda"] +tags: ["fonts", +"rendering"] +version: "0.1.0" +short_description: "Thick binding to the FreeType library" +dependencies: [{crate: "libfreetype", version: "^2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/garlic.md b/_crates/garlic.md new file mode 100644 index 00000000..e65193e2 --- /dev/null +++ b/_crates/garlic.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "garlic" +authors: ["AdaCore"] +maintainers: ["Max Reznik "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-2.0"] +websites: ["https://github.com/reznikmm/garlic/wiki"] +tags: ["dsa", +"distributed", +"annex", +"network", +"glade"] +version: "6.0.1" +short_description: "GNAT Library for Ada Distributed Environment (garlic)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/geo_coords.md b/_crates/geo_coords.md new file mode 100644 index 00000000..51b6e045 --- /dev/null +++ b/_crates/geo_coords.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "geo_coords" +authors: ["Saiffullah Sabir Mohamed"] +maintainers: ["Saiffullah Sabir Mohamed "] +licenses: ["MIT"] +websites: ["https://github.com/TechnicalVillager/geo_coords"] +tags: ["geo", +"coordinates", +"latitude", +"longitude", +"distance", +"bearing", +"haversine"] +version: "1.0.0" +short_description: "Geo coordinates calculation for determining Location, Distance, Bearing" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/geste.md b/_crates/geste.md new file mode 100644 index 00000000..16aabb16 --- /dev/null +++ b/_crates/geste.md @@ -0,0 +1,70 @@ +--- +layout: crate +crate: "geste" +authors: ["Fabien Chouteau "] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/GESTE"] +tags: ["game", +"nostd", +"rendering", +"sprite"] +version: "1.1.0" +short_description: "GEneric Sprite and Tile Engine" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + +[![Build Status](https://travis-ci.org/Fabien-Chouteau/GESTE.svg?branch=master)](https://travis-ci.org/Fabien-Chouteau/GESTE) +[![codecov](https://codecov.io/gh/Fabien-Chouteau/GESTE/branch/master/graph/badge.svg)](https://codecov.io/gh/Fabien-Chouteau/GESTE) + +GESTE is a sprite and tile 2D render engine designed to run on +micro-controllers low performance systems. GESTE also provides a basic math and +physic engine using fixed point arithmetic. + +## Creating maps + +GESTE is developed in parallel with +[tiled-code-gen](https://github.com/Fabien-Chouteau/tiled-code-gen), a tool +that generates code from the [Tiled Map Editor](https://www.mapeditor.org/). + +## Examples + +The crate `geste_examples` contains 3 examples of different game genre: + - platformer + - RPG + - racing + +## Design + +### Layers + +In GESTE, a scene is made of layers. Native layers can be `Sprite`, `Grid` or +`Text`. You can implement you own type of layers if you want to. + + - `Sprite` layers display a single tile at a given position + - `Grid` layers display a grid of tiles at a given position + - `Text` layers display a text at a given position + +Layers have a priority which tells in which order they will be drawn on the +screen. + +### Rendering + +The rendering algorithm is somewhat similar to ray casting. Instead of taking +each objects of the scene and drawing it on the screen, the engine takes each +pixel and tries to find its color from the different objects of the scene. + +For each pixel of the area that is being drawn, GESTE will go through the list +of layers and see if the corresponding pixel inside the layer is transparent or +not. When a non transparent pixel is found, the pixel is pushed to the screen +and the procedure starts again for the next pixel. If all the layers have a +transparent pixel, the background color is used. + +The more layers to go through, the more time time it will take to render a +pixel. + + + diff --git a/_crates/geste_examples.md b/_crates/geste_examples.md new file mode 100644 index 00000000..4c995abd --- /dev/null +++ b/_crates/geste_examples.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "geste_examples" +authors: ["Fabien Chouteau "] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/GESTE-examples"] +tags: [] +version: "1.0.1" +short_description: "Example for the GESTE game engine" +dependencies: [{crate: "geste", version: "^1.0.0"}, +{crate: "sdlada", version: "^2.3.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/get_password.md b/_crates/get_password.md new file mode 100644 index 00000000..5e9fc56f --- /dev/null +++ b/_crates/get_password.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "get_password" +authors: ["Riccardo Bernardini"] +maintainers: ["Riccardo Bernardini "] +licenses: ["MIT"] +websites: ["https://gitlab.com/my-ada-library/get_password"] +tags: ["password", +"echo", +"textio"] +version: "1.0.0-rc" +short_description: "Read a string without echo, in password-like style" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is a small Ada library that provides a procedure Get_Password that reads a string from the terminal replacing each character with a *. The input can be terminated both by the user pressing end-of-line or when the buffer is filled. Currently it works only on POSIX-based system. This version was checked with Spark + diff --git a/_crates/getada.md b/_crates/getada.md new file mode 100644 index 00000000..2993f272 --- /dev/null +++ b/_crates/getada.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "getada" +authors: ["A.J. Ianozi"] +maintainers: ["A.J. Ianozi "] +licenses: ["GPL-3.0-only"] +websites: ["https://www.getada.dev/"] +tags: ["ada", +"alire", +"tool", +"utility"] +version: "1.0.1" +short_description: "The unofficial mac and linux installer for Alire." +dependencies: [{crate: "gnat", version: ">=12 & <2000"}, +{crate: "gnatcoll", version: "^24.0.0"}, +{crate: "zipada", version: "^58.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/getopt.md b/_crates/getopt.md new file mode 100644 index 00000000..bc2ab77f --- /dev/null +++ b/_crates/getopt.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "getopt" +authors: ["nytpu"] +maintainers: ["nytpu "] +licenses: ["MPL-2.0"] +websites: ["https://git.sr.ht/~nytpu/getopt-ada"] +tags: ["arguments", +"options", +"flags", +"getopt"] +version: "2.0.0" +short_description: "POSIX getopt(3) for Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gfx_core.md b/_crates/gfx_core.md new file mode 100644 index 00000000..a7225158 --- /dev/null +++ b/_crates/gfx_core.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gfx_core" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["graphics"] +version: "0.1.0" +short_description: "Modular Portable Graphics Library, Core Components" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gfx_rasteriser.md b/_crates/gfx_rasteriser.md new file mode 100644 index 00000000..c9122029 --- /dev/null +++ b/_crates/gfx_rasteriser.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gfx_rasteriser" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["graphics"] +version: "0.1.0" +short_description: "Modular Portable Graphics Library, Primitive's Rasteriser" +dependencies: [{crate: "gfx_core", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gid.md b/_crates/gid.md new file mode 100644 index 00000000..17a18f13 --- /dev/null +++ b/_crates/gid.md @@ -0,0 +1,68 @@ +--- +layout: crate +crate: "gid" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://gen-img-dec.sourceforge.io/"] +tags: ["image", +"animated", +"animation", +"bitmap", +"color", +"decoder", +"decoding", +"decompress", +"digitization", +"lossless", +"lossy", +"rbg", +"steganography", +"transparency", +"transparent", +"bmp", +"gif", +"jpeg", +"jpg", +"pbm", +"pgm", +"png", +"pnm", +"ppm", +"qoi", +"tga", +"targa"] +version: "13.0.1" +short_description: "Generic Image Decoder - decode a broad variety of image formats" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + image + +The Generic Image Decoder (GID) is a low-level Ada package for decoding a broad variety of image formats, +from any data stream, to any kind of medium, be it an in-memory bitmap, a GUI object, some other stream, +floating-point data for scientific calculations, a browser element, a device, ... + +Currently supported formats are: BMP, GIF, JPEG, PNG, PNM (PBM, PGM, PPM), QOI, TGA + +Animations (GIF, PNG) are supported. + +Some features: + +* *Fast*! Up to 2.8 times faster than ImageMagick. +* Task safe +* Endian-neutral +* Multi-platform, but native code build +* Standalone (no dependency on other libraires, bindings, etc.; no extra component needed for running) +* Unconditionally portable code: OS-, CPU-, compiler- independent code (*). +* Pure Ada 2012: this package can be used in projects in Ada 2012 and later versions of the Ada language +* Tests, demos and tools included. +* *Free*, open-source + +______ + +(*) within limits of compiler's provided integer types and target architecture capacity. + + diff --git a/_crates/globe_3d.md b/_crates/globe_3d.md new file mode 100644 index 00000000..fcc026ed --- /dev/null +++ b/_crates/globe_3d.md @@ -0,0 +1,42 @@ +--- +layout: crate +crate: "globe_3d" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://globe3d.sourceforge.io/"] +tags: ["gl", +"opengl", +"rendering", +"graphics", +"3d-rendering", +"3d-graphics", +"space-partition", +"collision", +"portal"] +version: "2023.11.12" +short_description: "GLOBE_3D: GL Object Based Engine for 3D" +dependencies: [{crate: "gid", version: ">=9.0.0"}, +{crate: "zipada", version: "^58.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +GLOBE_3D is a free, open-source, real-time 3D Engine written in Ada, based on OpenGL. + +![GLOBE_3D Screenshot](https://a.fsdn.com/con/app/proj/globe3d/screenshots/pure_evil_mini.jpg "Screenshot GLOBE_3D") + +* Real-time rendering +* Full eye movements and rotations ("6D") +* Displays combinations of colours, materials, textures +* Multitexturing +* Transparency +* Portal rendering +* Binary space partition (BSP) +* Collision detection +* Screenshots (.bmp) and video captures (.avi) +* Input-output of 3D objects +* Import from 3D Studio Max, id Software Radiant, VRML, Wavefront formats +* Tests, tools and demos included + + diff --git a/_crates/glut.md b/_crates/glut.md new file mode 100644 index 00000000..ae0b3683 --- /dev/null +++ b/_crates/glut.md @@ -0,0 +1 @@ +Not found: glut* diff --git a/_crates/gnat_arm_elf.md b/_crates/gnat_arm_elf.md new file mode 100644 index 00000000..e0f5001c --- /dev/null +++ b/_crates/gnat_arm_elf.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnat_arm_elf" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "14.2.1" +short_description: "The GNAT Ada compiler - ARM cross-compiler" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnat_avr_elf.md b/_crates/gnat_avr_elf.md new file mode 100644 index 00000000..a7c3b7ac --- /dev/null +++ b/_crates/gnat_avr_elf.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnat_avr_elf" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "14.2.1" +short_description: "The GNAT Ada compiler - AVR cross-compiler" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnat_external.md b/_crates/gnat_external.md new file mode 100644 index 00000000..b6e2b54a --- /dev/null +++ b/_crates/gnat_external.md @@ -0,0 +1 @@ +Not found: gnat_external* diff --git a/_crates/gnat_math_extensions.md b/_crates/gnat_math_extensions.md new file mode 100644 index 00000000..1e1219c1 --- /dev/null +++ b/_crates/gnat_math_extensions.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "gnat_math_extensions" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/simonjwright/gnat_math_extensions"] +tags: ["matrices", +"blas", +"lapack"] +version: "1.1.0" +short_description: "Eigenvalues, eigenvectors for non-symmetric, non-Hermitian matrices" +dependencies: [{crate: "libblas", version: "*"}, +{crate: "liblapack", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnat_native.md b/_crates/gnat_native.md new file mode 100644 index 00000000..7340134b --- /dev/null +++ b/_crates/gnat_native.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnat_native" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "14.2.1" +short_description: "The GNAT Ada compiler - Native" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnat_riscv64_elf.md b/_crates/gnat_riscv64_elf.md new file mode 100644 index 00000000..663f9e16 --- /dev/null +++ b/_crates/gnat_riscv64_elf.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnat_riscv64_elf" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "14.2.1" +short_description: "The GNAT Ada compiler - RISC-V cross-compiler" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnat_xtensa_esp32_elf.md b/_crates/gnat_xtensa_esp32_elf.md new file mode 100644 index 00000000..fe6c11b6 --- /dev/null +++ b/_crates/gnat_xtensa_esp32_elf.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnat_xtensa_esp32_elf" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later AND GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "14.2.1" +short_description: "The GNAT Ada compiler - ESP32 cross-compiler" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll.md b/_crates/gnatcoll.md new file mode 100644 index 00000000..8697f405 --- /dev/null +++ b/_crates/gnatcoll.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "gnatcoll" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-core"] +tags: ["gnatcoll", +"json", +"email", +"refcount", +"projects", +"gpr", +"vfs"] +version: "25.0.0" +short_description: "GNAT Components Collection - Core packages" +dependencies: [{crate: "gnat", version: ">=13"}, +{crate: "libgpr", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_gmp.md b/_crates/gnatcoll_gmp.md new file mode 100644 index 00000000..a5cc1ab6 --- /dev/null +++ b/_crates/gnatcoll_gmp.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "gnatcoll_gmp" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"gmp", +"arbitrary", +"precision", +"arithmetic"] +version: "25.0.0" +short_description: "GNAT Components Collection - GNU Multiple Precision Arithmetic binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "libgmp", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_iconv.md b/_crates/gnatcoll_iconv.md new file mode 100644 index 00000000..5be0329c --- /dev/null +++ b/_crates/gnatcoll_iconv.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "gnatcoll_iconv" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"iconv", +"i18n"] +version: "25.0.0" +short_description: "GNAT Components Collection - iconv binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_lzma.md b/_crates/gnatcoll_lzma.md new file mode 100644 index 00000000..620d4100 --- /dev/null +++ b/_crates/gnatcoll_lzma.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "gnatcoll_lzma" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"lzma", +"compression", +"7z", +"7zip"] +version: "25.0.0" +short_description: "GNAT Components Collection - lzma binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "liblzma", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_omp.md b/_crates/gnatcoll_omp.md new file mode 100644 index 00000000..dbe4a431 --- /dev/null +++ b/_crates/gnatcoll_omp.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gnatcoll_omp" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"openmp", +"libgomp"] +version: "25.0.0" +short_description: "GNAT Components Collection - OpenMP binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "libgomp", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_postgres.md b/_crates/gnatcoll_postgres.md new file mode 100644 index 00000000..89b72d8d --- /dev/null +++ b/_crates/gnatcoll_postgres.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "gnatcoll_postgres" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-db"] +tags: ["gnatcoll", +"gnatcoll-db", +"postgres", +"postgresql", +"database"] +version: "25.0.0" +short_description: "GNAT Components Collection - postgres" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "gnatcoll_sql", version: "~25.0.0"}, +{crate: "postgresql", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_python.md b/_crates/gnatcoll_python.md new file mode 100644 index 00000000..3aef8a97 --- /dev/null +++ b/_crates/gnatcoll_python.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gnatcoll_python" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-only WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"python", +"python2"] +version: "21.0.0" +short_description: "GNAT Components Collection - python2 binding" +dependencies: [{crate: "gnatcoll", version: "~21.0.0"}, +{crate: "libpython2dev", version: "^2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_python3.md b/_crates/gnatcoll_python3.md new file mode 100644 index 00000000..a0124998 --- /dev/null +++ b/_crates/gnatcoll_python3.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gnatcoll_python3" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-only WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"python", +"python3"] +version: "23.0.0" +short_description: "GNAT Components Collection - python3 binding" +dependencies: [{crate: "gnatcoll", version: "~23.0.0"}, +{crate: "libpython3dev", version: "^3.10"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_readline.md b/_crates/gnatcoll_readline.md new file mode 100644 index 00000000..d972e4c5 --- /dev/null +++ b/_crates/gnatcoll_readline.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gnatcoll_readline" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"readline", +"cli"] +version: "25.0.0" +short_description: "GNAT Components Collection - readline binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "libreadline", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_sql.md b/_crates/gnatcoll_sql.md new file mode 100644 index 00000000..8c5c2ae4 --- /dev/null +++ b/_crates/gnatcoll_sql.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "gnatcoll_sql" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-db"] +tags: ["gnatcoll", +"gnatcoll-db", +"sql", +"database"] +version: "25.0.0" +short_description: "GNAT Components Collection - sql" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_sqlite.md b/_crates/gnatcoll_sqlite.md new file mode 100644 index 00000000..8ec6d1a9 --- /dev/null +++ b/_crates/gnatcoll_sqlite.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "gnatcoll_sqlite" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-db"] +tags: ["gnatcoll", +"gnatcoll-db", +"sqlite", +"sql", +"database"] +version: "25.0.0" +short_description: "GNAT Components Collection - sqlite" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "gnatcoll_sql", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_syslog.md b/_crates/gnatcoll_syslog.md new file mode 100644 index 00000000..86eca9f5 --- /dev/null +++ b/_crates/gnatcoll_syslog.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "gnatcoll_syslog" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"syslog", +"logging"] +version: "25.0.0" +short_description: "GNAT Components Collection - syslog binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_xref.md b/_crates/gnatcoll_xref.md new file mode 100644 index 00000000..45227190 --- /dev/null +++ b/_crates/gnatcoll_xref.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "gnatcoll_xref" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-db"] +tags: ["gnatcoll", +"database", +"xref", +"ali"] +version: "25.0.0" +short_description: "GNAT Components Collection - xref" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "gnatcoll_iconv", version: "~25.0.0"}, +{crate: "gnatcoll_sql", version: "~25.0.0"}, +{crate: "gnatcoll_sqlite", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcoll_zlib.md b/_crates/gnatcoll_zlib.md new file mode 100644 index 00000000..65c0ed47 --- /dev/null +++ b/_crates/gnatcoll_zlib.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "gnatcoll_zlib" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gnatcoll-bindings"] +tags: ["gnatcoll", +"bindings", +"zlib", +"compression", +"zip", +"deflate"] +version: "25.0.0" +short_description: "GNAT Components Collection - zlib binding" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "zlib", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatcov.md b/_crates/gnatcov.md new file mode 100644 index 00000000..b11e36e2 --- /dev/null +++ b/_crates/gnatcov.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "gnatcov" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: [] +websites: [] +tags: ["coverage", +"analysis", +"test"] +version: "22.0.1" +short_description: "Coverage Analysis Tool" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatdist_garlic.md b/_crates/gnatdist_garlic.md new file mode 100644 index 00000000..5f2bdc22 --- /dev/null +++ b/_crates/gnatdist_garlic.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gnatdist_garlic" +authors: ["AdaCore"] +maintainers: ["Max Reznik "] +licenses: ["GPL-2.0-or-later"] +websites: ["https://github.com/reznikmm/garlic/wiki"] +tags: ["dsa", +"distributed", +"annex", +"network", +"glade"] +version: "6.0.1" +short_description: "The configuration tool gnatdist for GARLIC" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatdoc.md b/_crates/gnatdoc.md new file mode 100644 index 00000000..bdfcc1d5 --- /dev/null +++ b/_crates/gnatdoc.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "gnatdoc" +authors: ["AdaCore"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/gnatdoc"] +tags: ["documentation", +"tools"] +version: "25.0.0" +short_description: "GNAT Documentation Generation Tool" +dependencies: [{crate: "libadalang", version: "^25"}, +{crate: "libgpr2", version: "^25"}, +{crate: "markdown", version: "^25"}, +{crate: "vss", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatformat.md b/_crates/gnatformat.md new file mode 100644 index 00000000..4caf1bd2 --- /dev/null +++ b/_crates/gnatformat.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "gnatformat" +authors: ["AdaCore"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["formatting", +"ada", +"tool"] +version: "25.0.0" +short_description: "Opinionated code formatter for the Ada language" +dependencies: [{crate: "adasat", version: "^25"}, +{crate: "gnatcoll", version: "^25"}, +{crate: "libadalang", version: "^25"}, +{crate: "prettier_ada", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnatprove.md b/_crates/gnatprove.md new file mode 100644 index 00000000..8d0cf769 --- /dev/null +++ b/_crates/gnatprove.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gnatprove" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later"] +websites: [] +tags: [] +version: "14.1.1" +short_description: "Automatic formal verification of SPARK code" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gnoga.md b/_crates/gnoga.md new file mode 100644 index 00000000..0a2d93bb --- /dev/null +++ b/_crates/gnoga.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "gnoga" +authors: ["David Botton"] +maintainers: ["Pascal Pignard "] +licenses: ["GPL-3.0-only WITH GCC-exception-3.1"] +websites: ["https://github.com/Blady-Com/gnoga"] +tags: ["gui", +"web", +"server", +"http", +"https", +"ssl"] +version: "2.1.2" +short_description: "gnoga - The GNU Omnificent GUI for Ada" +dependencies: [{crate: "gnat", version: ">=2021 | (>=12 & <2000)"}, +{crate: "simple_components", version: "^4.62.0"}, +{crate: "uxstrings", version: "~0.4.0+alpha-20220803"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gpr_unit_provider.md b/_crates/gpr_unit_provider.md new file mode 100644 index 00000000..b7c80870 --- /dev/null +++ b/_crates/gpr_unit_provider.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "gpr_unit_provider" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "23.0.0" +short_description: "GNAT Project File Library" +dependencies: [{crate: "libadalang", version: "~23.0.0"}, +{crate: "libgpr2", version: "~23.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gprbuild.md b/_crates/gprbuild.md new file mode 100644 index 00000000..a47cdefd --- /dev/null +++ b/_crates/gprbuild.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "gprbuild" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: [] +websites: [] +tags: [] +version: "24.0.1" +short_description: "The GPRBuild Ada/multilanguage build tool" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gsl.md b/_crates/gsl.md new file mode 100644 index 00000000..5f03fa4d --- /dev/null +++ b/_crates/gsl.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "gsl" +authors: ["R Srinivasan"] +maintainers: ["R Srinivasan "] +licenses: [] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Ada binding to Gnu Scientific Library 2.7" +dependencies: [{crate: "gnat", version: ">=12"}, +{crate: "libgsl", version: "^2.7"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/gtkada.md b/_crates/gtkada.md new file mode 100644 index 00000000..cafc90ad --- /dev/null +++ b/_crates/gtkada.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "gtkada" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com", +"reznikmm@gmail.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/adacore/gtkada"] +tags: ["gtk", +"gui"] +version: "25.0.1" +short_description: "An Ada graphical toolkit based on Gtk+" +dependencies: [{crate: "libgtk3", version: ">=3.24.24"}, +{crate: "make", version: "*"}, +{crate: "pkg_config", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +This crate requires Gtk3+ >= 3.24.24 + diff --git a/_crates/gwindows.md b/_crates/gwindows.md new file mode 100644 index 00000000..f43aa799 --- /dev/null +++ b/_crates/gwindows.md @@ -0,0 +1,40 @@ +--- +layout: crate +crate: "gwindows" +authors: ["David Botton", +"Gautier de Montmollin"] +maintainers: ["Felix Patschkowski ", +"gdemont@hotmail.com"] +licenses: ["LGPL-2.0-or-later"] +websites: ["https://sourceforge.net/projects/gnavi/"] +tags: ["gui", +"rad", +"windows"] +version: "1.4.3" +short_description: "GWindows - Ada Framework for Windows Development" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +  GWindows screenshot 1 +   GWindows screenshot 2 +   GWindows screenshot 3 + +**GWindows** is a full Microsoft Windows Rapid Application Development +framework for programming GUIs (Graphical User Interfaces) with Ada. + +Key features of GWindows: + + * Complete Windows framework + * Pure Ada code, standalone + * Object-Oriented + * Code generator (GWenerator) + * License: GMGPL + * Builds to 32 bit and to 64 bit native Windows applications + * Works on both ANSI and Unicode character modes + * Includes GNATCOM, an ActiveX/COM framework + * Tests, demos, samples and tutorials included + * **Free**, Open-Source + + diff --git a/_crates/hac.md b/_crates/hac.md new file mode 100644 index 00000000..3e8e5d53 --- /dev/null +++ b/_crates/hac.md @@ -0,0 +1,37 @@ +--- +layout: crate +crate: "hac" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://hacadacompiler.sourceforge.io/"] +tags: ["hac", +"compiler", +"virtual-machine", +"native", +"semantic", +"parser", +"advent-of-code"] +version: "0.40.0" +short_description: "HAC Ada Compiler: a small, quick Ada compiler covering a subset of Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + hac logo + +HAC (HAC Ada Compiler) is a small, quickly compiling, open-source Ada compiler, covering a subset of the Ada language. +HAC is perhaps the first open-source (albeit partial) Ada compiler fully programmed in Ada itself. + +Features: + +* **Quick**: short programming-compilation-run-test cycles. +* Perfect for scripting jobs. +* Compiles Ada sources from any stream - file, internet, editor data, Zip archive, ... +* Compilation leaves zero compilation temp file - all is done in memory! +* Portable, fully programmed in Ada. +* Can be embedded into another software - see the [**LEA**](https://l-e-a.sourceforge.io/) editor - and even exchange data with it - see the `demo/data_exchange/exchange_native_side.adb` demo. +* **Free**, open-source. + + diff --git a/_crates/hal.md b/_crates/hal.md new file mode 100644 index 00000000..2ade0062 --- /dev/null +++ b/_crates/hal.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "hal" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: [] +tags: ["embedded", +"hal", +"nostd"] +version: "1.0.0" +short_description: "Hardware Abstraction Layer (HAL)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +# hal + +Hardware Abstraction Layer: interfaces definitions to abstract access to common +hardware devices and protocols + +This crate is a snapshot of the `hal` in [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/hal/src). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + + + diff --git a/_crates/hangman.md b/_crates/hangman.md new file mode 100644 index 00000000..c10ab0c5 --- /dev/null +++ b/_crates/hangman.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "hangman" +authors: ["Jon Hollan, Mark Hoffman, & Brandon Ball"] +maintainers: ["alejandro@mosteo.com"] +licenses: [] +websites: [] +tags: [] +version: "1.0.0" +short_description: "Hangman game for the console" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/hello.md b/_crates/hello.md new file mode 100644 index 00000000..d3dab45f --- /dev/null +++ b/_crates/hello.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "hello" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: ["https://github.com/alire-project/hello"] +tags: ["hello", +"demo"] +version: "1.0.2" +short_description: "'Hello, world!' demonstration project" +dependencies: [{crate: "libhello", version: "^1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/hex_format.md b/_crates/hex_format.md new file mode 100644 index 00000000..d0a721bb --- /dev/null +++ b/_crates/hex_format.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "hex_format" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/JeremyGrosser/hex_format"] +tags: ["hex", +"pure", +"embedded", +"string", +"text", +"format"] +version: "0.1.0" +short_description: "Hexadecimal string formatting for modular types" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/hirtos.md b/_crates/hirtos.md new file mode 100644 index 00000000..bec70495 --- /dev/null +++ b/_crates/hirtos.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "hirtos" +authors: ["J. German Rivera"] +maintainers: ["J. German Rivera "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/jgrivera67/HiRTOS"] +tags: ["rtos"] +version: "2.0.0" +short_description: "High-Integrity RTOS" +dependencies: [] +configuration_variables: [{name: 'Platform', type: 'Enum (arm_fvp, esp32_c3)', default: "arm_fvp"}] +configuration_values: [] + +--- + + diff --git a/_crates/hirtos_separation_kernel.md b/_crates/hirtos_separation_kernel.md new file mode 100644 index 00000000..d33ff1a7 --- /dev/null +++ b/_crates/hirtos_separation_kernel.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "hirtos_separation_kernel" +authors: ["J. German Rivera"] +maintainers: ["J. German Rivera "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/jgrivera67/HiRTOS"] +tags: ["hypervisor"] +version: "2.0.0" +short_description: "High-Integrity RTOS Separation Kernel" +dependencies: [] +configuration_variables: [{name: 'Platform', type: 'Enum (arm_fvp)', default: "arm_fvp"}, +{name: 'Separation_Kernel_Debug_Tracing_On', type: 'Boolean', default: "false"}] +configuration_values: [] + +--- + + diff --git a/_crates/hmac.md b/_crates/hmac.md new file mode 100644 index 00000000..e15050f9 --- /dev/null +++ b/_crates/hmac.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "hmac" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/hmac"] +tags: ["cryptography", +"security", +"hmac"] +version: "2.0.0" +short_description: "HMAC implemented in Ada" +dependencies: [{crate: "sha1", version: "^2.0.0"}, +{crate: "sha2", version: "^2.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/hmc5883.md b/_crates/hmc5883.md new file mode 100644 index 00000000..bb83ae14 --- /dev/null +++ b/_crates/hmc5883.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "hmc5883" +authors: ["Max Reznik"] +maintainers: ["Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/reznikmm/hmc5883"] +tags: ["sensor", +"magnetometer", +"driver"] +version: "1.0.0" +short_description: "Driver for HMC5883L magnetic sensor" +dependencies: [{crate: "gnat", version: ">=11 & <2000"}, +{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/honki_tonks_zivilisationen.md b/_crates/honki_tonks_zivilisationen.md new file mode 100644 index 00000000..d7beadd6 --- /dev/null +++ b/_crates/honki_tonks_zivilisationen.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "honki_tonks_zivilisationen" +authors: ["Stefan Hild"] +maintainers: ["Stefan Hild "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/HonkiTonk/Honki-Tonks-Zivilisationen"] +tags: ["game", +"sfml", +"4x", +"roundbased", +"strategy", +"cross-platform", +"multimedia", +"2d"] +version: "0.5.5305" +short_description: "The Code of my 4X turn-based strategy game." +dependencies: [{crate: "asfml", version: "^2.5.3"}, +{crate: "gnat", version: ">=12.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +Der Code meines 4X-Rundenstrategiespiels. Geschrieben in Ada 2022 unter Verwendung der Ada Standardbibliothek, der ASFML 2.5.4, der CSFML 2.5.1 und der SFML 2.5.1. Nur unter Linux intensiv getestet, sollte aber auch unter anderen Betriebssystemen problemlos funktionieren. + +The Code of my 4X turn-based strategy game. Written in Ada 2022 using the Ada standard library, the ASFML 2.5.4, the CSFML 2.5.1 and the SFML 2.5.1. Only intensively tested under Linux, but should also work without problems under other operating systems. + + diff --git a/_crates/hp41cx_tools.md b/_crates/hp41cx_tools.md new file mode 100644 index 00000000..fd0de453 --- /dev/null +++ b/_crates/hp41cx_tools.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "hp41cx_tools" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://calculator-scripts.sourceforge.io/px-41cx"] +tags: ["calculator", +"tools", +"retrocomputing", +"ada-2022", +"hp-41cx", +"dm41x", +"px41cx"] +version: "1.6.0" +short_description: "HP-41CX emulator Tools" +dependencies: [{crate: "adacl", version: "5.16.0"}, +{crate: "gnat_native", version: "^14.2"}] +configuration_variables: [] +configuration_values: [] + +--- +Tools for manipulating memory dumps from HP-41CX emulators. + +The following HP-41CX emulators are supported: + +* [PX-41CX](https://paxer.net/PX-41CX/) from Paxer. +* [DM41X](https://www.swissmicros.com/product/dm41x) from SwissMicros. + +Currently hex dump files can be decoded to user readable files. + + diff --git a/_crates/hungarian.md b/_crates/hungarian.md new file mode 100644 index 00000000..e35d3d85 --- /dev/null +++ b/_crates/hungarian.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "hungarian" +authors: ["alejandro@mosteo.com"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: [] +version: "1.0.0" +short_description: "Ada wrapper for the fast Stachniss' Hungarian solver" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/image_io.md b/_crates/image_io.md new file mode 100644 index 00000000..e64c1875 --- /dev/null +++ b/_crates/image_io.md @@ -0,0 +1,50 @@ +--- +layout: crate +crate: "image_io" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Image_IO"] +tags: ["image", +"io", +"bmp", +"ppm", +"qoi", +"gif", +"jpg", +"png", +"pnm", +"tga"] +version: "20240725.0.0" +short_description: "Output in BMP,PPM,QOI;input in BMP,GIF,JPG,PNG,PNM,QOI,TGA" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "gid", version: "^13.0.0"}, +{crate: "crc_32", version: "^20240725.0.0"}, +{crate: "z_compression", version: "^20240724.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Image_IO +Output in BMP, PNG, PPM, and QOI formats; input in BMP, GIF, JPG, PNG, PNM, QOI, and TGA formats + +Package Image_IO.Operations provides the ability to input and output images. + +PNG is a lossless compressed format that is widely supported. Uncompressed BMP is a universal format that is very large. PPM is intended to be a set of portable formats, but lacks support by default on some platforms. QOI is a lossless compressed format, but not widely supported. + +Write_P3 uses [PragmARC.Text_IO](https://github.com/jrcarter/PragmARC/blob/Ada-12/pragmarc-text_io.ads) to obtain uniform line terminators across platforms. This can be easily changed to Ada.Text_IO if the line terminators are not a concern. + +Write_PNG uses [Z_Compression](https://github.com/jrcarter/Z_Compression) and [CRC-32](https://github.com/jrcarter/CRC-32). + +Read is a wrapper around [Generic Image Decoder (GID)](https://github.com/zertovitch/gid) for the most common use: reading an image from a file. GID may be used to decode images from other sources, but that generality makes it complex to use. Read ignores transparency (Alpha channel) and only reads the first frame of an animation. + +Pure_RGB is a demo program that reads an image using Read, modifies it to change all color components to the closest of 0 or 255, and outputs the result using Write_PNG. It is invoked with + + pure_rgb + +The output name is the input name with ".png" appended. Pure_RGB does no error handling; if the input file name is omitted, doesn't exist, or is not a supported image format, the program will terminate with an unhandled exception. + +Image_IO and Pure_RGB have been compiled and tested with GNAT 12.3.0 on Linux and ObjectAda 10.5U7 on Windows. + + diff --git a/_crates/image_random.md b/_crates/image_random.md new file mode 100644 index 00000000..90bc246f --- /dev/null +++ b/_crates/image_random.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "image_random" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Image_Random"] +tags: ["random", +"numbers", +"camera"] +version: "20200720.0.0" +short_description: "True random numbers from a digital camera " +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# Image_Random +True random numbers from a digital camera + +This works under Linux with the GNAT compiler; modification for other platforms or compilers is left as an exercise for the desperate + +Ideally, the camera should have its lens cap on, or have a similar dark covering, so the image is of the camera sensor noise + +However, another randomly changing scene, such as a lava lamp or aquarium, may also work + +This is slow and only produces 64 random bytes; if you need more, it is probably best to use these bytes to seed a high-quality +pseudo-random number generator, such as the Threefry generator + + diff --git a/_crates/ini_files.md b/_crates/ini_files.md new file mode 100644 index 00000000..0ae192b7 --- /dev/null +++ b/_crates/ini_files.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "ini_files" +authors: ["Rolf Ebert", +"Gautier de Montmollin"] +maintainers: ["rolf.ebert.gcc@gmx.de", +"gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://sourceforge.net/p/ini-files/"] +tags: ["ini", +"ini-file", +"cfg", +"cfg-file", +"config", +"configuration"] +version: "11.0.0" +short_description: "A standalone, portable Ada package for configuration files" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Config is an Ada package for parsing configuration files (.ini, .inf, .cfg, ...) and retrieving keys of various types. New values for single keys, or entire sections, can be set. + +* Standalone and unconditionally portable code. +* Pure Ada 2005: nothing compiler- / system- specific. +* Can be used in projects in Ada 2005, Ada 2012 and later versions of the Ada language. +* Object oriented. +* Tests and demos included. + + diff --git a/_crates/inotify.md b/_crates/inotify.md new file mode 100644 index 00000000..4e7b688f --- /dev/null +++ b/_crates/inotify.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "inotify" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/inotify-ada"] +tags: ["inotify", +"linux"] +version: "2.0.1" +short_description: "Monitor filesystem events using Linux' inotify API" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/intl.md b/_crates/intl.md new file mode 100644 index 00000000..0cc7bc1d --- /dev/null +++ b/_crates/intl.md @@ -0,0 +1,62 @@ +--- +layout: crate +crate: "intl" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-intl"] +tags: ["i18n", +"nls", +"bindings"] +version: "1.0.1" +short_description: "NLS thin Ada binding" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is a small Ada library that provides NLS support by using +[gettext (3)](https://linux.die.net/man/3/gettext), +[textdomain (3)](https://linux.die.net/man/3/textdomain) and +[bindtextdomain (3)](https://linux.die.net/man/3/bindtextdomain). + +When NLS is not supported or disabled, the Ada library implements the +NLS operations by using empty suitable stubs that skip the NLS transformation +and emit the English default message. + +## Using the library + +The first step in using the NLS library is to call the `Initialize` procedure +that handles the setup of `textdomain` and `bindtextdomain` to configure the +language according to the user's locale. The program localized messages are +stored in a catalog file that is created by `msginit (1)` and `msgfmt (1)` tools. +In most cases catalog file are identified by a unique name that must be given +to the `Initialize` procedure (below, it will be `mytool`). + +``` +with Intl; +... + PROG_NAME : constant String := "mytool"; + ... + Intl.Initialize (PROG_NAME, "/usr/share/locale"); +``` + +To localize a message, the `"-"` function is provided to encapsulate the call +to the [gettext (3)](https://linux.die.net/man/3/gettext) method. If the message +is translated and the catalog contains it in the user's language, it will be +converted by `gettext` and the `"-"` function returns the localized message. + +``` +with GNAT.IO; + ... + function "-" (Message : in String) return String is (Intl."-" (Message)); + ... + GNAT.IO.Put_Line (-("Hello world!")); +``` + +To build the message translation file (`PO files`), a tool can be used to extract +from the source code the default messages. This process is +explained in the [GNU gettext](https://www.gnu.org/software/gettext/manual/) documentation. + + + diff --git a/_crates/iso.md b/_crates/iso.md new file mode 100644 index 00000000..c851d1b2 --- /dev/null +++ b/_crates/iso.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "iso" +authors: ["AJ Ianozi"] +maintainers: ["AJ Ianozi "] +licenses: ["MIT"] +websites: ["https://github.com/ada-iso/ada_iso/"] +tags: ["countries", +"currencies", +"iso-1366", +"iso-4217"] +version: "2.0.0" +short_description: "ISO Standard references for Ada such as 1366 & 4217 (Country & Currency)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/iterators.md b/_crates/iterators.md new file mode 100644 index 00000000..f2ddf84f --- /dev/null +++ b/_crates/iterators.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "iterators" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/mosteo/iterators"] +tags: ["iterators", +"functional"] +version: "0.2.0" +short_description: "Functional iterators a la Rust" +dependencies: [{crate: "aaa", version: "~0.2.1"}, +{crate: "gnat", version: "^10"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/itsybitsy_bsp.md b/_crates/itsybitsy_bsp.md new file mode 100644 index 00000000..acaf287b --- /dev/null +++ b/_crates/itsybitsy_bsp.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "itsybitsy_bsp" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://pico-doc.synack.me/"] +tags: ["embedded", +"nostd", +"itsybitsy", +"rp2040", +"bsp"] +version: "0.0.4" +short_description: "Board support package for Arduino ItsyBitsy" +dependencies: [{crate: "hal", version: "~0.1"}, +{crate: "rp2040_hal", version: "^1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/itsybitsy_rp2040_bsp.md b/_crates/itsybitsy_rp2040_bsp.md new file mode 100644 index 00000000..e929519f --- /dev/null +++ b/_crates/itsybitsy_rp2040_bsp.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "itsybitsy_rp2040_bsp" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/itsybitsy_rp2040_bsp"] +tags: ["embedded", +"nostd", +"itsybitsy", +"rp2040", +"bsp"] +version: "0.2.0" +short_description: "Board support package for Arduino ItsyBitsy RP2040" +dependencies: [{crate: "hal", version: "~0.3"}, +{crate: "rp2040_hal", version: "^2"}, +{crate: "gnat_arm_elf", version: "^12.1.2"}] +configuration_variables: [] +configuration_values: [{crate: 'rp2040_hal', settings: [{name: 'Flash_Chip', value: "w25qxx"}]}] + +--- + + diff --git a/_crates/j2ada.md b/_crates/j2ada.md new file mode 100644 index 00000000..aa1dbd26 --- /dev/null +++ b/_crates/j2ada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "j2ada" +authors: ["Pascal Pignard"] +maintainers: ["Pascal Pignard "] +licenses: ["CECILL-2.1"] +websites: ["https://github.com/Blady-Com/j2ada"] +tags: ["java", +"translator"] +version: "1.4.2" +short_description: "Almost Java to Ada translator" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/jintp.md b/_crates/jintp.md new file mode 100644 index 00000000..d8027f83 --- /dev/null +++ b/_crates/jintp.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "jintp" +authors: ["Rene Hartmann"] +maintainers: ["Rene Hartmann "] +licenses: ["BSD-2-Clause"] +websites: ["https://github.com/rehartmann/JinTP"] +tags: ["templates", +"jinja", +"jinja2"] +version: "0.1.0" +short_description: "Template parser in Ada based on Jinja2" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/journada.md b/_crates/journada.md new file mode 100644 index 00000000..92a9d8ec --- /dev/null +++ b/_crates/journada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "journada" +authors: ["Léo Germond"] +maintainers: ["Léo Germond "] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/leogermond/journada"] +tags: ["log", +"logging", +"vt100"] +version: "1.0.0" +short_description: "Simple and nice configurable logging" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/json.md b/_crates/json.md new file mode 100644 index 00000000..0a857989 --- /dev/null +++ b/_crates/json.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "json" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/json-ada"] +tags: ["json"] +version: "6.0.0" +short_description: "An Ada 2012 library for parsing JSON" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/jupyter_kernel.md b/_crates/jupyter_kernel.md new file mode 100644 index 00000000..0b194e7e --- /dev/null +++ b/_crates/jupyter_kernel.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "jupyter_kernel" +authors: ["Max Reznik"] +maintainers: ["Max Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/reznikmm/jupyter/"] +tags: ["jupyter", +"notebook", +"kernel"] +version: "1.0.0" +short_description: "Jupyter Kernel for Ada" +dependencies: [{crate: "matreshka_league", version: "*"}, +{crate: "spawn", version: "*"}, +{crate: "zeromq_ada", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +# Jupyter Kernel for Ada + +To run this kernel with Jupyter Notebook: + alr get --build jupyter_kernel + cd jupyter_kernel* + ln -s ./alire/build/.objs . + PATH=$PATH:$PWD/alire/build/.objs/driver JUPYTER_PATH=$PWD jupyter-notebook --debug + + diff --git a/_crates/jwt.md b/_crates/jwt.md new file mode 100644 index 00000000..1b774e59 --- /dev/null +++ b/_crates/jwt.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "jwt" +authors: ["Maxim Reznik"] +maintainers: ["Maxim Reznik "] +licenses: ["MIT"] +websites: ["https://github.com/reznikmm/jwt"] +tags: ["web", +"token", +"jws", +"json", +"jwt"] +version: "1.0.0" +short_description: "JSON Web Token (JWT) implementation in Ada" +dependencies: [{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/keypadder.md b/_crates/keypadder.md new file mode 100644 index 00000000..11b287bb --- /dev/null +++ b/_crates/keypadder.md @@ -0,0 +1,37 @@ +--- +layout: crate +crate: "keypadder" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/SMerrony/keypadder"] +tags: ["linux", +"keyboard", +"mobile", +"programmable", +"tablet", +"macro", +"keypad", +"macropad"] +version: "0.3.0" +short_description: "Programmable virtual keypad for your Linux desktop" +dependencies: [{crate: "aws", version: "^23.0.0"}, +{crate: "ada_toml", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Overview + +Keypadder runs on your desktop machine and provides a mobile/tablet-friendly +web page that you use from a tablet or phone to send frequently-used, awkward, +or difficult-to-remember key combinations to the currently-focused desktop application. + +Amongst other things, the author uses it with Thunderbird and LibreOffice Writer +for typing accented characters, with MuseScore to provide a keypad similar to a +certain commercial score writing application, and with Firefox for accented +characters and Emojis in social media. + +It's a great use for one of those old smartphones or tablets you have lying in that drawer! + + diff --git a/_crates/keystoreada.md b/_crates/keystoreada.md new file mode 100644 index 00000000..af5b83fb --- /dev/null +++ b/_crates/keystoreada.md @@ -0,0 +1,51 @@ +--- +layout: crate +crate: "keystoreada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-keystore"] +tags: ["security", +"storage", +"nosql"] +version: "1.4.1" +short_description: "Ada Keystore" +dependencies: [{crate: "utilada", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-keystore/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-keystore/summary) + +# Overview + +Ada Keystore is a tool and library to store information in secure wallets +and protect the stored information by encrypting the content. +It is necessary to know one of the wallet password to access its content. +Ada Keystore can be used to safely store passwords, credentials, +bank accounts and even documents. + +Wallets are protected by a master key using AES-256 and the wallet +master key is protected by a user password. +The wallet defines up to 7 slots that identify +a password key that is able to unlock the master key. To open a wallet, +it is necessary to unlock one of these 7 slots by providing the correct +password. Wallet key slots are protected by the user's password +and the PBKDF2-HMAC-256 algorithm, a random salt, a random counter +and they are encrypted using AES-256. + +Values stored in the wallet are protected by their own encryption keys +using AES-256. A wallet can contain another wallet which is then +protected by its own encryption keys and passwords (with 7 independent slots). +Because the child wallet has its own master key, it is necessary to known +the primary password and the child password to unlock the parent wallet +first and then the child wallet. + +## Documents + +* [Ada Keystore Guide](https://ada-keystore.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-keystore/blob/master/docs/keystore-book.pdf) + + + diff --git a/_crates/labs_radar.md b/_crates/labs_radar.md new file mode 100644 index 00000000..8c8bca8a --- /dev/null +++ b/_crates/labs_radar.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "labs_radar" +authors: ["Léo Germond"] +maintainers: ["Léo Germond "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/adacore/training_labs_radar"] +tags: ["training", +"labs"] +version: "1.0.0" +short_description: "Introductory Ada exercises based around a fake radar codebase" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/labs_solar_system.md b/_crates/labs_solar_system.md new file mode 100644 index 00000000..53ecfb66 --- /dev/null +++ b/_crates/labs_solar_system.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "labs_solar_system" +authors: ["Léo Germond"] +maintainers: ["Léo Germond "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://public-training.adacore.com/doc/labs/solar_system/index.html"] +tags: ["training", +"labs", +"graphics", +"windowed"] +version: "1.1.0" +short_description: "A set of SDL-based exercises to learn Ada" +dependencies: [{crate: "mage", version: "~0.6.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/labs_standalone.md b/_crates/labs_standalone.md new file mode 100644 index 00000000..de4507f4 --- /dev/null +++ b/_crates/labs_standalone.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "labs_standalone" +authors: ["Léo Germond"] +maintainers: ["Léo Germond "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/adacore/training_labs_standalone"] +tags: ["training", +"labs", +"algorithmic"] +version: "0.1.0" +short_description: "Ada exercices for training" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace.md b/_crates/lace.md new file mode 100644 index 00000000..221429f0 --- /dev/null +++ b/_crates/lace.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "lace" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Contains a set of low level re-usable Ada components." +dependencies: [{crate: "lace_shared", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + +Contains: + + - lace.Events : Provides a 'subject/oberver' 'event/response' facility. + - lace.Any : Provides an interface to allow heterogenous containers. + - lace.fast_Pool : Provides a generic which allows fast allocation/deallocation. + - lace.Text : Provides a DSA friendly set of text operations. + + + diff --git a/_crates/lace_box2d.md b/_crates/lace_box2d.md new file mode 100644 index 00000000..622ea981 --- /dev/null +++ b/_crates/lace_box2d.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "lace_box2d" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides a thin Ada binding to the 'box2d' C++ project." +dependencies: [{crate: "lace_c_math", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_bullet.md b/_crates/lace_bullet.md new file mode 100644 index 00000000..3431f3d8 --- /dev/null +++ b/_crates/lace_bullet.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lace_bullet" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides a thin Ada binding to the 'bullet' C++ project." +dependencies: [{crate: "lace_c_math", version: "~0.1"}, +{crate: "libbullet", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_c_math.md b/_crates/lace_c_math.md new file mode 100644 index 00000000..1956914e --- /dev/null +++ b/_crates/lace_c_math.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lace_c_math" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "A binding to the C math code used by box2d & bullet bindings." +dependencies: [{crate: "lace_math", version: "~0.1"}, +{crate: "lace_swig", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_collada.md b/_crates/lace_collada.md new file mode 100644 index 00000000..0e14a874 --- /dev/null +++ b/_crates/lace_collada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lace_collada" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "A Collada parser." +dependencies: [{crate: "lace_math", version: "~0.1"}, +{crate: "lace_xml", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_gel.md b/_crates/lace_gel.md new file mode 100644 index 00000000..54c3d548 --- /dev/null +++ b/_crates/lace_gel.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "lace_gel" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "A 2D/3D game engine library (GEL)." +dependencies: [{crate: "lace_opengl", version: "~0.1"}, +{crate: "lace_physics", version: "~0.1"}, +{crate: "sdlada", version: "2.5.4-1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_gel_animation_demo.md b/_crates/lace_gel_animation_demo.md new file mode 100644 index 00000000..a53912d5 --- /dev/null +++ b/_crates/lace_gel_animation_demo.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "lace_gel_animation_demo" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "A demo of GEL's human animation." +dependencies: [{crate: "lace_gel", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_gel_full_demo.md b/_crates/lace_gel_full_demo.md new file mode 100644 index 00000000..a6b36c14 --- /dev/null +++ b/_crates/lace_gel_full_demo.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "lace_gel_full_demo" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "A demo of most of GEL's features." +dependencies: [{crate: "lace_gel", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_math.md b/_crates/lace_math.md new file mode 100644 index 00000000..13a6eff2 --- /dev/null +++ b/_crates/lace_math.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "lace_math" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides an Ada package family covering pure and applied mathematics." +dependencies: [{crate: "lace_shared", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + +Contains: + + - Pure + - Arithmetic (covers quantity) + - Algebra (covers structure) + - Geometry (covers space) + - Analysis (covers change) + + - Applied + - Statistics + - Computational + + + diff --git a/_crates/lace_opengl.md b/_crates/lace_opengl.md new file mode 100644 index 00000000..3715edc3 --- /dev/null +++ b/_crates/lace_opengl.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lace_opengl" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides an openGL engine." +dependencies: [{crate: "lace_collada", version: "~0.1"}, +{crate: "libfreetype", version: "^2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_physics.md b/_crates/lace_physics.md new file mode 100644 index 00000000..d0716b37 --- /dev/null +++ b/_crates/lace_physics.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "lace_physics" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides 2D/3D rigid body dynamics simulation." +dependencies: [{crate: "lace", version: "~0.1"}, +{crate: "lace_box2d", version: "~0.1"}, +{crate: "lace_bullet", version: "~0.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_shared.md b/_crates/lace_shared.md new file mode 100644 index 00000000..bd1d12cd --- /dev/null +++ b/_crates/lace_shared.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "lace_shared" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Default settings for GPR files in the Lace project." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_swig.md b/_crates/lace_swig.md new file mode 100644 index 00000000..6c438ddb --- /dev/null +++ b/_crates/lace_swig.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "lace_swig" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides packages required by bindings produced by the 'swig4ada' tool." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lace_xml.md b/_crates/lace_xml.md new file mode 100644 index 00000000..8d14ec11 --- /dev/null +++ b/_crates/lace_xml.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lace_xml" +authors: ["Rod Kay"] +maintainers: ["Rod Kay "] +licenses: ["ISC"] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Provides simple XML read/write support." +dependencies: [{crate: "lace_shared", version: "~0.1"}, +{crate: "libexpat", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lal_highlight.md b/_crates/lal_highlight.md new file mode 100644 index 00000000..86e97fb5 --- /dev/null +++ b/_crates/lal_highlight.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "lal_highlight" +authors: ["AdaCore"] +maintainers: ["Pierre-Marie de Rodat "] +licenses: ["GPL-3.0-only WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/libadalang"] +tags: ["libadalang", +"static-analysis"] +version: "21.0.0" +short_description: "Simple code highlighters based on Libadalang" +dependencies: [{crate: "gnatcoll_iconv", version: "^21"}, +{crate: "libadalang", version: "^21"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lal_refactor.md b/_crates/lal_refactor.md new file mode 100644 index 00000000..9644c069 --- /dev/null +++ b/_crates/lal_refactor.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "lal_refactor" +authors: ["AdaCore"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["refactoring", +"ada", +"tool"] +version: "25.0.0" +short_description: "Source code refactoring utilities for the Ada language" +dependencies: [{crate: "adasat", version: "^25"}, +{crate: "gnatcoll", version: "^25"}, +{crate: "libadalang", version: "^25"}, +{crate: "libadalang_tools", version: "^25"}, +{crate: "prettier_ada", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/langkit_support.md b/_crates/langkit_support.md new file mode 100644 index 00000000..e01a57c5 --- /dev/null +++ b/_crates/langkit_support.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "langkit_support" +authors: ["AdaCore"] +maintainers: ["Pierre-Marie de Rodat ", +"chouteau@adacore.com"] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/langkit"] +tags: [] +version: "25.0.0" +short_description: "Runtime support library for Langkit-generated libraries" +dependencies: [{crate: "adasat", version: "^25"}, +{crate: "gnatcoll", version: "^25"}, +{crate: "gnatcoll_gmp", version: "^25"}, +{crate: "gnatcoll_iconv", version: "^25"}, +{crate: "prettier_ada", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lea.md b/_crates/lea.md new file mode 100644 index 00000000..bb3fecc7 --- /dev/null +++ b/_crates/lea.md @@ -0,0 +1,48 @@ +--- +layout: crate +crate: "lea" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://l-e-a.sourceforge.io/"] +tags: ["application", +"lea", +"editor", +"hac"] +version: "0.90.0" +short_description: "LEA is a Lightweight Editor for Ada " +dependencies: [{crate: "ini_files", version: "^10.0.0"}, +{crate: "gwindows", version: "^1.4.3"}, +{crate: "zipada", version: "^58.0.0"}, +{crate: "gnat", version: "/=10.3.2"}, +{crate: "hac", version: "~0.30.0"}] +configuration_variables: [] +configuration_values: [] + +--- +  lea screenshot 1lea screenshot 2lea screenshot 3lea screenshot 4 + +**LEA**, a **Lightweight Editor for Ada**, aims to provide an easy, script-world-like, "look & feel" for developing Ada projects of any size and level, while enabling access to full-scale development tools like GNAT. + +Features: + +* Quick start and reactivity +* Uses the Scintilla editor widget (like Notepad++) +* Multi-document +* Multiple undo's & redo's +* Multi-line, multi-point editing; rectangular selections +* Duplication of lines and selections +* Color themes +* Syntax highlighting, parenthesis matching +* Bookmarks +* Smart editor features (auto-completion, navigation, mouse-hover infos) +* Includes HAC, the HAC Ada Compiler +* Includes numerous examples of Ada programs, ready to be run +* Single executable, runs without installation +* Programmed in Ada +* **Free**, Open-Source + + diff --git a/_crates/learnadainy.md b/_crates/learnadainy.md new file mode 100644 index 00000000..a91ff4d0 --- /dev/null +++ b/_crates/learnadainy.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "learnadainy" +authors: ["Luke A. Guest"] +maintainers: ["Luke A. Guest "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: ["https://learnxinyminutes.com/docs/ada"] +tags: ["education"] +version: "0.2.0" +short_description: "Learn Ada in Y Minutes" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libadalang.md b/_crates/libadalang.md new file mode 100644 index 00000000..68fcaea2 --- /dev/null +++ b/_crates/libadalang.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "libadalang" +authors: ["AdaCore"] +maintainers: ["Pierre-Marie de Rodat ", +"chouteau@adacore.com"] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/libadalang"] +tags: ["libadalang", +"static-analysis"] +version: "25.0.0" +short_description: "Ada semantic analysis library" +dependencies: [{crate: "gnatcoll", version: "^25"}, +{crate: "gnatcoll_gmp", version: "^25"}, +{crate: "gnatcoll_iconv", version: "^25"}, +{crate: "langkit_support", version: "^25"}, +{crate: "libgpr2", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libadalang2xml.md b/_crates/libadalang2xml.md new file mode 100644 index 00000000..25d4f660 --- /dev/null +++ b/_crates/libadalang2xml.md @@ -0,0 +1,86 @@ +--- +layout: crate +crate: "libadalang2xml" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/simonjwright/libadalang2xml"] +tags: ["ada", +"xml"] +version: "1.0.2" +short_description: "Generates XML for Ada source, using libadalang." +dependencies: [{crate: "libadalang", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +Libadalang2XML is a tool to extract syntatic aspects of Ada source code into XML. + +The Ada source is initially read using [Libadalang](https://github.com/AdaCore/libadalang). The resulting tree is then traversed, and its structure output in an XML form. + +The [document type definition](https://en.wikipedia.org/wiki/Document_type_definition) isn't explicit; it's simply derived from the tree elements created by Libadalang. Note that Libadalang includes much more semantic information than the surface structure generated by this tool, but nevertheless there's enough there to --- for example --- create a scriptable body for a package spec. + +## Building on macOS ## + +Using the standard `langkit_support`, `libadalang` crates, you **must** build with `LIBRARY_TYPE` set to `relocatable`. + +You can obtain versions of those crates adjusted to not require those features, which can therefore build the (default) static libraries, by visiting https://github.com/simonjwright/alire-index.mac. + +## Example ## + +As an example of the output, this code +``` ada +package Demo is + procedure Square (X : in out Integer); +end Demo; +``` +generates +``` xml + + + + + + + Demo + + + + + + + procedure + + Square + + + + + + + X + + + + in out + + + Integer + + + + + + + + + + Demo + + + + + +``` + + diff --git a/_crates/libadalang_tools.md b/_crates/libadalang_tools.md new file mode 100644 index 00000000..0782af0e --- /dev/null +++ b/_crates/libadalang_tools.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "libadalang_tools" +authors: ["AdaCore"] +maintainers: ["Pierre-Marie de Rodat ", +"Max Reznik "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/libadalang-tools"] +tags: ["libadalang", +"static-analysis", +"metric", +"formatting", +"generator", +"gnatmetric", +"gnatpp", +"gnatstub", +"gnattest"] +version: "25.0.0" +short_description: "Ada semantic analysis library extension and tools" +dependencies: [{crate: "libadalang", version: "^25.0.0"}, +{crate: "templates_parser", version: "^25.0.0"}, +{crate: "vss", version: "^25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libblas.md b/_crates/libblas.md new file mode 100644 index 00000000..6d32004a --- /dev/null +++ b/_crates/libblas.md @@ -0,0 +1 @@ +Not found: libblas* diff --git a/_crates/libbullet.md b/_crates/libbullet.md new file mode 100644 index 00000000..479965e9 --- /dev/null +++ b/_crates/libbullet.md @@ -0,0 +1 @@ +Not found: libbullet* diff --git a/_crates/libcanberra.md b/_crates/libcanberra.md new file mode 100644 index 00000000..8c6537d0 --- /dev/null +++ b/_crates/libcanberra.md @@ -0,0 +1 @@ +Not found: libcanberra* diff --git a/_crates/libchipmunk.md b/_crates/libchipmunk.md new file mode 100644 index 00000000..a72bd89f --- /dev/null +++ b/_crates/libchipmunk.md @@ -0,0 +1 @@ +Not found: libchipmunk* diff --git a/_crates/libclntsh.md b/_crates/libclntsh.md new file mode 100644 index 00000000..c418528c --- /dev/null +++ b/_crates/libclntsh.md @@ -0,0 +1 @@ +Not found: libclntsh* diff --git a/_crates/libcmark.md b/_crates/libcmark.md new file mode 100644 index 00000000..04d64055 --- /dev/null +++ b/_crates/libcmark.md @@ -0,0 +1 @@ +Not found: libcmark* diff --git a/_crates/libcsfml.md b/_crates/libcsfml.md new file mode 100644 index 00000000..7833c78f --- /dev/null +++ b/_crates/libcsfml.md @@ -0,0 +1 @@ +Not found: libcsfml* diff --git a/_crates/libcurl.md b/_crates/libcurl.md new file mode 100644 index 00000000..295b80e7 --- /dev/null +++ b/_crates/libcurl.md @@ -0,0 +1 @@ +Not found: libcurl* diff --git a/_crates/libegl.md b/_crates/libegl.md new file mode 100644 index 00000000..288465e9 --- /dev/null +++ b/_crates/libegl.md @@ -0,0 +1 @@ +Not found: libegl* diff --git a/_crates/libexpat.md b/_crates/libexpat.md new file mode 100644 index 00000000..90101413 --- /dev/null +++ b/_crates/libexpat.md @@ -0,0 +1 @@ +Not found: libexpat* diff --git a/_crates/libfbclient.md b/_crates/libfbclient.md new file mode 100644 index 00000000..d9700545 --- /dev/null +++ b/_crates/libfbclient.md @@ -0,0 +1 @@ +Not found: libfbclient* diff --git a/_crates/libfreetype.md b/_crates/libfreetype.md new file mode 100644 index 00000000..f434b079 --- /dev/null +++ b/_crates/libfreetype.md @@ -0,0 +1 @@ +Not found: libfreetype* diff --git a/_crates/libftdi1.md b/_crates/libftdi1.md new file mode 100644 index 00000000..c075e4d9 --- /dev/null +++ b/_crates/libftdi1.md @@ -0,0 +1 @@ +Not found: libftdi1* diff --git a/_crates/libfuse.md b/_crates/libfuse.md new file mode 100644 index 00000000..38156f59 --- /dev/null +++ b/_crates/libfuse.md @@ -0,0 +1 @@ +Not found: libfuse* diff --git a/_crates/libglfw3.md b/_crates/libglfw3.md new file mode 100644 index 00000000..e3b9b848 --- /dev/null +++ b/_crates/libglfw3.md @@ -0,0 +1 @@ +Not found: libglfw3* diff --git a/_crates/libglib.md b/_crates/libglib.md new file mode 100644 index 00000000..6ab1ad2d --- /dev/null +++ b/_crates/libglib.md @@ -0,0 +1 @@ +Not found: libglib* diff --git a/_crates/libgmp.md b/_crates/libgmp.md new file mode 100644 index 00000000..1d10241e --- /dev/null +++ b/_crates/libgmp.md @@ -0,0 +1 @@ +Not found: libgmp* diff --git a/_crates/libgnatdoc.md b/_crates/libgnatdoc.md new file mode 100644 index 00000000..bc4ebc2e --- /dev/null +++ b/_crates/libgnatdoc.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "libgnatdoc" +authors: ["AdaCore"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/gnatdoc"] +tags: ["documentation", +"tools"] +version: "25.0.0" +short_description: "GNAT Documentation Generation Tool (as a library)" +dependencies: [{crate: "libadalang", version: "^25"}, +{crate: "libgpr2", version: "^25"}, +{crate: "markdown", version: "^25"}, +{crate: "vss", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libgnatformat.md b/_crates/libgnatformat.md new file mode 100644 index 00000000..f2472a13 --- /dev/null +++ b/_crates/libgnatformat.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "libgnatformat" +authors: ["AdaCore"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["formatting", +"ada", +"lib"] +version: "25.0.0" +short_description: "opinionated code format library for the Ada language" +dependencies: [{crate: "adasat", version: "^25"}, +{crate: "gnatcoll", version: "^25"}, +{crate: "libadalang", version: "^25"}, +{crate: "prettier_ada", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libgnutls.md b/_crates/libgnutls.md new file mode 100644 index 00000000..62a5ed55 --- /dev/null +++ b/_crates/libgnutls.md @@ -0,0 +1 @@ +Not found: libgnutls* diff --git a/_crates/libgomp.md b/_crates/libgomp.md new file mode 100644 index 00000000..a07ff87d --- /dev/null +++ b/_crates/libgomp.md @@ -0,0 +1 @@ +Not found: libgomp* diff --git a/_crates/libgpiod.md b/_crates/libgpiod.md new file mode 100644 index 00000000..f97b8a0c --- /dev/null +++ b/_crates/libgpiod.md @@ -0,0 +1 @@ +Not found: libgpiod* diff --git a/_crates/libgpr.md b/_crates/libgpr.md new file mode 100644 index 00000000..eb91e462 --- /dev/null +++ b/_crates/libgpr.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "libgpr" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: [] +tags: [] +version: "25.0.0" +short_description: "GNAT Project File Library" +dependencies: [{crate: "gnat", version: "/=2020"}, +{crate: "xmlada", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libgpr2.md b/_crates/libgpr2.md new file mode 100644 index 00000000..7171c99f --- /dev/null +++ b/_crates/libgpr2.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "libgpr2" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: [] +version: "25.0.0" +short_description: "Parser for GPR Project File" +dependencies: [{crate: "gnat", version: ">=14"}, +{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "gnatcoll_gmp", version: "~25.0.0"}, +{crate: "gnatcoll_iconv", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libgraph_easy_perl.md b/_crates/libgraph_easy_perl.md new file mode 100644 index 00000000..845c9679 --- /dev/null +++ b/_crates/libgraph_easy_perl.md @@ -0,0 +1 @@ +Not found: libgraph_easy_perl* diff --git a/_crates/libgsl.md b/_crates/libgsl.md new file mode 100644 index 00000000..267e6191 --- /dev/null +++ b/_crates/libgsl.md @@ -0,0 +1 @@ +Not found: libgsl* diff --git a/_crates/libgtk3.md b/_crates/libgtk3.md new file mode 100644 index 00000000..cc3d88f0 --- /dev/null +++ b/_crates/libgtk3.md @@ -0,0 +1 @@ +Not found: libgtk3* diff --git a/_crates/libhello.md b/_crates/libhello.md new file mode 100644 index 00000000..0374e5d8 --- /dev/null +++ b/_crates/libhello.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "libhello" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: ["https://github.com/alire-project/libhello"] +tags: ["hello", +"demo", +"library"] +version: "1.0.1" +short_description: "Basic library demonstration project" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/libhidapi.md b/_crates/libhidapi.md new file mode 100644 index 00000000..b121abc9 --- /dev/null +++ b/_crates/libhidapi.md @@ -0,0 +1 @@ +Not found: libhidapi* diff --git a/_crates/libi2c.md b/_crates/libi2c.md new file mode 100644 index 00000000..f670cbc7 --- /dev/null +++ b/_crates/libi2c.md @@ -0,0 +1 @@ +Not found: libi2c* diff --git a/_crates/libiconv.md b/_crates/libiconv.md new file mode 100644 index 00000000..36855421 --- /dev/null +++ b/_crates/libiconv.md @@ -0,0 +1 @@ +Not found: libiconv* diff --git a/_crates/libkeccak.md b/_crates/libkeccak.md new file mode 100644 index 00000000..0f9c197b --- /dev/null +++ b/_crates/libkeccak.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "libkeccak" +authors: ["Daniel King"] +maintainers: ["Daniel King "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/damaki/libkeccak"] +tags: ["spark", +"cryptography", +"security", +"hash", +"sha3", +"keccak", +"gimli", +"ascon", +"shake", +"cshake", +"kmac", +"tuplehash", +"parallelhash", +"kangarootwelve"] +version: "3.0.0" +short_description: "SHA-3 and related algorithms" +dependencies: [{crate: "gnat", version: ">=11.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/liblal_refactor.md b/_crates/liblal_refactor.md new file mode 100644 index 00000000..a09908be --- /dev/null +++ b/_crates/liblal_refactor.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "liblal_refactor" +authors: ["AdaCore"] +maintainers: ["Fabien Chouteau "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/lal-refactor"] +tags: ["refactoring"] +version: "25.0.0" +short_description: "Source code refactoring library for the Ada language" +dependencies: [{crate: "libadalang_tools", version: "^25"}, +{crate: "vss", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/liblapack.md b/_crates/liblapack.md new file mode 100644 index 00000000..8980cad6 --- /dev/null +++ b/_crates/liblapack.md @@ -0,0 +1 @@ +Not found: liblapack* diff --git a/_crates/liblua.md b/_crates/liblua.md new file mode 100644 index 00000000..26615ae3 --- /dev/null +++ b/_crates/liblua.md @@ -0,0 +1 @@ +Not found: liblua* diff --git a/_crates/liblzma.md b/_crates/liblzma.md new file mode 100644 index 00000000..8d3c6e88 --- /dev/null +++ b/_crates/liblzma.md @@ -0,0 +1 @@ +Not found: liblzma* diff --git a/_crates/libmagic.md b/_crates/libmagic.md new file mode 100644 index 00000000..14a93dd1 --- /dev/null +++ b/_crates/libmagic.md @@ -0,0 +1 @@ +Not found: libmagic* diff --git a/_crates/libmariadb.md b/_crates/libmariadb.md new file mode 100644 index 00000000..b84c2800 --- /dev/null +++ b/_crates/libmariadb.md @@ -0,0 +1 @@ +Not found: libmariadb* diff --git a/_crates/libmesa.md b/_crates/libmesa.md new file mode 100644 index 00000000..be5b875f --- /dev/null +++ b/_crates/libmesa.md @@ -0,0 +1 @@ +Not found: libmesa* diff --git a/_crates/libmpfr.md b/_crates/libmpfr.md new file mode 100644 index 00000000..54f61236 --- /dev/null +++ b/_crates/libmpfr.md @@ -0,0 +1 @@ +Not found: libmpfr* diff --git a/_crates/libmysqlclient.md b/_crates/libmysqlclient.md new file mode 100644 index 00000000..d6ff5961 --- /dev/null +++ b/_crates/libmysqlclient.md @@ -0,0 +1 @@ +Not found: libmysqlclient* diff --git a/_crates/libopus.md b/_crates/libopus.md new file mode 100644 index 00000000..026cdb28 --- /dev/null +++ b/_crates/libopus.md @@ -0,0 +1 @@ +Not found: libopus* diff --git a/_crates/libpcap.md b/_crates/libpcap.md new file mode 100644 index 00000000..ffed5e3f --- /dev/null +++ b/_crates/libpcap.md @@ -0,0 +1 @@ +Not found: libpcap* diff --git a/_crates/libpq.md b/_crates/libpq.md new file mode 100644 index 00000000..c75f478c --- /dev/null +++ b/_crates/libpq.md @@ -0,0 +1 @@ +Not found: libpq* diff --git a/_crates/libpulse.md b/_crates/libpulse.md new file mode 100644 index 00000000..6d20cbb7 --- /dev/null +++ b/_crates/libpulse.md @@ -0,0 +1 @@ +Not found: libpulse* diff --git a/_crates/libpython2dev.md b/_crates/libpython2dev.md new file mode 100644 index 00000000..79c46c34 --- /dev/null +++ b/_crates/libpython2dev.md @@ -0,0 +1 @@ +Not found: libpython2dev* diff --git a/_crates/libpython3dev.md b/_crates/libpython3dev.md new file mode 100644 index 00000000..940ba755 --- /dev/null +++ b/_crates/libpython3dev.md @@ -0,0 +1 @@ +Not found: libpython3dev* diff --git a/_crates/libraylib.md b/_crates/libraylib.md new file mode 100644 index 00000000..cc7ea5b8 --- /dev/null +++ b/_crates/libraylib.md @@ -0,0 +1 @@ +Not found: libraylib* diff --git a/_crates/libreadline.md b/_crates/libreadline.md new file mode 100644 index 00000000..93afed3d --- /dev/null +++ b/_crates/libreadline.md @@ -0,0 +1 @@ +Not found: libreadline* diff --git a/_crates/librtmidi.md b/_crates/librtmidi.md new file mode 100644 index 00000000..a5052262 --- /dev/null +++ b/_crates/librtmidi.md @@ -0,0 +1 @@ +Not found: librtmidi* diff --git a/_crates/libsdl2.md b/_crates/libsdl2.md new file mode 100644 index 00000000..47f0cbfc --- /dev/null +++ b/_crates/libsdl2.md @@ -0,0 +1 @@ +Not found: libsdl2* diff --git a/_crates/libsdl2_image.md b/_crates/libsdl2_image.md new file mode 100644 index 00000000..16146392 --- /dev/null +++ b/_crates/libsdl2_image.md @@ -0,0 +1 @@ +Not found: libsdl2_image* diff --git a/_crates/libsdl2_mixer.md b/_crates/libsdl2_mixer.md new file mode 100644 index 00000000..18f0043d --- /dev/null +++ b/_crates/libsdl2_mixer.md @@ -0,0 +1 @@ +Not found: libsdl2_mixer* diff --git a/_crates/libsdl2_ttf.md b/_crates/libsdl2_ttf.md new file mode 100644 index 00000000..a8df3873 --- /dev/null +++ b/_crates/libsdl2_ttf.md @@ -0,0 +1 @@ +Not found: libsdl2_ttf* diff --git a/_crates/libsecret.md b/_crates/libsecret.md new file mode 100644 index 00000000..1843c926 --- /dev/null +++ b/_crates/libsecret.md @@ -0,0 +1 @@ +Not found: libsecret* diff --git a/_crates/libsimpleio.md b/_crates/libsimpleio.md new file mode 100644 index 00000000..71f06cd7 --- /dev/null +++ b/_crates/libsimpleio.md @@ -0,0 +1,150 @@ +--- +layout: crate +crate: "libsimpleio" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: ["BSD-1-Clause"] +websites: ["https://github.com/pmunts/libsimpleio"] +tags: ["embedded", +"linux", +"libsimpleio", +"remoteio", +"beaglebone", +"pocketbeagle", +"raspberrypi", +"raspberry", +"pi", +"adc", +"dac", +"gpio", +"hid", +"i2c", +"motor", +"pwm", +"sensor", +"serial", +"servo", +"spi", +"stepper", +"watchdog"] +version: "2.22364.1" +short_description: "Linux Simple I/O Library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Introduction +============ + +This crate provides an Ada binding to the [Linux Simple I/O +Library](https://github.com/pmunts/libsimpleio), *aka* **libsimpleio**. + +*Note: This crate includes all of the functionality of the **`mcp2221`** +and **`remoteio`** crates. Unlike those two crates, which can be built +for and used on Linux, MacOS, or Windows targets, this crate can only be +built for and used on Linux targets.* + +Linux Simple I/O Library +======================== + +**libsimpleio** is an attempt to encapsulate (as much as possible) the +ugliness of Linux I/O device access. It provides services for the +following types of I/O devices: + +- [Industrial I/O + Subsystem](https://wiki.analog.com/software/linux/docs/iio/iio) A/D + (Analog to Digital) Converter Devices +- [Industrial I/O + Subsystem](https://wiki.analog.com/software/linux/docs/iio/iio) D/A + (Digital to Analog) Converter Devices +- GPIO (General Purpose Input/Output) Pins +- Raw HID (Human Interface Device) Devices +- I2C (Inter-Integrated Circuit) Bus Devices +- PWM (Pulse Width Modulated) Output Devices +- [Remote I/O + Protocol](http://git.munts.com/libsimpleio/doc/RemoteIOProtocol.pdf) + Devices +- Serial Ports +- SPI (Serial Peripheral Interface) Bus Devices +- [Stream Framing + Protocol](http://git.munts.com/libsimpleio/doc/StreamFramingProtocol.pdf) + Devices +- TCP and UDP over IPv4 Network Devices +- Watchdog Timer Devices + +**libsimpleio** exports a small number of C wrapper or shim functions. +These shim functions present a more coherent API (Application +Programming Interface) than Linux kernel **`ioctl()`** services and the +myriad other different Linux device I/O API's. The **libsimpleio** shim +functions are designed to be easily called from Ada, C++, C#, Java, +Free Pascal and other programming languages. + +The **`man`** pages specifying the **libsimpleio** API (Application +Programming Interface) are available for viewing at +. + +Ada Binding for the Linux Simple I/O Library +============================================ + +The Ada binding consists of several software component layers. + +The bottom software component layer consists of the **C shim functions** +discussed in the previous section. + +The next software component layer consists of **binding packages** that +declare the C shim functions as Ada procedures. Each of the binding +packages corresponds to a single C source file (*e.g.* package +**`libadc`** corresponds to **`libadc.c`**). Each of the C shim +functions are declared as external Ada procedures using +**`pragma Import`**. The Ada procedure names do not necessarily match +the C function names (*e.g.* the C function **`ADC_Open()`** is declared +as Ada procedure **`libadc.Open`**). Many of the binding packages also +declare constants as well (*e.g.* **`DIRECTION_INPUT`** in +**`libgpio.ads`**). + +With very few exceptions, you will never need to directly call any of +the procedures nor reference any of the constants declared in the +**`libxxx`** binding packages. + +The next software component layer consists of **object packages** that +declare OOP (Object Oriented Programming) object types and methods for +each of the I/O subsystems. This layer uses Ada interface types, +access-to-interface types, and private tagged records extensively. + +For example, the package **`GPIO`** defines an interface type +**`PinInterface`**, an access to **`PinInterface`** type named +**`Pin`**, and primitive operation subprograms **`Get`** and **`Put`**. + +The child package **`GPIO.libsimpleio`** declares a private tagged +record type **`PinSubclass`** that *implements* **`GPIO.PinInterface`**, +subprograms **`Get`** and **`Put`** that are required to implement +**`GPIO.PinInterface`**, and a constructor function **`Create`** that +returns an **`GPIO.Pin`** access value. + +Every package that implements **`GPIO.PinInterface`** will also declare +a constructor function **`Create`** that returns **`GPIO.Pin`**. + +This architecture allows code similar to the following fragment: + + MyPins : array (1 .. 3) of GPIO.pin; + + GPIO(1) := GPIO.libsimpleio.Create(...); + GPIO(2) := GPIO.UserLED.Create(...); + GPIO(3) := GPIO.PWM.Create(...); + +The three GPIO pins can be stored in the same array and manipulated in +exactly the same manner even though the hardware implementation for each +pin is radically different. + +The topmost software component layer consists of **device packages** +that implement support for particular I/O devices and are built upon the +lower layers. Most of the device packages correspond to integrated +circuits, such as the [PCA9534 I2C GPIO +Expander](https://www.nxp.com/products/interfaces/ic-spi-serial-interface-devices/ic-general-purpose-i-o/8-bit-ic-bus-and-smbus-low-power-i-o-port-with-interrupt:PCA9534). +A few implement support for boards or modules, such the [Grove +Temperature +Sensor](https://www.seeedstudio.com/Grove-Temperature-Sensor.html) +module. + + diff --git a/_crates/libsqlite3.md b/_crates/libsqlite3.md new file mode 100644 index 00000000..7686e392 --- /dev/null +++ b/_crates/libsqlite3.md @@ -0,0 +1 @@ +Not found: libsqlite3* diff --git a/_crates/libtcl.md b/_crates/libtcl.md new file mode 100644 index 00000000..5bc49846 --- /dev/null +++ b/_crates/libtcl.md @@ -0,0 +1 @@ +Not found: libtcl* diff --git a/_crates/libtk.md b/_crates/libtk.md new file mode 100644 index 00000000..ee0e6fd6 --- /dev/null +++ b/_crates/libtk.md @@ -0,0 +1 @@ +Not found: libtk* diff --git a/_crates/libtls.md b/_crates/libtls.md new file mode 100644 index 00000000..849f130d --- /dev/null +++ b/_crates/libtls.md @@ -0,0 +1 @@ +Not found: libtls* diff --git a/_crates/libusb.md b/_crates/libusb.md new file mode 100644 index 00000000..6ffdeaa8 --- /dev/null +++ b/_crates/libusb.md @@ -0,0 +1 @@ +Not found: libusb* diff --git a/_crates/libwayland.md b/_crates/libwayland.md new file mode 100644 index 00000000..0bcd108f --- /dev/null +++ b/_crates/libwayland.md @@ -0,0 +1 @@ +Not found: libwayland* diff --git a/_crates/libx11.md b/_crates/libx11.md new file mode 100644 index 00000000..a025e669 --- /dev/null +++ b/_crates/libx11.md @@ -0,0 +1 @@ +Not found: libx11* diff --git a/_crates/libzmq.md b/_crates/libzmq.md new file mode 100644 index 00000000..a332b9fc --- /dev/null +++ b/_crates/libzmq.md @@ -0,0 +1 @@ +Not found: libzmq* diff --git a/_crates/light_arduino_due.md b/_crates/light_arduino_due.md new file mode 100644 index 00000000..0f4e3dc0 --- /dev/null +++ b/_crates/light_arduino_due.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "light_arduino_due" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["a0b", +"embedded", +"bsp", +"light", +"atsam3x8e", +"sam3x8e", +"arduino", +"due"] +version: "0.2.0" +short_description: "Arduino Due Board Support Package for `light` GNAT Runtime" +dependencies: [{crate: "a0b_atsam3x8e", version: "*"}, +{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [] +configuration_values: [{crate: 'a0b_armv7m', settings: [{name: 'fpu_extension', value: "none"}]}] + +--- + + diff --git a/_crates/light_blackpill_stm32f401.md b/_crates/light_blackpill_stm32f401.md new file mode 100644 index 00000000..720e2ef1 --- /dev/null +++ b/_crates/light_blackpill_stm32f401.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "light_blackpill_stm32f401" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["embedded", +"bsp", +"light", +"blackpill", +"stm32", +"stm32f4", +"stm32f401"] +version: "0.1.0" +short_description: "BlackPill STM32F401 BSP for `light` GNAT Runtime" +dependencies: [{crate: "a0b_stm32f401", version: "*"}, +{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [] +configuration_values: [{crate: 'a0b_armv7m', settings: [{name: 'fpu_extension', value: "VFPv4"}]}] + +--- + + diff --git a/_crates/light_fk723m1_zgt6.md b/_crates/light_fk723m1_zgt6.md new file mode 100644 index 00000000..34977459 --- /dev/null +++ b/_crates/light_fk723m1_zgt6.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "light_fk723m1_zgt6" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["embedded", +"bsp", +"light", +"stm32h723", +"fk723m1"] +version: "0.1.0" +short_description: "FK723M1-ZGT6 Board Support Package for `light` GNAT Runtime" +dependencies: [{crate: "gnat_arm_elf", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lined.md b/_crates/lined.md new file mode 100644 index 00000000..95743d9b --- /dev/null +++ b/_crates/lined.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "lined" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Lined"] +tags: ["line", +"editor"] +version: "20240419.0.0" +short_description: "Ada Implementation of the Line Editor from Software Tools" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# Lined +Ada Implementation of the Line Editor from Software Tools + +I did this to see how it would compare with the Ratfor original, and provide it here for anyone with a similar interest. I can't imagine anyone actually using this, unless they wanted a scriptable tool with the alternative regular-expression syntax it uses, since it's a simplified version of ed. + + diff --git a/_crates/linenoise_ada.md b/_crates/linenoise_ada.md new file mode 100644 index 00000000..cb570b7a --- /dev/null +++ b/_crates/linenoise_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "linenoise_ada" +authors: ["nytpu"] +maintainers: ["nytpu "] +licenses: ["BSD-2-Clause"] +websites: ["https://git.sr.ht/~nytpu/linenoise-ada"] +tags: ["linenoise", +"readline", +"line-editing"] +version: "1.1.2" +short_description: "Bindings to the Linenoise line editing library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/linux_hal.md b/_crates/linux_hal.md new file mode 100644 index 00000000..74d040e2 --- /dev/null +++ b/_crates/linux_hal.md @@ -0,0 +1,27 @@ +--- +layout: crate +crate: "linux_hal" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/JeremyGrosser/linux_hal"] +tags: ["embedded", +"hal", +"linux", +"i2c", +"smbus", +"gpio", +"spi", +"audio"] +version: "1.1.0" +short_description: "HAL drivers for Linux userspace" +dependencies: [{crate: "hal", version: "~0.3.0"}, +{crate: "libgpiod", version: "^1"}, +{crate: "libi2c", version: "^4"}, +{crate: "libpulse", version: "^16"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lispcli.md b/_crates/lispcli.md new file mode 100644 index 00000000..e3f6d635 --- /dev/null +++ b/_crates/lispcli.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "lispcli" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Ada-Lisp"] +tags: ["lisp"] +version: "0.1.1" +short_description: "Simple program for exploring tiny lisp" +dependencies: [{crate: "gnat", version: ">7.5"}, +{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_lisp", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a simple example of embedding Lisp to provide a REPL where you +can try various Lisp functions. It can also be modified to test out +Lisp extensions. + + diff --git a/_crates/list_image.md b/_crates/list_image.md new file mode 100644 index 00000000..8890a123 --- /dev/null +++ b/_crates/list_image.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "list_image" +authors: ["Lionel Draghi"] +maintainers: ["Lionel Draghi "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/LionelDraghi/List_Image"] +tags: ["list", +"iterator", +"container", +"markdown", +"html"] +version: "1.0.0" +short_description: "helper to dump iterable containers with customizable style" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/littlefs.md b/_crates/littlefs.md new file mode 100644 index 00000000..27268bcb --- /dev/null +++ b/_crates/littlefs.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "littlefs" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/littlefs-ada"] +tags: ["embedded", +"filesystem", +"nostd", +"flash"] +version: "0.3.1" +short_description: "Ada/SPARK binding for the LittleFS flash embedded filesystem" +dependencies: [] +configuration_variables: [{name: 'Assert', type: 'Boolean', default: "false"}, +{name: 'Debug', type: 'Boolean', default: "false"}, +{name: 'Error', type: 'Boolean', default: "false"}, +{name: 'Max_Attr_Size', type: 'Integer range 1 .. 1022', default: "1022"}, +{name: 'Max_File_Size', type: 'Integer range 1 .. 2147483647', default: "2147483647"}, +{name: 'Max_Name_Size', type: 'Integer range 1 .. 1022', default: "255"}, +{name: 'No_Malloc', type: 'Boolean', default: "true"}, +{name: 'Trace', type: 'Boolean', default: "false"}, +{name: 'Warn', type: 'Boolean', default: "false"}] +configuration_values: [] + +--- + + diff --git a/_crates/lmdb_ada.md b/_crates/lmdb_ada.md new file mode 100644 index 00000000..58974017 --- /dev/null +++ b/_crates/lmdb_ada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "lmdb_ada" +authors: ["nytpu"] +maintainers: ["nytpu "] +licenses: ["BSD-2-Clause AND OLDAP-2.8+"] +websites: ["https://git.sr.ht/~nytpu/lmdb-ada"] +tags: ["database", +"key-value"] +version: "1.2.0" +short_description: "Bindings to the Lightning Memory-Mapped Database" +dependencies: [{crate: "gnatcoll", version: "^22.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/loadcpm.md b/_crates/loadcpm.md new file mode 100644 index 00000000..39506c3f --- /dev/null +++ b/_crates/loadcpm.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "loadcpm" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Sim-CPU"] +tags: ["cpm"] +version: "0.1.0" +short_description: "Write CP/M (or other similar binary) to floppy disk image" +dependencies: [{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_simcpu", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/loga.md b/_crates/loga.md new file mode 100644 index 00000000..db7f51cf --- /dev/null +++ b/_crates/loga.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "loga" +authors: ["Cyrill Korshnyak ł"] +maintainers: ["Cyrill Korshnyak "] +licenses: ["Unlicense"] +websites: ["https://github.com/mangl-auf/loga/"] +tags: ["logging"] +version: "1.0.0" +short_description: "Simple library for simple logging. Like npm package \"debug\", but for Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ltp_305.md b/_crates/ltp_305.md new file mode 100644 index 00000000..cbede251 --- /dev/null +++ b/_crates/ltp_305.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "ltp_305" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser ", +"Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/ltp_305"] +tags: ["embedded", +"led", +"rp2040", +"i2c"] +version: "0.2.0" +short_description: "Driver for Pimoroni LED" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lvgl_ada.md b/_crates/lvgl_ada.md new file mode 100644 index 00000000..b311f9b5 --- /dev/null +++ b/_crates/lvgl_ada.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "lvgl_ada" +authors: ["Fabien Chouteau "] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/lvgl-ada"] +tags: ["embedded", +"gui", +"lvgl", +"no-std"] +version: "1.0.0" +short_description: "Bindings for the LVGL embedded GUI framework" +dependencies: [] +configuration_variables: [{name: 'Builtin_Allocator_Size', type: 'Integer range 1 .. 1000000', default: "65536"}, +{name: 'Color_16_SWAP', type: 'Boolean', default: "false"}, +{name: 'Default_Font', type: 'Enum (dejavu_10, dejavu_20, dejavu_30, dejavu_40, monospace_8)', default: "dejavu_20"}, +{name: 'Density_Per_Inch', type: 'Integer range 1 .. 1000000'}, +{name: 'Double_Buffering', type: 'Boolean', default: "false"}, +{name: 'Horizontal_Resolution', type: 'Integer range 1 .. 1000000'}, +{name: 'Log_Level', type: 'Enum (Trace, Info, Warn, Error)', default: "Warn"}, +{name: 'Log_With_Printf', type: 'Boolean', default: "false"}, +{name: 'Pixel_Bit_Depth', type: 'Enum (Pix_1bit, Pix_8bit, Pix_16bit, Pix_32bit)'}, +{name: 'Theme_Live_Update', type: 'Boolean', default: "false"}, +{name: 'Use_Builtin_Allocator', type: 'Boolean', default: "true"}, +{name: 'Vertical_Resolution', type: 'Integer range 1 .. 1000000'}, +{name: 'Virtual_Display_Buffer_Size', type: 'Integer range 1 .. 1000000', default: "10240"}] +configuration_values: [] + +--- + + diff --git a/_crates/lvgl_ada_examples.md b/_crates/lvgl_ada_examples.md new file mode 100644 index 00000000..668100f4 --- /dev/null +++ b/_crates/lvgl_ada_examples.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "lvgl_ada_examples" +authors: [] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: [] +tags: ["gui", +"lvgl"] +version: "0.1.0" +short_description: "Examples for the LVGL embedded GUI framework Ada binding" +dependencies: [{crate: "lvgl_ada", version: "~0.1.0"}, +{crate: "lvgl_ada_simulator", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lvgl_ada_simulator.md b/_crates/lvgl_ada_simulator.md new file mode 100644 index 00000000..56402795 --- /dev/null +++ b/_crates/lvgl_ada_simulator.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "lvgl_ada_simulator" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/lvgl-ada-simulator"] +tags: ["gui", +"lvgl", +"simulator"] +version: "1.0.0" +short_description: "Native simulator of an LVGL display" +dependencies: [{crate: "asfml", version: "^2.5.3"}, +{crate: "lvgl_ada", version: "^1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/lzmada.md b/_crates/lzmada.md new file mode 100644 index 00000000..bee1565e --- /dev/null +++ b/_crates/lzmada.md @@ -0,0 +1,44 @@ +--- +layout: crate +crate: "lzmada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["MIT"] +websites: ["https://gitlab.com/stcarrez/ada-lzma"] +tags: ["compression", +"lzma"] +version: "1.1.4" +short_description: "Ada LZMA Library Binding" +dependencies: [{crate: "liblzma", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +A very thin Ada binding for the LZMA compression library. +Roughly speaking, import some package: + + with Lzma.Base; + with Lzma.Container; + with Lzma.Check; + +Then declare the LZMA stream: + + Stream : aliased Lzma.Base.lzma_stream := Lzma.Base.LZMA_STREAM_INIT; + +Initialize the LZMA stream as decoder (or as encoder): + + Result := Lzma.Container.lzma_stream_decoder (Stream'Unchecked_Access, + Long_Long_Integer'Last, + Lzma.Container.LZMA_CONCATENATED); + +Setup the stream 'next_out', 'avail_out', 'next_in' and 'avail_in' and call +the lzma_code operation with the action (Lzma.Base.LZMA_RUN or Lzma.Base.LZMA_FINISH): + + Result := Lzma.Base.lzma_code (Stream'Unchecked_Access, Action); + +Close the LZMA stream: + + Lzma.Base.lzma_end (Stream'Unchecked_Access); + + + diff --git a/_crates/m4_tool.md b/_crates/m4_tool.md new file mode 100644 index 00000000..ced17423 --- /dev/null +++ b/_crates/m4_tool.md @@ -0,0 +1 @@ +Not found: m4_tool* diff --git a/_crates/mage.md b/_crates/mage.md new file mode 100644 index 00000000..accfa55e --- /dev/null +++ b/_crates/mage.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "mage" +authors: ["Leo Germond"] +maintainers: ["Leo Germond "] +licenses: ["Apache-2.0"] +websites: ["www.gitlab.com/leogermond/mage"] +tags: ["game", +"engine", +"sdl"] +version: "0.6.1" +short_description: "Mini Ada Game Engine - A very simple game engine written in Ada" +dependencies: [{crate: "sdlada", version: "^2.5.4-1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/mage_hat.md b/_crates/mage_hat.md new file mode 100644 index 00000000..1983d342 --- /dev/null +++ b/_crates/mage_hat.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "mage_hat" +authors: ["Léo Germond"] +maintainers: ["Léo Germond "] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/leogermond/mage_hat"] +tags: ["game", +"demo", +"magic"] +version: "0.3.0" +short_description: "A hat that jumps around and behaves magically" +dependencies: [{crate: "mage", version: "~0.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/magicada.md b/_crates/magicada.md new file mode 100644 index 00000000..2fa0068f --- /dev/null +++ b/_crates/magicada.md @@ -0,0 +1,57 @@ +--- +layout: crate +crate: "magicada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-libmagic"] +tags: ["magic", +"file", +"bindings"] +version: "1.0.1" +short_description: "Magic Number Recognition Library Ada binding" +dependencies: [{crate: "libmagic", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +Small Ada binding library to the [libmagic (3)](https://linux.die.net/man/3/libmagic) +library which is used by the implementation of the +[file (1)](https://linux.die.net/man/1/file) command. + +To simplify and help in the use of the magic Ada library, the +`Magic.Manager` package encapsulates the management of the libmagic library +and provides high level simple operations to hide the details of interacting +with the C library. The package defines the `Magic_Manager` tagged record +that takes care of the C library interaction and cleaning of the libmagic +library once the manager is no longer required. To use it, declare the +instance and initialize it with the `Initialize` procedure: + +```Ada + with Magic.Manager; + ... + Mgr : Magic.Manager.Magic_Manager; + ... + Mgr.Initialize (Magic.MAGIC_MIME, Magic.DEFAULT_PATH); +``` + +The first parameter defines a set of flags represented by the `Magic.Flags` +type to control various options of the libmagic library. The second +parameter indicates the default path to the magic file +(see [magic (5)](https://linux.die.net/man/5/magic)). +Once configured, the `Identify` functions can be used to identify a content. +For the first form, a path of the file is given: + +```Ada + Mime : constant String := Mgr.Identify ("file.ads"); +``` + +With the second form, a `Stream_Element_Array` with the content to identify +is given to the function. + +## Example + +- [examples.adb](https://gitlab.com/stcarrez/ada-libmagic/-/blob/main/examples/src/examples.adb?ref_type=heads) + + + diff --git a/_crates/make.md b/_crates/make.md new file mode 100644 index 00000000..f03d1530 --- /dev/null +++ b/_crates/make.md @@ -0,0 +1 @@ +Not found: make* diff --git a/_crates/mandelbrot_ascii.md b/_crates/mandelbrot_ascii.md new file mode 100644 index 00000000..c5e3e845 --- /dev/null +++ b/_crates/mandelbrot_ascii.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "mandelbrot_ascii" +authors: ["David Given"] +maintainers: ["Alejandro R. Mosteo "] +licenses: [] +websites: [] +tags: [] +version: "1.0.0" +short_description: "Mandelbrot renderer using Unicode glyphs" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/markdown.md b/_crates/markdown.md new file mode 100644 index 00000000..e903b111 --- /dev/null +++ b/_crates/markdown.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "markdown" +authors: ["AdaCore"] +maintainers: ["Max Reznik "] +licenses: ["Apache-2.0"] +websites: [] +tags: ["markdown", +"gfm", +"commonmark"] +version: "25.0.0" +short_description: "Markdown parser (draft)" +dependencies: [{crate: "vss", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +The markdown parser is an early stage of development. Just a few element is implemented and API will change in the future. + diff --git a/_crates/mathpaqs.md b/_crates/mathpaqs.md new file mode 100644 index 00000000..d10a035a --- /dev/null +++ b/_crates/mathpaqs.md @@ -0,0 +1,50 @@ +--- +layout: crate +crate: "mathpaqs" +authors: ["Gautier de Montmollin"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["MIT"] +websites: ["https://mathpaqs.sourceforge.io/"] +tags: ["algebra", +"contour", +"contour-plot", +"formula-parser", +"fractal", +"kutta", +"linear-algebra", +"mathematics", +"matrix", +"numerics", +"pareto", +"poisson", +"polynomial", +"probability", +"random", +"rational", +"runge", +"runge-kutta", +"statistics"] +version: "20230121.0.0" +short_description: "A collection of mathematical, 100% portable, packages" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +![Mathpaqs illustration](https://mathpaqs.sourceforge.io/mathpaqs_files/image001.jpg) + +Various mathematical packages including algebra, finite elements, random variables, probability dependency models, unlimited integers. + +Key features of Mathpaqs: + +* Standalone +* Pure Ada +* Unconditionally portable (*) +* Tests and demos included +* **Free**, Open-Source + +___ + +(*) within limits of compiler's provided integer types and target architecture capacity. + + diff --git a/_crates/matreshka_amf.md b/_crates/matreshka_amf.md new file mode 100644 index 00000000..52682257 --- /dev/null +++ b/_crates/matreshka_amf.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_amf" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"mof"] +version: "21.0.0" +short_description: "Implementation of OMG's Meta Object Facility (MOF)" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_xml", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_amf_dd.md b/_crates/matreshka_amf_dd.md new file mode 100644 index 00000000..86b5e6cc --- /dev/null +++ b/_crates/matreshka_amf_dd.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_amf_dd" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"diagram"] +version: "21.0.0" +short_description: "Diagram Definition (DD) specification support for AMF" +dependencies: [{crate: "matreshka_amf", version: "21.0.0"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_amf_mofext.md b/_crates/matreshka_amf_mofext.md new file mode 100644 index 00000000..d6af111e --- /dev/null +++ b/_crates/matreshka_amf_mofext.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_amf_mofext" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"diagram"] +version: "21.0.0" +short_description: "The UML mofext for AMF" +dependencies: [{crate: "matreshka_amf_uml", version: "21.0.0"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_amf_ocl.md b/_crates/matreshka_amf_ocl.md new file mode 100644 index 00000000..77c939c5 --- /dev/null +++ b/_crates/matreshka_amf_ocl.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_amf_ocl" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"diagram", +"ocl"] +version: "21.0.0" +short_description: "The UML OCL for AMF" +dependencies: [{crate: "matreshka_amf_uml", version: "21.0.0"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_amf_uml.md b/_crates/matreshka_amf_uml.md new file mode 100644 index 00000000..5bcdb4e2 --- /dev/null +++ b/_crates/matreshka_amf_uml.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_amf_uml" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"diagram"] +version: "21.0.0" +short_description: "Unified Modeling Language support for AMF" +dependencies: [{crate: "matreshka_amf_dd", version: "21.0.0"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_amf_utp.md b/_crates/matreshka_amf_utp.md new file mode 100644 index 00000000..feaed556 --- /dev/null +++ b/_crates/matreshka_amf_utp.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_amf_utp" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["uml", +"meta", +"diagram", +"testing"] +version: "21.0.0" +short_description: "The UML Testing Profile for AMF" +dependencies: [{crate: "matreshka_amf_uml", version: "21.0.0"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_fastcgi.md b/_crates/matreshka_fastcgi.md new file mode 100644 index 00000000..ea4ab365 --- /dev/null +++ b/_crates/matreshka_fastcgi.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "matreshka_fastcgi" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["web", +"cgi", +"http"] +version: "21.0.0" +short_description: "FastCGI implementation (demo)" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_league.md b/_crates/matreshka_league.md new file mode 100644 index 00000000..0edadc01 --- /dev/null +++ b/_crates/matreshka_league.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "matreshka_league" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["unicode", +"xml", +"sax", +"json", +"encoding", +"regexp", +"time"] +version: "21.0.0" +short_description: "League - universal string library. Part of Matreshka framework" +dependencies: [{crate: "make", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_servlet.md b/_crates/matreshka_servlet.md new file mode 100644 index 00000000..1ce47e90 --- /dev/null +++ b/_crates/matreshka_servlet.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "matreshka_servlet" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["web", +"servlet", +"http"] +version: "21.0.0" +short_description: "Servlet API" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_soap.md b/_crates/matreshka_soap.md new file mode 100644 index 00000000..53694049 --- /dev/null +++ b/_crates/matreshka_soap.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_soap" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["soap", +"rpc", +"protocol", +"web"] +version: "21.0.0" +short_description: "Framework for work with SOAP 1.2" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_xml", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_soap_wsse.md b/_crates/matreshka_soap_wsse.md new file mode 100644 index 00000000..edeee4c6 --- /dev/null +++ b/_crates/matreshka_soap_wsse.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_soap_wsse" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["soap", +"wsse", +"web"] +version: "21.0.0" +short_description: "WS-Security 1.1 implementation for SOAP 1.2" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_soap", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_spikedog_api.md b/_crates/matreshka_spikedog_api.md new file mode 100644 index 00000000..d58de011 --- /dev/null +++ b/_crates/matreshka_spikedog_api.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "matreshka_spikedog_api" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["web", +"servlet"] +version: "21.0.0" +short_description: "Web-application server. API library" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_servlet", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_spikedog_awsd.md b/_crates/matreshka_spikedog_awsd.md new file mode 100644 index 00000000..9e8b32a1 --- /dev/null +++ b/_crates/matreshka_spikedog_awsd.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "matreshka_spikedog_awsd" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["web", +"servlet"] +version: "21.0.0" +short_description: "Web-application server. API library" +dependencies: [{crate: "aws", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_spikedog_core", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_spikedog_core.md b/_crates/matreshka_spikedog_core.md new file mode 100644 index 00000000..068f8364 --- /dev/null +++ b/_crates/matreshka_spikedog_core.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "matreshka_spikedog_core" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["web", +"servlet"] +version: "21.0.0" +short_description: "Web-application server. Implementation library" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_spikedog_api", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql.md b/_crates/matreshka_sql.md new file mode 100644 index 00000000..5a20f639 --- /dev/null +++ b/_crates/matreshka_sql.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "matreshka_sql" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db"] +version: "21.0.0" +short_description: "Common SQL Database API" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql_firebird.md b/_crates/matreshka_sql_firebird.md new file mode 100644 index 00000000..9a1ee54f --- /dev/null +++ b/_crates/matreshka_sql_firebird.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "matreshka_sql_firebird" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db", +"firebird"] +version: "21.0.0" +short_description: "Firebird SQL binding for Ada" +dependencies: [{crate: "libfbclient", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_sql", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql_mysql.md b/_crates/matreshka_sql_mysql.md new file mode 100644 index 00000000..45beb617 --- /dev/null +++ b/_crates/matreshka_sql_mysql.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "matreshka_sql_mysql" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db", +"mysql", +"mariadb"] +version: "21.0.0" +short_description: "MySQL binding for Ada" +dependencies: [{crate: "libmysqlclient", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_sql", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql_oracle.md b/_crates/matreshka_sql_oracle.md new file mode 100644 index 00000000..d6fd1fad --- /dev/null +++ b/_crates/matreshka_sql_oracle.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "matreshka_sql_oracle" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db", +"oracle"] +version: "21.0.0" +short_description: "Oracle DB binding for Ada" +dependencies: [{crate: "libclntsh", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}, +{crate: "matreshka_sql", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql_postgresql.md b/_crates/matreshka_sql_postgresql.md new file mode 100644 index 00000000..22212129 --- /dev/null +++ b/_crates/matreshka_sql_postgresql.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_sql_postgresql" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db", +"postgresql"] +version: "21.0.0" +short_description: "PostgreSQL binding for Ada" +dependencies: [{crate: "libpq", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_sql_sqlite3.md b/_crates/matreshka_sql_sqlite3.md new file mode 100644 index 00000000..e8924463 --- /dev/null +++ b/_crates/matreshka_sql_sqlite3.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_sql_sqlite3" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["sql", +"database", +"db", +"sqlite"] +version: "21.0.0" +short_description: "SQLite binding for Ada" +dependencies: [{crate: "libsqlite3", version: "*"}, +{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/matreshka_xml.md b/_crates/matreshka_xml.md new file mode 100644 index 00000000..37c56eb3 --- /dev/null +++ b/_crates/matreshka_xml.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "matreshka_xml" +authors: ["Vadim Godunko"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/godunko/matreshka"] +tags: ["xml", +"dom", +"catalog", +"templates", +"html5"] +version: "21.0.0" +short_description: "Library to manipulate with XML streams and documents" +dependencies: [{crate: "matreshka_league", version: "21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/mcp2221.md b/_crates/mcp2221.md new file mode 100644 index 00000000..1ad3480c --- /dev/null +++ b/_crates/mcp2221.md @@ -0,0 +1,57 @@ +--- +layout: crate +crate: "mcp2221" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: ["BSD-1-Clause"] +websites: ["https://github.com/pmunts/libsimpleio"] +tags: ["embedded", +"linux", +"mcp2221", +"adc", +"dac", +"gpio", +"i2c", +"motor", +"pwm", +"sensor", +"serial", +"servo", +"spi", +"stepper"] +version: "2.22364.1" +short_description: "MCP2221 USB Raw HID I/O Expander Library for GNAT Ada" +dependencies: [{crate: "libhidapi", version: "*"}, +{crate: "libusb", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +This crate contains a subset of the [**Linux Simple I/O +Library**](https://github.com/pmunts/libsimpleio) Ada packages that are +relevant for building programs for the MCP2221 USB Raw HID I/O expander. + +This crate can be built for Linux, MacOS, or Windows targets. + +The [MCP2221A](https://www.microchip.com/en-us/product/MCP2221A) is a +[PIC16F1455](https://www.microchip.com/en-us/product/PIC16F1455) +microcontroller that has been preprogrammed with firmware to implement +*two* USB devices: a USB serial port and a raw HID device that acts as +an I/O expander providing one [I2C](https://i2c.info/) bus controller +(master only) and four +[GPIO](https://en.wikipedia.org/wiki/General-purpose_input/output) pins +(**`GP0`**, **`GP1`**, **`GP2`**, and **`GP3`**). + +The GPIO pins **`GP1`**, **`GP2`**, and **`GP3`** can be configured for +some alternate functions, including 10-bit A/D inputs or 5-bit D/A +outputs: + +**`GP1`**: **`GPIO ADC1`****`GP2`**: **`GPIO ADC2 DAC1`****`GP3`**: **`GPIO ADC3 DAC2`** + +The MCP2221A replaces an earlier part, the MCP2221. The only difference +between the older MCP2221 and the newer MCP2221A is that the latter +supports some higher baud rates on the USB serial port device. Since +this crate only deals with the raw HID I/O expander functions, it will +work fine with either the older MCP2221 or the newer MCP2221A. + + diff --git a/_crates/microbit_bsp.md b/_crates/microbit_bsp.md new file mode 100644 index 00000000..bce5d764 --- /dev/null +++ b/_crates/microbit_bsp.md @@ -0,0 +1,33 @@ +--- +layout: crate +crate: "microbit_bsp" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"nostd", +"microbit", +"bbc", +"nrf51", +"bsp"] +version: "0.2.0" +short_description: "Board Support Package for the BBC micro:bit v1" +dependencies: [{crate: "embedded_components", version: "^0.1.0"}, +{crate: "hal", version: "^0.1.0"}, +{crate: "nrf5x_hal", version: "^0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# microbit BSP + +Board Support Package for the BBC micro:bit https://microbit.org/ + +This crate is a snapshot of [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/middleware). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + + diff --git a/_crates/microbit_examples.md b/_crates/microbit_examples.md new file mode 100644 index 00000000..7f9c581b --- /dev/null +++ b/_crates/microbit_examples.md @@ -0,0 +1,98 @@ +--- +layout: crate +crate: "microbit_examples" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"nostd", +"microbit", +"nrf51"] +version: "0.1.0" +short_description: "Examples and tutorials for Ada on the BBC micro:bit" +dependencies: [{crate: "microbit_bsp", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +# microbit_examples + +This crate is a snapshot of the micro:bit examples in [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/tree/master/arch/ARM/cortex_m). + +Any bug report, issue, contribution must be adressed to the [Ada Drivers +Library](https://github.com/AdaCore/Ada_Drivers_Library/) repo. + +The Micro:Bit is a very small ARM Cortex-M0 board designed by the BBC for +computer education. It's fitted with a [Nordic +nRF51](https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822) +Bluetooth enabled microcontroller and an embedded programmer. You can get it +at: + + - [Pimoroni (UK/EU)](https://shop.pimoroni.com/collections/micro-bit/products/microbit) + - [Kitronik (UK/EU)](https://www.kitronik.co.uk/5613-bbc-microbit-board-only.html) + - [ThePiHut (UK/EU)](https://thepihut.com/collections/microbit/products/micro-bit) + - [AdaFruit (US)](https://www.adafruit.com/products/3530) + +# How to setup the Ada development environment for the Micro:Bit + +GNAT Community now comes with micro:bit and pyOCD support built-in. So you only +need to download the ARM ELF and the native package from +[here](https://www.adacore.com/download) + +## pyOCD programmer + +The Micro:Bit comes with an embedded programming/debugging probe implementing +the +[CMSIS-DAP](https://docs.mbed.com/docs/mbed-os-handbook/en/latest/advanced/DAP/) +protocol defined by ARM. + +To use it on Linux, you might need privileges to access the USB ports without +which the flash program will say "No connected boards". + +On Ubuntu, you can do it by creating (as administrator) the file +/etc/udev/rules.d/mbed.rules and add the line: +``` +SUBSYSTEM=="usb", ATTR{idVendor}=="0d28", ATTR{idProduct}=="0204", MODE="0666" +``` +then restarting the service by doing + +```shell +$ sudo udevadm trigger +``` + +## Open one of example projects and build it + +Start GNAT Programming studio (GPS) with Alire and one micro:bit example +project: + + - `alr edit analog_in/analog_in.gpr` + - `alr edit follower/follower.gpr` + - `alr edit digital_in/digital_in.gpr` + - `alr edit accelerometer/accelerometer.gpr` + - `alr edit buttons/buttons.gpr` + - `alr edit BLE_beacon/BLE_beacon.gpr` + - `alr edit digital_out/digital_out.gpr` + - `alr edit servos/servos.gpr` + - `alr edit neopixel/neopixel.gpr` + - `alr edit text_scrolling/text_scrolling.gpr` + - `alr edit analog_out/analog_out.gpr` + - `alr edit music/music.gpr` + +Press F4 and then press Enter to build the project. + +## Program the board + +Plug your micro:bit board with a USB cable, and wait for the system to +recognize it. This can take a few seconds + +In the GPS toolbar, click on the "flash to board" button to program the +micro:bit. + +After a few seconds, you should see a text scrolling on the LED matrix. + +That's it, you are ready to hack the micro:bit with Ada! + + + diff --git a/_crates/midi.md b/_crates/midi.md new file mode 100644 index 00000000..5e6959c8 --- /dev/null +++ b/_crates/midi.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "midi" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/MIDI"] +tags: ["midi", +"embedded", +"nostd"] +version: "0.2.0" +short_description: "Library to encode and decode MIDI messages" +dependencies: [{crate: "bbqueue", version: "~0.3.0"}, +{crate: "gnat", version: ">=11"}, +{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/mine_detector.md b/_crates/mine_detector.md new file mode 100644 index 00000000..01ae8aab --- /dev/null +++ b/_crates/mine_detector.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "mine_detector" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/bracke/Mine_Detector"] +tags: ["minedetector", +"game"] +version: "20220720.0.0" +short_description: "The Gnoga/Ada-GUI version of Mine Detector" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "ada_gui", version: "^20240224.0.0"}, +{crate: "ssl", version: "^3.0.2"}] +configuration_variables: [] +configuration_values: [] + +--- +# Mine_Detector +The Ada-GUI (https://github.com/jrcarter/Ada_GUI) version of Mine Detector, an intellectually-challenging game + + diff --git a/_crates/minimal_containers.md b/_crates/minimal_containers.md new file mode 100644 index 00000000..f9e3b083 --- /dev/null +++ b/_crates/minimal_containers.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "minimal_containers" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/simonjwright/minimal_containers"] +tags: ["containers"] +version: "1.2.0" +short_description: "Much reduced version of Ada.Containers (bounded Maps, Vectors)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +The motivation for these containers was use in [ColdFrame](https://simonjwright.github.io/coldframe/), an open-source code generator backend for use with UML tools in a restricted environment (a BBC micro:bit). + +In such an environment, it's normal to strip out unused code and data at link time (`-gc-sections` with GNU `ld`, `-dead_strip` with Apple `ld`). + +Unfortunately, it turns out that no primitive subprograms of tagged types can be stripped (they are all referenced by the dispatch table). + +These containers are still tagged, because (without compiler extensions) ColdFrame expects to use prefixed notation (_object_._primitive subprogram (...)_, as would users). However, the number of subprograms has been much reduced. + + diff --git a/_crates/minirest.md b/_crates/minirest.md new file mode 100644 index 00000000..edcd0625 --- /dev/null +++ b/_crates/minirest.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "minirest" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["MIT"] +websites: ["https://github.com/mosteo/minirest"] +tags: ["rest"] +version: "0.2.0" +short_description: "Minimalist Ada REST client library" +dependencies: [{crate: "aaa", version: "~0.2.1|~0.3"}, +{crate: "curl", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/minisamd51_bsp.md b/_crates/minisamd51_bsp.md new file mode 100644 index 00000000..351ff586 --- /dev/null +++ b/_crates/minisamd51_bsp.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "minisamd51_bsp" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/minisamd51_bsp"] +tags: ["embedded", +"nostd", +"samd51", +"minisam"] +version: "0.1.0" +short_description: "Board Support Package for the MiniSAM D51" +dependencies: [{crate: "hal", version: "^0.1.0"}, +{crate: "samd51_hal", version: "^0.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/minisamd51_example.md b/_crates/minisamd51_example.md new file mode 100644 index 00000000..b8938bc7 --- /dev/null +++ b/_crates/minisamd51_example.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "minisamd51_example" +authors: ["Fabien Chouteau "] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/minisamd51_example"] +tags: ["embedded", +"nostd", +"samd51", +"minisam"] +version: "0.1.1" +short_description: "Example project for the MiniSAM D51" +dependencies: [{crate: "minisamd51_bsp", version: "^0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/mold.md b/_crates/mold.md new file mode 100644 index 00000000..3caef4b7 --- /dev/null +++ b/_crates/mold.md @@ -0,0 +1,76 @@ +--- +layout: crate +crate: "mold" +authors: ["Francesc Rocher"] +maintainers: ["Francesc Rocher "] +licenses: ["MIT"] +websites: ["https://rocher.github.io/mold"] +tags: ["template", +"template-engine", +"template-repo"] +version: "1.0.3" +short_description: "Meta-variable Operations for Lean Development (cli)" +dependencies: [{crate: "clic", version: "~0.3.0"}, +{crate: "gnat", version: ">=2021 | (>=12 & <2000)"}, +{crate: "mold_lib", version: "^2.2.0"}, +{crate: "simple_logging", version: "^1.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/mold.json)](https://alire.ada.dev/crates/mold.html) +[![Alire CI/CD](https://img.shields.io/endpoint?url=https://alire-crate-ci.ada.dev/badges/mold.json)](https://alire-crate-ci.ada.dev/crates/mold.html) +![unit-test](https://github.com/rocher/mold/actions/workflows/unit-test.yml/badge.svg) +[![codecov](https://codecov.io/gh/rocher/mold/graph/badge.svg?token=LB83SI4I0Y)](https://codecov.io/gh/rocher/mold) +[![GitHub release](https://img.shields.io/github/release/rocher/mold.svg)](https://github.com/rocher/mold/releases/latest) +[![License](https://img.shields.io/github/license/rocher/mold.svg?color=blue)](https://github.com/rocher/mold/blob/master/LICENSE) + +## Welcome to **Mold (cli)** + +> **MOLD**: *Meta-variable Operations for Lean Development* + +Mold is a Template Processor, or Template Engine, to work with repository +templates. The main motivation of Mold is to have repositories in GitHub used +as template repositories to create new, customized repositories for other +users. + +Main features supported in Mold include + + * variable replacement in mold files (*.mold) + + * for a given directory, variable replacement recursively for all mold files + in all subdirectories + + * variable replacement in filenames + + * inclusion of other templates + + * definition of variables with a simple TOML file + + * predefined and custom text filters to easy text transformations + + * variable values can be defined with other variables + +Variable replacement can be specified as *normal*, *optional* or *mandatory*. +For example, the variable `foo = "bar"` can be specified with `{{foo}}`, +`{{?foo}}` (optional) or `{{#foo}}` (mandatory). The difference is the handling +of errors when an undefined variable is encountered. + +All mold files must end with the extension `.mold`, for example +`README.md.mold`. Destination files (with variables replaced) have the same +name without the mold extension: `README.md`. This simplifies the work done in +large subdirectories with few templates. + +This crate contains the Ada library and unit tests. For a CLI tool, please +take a look at the crate `mold`. + +## Reference Guide + +Please visit [Mold documentation](https://rocher.github.io/mold) for more +information. + +--- +## License +MIT (c) 2023, 2024 Francesc Rocher + + diff --git a/_crates/mold_lib.md b/_crates/mold_lib.md new file mode 100644 index 00000000..7c786feb --- /dev/null +++ b/_crates/mold_lib.md @@ -0,0 +1,73 @@ +--- +layout: crate +crate: "mold_lib" +authors: ["Francesc Rocher"] +maintainers: ["Francesc Rocher "] +licenses: ["MIT"] +websites: ["https://rocher.github.io/mold"] +tags: ["template", +"template-engine", +"template-repo"] +version: "2.2.1" +short_description: "Meta-variable Operations for Lean Development (lib)" +dependencies: [{crate: "ada_toml", version: "~0.3.0"}, +{crate: "gnat", version: ">=2021 | (>=12 & <2000)"}, +{crate: "simple_logging", version: "^1.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Alire](https://img.shields.io/endpoint?url=https://alire.ada.dev/badges/mold_lib.json)](https://alire.ada.dev/crates/mold_lib.html) +[![Alire CI/CD](https://img.shields.io/endpoint?url=https://alire-crate-ci.ada.dev/badges/mold_lib.json)](https://alire-crate-ci.ada.dev/crates/mold_lib.html) +![unit-test](https://github.com/rocher/mold_lib/actions/workflows/unit-test.yml/badge.svg) +[![codecov](https://codecov.io/gh/rocher/mold_lib/graph/badge.svg?token=LB83SI4I0Y)](https://codecov.io/gh/rocher/mold_lib) +[![GitHub release](https://img.shields.io/github/release/rocher/mold_lib.svg)](https://github.com/rocher/mold_lib/releases/latest) +[![License](https://img.shields.io/github/license/rocher/mold_lib.svg?color=blue)](https://github.com/rocher/mold_lib/blob/master/LICENSE) + +## Welcome to **Mold (lib)** + +> **MOLD**: *Meta-variable Operations for Lean Development* + +Mold is a Template Processor, or Template Engine, to work with repository +templates. The main motivation of Mold is to have repositories in GitHub used +as template repositories to create new, customized repositories for other +users. + +Main features supported in Mold include + + * variable replacement in mold files (*.mold) + + * for a given directory, variable replacement recursively for all mold files + in all subdirectories + + * variable replacement in file names + + * inclusion of other templates + + * definition of variables with a simple TOML file + + * predefined and custom text filters to easy text transformations + +Variable replacement can be specified as *normal*, *optional* or *mandatory*. +For example, the variable `foo = "bar"` can be specified with `{{foo}}`, +`{{?foo}}` (optional) or `{{#foo}}` (mandatory). The difference is the handling +of errors when an undefined variable is encountered. + +All mold files must end with the extension `.mold`, for example +`README.md.mold`. Destination files (with variables replaced) have the same +name without the mold extension: `README.md`. This simplifies the work done in +large subdirectories with few templates. + +This crate contains the Ada library and unit tests. For a CLI tool, please +take a look at the crate `mold`. + +## Reference Guide + +Please visit [Mold documentation](https://rocher.github.io/mold) for more +information. + +--- +## License +MIT (c) 2023 Francesc Rocher + + diff --git a/_crates/mos6502_create_led.md b/_crates/mos6502_create_led.md new file mode 100644 index 00000000..51800a6a --- /dev/null +++ b/_crates/mos6502_create_led.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "mos6502_create_led" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/tutorial-6502"] +tags: ["mos-6502", +"tools", +"retrocomputing", +"ada2022"] +version: "1.5.0" +short_description: "Create ROM with little program" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a tool to create a rom image with little program. + +This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater. + +Development versions available with: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code and testsuite available on [SourceForge](https://git.code.sf.net/p/tutorial-6502/git) + + diff --git a/_crates/mos6502_create_nop.md b/_crates/mos6502_create_nop.md new file mode 100644 index 00000000..06aee48e --- /dev/null +++ b/_crates/mos6502_create_nop.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "mos6502_create_nop" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/tutorial-6502"] +tags: ["mos-6502", +"tools", +"retrocomputing", +"ada2022"] +version: "1.5.0" +short_description: "Create NOP ROM" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a tool to create a rom image with NOP commands. + +This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater. + +Development versions available with: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code and testsuite available on [SourceForge](https://git.code.sf.net/p/tutorial-6502/git) + + diff --git a/_crates/mos6502_create_reset.md b/_crates/mos6502_create_reset.md new file mode 100644 index 00000000..ca8e653d --- /dev/null +++ b/_crates/mos6502_create_reset.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "mos6502_create_reset" +authors: ["Martin Krischik "] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://sourceforge.net/projects/tutorial-6502"] +tags: ["mos-6502", +"tools", +"retrocomputing", +"ada2022"] +version: "1.5.0" +short_description: "Create ROM with reset vector" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- +This is a tool to create a rom image with reset vector. + +This program can be used to create a ROM immage for the MOS 6502 tutorial from Ben Eater. + +Development versions available with: + +```sh +alr index --add "git+https://github.com/krischik/alire-index.git#develop" --name krischik +``` + +Source code and testsuite available on [SourceForge](https://git.code.sf.net/p/tutorial-6502/git) + + diff --git a/_crates/msys2_runtime.md b/_crates/msys2_runtime.md new file mode 100644 index 00000000..4850e2d2 --- /dev/null +++ b/_crates/msys2_runtime.md @@ -0,0 +1 @@ +Not found: msys2_runtime* diff --git a/_crates/muntsos_aarch64.md b/_crates/muntsos_aarch64.md new file mode 100644 index 00000000..63eeaca6 --- /dev/null +++ b/_crates/muntsos_aarch64.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_aarch64" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm64", +"aarch64"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for AArch64 targets" +dependencies: [{crate: "muntsos_dev_aarch64", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_beaglebone.md b/_crates/muntsos_beaglebone.md new file mode 100644 index 00000000..fabab3a0 --- /dev/null +++ b/_crates/muntsos_beaglebone.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_beaglebone" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm", +"beaglebone"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for BeagleBone targets" +dependencies: [{crate: "muntsos_dev_beaglebone", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_dev_aarch64.md b/_crates/muntsos_dev_aarch64.md new file mode 100644 index 00000000..c1448acc --- /dev/null +++ b/_crates/muntsos_dev_aarch64.md @@ -0,0 +1 @@ +Not found: muntsos_dev_aarch64* diff --git a/_crates/muntsos_dev_beaglebone.md b/_crates/muntsos_dev_beaglebone.md new file mode 100644 index 00000000..9a95a99e --- /dev/null +++ b/_crates/muntsos_dev_beaglebone.md @@ -0,0 +1 @@ +Not found: muntsos_dev_beaglebone* diff --git a/_crates/muntsos_dev_raspberrypi1.md b/_crates/muntsos_dev_raspberrypi1.md new file mode 100644 index 00000000..a25ce0cf --- /dev/null +++ b/_crates/muntsos_dev_raspberrypi1.md @@ -0,0 +1 @@ +Not found: muntsos_dev_raspberrypi1* diff --git a/_crates/muntsos_dev_raspberrypi2.md b/_crates/muntsos_dev_raspberrypi2.md new file mode 100644 index 00000000..1faf8eee --- /dev/null +++ b/_crates/muntsos_dev_raspberrypi2.md @@ -0,0 +1 @@ +Not found: muntsos_dev_raspberrypi2* diff --git a/_crates/muntsos_raspberrypi1.md b/_crates/muntsos_raspberrypi1.md new file mode 100644 index 00000000..eba98d20 --- /dev/null +++ b/_crates/muntsos_raspberrypi1.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_raspberrypi1" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm", +"raspberrypi1"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for RaspberryPi1 targets" +dependencies: [{crate: "muntsos_dev_raspberrypi1", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_raspberrypi2.md b/_crates/muntsos_raspberrypi2.md new file mode 100644 index 00000000..732974d2 --- /dev/null +++ b/_crates/muntsos_raspberrypi2.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_raspberrypi2" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm", +"raspberrypi2"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for RaspberryPi2 targets" +dependencies: [{crate: "muntsos_dev_raspberrypi2", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_raspberrypi3.md b/_crates/muntsos_raspberrypi3.md new file mode 100644 index 00000000..eae16d53 --- /dev/null +++ b/_crates/muntsos_raspberrypi3.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_raspberrypi3" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm64", +"raspberrypi3"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for RaspberryPi3 targets" +dependencies: [{crate: "muntsos_dev_aarch64", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_raspberrypi4.md b/_crates/muntsos_raspberrypi4.md new file mode 100644 index 00000000..f36d5800 --- /dev/null +++ b/_crates/muntsos_raspberrypi4.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_raspberrypi4" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm64", +"raspberrypi4"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for RaspberryPi4 targets" +dependencies: [{crate: "muntsos_dev_aarch64", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/muntsos_raspberrypi5.md b/_crates/muntsos_raspberrypi5.md new file mode 100644 index 00000000..562a93e8 --- /dev/null +++ b/_crates/muntsos_raspberrypi5.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "muntsos_raspberrypi5" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: [] +websites: ["https://github.com/pmunts/muntsos"] +tags: ["muntsos", +"embedded", +"linux", +"arm64", +"raspberrypi5"] +version: "9.1.0" +short_description: "MuntsOS Embedded Linux support for RaspberryPi5 targets" +dependencies: [{crate: "muntsos_dev_aarch64", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/musicplayer.md b/_crates/musicplayer.md new file mode 100644 index 00000000..e34d94ef --- /dev/null +++ b/_crates/musicplayer.md @@ -0,0 +1,34 @@ +--- +layout: crate +crate: "musicplayer" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/MP"] +tags: ["music", +"audio", +"player"] +version: "20210719.0.0" +short_description: "A Music Player" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "ada_gui", version: "^20240224.0.0"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "ssl", version: "^3.0.2"}] +configuration_variables: [] +configuration_values: [] + +--- +# MP +A Music Player + +Uses the Gnoga audio widget to create a music player. + +This does what I want from a music player. Considering all the features that most music players have that this doesn't, I presume that most people will find MP lacking. However, it may serve someone as the basis for a more complex player. + +The audio widget seems to require relative paths to the audio files. The file browser in this program will only choose audio files that are in the program's working directory, or in a directory under that. + +MP uses [the Gnoga File Selection widget](https://github.com/jrcarter/Gnoga_File_Selection), which has only been tested on Linux. + +MP uses [the PragmAda Reusable Components](https://github.com/jrcarter/PragmARC). + + diff --git a/_crates/ncursesada.md b/_crates/ncursesada.md new file mode 100644 index 00000000..7bbf7655 --- /dev/null +++ b/_crates/ncursesada.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "ncursesada" +authors: ["Thomas E. Dickey", +"Juergen Pfeifer", +"Eric S Raymond", +"Alexander V Lukyanov", +"Philippe Blain", +"Sven Verdoolaege", +"Nicolas Boulenguez"] +maintainers: ["Pascal Pignard "] +licenses: ["X11 OR MIT"] +websites: ["https://github.com/Blady-Com/ncurses"] +tags: ["ncurses", +"binding"] +version: "6.3.0" +short_description: "Ada binding to the ncurses text user interface library" +dependencies: [{crate: "m4_tool", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/nrf5x_hal.md b/_crates/nrf5x_hal.md new file mode 100644 index 00000000..1e770b47 --- /dev/null +++ b/_crates/nrf5x_hal.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "nrf5x_hal" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/AdaCore/Ada_Drivers_Library/"] +tags: ["embedded", +"nostd", +"nrf51", +"nrf52", +"nordic", +"drivers", +"ble"] +version: "0.1.0" +short_description: "Drivers and HAL for the Nordic nRF5X micro-controller family" +dependencies: [{crate: "cortex_m", version: "~0.2.0"}, +{crate: "gnat_arm_elf", version: "^11.2"}, +{crate: "hal", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ocarina_lib.md b/_crates/ocarina_lib.md new file mode 100644 index 00000000..7002b6d9 --- /dev/null +++ b/_crates/ocarina_lib.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "ocarina_lib" +authors: ["Telecom ParisTech", +"Jérôme Hugues"] +maintainers: ["Max Reznik "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["http://www.openaadl.org/ocarina.html"] +tags: ["aadl", +"model"] +version: "1.1.0-20070603" +short_description: "Ocarina is a stand-alone AADL model processor, written in Ada." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is an old snapshot used in Cheddar! + diff --git a/_crates/openai.md b/_crates/openai.md new file mode 100644 index 00000000..3cac3b60 --- /dev/null +++ b/_crates/openai.md @@ -0,0 +1,51 @@ +--- +layout: crate +crate: "openai" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-openai"] +tags: ["rest", +"web", +"api", +"openapi", +"openai"] +version: "1.0.0" +short_description: "OpenAI client library" +dependencies: [{crate: "openapi", version: "~0.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[Ada OpenAI](https://gitlab.com/stcarrez/ada-openai) provides an Ada API to make requests on the +[OpenAI](https://openai.com/) models allowing an Ada application to access the [GPT-3](https://platform.openai.com/docs/models/gpt-3-5), +[GPT-4](https://platform.openai.com/docs/models/gpt-4), +[DALL.E](https://platform.openai.com/docs/models/dall-e) +and other AI models. + +The library was generated by the [OpenAPI](https://github.com/OpenAPITools/openapi-generator) code generator from the +OpenAPI description of the OpenAI service and it uses the [OpenAPI Ada](https://github.com/stcarrez/swagger-ada) library +to make HTTP requests and perform JSON serialization and deserialization. + +## Alire setup + +``` +alr with openai +``` + +For the HTTP connection, you can either use AWS or CURL and run one of the following commands: + +``` +alr with utilada_curl +alr with utilada_aws +``` + +## Links + +- [OpenAI API reference](https://platform.openai.com/docs/api-reference) +- Ada example: [OpenAI Image Generation](https://gitlab.com/stcarrez/openapi-image) +- Ada example: [OpenAI Chat](https://gitlab.com/stcarrez/openai-chat) +- Ada example: [OpenAI Completion](https://gitlab.com/stcarrez/openapi-completion) + + + diff --git a/_crates/openapi.md b/_crates/openapi.md new file mode 100644 index 00000000..100a77f6 --- /dev/null +++ b/_crates/openapi.md @@ -0,0 +1,58 @@ +--- +layout: crate +crate: "openapi" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/openapi-ada"] +tags: ["rest", +"web", +"api", +"openapi"] +version: "0.8.0" +short_description: "OpenAPI library to build REST client applications" +dependencies: [{crate: "security", version: "^1.5.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/build.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/summary) + +[OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator) is a code generator that supports generation of +API client libraries, server stubs and documentation automatically +given an [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification). + +The Ada client support has been integrated in [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). + +The OpenAPI Ada library is a small support library for the Ada code generator +provided by OpenAPI Generator. The library provides support to serialize the data, +make HTTP requests and support the [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification) +specific operations or types. + +## Alire setup + +``` +alr with openapi +``` + +For the HTTP connection, you can either use AWS or CURL and run one of the following commands: + +``` +alr with utilada_curl +alr with utilada_aws +``` + +## Generation + +Example of client generation with OpenAPI file `my-api.yaml` and use of CURL support: + +``` + alr exec -- openapi-generate-client -i my-api.yaml --additional-properties projectName=MyProject --additional-properties openApiName=OpenAPI --additional-properties httpSupport=Curl --model-package MyProject.MyModule -o . +``` + + + diff --git a/_crates/openapi_server.md b/_crates/openapi_server.md new file mode 100644 index 00000000..5be99877 --- /dev/null +++ b/_crates/openapi_server.md @@ -0,0 +1,66 @@ +--- +layout: crate +crate: "openapi_server" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/openapi-ada"] +tags: ["rest", +"web", +"api", +"openapi"] +version: "0.8.0" +short_description: "OpenAPI library to build REST server applications" +dependencies: [{crate: "openapi", version: "^0.7.0"}, +{crate: "security", version: "^1.5.0"}, +{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/build.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/openapi-ada/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/openapi-ada/summary) + +[OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator) is a code generator that supports generation of +API client libraries, server stubs and documentation automatically +given an [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification). + +The Ada server support has been integrated in [OpenAPI Generator](https://github.com/OpenAPITools/openapi-generator). + +The OpenAPI Ada library is a small support library for the Ada code generator +provided by OpenAPI Generator. The library provides support to serialize the data, +make HTTP requests and support the [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification). +specific operations or types. + +## Alire setup + +``` +alr with openapi_server +``` + +For the server part, you must choose a servlet web container that will handle the requests. +Two web server implementations are provided: + +* [AWS](https://github.com/AdaCore/aws) +* [EWS](https://github.com/simonjwright/ews) + +and you should run one of the following `alr` command depending on your choice: + +``` +alr with servletada_aws +alr with servletada_ews +``` + +## Generation + +Example of server generation with OpenAPI file `my-api.yaml` and use of CURL support: + +``` + alr exec -- openapi-generate-server -i my-api.yaml --additional-properties projectName=MyProject --additional-properties openApiName=OpenAPI --additional-properties httpSupport=Curl --model-package MyProject.MyModule -o . +``` + + + diff --git a/_crates/openglada.md b/_crates/openglada.md new file mode 100644 index 00000000..83f4909c --- /dev/null +++ b/_crates/openglada.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "openglada" +authors: ["Felix Krause"] +maintainers: ["Felix Krause "] +licenses: ["MIT"] +websites: ["http://flyx.github.io/OpenGLAda/"] +tags: ["opengl", +"binding", +"rendering", +"graphics"] +version: "0.9.0" +short_description: "Thick Ada binding for OpenGL" +dependencies: [{crate: "libx11", version: "^1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/openglada_glfw.md b/_crates/openglada_glfw.md new file mode 100644 index 00000000..944b5f12 --- /dev/null +++ b/_crates/openglada_glfw.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "openglada_glfw" +authors: ["Felix Krause"] +maintainers: ["Felix Krause "] +licenses: ["MIT"] +websites: ["http://flyx.github.io/OpenGLAda/"] +tags: ["opengl", +"glfw", +"binding", +"gui"] +version: "0.9.0" +short_description: "GLFW binding for use with OpenGLAda" +dependencies: [{crate: "libglfw3", version: "^3"}, +{crate: "openglada", version: "~0.9.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/openglada_images.md b/_crates/openglada_images.md new file mode 100644 index 00000000..d022c8cd --- /dev/null +++ b/_crates/openglada_images.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "openglada_images" +authors: ["Felix Krause"] +maintainers: ["Felix Krause "] +licenses: ["MIT"] +websites: ["http://flyx.github.io/OpenGLAda/"] +tags: ["opengl", +"rendering", +"graphics"] +version: "0.9.0" +short_description: "Image loading library for OpenGLAda" +dependencies: [{crate: "gid", version: "^9.0.0"}, +{crate: "openglada", version: "~0.9.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/openglada_text.md b/_crates/openglada_text.md new file mode 100644 index 00000000..23a8fee3 --- /dev/null +++ b/_crates/openglada_text.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "openglada_text" +authors: ["Felix Krause"] +maintainers: ["Felix Krause "] +licenses: ["MIT"] +websites: ["http://flyx.github.io/OpenGLAda/"] +tags: ["opengl", +"rendering", +"fonts"] +version: "0.9.0" +short_description: "Text rendering library for OpenGLAda" +dependencies: [{crate: "freetypeada", version: "~0.1.0"}, +{crate: "openglada", version: "~0.9.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/openssl.md b/_crates/openssl.md new file mode 100644 index 00000000..1dc3a2ae --- /dev/null +++ b/_crates/openssl.md @@ -0,0 +1 @@ +Not found: openssl* diff --git a/_crates/opentoken.md b/_crates/opentoken.md new file mode 100644 index 00000000..0cf4d68e --- /dev/null +++ b/_crates/opentoken.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "opentoken" +authors: ["Stephen Leake"] +maintainers: ["Lionel Draghi "] +licenses: ["GPL-3.0-or-later"] +websites: [""] +tags: ["lexer", +"parser"] +version: "6.0.3" +short_description: "facility for performing token analysis and parsing within Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/optional.md b/_crates/optional.md new file mode 100644 index 00000000..50853a35 --- /dev/null +++ b/_crates/optional.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "optional" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/mosteo/optional/"] +tags: ["optional", +"functional"] +version: "0.2.0" +short_description: "Optional values a la java.lang.Optional" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka.md b/_crates/orka.md new file mode 100644 index 00000000..912cab7b --- /dev/null +++ b/_crates/orka.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "orka" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["azdo", +"egl", +"opengl", +"orka", +"rendering", +"graphics", +"game", +"engine", +"ktx", +"gltf"] +version: "1.0.0" +short_description: "OpenGL 4.6 rendering kernel written in Ada 2012" +dependencies: [{crate: "orka_egl", version: "~1.0.0"}, +{crate: "orka_opengl", version: "~1.0.0"}, +{crate: "orka_simd", version: "~1.0.0"}, +{crate: "orka_transforms", version: "~1.0.0"}, +{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_awt.md b/_crates/orka_awt.md new file mode 100644 index 00000000..db247a5d --- /dev/null +++ b/_crates/orka_awt.md @@ -0,0 +1,33 @@ +--- +layout: crate +crate: "orka_awt" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["egl", +"wayland", +"windows", +"graphics", +"opengl", +"input", +"gamepad"] +version: "1.0.0" +short_description: "Ada Window Toolkit" +dependencies: [{crate: "evdev", version: "^2.0.2"}, +{crate: "inotify", version: "^2.0.1"}, +{crate: "orka_egl", version: "~1.0.0"}, +{crate: "wayland_client_ada", version: "~1.0.0"}, +{crate: "wayland_cursor_ada", version: "~1.0.0"}, +{crate: "wayland_egl_ada", version: "~1.0.0"}, +{crate: "wayland_protocols_ada", version: "~1.0.0"}, +{crate: "orka", version: "~1.0.0"}, +{crate: "orka_numerics", version: "~1.0.0"}, +{crate: "orka_tensors_cpu", version: "~1.0.0"}, +{crate: "orka_transforms", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_egl.md b/_crates/orka_egl.md new file mode 100644 index 00000000..2f772af8 --- /dev/null +++ b/_crates/orka_egl.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "orka_egl" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["egl", +"opengl", +"orka"] +version: "1.0.0" +short_description: "Ada 2012 bindings for EGL" +dependencies: [{crate: "libegl", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_numerics.md b/_crates/orka_numerics.md new file mode 100644 index 00000000..dd17a606 --- /dev/null +++ b/_crates/orka_numerics.md @@ -0,0 +1,32 @@ +--- +layout: crate +crate: "orka_numerics" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"math", +"vector", +"matrix", +"ndarray", +"tensor", +"numpy", +"random", +"statistics", +"integration", +"rk4", +"kalman", +"optimization", +"leastsquares", +"linearalgebra", +"linalg"] +version: "1.0.0" +short_description: "Tensors (multidimensional arrays) and integrators" +dependencies: [{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_opengl.md b/_crates/orka_opengl.md new file mode 100644 index 00000000..198a229b --- /dev/null +++ b/_crates/orka_opengl.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "orka_opengl" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["azdo", +"egl", +"opengl", +"orka", +"rendering", +"graphics"] +version: "1.0.0" +short_description: "OpenGL 4.6 backend for the Orka rendering engine" +dependencies: [{crate: "orka_egl", version: "~1.0.0"}, +{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_plugin_archives.md b/_crates/orka_plugin_archives.md new file mode 100644 index 00000000..b6d099e4 --- /dev/null +++ b/_crates/orka_plugin_archives.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "orka_plugin_archives" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"zip", +"dcf"] +version: "1.0.0" +short_description: "Orka plug-in to load resources from Zip archives" +dependencies: [{crate: "dcf", version: "^2.0.3"}, +{crate: "orka", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_plugin_atmosphere.md b/_crates/orka_plugin_atmosphere.md new file mode 100644 index 00000000..9c337b5e --- /dev/null +++ b/_crates/orka_plugin_atmosphere.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "orka_plugin_atmosphere" +authors: ["onox", +"Eric Bruneton"] +maintainers: ["onox "] +licenses: ["Apache-2.0 AND BSD-3-Clause"] +websites: ["https://github.com/onox/orka"] +tags: ["atmosphere", +"earth", +"orka"] +version: "1.0.0" +short_description: "Orka plug-in for precomputed atmospheric scattering" +dependencies: [{crate: "orka", version: "~1.0.0"}, +{crate: "orka_transforms", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_plugin_gltf.md b/_crates/orka_plugin_gltf.md new file mode 100644 index 00000000..4811f54c --- /dev/null +++ b/_crates/orka_plugin_gltf.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "orka_plugin_gltf" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["gltf", +"orka"] +version: "1.0.0" +short_description: "Orka plug-in for loading glTF models" +dependencies: [{crate: "json", version: "^5.0.3"}, +{crate: "orka", version: "~1.0.0"}, +{crate: "orka_transforms", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_plugin_terrain.md b/_crates/orka_plugin_terrain.md new file mode 100644 index 00000000..ae10b3ca --- /dev/null +++ b/_crates/orka_plugin_terrain.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "orka_plugin_terrain" +authors: ["onox", +"Jonathan Dupuy"] +maintainers: ["onox "] +licenses: ["Apache-2.0 AND MIT"] +websites: ["https://github.com/onox/orka"] +tags: ["terrain", +"orka"] +version: "1.0.0" +short_description: "Orka plug-in for adaptive tessellated flattened spheroids" +dependencies: [{crate: "orka", version: "~1.0.0"}, +{crate: "orka_plugin_atmosphere", version: "~1.0.0"}, +{crate: "orka_transforms", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_simd.md b/_crates/orka_simd.md new file mode 100644 index 00000000..45c8905d --- /dev/null +++ b/_crates/orka_simd.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "orka_simd" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"simd", +"sse", +"avx", +"fma", +"f16c"] +version: "1.0.0" +short_description: "Bindings for x86 SIMD extensions like SSE, AVX2, FMA, F16C" +dependencies: [{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_tensors_cpu.md b/_crates/orka_tensors_cpu.md new file mode 100644 index 00000000..04f65fb2 --- /dev/null +++ b/_crates/orka_tensors_cpu.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "orka_tensors_cpu" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"math", +"vector", +"matrix", +"ndarray", +"tensor", +"numpy", +"random", +"statistics", +"leastsquares", +"linearalgebra", +"linalg", +"simd"] +version: "1.0.0" +short_description: "Tensors using SIMD instructions on the CPU" +dependencies: [{crate: "orka_numerics", version: "~1.0.0"}, +{crate: "orka_simd", version: "~1.0.0"}, +{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_tensors_gpu.md b/_crates/orka_tensors_gpu.md new file mode 100644 index 00000000..30ae88b1 --- /dev/null +++ b/_crates/orka_tensors_gpu.md @@ -0,0 +1,35 @@ +--- +layout: crate +crate: "orka_tensors_gpu" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"math", +"vector", +"matrix", +"ndarray", +"tensor", +"numpy", +"random", +"statistics", +"leastsquares", +"linearalgebra", +"linalg", +"gpu", +"gpgpu", +"compute", +"shaders"] +version: "1.0.0" +short_description: "Tensors using compute shaders on the GPU" +dependencies: [{crate: "gnat", version: ">=12"}, +{crate: "orka", version: "~1.0.0"}, +{crate: "orka_numerics", version: "~1.0.0"}, +{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_tools.md b/_crates/orka_tools.md new file mode 100644 index 00000000..8e5d9580 --- /dev/null +++ b/_crates/orka_tools.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "orka_tools" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["gltf", +"ktx", +"opengl", +"orka"] +version: "1.0.0" +short_description: "Tools for the Orka rendering kernel" +dependencies: [{crate: "orka", version: "~1.0.0"}, +{crate: "orka_awt", version: "~1.0.0"}, +{crate: "orka_plugin_gltf", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_transforms.md b/_crates/orka_transforms.md new file mode 100644 index 00000000..523b7a22 --- /dev/null +++ b/_crates/orka_transforms.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "orka_transforms" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka", +"math", +"vector", +"matrix", +"quaternion"] +version: "1.0.0" +short_description: "Library to transform vectors, matrices, and quaternions using SIMD" +dependencies: [{crate: "orka_simd", version: "~1.0.0"}, +{crate: "orka_types", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/orka_types.md b/_crates/orka_types.md new file mode 100644 index 00000000..5ce06a96 --- /dev/null +++ b/_crates/orka_types.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "orka_types" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/orka"] +tags: ["orka"] +version: "1.0.0" +short_description: "Data types for Orka" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/parallelize.md b/_crates/parallelize.md new file mode 100644 index 00000000..2e194140 --- /dev/null +++ b/_crates/parallelize.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "parallelize" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["Apache-2.0"] +websites: [""] +tags: ["parallel", +"execution"] +version: "1.0.0" +short_description: "Execute multiple commands in parallel" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/parse_args.md b/_crates/parse_args.md new file mode 100644 index 00000000..fb71b56a --- /dev/null +++ b/_crates/parse_args.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "parse_args" +authors: ["James Humphry"] +maintainers: ["James Humphry "] +licenses: ["ISC"] +websites: ["https://github.com/jhumphry/parse_args"] +tags: ["cli", +"command-line"] +version: "0.9.0" +short_description: "An Ada 2012 package to parse command line arguments and options" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/partord.md b/_crates/partord.md new file mode 100644 index 00000000..b8f83c14 --- /dev/null +++ b/_crates/partord.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "partord" +authors: ["Riccardo Bernardini"] +maintainers: ["Riccardo Bernardini "] +licenses: ["MIT"] +websites: ["https://gitlab.com/my-ada-library/partord/"] +tags: ["sorting"] +version: "1.0.0" +short_description: "Small library for sorting with partial orders" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is a generic library that exports a sorting function that can operate with partial ordering, that is, it can happen that for some A /= B neither A < B nor A > B hold. + diff --git a/_crates/password_gen.md b/_crates/password_gen.md new file mode 100644 index 00000000..8f9fc808 --- /dev/null +++ b/_crates/password_gen.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "password_gen" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/bracke/Password_Gen"] +tags: ["passwordmaker"] +version: "20220720.0.0" +short_description: "A password generator using Ada-GUI/Gnoga" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "ada_gui", version: "^20240224.0.0"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "ssl", version: "^3.0.2"}] +configuration_variables: [] +configuration_values: [] + +--- +# Password_Gen +A password generator using Ada_GUI (https://github.com/jrcarter/Ada_GUI) + + diff --git a/_crates/pbkdf2.md b/_crates/pbkdf2.md new file mode 100644 index 00000000..baf07ac1 --- /dev/null +++ b/_crates/pbkdf2.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "pbkdf2" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/pbkdf2"] +tags: ["cryptography", +"security", +"pbkdf2"] +version: "3.0.0" +short_description: "PBKDF2 implemented in Ada" +dependencies: [{crate: "hmac", version: "^2.0.0"}, +{crate: "sha1", version: "^2.0.0"}, +{crate: "sha2", version: "^2.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/phcpack.md b/_crates/phcpack.md new file mode 100644 index 00000000..a0351775 --- /dev/null +++ b/_crates/phcpack.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "phcpack" +authors: ["Jan Verschelde"] +maintainers: ["Jan "] +licenses: ["GPL-3.0-only"] +websites: ["https://github.com/janverschelde/PHCpack"] +tags: [] +version: "2.4.88" +short_description: "Polynomial Homotopy Continuation" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +PHCpack is research software to solve systems of polynomial equations with homotopy continuation. + diff --git a/_crates/pico_bsp.md b/_crates/pico_bsp.md new file mode 100644 index 00000000..922d6954 --- /dev/null +++ b/_crates/pico_bsp.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "pico_bsp" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://pico-doc.synack.me/"] +tags: ["embedded", +"nostd", +"raspberrypi", +"pico", +"rp2040", +"bsp"] +version: "2.2.0" +short_description: "Board support package for Raspberry Pi Pico" +dependencies: [{crate: "rp2040_hal", version: "^2"}] +configuration_variables: [] +configuration_values: [{crate: 'rp2040_hal', settings: [{name: 'Flash_Chip', value: "w25qxx"}]}] + +--- + + diff --git a/_crates/pico_examples.md b/_crates/pico_examples.md new file mode 100644 index 00000000..9aa76079 --- /dev/null +++ b/_crates/pico_examples.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "pico_examples" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://pico-doc.synack.me/"] +tags: ["embedded", +"nostd", +"pico", +"rp2040"] +version: "2.2.0" +short_description: "Examples for Ada on the Raspberry Pi Pico" +dependencies: [{crate: "chests", version: "~0.1.1"}, +{crate: "pico_bsp", version: "^2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/pkg_config.md b/_crates/pkg_config.md new file mode 100644 index 00000000..baa12c9d --- /dev/null +++ b/_crates/pkg_config.md @@ -0,0 +1 @@ +Not found: pkg_config* diff --git a/_crates/pla_util.md b/_crates/pla_util.md new file mode 100644 index 00000000..f7d59d08 --- /dev/null +++ b/_crates/pla_util.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "pla_util" +authors: ["John Serock"] +maintainers: ["john.serock@gmail.com"] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/serock/pla-util"] +tags: ["powerline"] +version: "2.1.2" +short_description: "A power line adapter utility" +dependencies: [{crate: "libpcap", version: "^1.8.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/play_2048.md b/_crates/play_2048.md new file mode 100644 index 00000000..17092818 --- /dev/null +++ b/_crates/play_2048.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "play_2048" +authors: ["Manuel Gomez"] +maintainers: ["Manuel Gomez "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/mgrojo/play_2048/"] +tags: ["game", +"puzzle", +"cross-platform", +"sfml"] +version: "1.0.0" +short_description: "2048 game: merge tiles with the same number until you add up to 2048" +dependencies: [{crate: "asfml", version: "^2.5.0"}, +{crate: "ada_toml", version: "~0.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/plplot.md b/_crates/plplot.md new file mode 100644 index 00000000..b5da4499 --- /dev/null +++ b/_crates/plplot.md @@ -0,0 +1 @@ +Not found: plplot* diff --git a/_crates/portable_minimal_ada_rts.md b/_crates/portable_minimal_ada_rts.md new file mode 100644 index 00000000..0c9c36a6 --- /dev/null +++ b/_crates/portable_minimal_ada_rts.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "portable_minimal_ada_rts" +authors: ["J. German Rivera"] +maintainers: ["J. German Rivera "] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/jgrivera67/portable_minimal_ada_rts"] +tags: ["rts"] +version: "1.0.0" +short_description: "Portable Minimal Ada Runtime Library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/postgresql.md b/_crates/postgresql.md new file mode 100644 index 00000000..5556805c --- /dev/null +++ b/_crates/postgresql.md @@ -0,0 +1 @@ +Not found: postgresql* diff --git a/_crates/powerjoular.md b/_crates/powerjoular.md new file mode 100644 index 00000000..75fb91f2 --- /dev/null +++ b/_crates/powerjoular.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "powerjoular" +authors: ["Adel Noureddine"] +maintainers: ["Adel Noureddine "] +licenses: ["GPL-3.0-only"] +websites: ["https://www.noureddine.org/research/joular/powerjoular"] +tags: ["linux", +"power", +"energy"] +version: "1.0.4" +short_description: "Monitoring the power consumption of multiple platforms and processes" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ppag.md b/_crates/ppag.md new file mode 100644 index 00000000..e6d11b8a --- /dev/null +++ b/_crates/ppag.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "ppag" +authors: ["Pascal Pignard"] +maintainers: ["Pascal Pignard "] +licenses: ["CECILL-2.1"] +websites: ["https://github.com/Blady-Com/Exemples-PPAG"] +tags: ["gnoga", +"tutorial"] +version: "2.1.1" +short_description: "First steps with Gnoga" +dependencies: [{crate: "gnoga", version: "^2.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/pragmarc.md b/_crates/pragmarc.md new file mode 100644 index 00000000..59690216 --- /dev/null +++ b/_crates/pragmarc.md @@ -0,0 +1,27 @@ +--- +layout: crate +crate: "pragmarc" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/PragmARC"] +tags: ["cards", +"conversions", +"datastructures", +"encryption", +"matching", +"randomness", +"safety", +"sorting", +"taskcom", +"tty", +"containers"] +version: "20240810.0.0" +short_description: "The PragmAda Reusable Components" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/prettier_ada.md b/_crates/prettier_ada.md new file mode 100644 index 00000000..aef1e481 --- /dev/null +++ b/_crates/prettier_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "prettier_ada" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: [] +tags: ["format", +"formatter"] +version: "25.0.0" +short_description: "Port of the Prettier formatter to Ada" +dependencies: [{crate: "gnatcoll", version: "^25"}, +{crate: "vss", version: "^25"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/printer_toolkit.md b/_crates/printer_toolkit.md new file mode 100644 index 00000000..dda5b7b7 --- /dev/null +++ b/_crates/printer_toolkit.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "printer_toolkit" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/printer-toolkit"] +tags: ["reports", +"console", +"charts"] +version: "0.2.0" +short_description: "Printer toolkit to write reports" +dependencies: [{crate: "ansiada", version: "^1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +Printer toolkit provides support to write reports on console or to produce SVG files with almost +the same Ada code. + +The core library is provided by `printer_toolkit` and the SVG support implemented by the `printer_toolkit_svg`. +Run one of the following Alire commands or both: + +``` +alr with printer_toolkit +alr with printer_toolkit_svg +``` + + diff --git a/_crates/program_proofs_in_spark.md b/_crates/program_proofs_in_spark.md new file mode 100644 index 00000000..950ad77c --- /dev/null +++ b/_crates/program_proofs_in_spark.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "program_proofs_in_spark" +authors: ["Yannick Moy"] +maintainers: ["Yannick Moy "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/AdaCore/program_proofs_in_spark"] +tags: ["spark"] +version: "0.1.1" +short_description: "Programs from the book Program Proofs in SPARK" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}, +{crate: "gnatprove", version: "^12.1.1"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/progress_indicators.md b/_crates/progress_indicators.md new file mode 100644 index 00000000..2f40de4d --- /dev/null +++ b/_crates/progress_indicators.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "progress_indicators" +authors: ["the progress_indicators authors"] +maintainers: ["Paul Jarrett "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/pyjarrett/progress_indicators"] +tags: ["command-line", +"console", +"terminal", +"progress"] +version: "0.0.1" +short_description: "Ways of displaying progress in command line tools." +dependencies: [{crate: "ansiada", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/protobuf.md b/_crates/protobuf.md new file mode 100644 index 00000000..81091d5c --- /dev/null +++ b/_crates/protobuf.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "protobuf" +authors: ["Maxim Reznik"] +maintainers: ["Maxim Reznik "] +licenses: ["MIT"] +websites: ["https://github.com/reznikmm/protobuf"] +tags: ["protocol", +"rpc", +"generator"] +version: "1.0.0" +short_description: "Google Protocol Buffers implementation in Ada" +dependencies: [{crate: "ada_pretty", version: "*"}, +{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/pygamer_bsp.md b/_crates/pygamer_bsp.md new file mode 100644 index 00000000..030b1ef5 --- /dev/null +++ b/_crates/pygamer_bsp.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "pygamer_bsp" +authors: [] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["BSD-3-Clause"] +websites: [] +tags: ["embedded", +"nostd", +"pygamer", +"adafruit", +"game", +"console", +"bsp"] +version: "1.0.0" +short_description: "Board Support Package for the AdaFruit PyGamer" +dependencies: [{crate: "cortex_m", version: "~0.1.0"}, +{crate: "samd51_hal", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/pygamer_simulator.md b/_crates/pygamer_simulator.md new file mode 100644 index 00000000..fc177db9 --- /dev/null +++ b/_crates/pygamer_simulator.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "pygamer_simulator" +authors: [] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/pygamer-simulator"] +tags: ["pygamer", +"adafruit", +"game", +"console", +"simulator"] +version: "1.0.0" +short_description: "SDL simulator of the AdaFruit PyGamer console" +dependencies: [{crate: "asfml", version: "2.5.1"}, +{crate: "hal", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/qmc5883.md b/_crates/qmc5883.md new file mode 100644 index 00000000..9f46787c --- /dev/null +++ b/_crates/qmc5883.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "qmc5883" +authors: ["Max Reznik"] +maintainers: ["Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/reznikmm/qmc5883"] +tags: ["sensor", +"magnetometer", +"driver"] +version: "1.0.0" +short_description: "Driver for QMC5883L magnetic sensor" +dependencies: [{crate: "gnat", version: ">=11 & <2000"}, +{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/qoi.md b/_crates/qoi.md new file mode 100644 index 00000000..111ceb3b --- /dev/null +++ b/_crates/qoi.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "qoi" +authors: ["Fabien Chouteau", +"Joffrey Huguet"] +maintainers: ["Fabien-Chouteau ", +"Joffrey Huguet "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/qoi-spark"] +tags: ["image", +"encoding", +"qoi"] +version: "0.1.0" +short_description: "Ada/SPARK implementation of the Quite Ok Image format" +dependencies: [{crate: "gnat", version: ">=11.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/qplt.md b/_crates/qplt.md new file mode 100644 index 00000000..6e018c03 --- /dev/null +++ b/_crates/qplt.md @@ -0,0 +1,50 @@ +--- +layout: crate +crate: "qplt" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Qplt"] +tags: ["plot", +"data"] +version: "20230720.0.0" +short_description: "An Ada-GUI program to quickly produce a plot of a data set" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}, +{crate: "pragmarc", version: "^20240323.0.0"}, +{crate: "ada_gui", version: "^20240224.0.0"}, +{crate: "ssl", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +# Qplt +Quick Plot: an Ada-GUI program to quickly produce a plot of a data set + +## Usage +type + +qplt -? + +for usage instructions, or read the code that outputs them. + +## Dependencies +Qplt requires Ada GUI (https://github.com/jrcarter/Ada_GUI) and the PragmAda Reusable Components (https://github.com/jrcarter/PragmARC). Those unfamiliar with Ada GUI should install it, run the test programs, and be familiar with its Readme before running Qplt. + +## Sample Input +The files qplt_sine.txt, qplt_sombrero.txt, and qplt_wpop.txt contain sample data for Qplt. + +qplt_sine.txt contains a sine curve. Suggested use: + +qplt np -t Sine qplt_sine.txt + +qplt_sombrero.txt contains the "Sombrero" curve, sin x / x (with the limit of 1 plotted for x = 0). Suggested use: + +qplt np -t Sombrero qplt_sombrero.txt + +qplt_wpop.txt contains values of world population since 1600. Suggested use: + +qplt -t "World Population" -x Year -y "Population in billions" qplt_wpop.txt + +The sample input files are proveded under the CC BY-SA license (https://creativecommons.org/licenses/by-sa/4.0/). + + diff --git a/_crates/raspberry_bsp.md b/_crates/raspberry_bsp.md new file mode 100644 index 00000000..ceaeb361 --- /dev/null +++ b/_crates/raspberry_bsp.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "raspberry_bsp" +authors: ["Tama McGlinn"] +maintainers: ["Tama McGlinn "] +licenses: ["MIT"] +websites: ["https://github.com/TamaMcGlinn/ada_raspio"] +tags: ["raspberry", +"pi"] +version: "1.0.0" +short_description: "Board Support package for Raspberry PI v1, v2 and B+" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/raylib.md b/_crates/raylib.md new file mode 100644 index 00000000..77c905b9 --- /dev/null +++ b/_crates/raylib.md @@ -0,0 +1,67 @@ +--- +layout: crate +crate: "raylib" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["raylib", +"gamedev", +"binding"] +version: "1.0.1" +short_description: "Ada bindings for Raylib" +dependencies: [{crate: "gnat", version: ">=12 & <2000"}, +{crate: "libraylib", version: "^5"}] +configuration_variables: [] +configuration_values: [] + +--- +# Using raylib-ada + +This project is available in the [Alire package manager](https://alire.ada.dev). +To use it, just add `raylib` in your dependencies: +```console +$ alr with raylib +``` + +And add the following linker switches for executable projects to link against +Raylib and libmath: +``` + package Linker is + for Switches ("Ada") use ("-lraylib", "-lm"); + end Linker; +``` + +# Raylib dependencies on Ubuntu/Debian + +When Raylib is available in the system distributions (Arch, Fedora, Msys2, +Macports, Brew, etc.), Alire will install it for you so there's nothing to do +here. + +For Ubuntu/Debian on the other hand, you have to download a Raylib release from +GitHub (or build from source if you want). + +Alire will let you know with a message like this: +``` +warn: The following external dependencies are unavailable within Alire: +warn: libraylib^5 +warn: They should be made available in the environment by the user. +``` + +Download the 5.0 release from this address: +``` +$ wget https://github.com/raysan5/raylib/releases/download/5.0/raylib-5.0_linux_amd64.tar.gz +``` + +Extract it: +``` +$ tar xf raylib-5.0_linux_amd64.tar.gz +``` + +Set the environment variables like so: +``` +$ export C_INCLUDE_PATH=${PWD}/raylib-5.0_linux_amd64/include/:${C_INCLUDE_PATH} +$ export LIBRARY_PATH=${PWD}/raylib-5.0_linux_amd64/lib/:${LIBRARY_PATH} +``` + + diff --git a/_crates/rclada.md b/_crates/rclada.md new file mode 100644 index 00000000..cd431b7f --- /dev/null +++ b/_crates/rclada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "rclada" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/ada-ros/ada4ros2"] +tags: ["ros", +"robotics", +"client"] +version: "0.1.0" +short_description: "ROS2 Ada Client Library" +dependencies: [{crate: "ros2_foxy", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/rclada_examples.md b/_crates/rclada_examples.md new file mode 100644 index 00000000..6b58d07b --- /dev/null +++ b/_crates/rclada_examples.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "rclada_examples" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/ada-ros/ada4ros2"] +tags: ["ros", +"robotics", +"client"] +version: "0.1.0" +short_description: "ROS2 Ada Client Library - Examples" +dependencies: [{crate: "rclada", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/re2c.md b/_crates/re2c.md new file mode 100644 index 00000000..fa42cf5a --- /dev/null +++ b/_crates/re2c.md @@ -0,0 +1 @@ +Not found: re2c* diff --git a/_crates/rejuvenation.md b/_crates/rejuvenation.md new file mode 100644 index 00000000..7c044e26 --- /dev/null +++ b/_crates/rejuvenation.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "rejuvenation" +authors: ["Pierre van de Laar", +"Arjan J. Mooij"] +maintainers: ["Pierre van de Laar "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/TNO/Rejuvenation-Ada"] +tags: ["analysis", +"manipulation", +"transformation"] +version: "23.0.0" +short_description: "Analysis and manipulation of Ada code based on concrete patterns" +dependencies: [{crate: "libadalang", version: "^23.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/remoteio.md b/_crates/remoteio.md new file mode 100644 index 00000000..c50325a1 --- /dev/null +++ b/_crates/remoteio.md @@ -0,0 +1,54 @@ +--- +layout: crate +crate: "remoteio" +authors: ["Philip Munts"] +maintainers: ["Philip Munts "] +licenses: ["BSD-1-Clause"] +websites: ["https://github.com/pmunts/libsimpleio"] +tags: ["embedded", +"linux", +"remoteio", +"adc", +"dac", +"gpio", +"i2c", +"motor", +"pwm", +"sensor", +"serial", +"servo", +"spi", +"stepper"] +version: "2.22357.1" +short_description: "Remote I/O Protocol Client Library for GNAT Ada" +dependencies: [{crate: "libhidapi", version: "*"}, +{crate: "libusb", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +This crate contains a subset of the [**Linux Simple I/O +Library**](https://github.com/pmunts/libsimpleio) Ada packages that are +relevant for building [**Remote I/O +Protocol**](http://git.munts.com/libsimpleio/doc/RemoteIOProtocol.pdf) +client programs. + +This crate can be built for Linux, MacOS, or Windows targets. + +The **Remote I/O Protocol** is a lightweight message protocol for +performing remote I/O operations. The protocol is implemented using a +request/reply pattern, where the master device (*e.g.* a Linux computer) +transmits an I/O request in a 64-byte message to the slave device +(*e.g.* a single chip microcontroller). The slave device performs the +requested I/O operation and returns an I/O response in a 64-byte message +back to the master device. + +The protocol is kept as simple as possible (exactly one 64-byte request +message and one 64- byte response message) to allow using low end single +chip microcontrollers such as the +[PIC16F1455](https://www.microchip.com/en-us/product/PIC16F1455) for the +slave device. Although particularly suited for USB raw HID devices, this +protocol can use any transport mechanism that can reliably transmit and +receive 64-byte messages. + + diff --git a/_crates/resources.md b/_crates/resources.md new file mode 100644 index 00000000..ff12a90a --- /dev/null +++ b/_crates/resources.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "resources" +authors: ["Alire Team"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/alire-project/resources"] +tags: ["utils"] +version: "0.1.0" +short_description: "Utility library to handle project resources at run-time" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/rewriters.md b/_crates/rewriters.md new file mode 100644 index 00000000..a6020b23 --- /dev/null +++ b/_crates/rewriters.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "rewriters" +authors: ["Pierre van de Laar"] +maintainers: ["Pierre van de Laar "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/TNO/Rewriters-Ada"] +tags: ["manipulation", +"transformation"] +version: "23.0.0" +short_description: "Easy, yet advanced manipulation of Ada code" +dependencies: [{crate: "libadalang", version: "^23.0.0"}, +{crate: "rejuvenation", version: "^23.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ros2_foxy.md b/_crates/ros2_foxy.md new file mode 100644 index 00000000..37e502a0 --- /dev/null +++ b/_crates/ros2_foxy.md @@ -0,0 +1 @@ +Not found: ros2_foxy* diff --git a/_crates/rp2040_hal.md b/_crates/rp2040_hal.md new file mode 100644 index 00000000..ee58dd72 --- /dev/null +++ b/_crates/rp2040_hal.md @@ -0,0 +1,28 @@ +--- +layout: crate +crate: "rp2040_hal" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["BSD-3-Clause"] +websites: ["https://pico-doc.synack.me/"] +tags: ["embedded", +"nostd", +"rp2040", +"raspberrypi", +"drivers"] +version: "2.4.1" +short_description: "Drivers and HAL for the RP2040 micro-controller family" +dependencies: [{crate: "atomic", version: "^1"}, +{crate: "cortex_m", version: "^1"}, +{crate: "gnat_arm_elf", version: "^14"}, +{crate: "hal", version: "^1"}, +{crate: "usb_embedded", version: "^1"}] +configuration_variables: [{name: 'Flash_Chip', type: 'Enum (w25qxx, generic_qspi, generic_03)', default: "w25qxx"}, +{name: 'Interrupts', type: 'Enum (hal, bb_runtimes)', default: "hal"}, +{name: 'Use_Startup', type: 'Boolean', default: "true"}] +configuration_values: [{crate: 'atomic', settings: [{name: 'Backend', value: "armv6m"}]}, +{crate: 'cortex_m', settings: [{name: 'core', value: "m0p"}]}] + +--- + + diff --git a/_crates/rsfile.md b/_crates/rsfile.md new file mode 100644 index 00000000..0727fb98 --- /dev/null +++ b/_crates/rsfile.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "rsfile" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["GPL-3.0-only"] +websites: [] +tags: ["command-line", +"tool", +"random", +"file-size"] +version: "1.0.1" +short_description: "Randomly pick a file with probability proportional to its size" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/rtmidi.md b/_crates/rtmidi.md new file mode 100644 index 00000000..78c84ae2 --- /dev/null +++ b/_crates/rtmidi.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "rtmidi" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/rtmidi_ada"] +tags: ["midi", +"rtmidi", +"music"] +version: "0.1.0" +short_description: "Ada \"middleweight\" binding for the rtMIDI library" +dependencies: [{crate: "librtmidi", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/rxada.md b/_crates/rxada.md new file mode 100644 index 00000000..88167afd --- /dev/null +++ b/_crates/rxada.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "rxada" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/mosteo/rxada"] +tags: ["rx", +"reactive", +"reactivex", +"observer"] +version: "0.1.1" +short_description: "Experimental implementation of ReactiveX in Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/saatana.md b/_crates/saatana.md new file mode 100644 index 00000000..f7d272c7 --- /dev/null +++ b/_crates/saatana.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "saatana" +authors: ["Vinzent Saranen"] +maintainers: ["amosteo@unizar.es", +"vinzent@heisenbug.eu"] +licenses: ["WTFPL"] +websites: ["https://github.heisenbug.eu/Saatana"] +tags: ["cryptography", +"spark"] +version: "2.0.2" +short_description: "SPARK/Ada Algorithms Targeting Advanced Network Applications" +dependencies: [{crate: "gnat", version: ">2020 | (>=11 & <2000)"}] +configuration_variables: [] +configuration_values: [] + +--- +Saatana - SPARK/Ada Algorithms Targeting Advanced Network Applications +A collection of cryptographic algorithms, proven for correctness in SPARK. + +Currently contains [![Phelix](https://www.schneier.com/academic/archives/2005/01/phelix.html)](https://www.schneier.com/academic/archives/2005/01/phelix.html) + + diff --git a/_crates/samd51_hal.md b/_crates/samd51_hal.md new file mode 100644 index 00000000..9bfebd61 --- /dev/null +++ b/_crates/samd51_hal.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "samd51_hal" +authors: [] +maintainers: ["chouteau@adacore.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/samd51-hal"] +tags: ["embedded", +"nostd", +"atsamd51", +"microchip", +"atmel", +"drivers"] +version: "0.3.0" +short_description: "Drivers and HAL for the SAMD51 micro-controller family" +dependencies: [{crate: "cortex_m", version: "~0.1"}, +{crate: "gnat_arm_elf", version: "^11.2.2"}, +{crate: "hal", version: "~0.1"}, +{crate: "usb_embedded", version: "~0.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/sciada.md b/_crates/sciada.md new file mode 100644 index 00000000..3a605995 --- /dev/null +++ b/_crates/sciada.md @@ -0,0 +1,34 @@ +--- +layout: crate +crate: "sciada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-sci"] +tags: ["sci", +"scientific", +"correlations", +"occurrences", +"similarities", +"statistics"] +version: "0.4.0" +short_description: "Collection of Scientific Operations" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +SCI Ada provides a collections of algorithms commonly used for data analysis: + +- [SCI.Correlations.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-correlations.ads?ref_type=heads) computes correlations between values, +- [SCI.Occurrences.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-occurrences.ads?ref_type=heads) helps in identifying occurrences of items, +- [SCI.Similarities.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-similarities.ads?ref_type=heads) provides metrics to compute similarities between sets. +- [SCI.Sparse.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-sparse.ads?ref_type=heads) defines sparse arrays. +- [SCI.Statistics.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-statistics.ads?ref_type=heads) defines some classical statistics operations. +- [SCI.Vectorizers.*](https://gitlab.com/stcarrez/ada-sci/-/blob/main/src/sci-vectorizers.ads?ref_type=heads) transforms a list of tokens to a vector. + +## Documentation + +- [Programmer's Guide](https://ada-sci.readthedocs.io/en/latest/) + + diff --git a/_crates/scripted_testing.md b/_crates/scripted_testing.md new file mode 100644 index 00000000..773013e5 --- /dev/null +++ b/_crates/scripted_testing.md @@ -0,0 +1,46 @@ +--- +layout: crate +crate: "scripted_testing" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/simonjwright/scripted_testing.git"] +tags: ["testing", +"integration", +"scripting"] +version: "2.0.0" +short_description: "Integration testing" +dependencies: [{crate: "tash", version: "^8.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +To set the scene, the Ada software under test (SUT) forms part of a system. Generally, the system will be constructed using a layered approach, and the other parts of the system that interact with the SUT are higher-level (which can call interface subprograms presented by the SUT) or lower-level (whose interfaces can be called by the SUT, or which can provide callbacks to the SUT). + +This package is intended for testing at a level between unit testing (using, for example, [AUnit](https://github.com/AdaCore/aunit)) and integration testing (using real hardware). Unit testing tends to be fragile, requiring a lot of rework for even minor functional changes in the requirements. + +The scripting language supported is [Tcl](http://www.tcl.tk), and specifically the Ada binding [Tash](https://github.com/simonjwright/tcladashell). The reason for choosing Tcl rather than Python or Lua is that Tcl's interface is entirely string-based; this is important, considering the need to specify values of enumerated types. + +The package provides facilities to write new commands in Tcl to + +* call the interface subprograms presented by the SUT, + +* set up values to be returned by calls the SUT makes to lower-level system components, + +* call callbacks provided by lower-level system components, + +* delay for appropriate periods, and + +* check that the proper calls have been made to lower-level system components, with the required values. + +It's assumed that the interface subprograms of the lower-level subsystems are stubbed so that: + +* `in` and `in out` parameters can be recorded for later checking, + +* `out` (and `in out`) parameter values and function `return` values can be provided to be returned to the SUT, + +* exceptions can be raised when required, + +* the number of calls to the subprogram can be checked. + + diff --git a/_crates/sdlada.md b/_crates/sdlada.md new file mode 100644 index 00000000..a17b1b22 --- /dev/null +++ b/_crates/sdlada.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "sdlada" +authors: ["Luke A. Guest"] +maintainers: ["Luke A. Guest "] +licenses: ["Zlib"] +websites: ["https://github.com/Lucretia/sdlada"] +tags: ["gamedev", +"games", +"portable", +"cross-platform"] +version: "2.5.20" +short_description: "Ada 2012 SDL 2.x bindings." +dependencies: [{crate: "libsdl2", version: "^2.0.0"}, +{crate: "libsdl2_image", version: "^2.0.0"}, +{crate: "libsdl2_mixer", version: "^2.0.0"}, +{crate: "libsdl2_ttf", version: "^2.0.0"}, +{crate: "make", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/secretada.md b/_crates/secretada.md new file mode 100644 index 00000000..bdc4a9a5 --- /dev/null +++ b/_crates/secretada.md @@ -0,0 +1,51 @@ +--- +layout: crate +crate: "secretada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-libsecret"] +tags: ["secret", +"bindings"] +version: "1.0.0" +short_description: "Secret service Ada binding" +dependencies: [{crate: "libglib", version: "*"}, +{crate: "libsecret", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +The [libsecret](https://wiki.gnome.org/Projects/Libsecret) is a library for storing +and retrieving passwords and others secrets. The library uses the +[Secret Service API](https://standards.freedesktop.org/secret-service/) provided +by Gnome Keyring or KDE Wallet. This library provides an Ada binding +to the [Secret Service API](https://standards.freedesktop.org/secret-service/). + +You can store a secret by using the following code extract: + +``` +with Secret.Services; +with Secret.Attributes; +with Secret.Values; +... + Service : Secret.Services.Service_Type; + List : Secret.Attributes.Map; + Value : Secret.Values.Secret_Type; +... + Service.Initialize; + List.Insert ("secret identification key", "secret identification value"); + Value := Secret.Values.Create ("the-secret-to-store"); + Service.Store (List, "The secret label (for the keyring manager)", Value); +``` + +And you will retrieve it with: + +``` + Value := Service.Lookup (List); + if not Value.Is_Null then + Ada.Text_IO.Put_Line (Value.Get_Value); + end if; +``` + + + diff --git a/_crates/security.md b/_crates/security.md new file mode 100644 index 00000000..b6ff9a0c --- /dev/null +++ b/_crates/security.md @@ -0,0 +1,49 @@ +--- +layout: crate +crate: "security" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-security"] +tags: ["security", +"oauth2", +"authentication", +"permissions", +"jwt"] +version: "1.5.1" +short_description: "Security Library for HTTP client and server with OAuth2 support" +dependencies: [{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_xml", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-security/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-security/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-security/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-securit/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-security/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-security/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-security/badge/?version=latest)](https://ada-security.readthedocs.io/en/latest/?badge=latest) + +Ada Security provides a security framework which allows applications to define +and enforce security policies. This framework allows users to authenticate by using +[OpenID Authentication 2.0](https://openid.net/specs/openid-authentication-2_0.html) +as well as [OAuth 2.0](https://oauth.net/2/) protocol. +It allows a web application to integrate easily with Yahoo!, Gitlab, Github, Facebook and +Google+ authentication systems. +The Ada05 library includes: + +* An OpenID client authentication, +* An OAuth 2.0 client authentication, +* An OpenID Connect authentication framework, +* An OAuth 2.0 server authentication framework, +* A policy based security framework to protect the resources + +The Ada Security library is used by the +[Ada Web Application](https://gitlab.com/stcarrez/ada-awa) +to provide authentication and access control to users within the web applications. + +## Documentation + +* [Ada Security Programmer's Guide](https://ada-security.readthedocs.io/en/latest/) + + + diff --git a/_crates/semantic_versioning.md b/_crates/semantic_versioning.md new file mode 100644 index 00000000..9ae86a60 --- /dev/null +++ b/_crates/semantic_versioning.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "semantic_versioning" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: ["https://github.com/alire-project/semantic_versioning"] +tags: ["semver", +"semantic", +"versioning"] +version: "2.1.0" +short_description: "Semantic Versioning in Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/septum.md b/_crates/septum.md new file mode 100644 index 00000000..c3713da1 --- /dev/null +++ b/_crates/septum.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "septum" +authors: ["Paul Jarrett"] +maintainers: ["Paul Jarrett "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/pyjarrett/septum"] +tags: ["search", +"code", +"text"] +version: "0.0.8" +short_description: "An interactive context-based text search tool for large codebases." +dependencies: [{crate: "dir_iterators", version: "~0.0.4"}, +{crate: "progress_indicators", version: "~0.0.1"}, +{crate: "trendy_terminal", version: "~0.0.5"}, +{crate: "atomic", version: "~0.5.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/serverfaces.md b/_crates/serverfaces.md new file mode 100644 index 00000000..ca9dc19e --- /dev/null +++ b/_crates/serverfaces.md @@ -0,0 +1,38 @@ +--- +layout: crate +crate: "serverfaces" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-asf"] +tags: ["web", +"servlet", +"http", +"json"] +version: "1.6.1" +short_description: "Web Server Faces JSR 252, JSR 314 and JSR 344" +dependencies: [{crate: "security", version: "^1.5.0"}, +{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-asf/badge/?version=latest)](https://ada-asf.readthedocs.io/en/latest/?badge=latest) + +Ada Servlet allows to create web applications using the same pattern +as the Java Servlet (See JSR 154, JSR 315). + +The Ada Servlet library is used by the [Ada Server Faces](https://github.com/stcarrez/ada-asf) +framework and [Ada Web Application](https://github.com/stcarrez/ada-awa) +to provide server web requests. + +# Documentation + +* [Ada Server Faces Programmer's Guide](https://ada-asf.readthedocs.io/en/latest/) [PDF](https://gitlab.com/stcarrez/ada-asf/blob/master/docs/asf-book.pdf) + + + diff --git a/_crates/serverfaces_unit.md b/_crates/serverfaces_unit.md new file mode 100644 index 00000000..4e07d7b9 --- /dev/null +++ b/_crates/serverfaces_unit.md @@ -0,0 +1,43 @@ +--- +layout: crate +crate: "serverfaces_unit" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-asf"] +tags: ["web", +"servlet", +"http", +"framework", +"facelet", +"jsf", +"testing"] +version: "1.6.1" +short_description: "Web Server Faces JSR 252, JSR 314 and JSR 344 (Testing framework)" +dependencies: [{crate: "security", version: "^1.5.0"}, +{crate: "serverfaces", version: "^1.6.0"}, +{crate: "servletada", version: "^1.7.0"}, +{crate: "servletada_unit", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_unit", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-asf/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-asf/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-asf/badge/?version=latest)](https://ada-asf.readthedocs.io/en/latest/?badge=latest) + +Ada Server Faces allows to create web applications using the same pattern +as the Java Server Faces (See JSR 252, JSR 314 and JSR 344). + +This library provides a unit test framework that helps in building unit tests +on top of Ada Server Faces. + +# Documentation + +* [Ada Server Faces Programmer's Guide](https://ada-asf.readthedocs.io/en/latest/) [PDF](https://gitlab.com/stcarrez/ada-asf/blob/master/docs/asf-book.pdf) + + + diff --git a/_crates/servletada.md b/_crates/servletada.md new file mode 100644 index 00000000..a791899e --- /dev/null +++ b/_crates/servletada.md @@ -0,0 +1,34 @@ +--- +layout: crate +crate: "servletada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-servlet"] +tags: ["web", +"servlet", +"http", +"json", +"rest"] +version: "1.7.1" +short_description: "Web Servlet Library following JSR 154, JSR 315 (Core)" +dependencies: [{crate: "elada", version: "^1.8.5"}, +{crate: "security", version: "^1.5.0"}, +{crate: "utilada", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) + +Ada Servlet allows to create web applications using the same pattern +as the Java Servlet (See JSR 154, JSR 315). + +The Ada Servlet library is used by the [Ada Server Faces](https://gitlab.com/stcarrez/ada-asf) +framework and [Ada Web Application](https://gitlab.com/stcarrez/ada-awa) +to provide server web requests. + + + diff --git a/_crates/servletada_aws.md b/_crates/servletada_aws.md new file mode 100644 index 00000000..e2e7bca3 --- /dev/null +++ b/_crates/servletada_aws.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "servletada_aws" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-servlet"] +tags: ["web", +"servlet", +"http", +"json"] +version: "1.7.1" +short_description: "Web Servlet Library following JSR 154, JSR 315 (AWS)" +dependencies: [{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada_aws", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) + +Ada Servlet allows to create web applications using the same pattern +as the Java Servlet (See JSR 154, JSR 315). + +This library integrates the Ada Servlet in the Ada Web Server. + + + diff --git a/_crates/servletada_ews.md b/_crates/servletada_ews.md new file mode 100644 index 00000000..cecda8c2 --- /dev/null +++ b/_crates/servletada_ews.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "servletada_ews" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-servlet"] +tags: ["web", +"servlet", +"http", +"json"] +version: "1.7.1" +short_description: "Web Servlet Library following JSR 154, JSR 315 (EWS)" +dependencies: [{crate: "ews", version: "*"}, +{crate: "servletada", version: "^1.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) + +Ada Servlet allows to create web applications using the same pattern +as the Java Servlet (See JSR 154, JSR 315). + +This library integrates the Ada Servlet in the Embedded Web Server. + + + diff --git a/_crates/servletada_unit.md b/_crates/servletada_unit.md new file mode 100644 index 00000000..ef468cf7 --- /dev/null +++ b/_crates/servletada_unit.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "servletada_unit" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-servlet"] +tags: ["web", +"servlet", +"http", +"json", +"rest", +"testing"] +version: "1.7.1" +short_description: "Web Servlet Library following JSR 154, JSR 315 (Testing framework)" +dependencies: [{crate: "servletada", version: "^1.7.0"}, +{crate: "utilada", version: "^2.6.0"}, +{crate: "utilada_unit", version: "^2.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-servlet/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-servlet/summary) + +This library provides helper operations for unit testing a servlet implemented on top of +Ada Servlet. + + + diff --git a/_crates/sh1107.md b/_crates/sh1107.md new file mode 100644 index 00000000..9e1cbb0d --- /dev/null +++ b/_crates/sh1107.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "sh1107" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/sh1107"] +tags: ["embedded", +"rp2040"] +version: "1.2.2" +short_description: "Driver for the SH1107/OLED 128x128 monochrome display" +dependencies: [{crate: "embedded_components", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/sha1.md b/_crates/sha1.md new file mode 100644 index 00000000..6ab3cc38 --- /dev/null +++ b/_crates/sha1.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "sha1" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/sha1"] +tags: ["cryptography", +"security", +"sha1"] +version: "2.0.0" +short_description: "Secure Hash Algorithm 1 implemented in Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/sha2.md b/_crates/sha2.md new file mode 100644 index 00000000..092c55a9 --- /dev/null +++ b/_crates/sha2.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "sha2" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/sha2"] +tags: ["cryptography", +"security", +"sha2"] +version: "2.0.0" +short_description: "Secure Hash Algorithm 2 implemented in Ada" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/shoot_n_loot.md b/_crates/shoot_n_loot.md new file mode 100644 index 00000000..2e78d532 --- /dev/null +++ b/_crates/shoot_n_loot.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "shoot_n_loot" +authors: [] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/shoot-n-loot"] +tags: ["pygamer", +"game", +"simulator"] +version: "1.0.0" +short_description: "Platform game for the AdaFruit PyGamer console" +dependencies: [{crate: "geste", version: "^1.1.0"}, +{crate: "gnat", version: "^10"}, +{crate: "pygamer_bsp", version: "~1.0.0"}, +{crate: "pygamer_simulator", version: "~1.0.0"}, +{crate: "virtapu", version: "~0.2.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/si_units.md b/_crates/si_units.md new file mode 100644 index 00000000..2084cdc9 --- /dev/null +++ b/_crates/si_units.md @@ -0,0 +1,40 @@ +--- +layout: crate +crate: "si_units" +authors: ["Vinzent \"Jellix\" Saranen"] +maintainers: ["vinzent@heisenbug.eu"] +licenses: ["WTFPL"] +websites: ["https://github.heisenbug.eu/si_units"] +tags: ["utilities", +"formatting"] +version: "0.2.0" +short_description: "Pretty print physical values in properly scaled metric (SI) units." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Provides generic conversion (`Image`) functions that convert values into human +readable strings with appropriate SI prefixes. This is especially convenient +when you have to deal with printing values from a potentially large interval, +and you need to represent such values as something an average human will +easily be able to read. Then you can use `SI_Units` to take care of the +conversion into an appropriate string representation for you. + +Converting values into a string is supported with all SI prefixes which are a +power of 1000 (yocto .. Yotta), additionally there is a generic that can deal +with binary prefixes (i.e. prefixes that denote powers of 1024). + +Scaling (i.e. conversion between different prefixes, like from kilo(meter) to +centi(meter)) between all defined SI prefixes is also supported, similar for +binary prefixes. + +See the project's [website](https://github.heisenbug.eu/si_units) for more +details. + +Version 0.2.0 is source code identical to the previous 0.1.3 release, but adds +full support for Alire integration. In the process, the provided `gnat` project +files have been streamlined, so if you upgrade to this version from a previous +release, you will need to adjust your own project files accordingly. + + diff --git a/_crates/simcpucli.md b/_crates/simcpucli.md new file mode 100644 index 00000000..54725c60 --- /dev/null +++ b/_crates/simcpucli.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "simcpucli" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Sim-CPU"] +tags: ["cpu-simulator"] +version: "0.1.0" +short_description: "CLI for CPU simulator" +dependencies: [{crate: "gnat", version: ">7.5"}, +{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_lisp", version: "~0.1.0"}, +{crate: "bbs_simcpu", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +This provides a simple command line interface to the CPU simulator library. +It has commands for setting and reading memory, reading registers, and +executing instructions. It also uses the Tiny-Lisp library so that many +of these actions can be scripted. + + diff --git a/_crates/simh_tapes.md b/_crates/simh_tapes.md new file mode 100644 index 00000000..962915f2 --- /dev/null +++ b/_crates/simh_tapes.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "simh_tapes" +authors: ["Stephen Merrony"] +maintainers: ["Stephen Merrony "] +licenses: ["AGPL-3.0-or-later"] +websites: ["https://github.com/SMerrony/simh_tapes"] +tags: ["legacy", +"magtape", +"magnetic", +"tape", +"emulation", +"simulation"] +version: "0.1.1" +short_description: "Library to handle SimH Standard magnetic tape image files" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/simple_components.md b/_crates/simple_components.md new file mode 100644 index 00000000..2902c714 --- /dev/null +++ b/_crates/simple_components.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "simple_components" +authors: ["Dmitry A. Kazakov"] +maintainers: ["alejandro@mosteo.com", +"blady.net@orange.fr"] +licenses: ["GPL-2.0-only WITH GCC-exception-2.0"] +websites: ["http://www.dmitry-kazakov.de/ada/components.htm"] +tags: [] +version: "4.68.0" +short_description: "Simple Components - A collection of support packages" +dependencies: [{crate: "gnat", version: ">=2021 | (>=12 & <2000)"}, +{crate: "libgnutls", version: "^3.7"}, +{crate: "unixodbc", version: "^2.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/simple_logging.md b/_crates/simple_logging.md new file mode 100644 index 00000000..3fe9b415 --- /dev/null +++ b/_crates/simple_logging.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "simple_logging" +authors: ["Alejandro R. Mosteo"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: ["logging", +"utility"] +version: "1.2.0" +short_description: "Simple logging to console" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/simple_regex.md b/_crates/simple_regex.md new file mode 100644 index 00000000..3530452b --- /dev/null +++ b/_crates/simple_regex.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "simple_regex" +authors: ["Paul Jarrett"] +maintainers: ["Paul Jarrett "] +licenses: [] +websites: ["https://github.com/pyjarrett/simple_regex"] +tags: ["regex", +"text"] +version: "0.1.0" +short_description: "Port of Rob Pike's simple regex from the Practice of Programming." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Provides a simple regular expression match function for Latin-1 strings, and +supports *, ., ^ and $. + + diff --git a/_crates/slip.md b/_crates/slip.md new file mode 100644 index 00000000..227f80a5 --- /dev/null +++ b/_crates/slip.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "slip" +authors: ["Biser Milanov"] +maintainers: ["bmilanov11@gmail.com"] +licenses: ["BSD-3-Clause"] +websites: ["https://gitlab.com/bmilanov/slip"] +tags: ["embedded", +"protocols", +"spark"] +version: "0.0.1" +short_description: "SLIP Protocol Implementation" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/socketcan.md b/_crates/socketcan.md new file mode 100644 index 00000000..f4a503e2 --- /dev/null +++ b/_crates/socketcan.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "socketcan" +authors: [] +maintainers: ["glen.m.cornell@gmail.com"] +licenses: ["LGPL-3.0-only"] +websites: [] +tags: [] +version: "1.0.0" +short_description: "An Ada language binding to SocketCAN for GNU/Linux systems" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/spark_unbound.md b/_crates/spark_unbound.md new file mode 100644 index 00000000..0779975f --- /dev/null +++ b/_crates/spark_unbound.md @@ -0,0 +1,29 @@ +--- +layout: crate +crate: "spark_unbound" +authors: ["Manuel Hatzl"] +maintainers: ["Manuel Hatzl "] +licenses: ["MIT"] +websites: ["https://github.com/mhatzl/spark_unbound"] +tags: ["spark", +"unbound"] +version: "0.2.1" +short_description: "Unbound data structures in Ada-Spark" +dependencies: [{crate: "gnat", version: "(>=9.3.1 & <2000) | >=2021"}] +configuration_variables: [] +configuration_values: [] + +--- +Spark_Unbound is a take on providing generic unbound data structures in Spark. + +In addition to proving general absence of runtime errors, the heap allocation is done in a non-Spark function to catch a possible `Storage_Error`. +This further increases the security and confident use of this library. + +**The following packages are currently available:** + +- `Spark_Unbound.Safe_Alloc`: Providing formally proven safe heap allocation functionality +- `Spark_Unbound.Arrays`: Providing a formally proven alternative to `Ada.Containers.Vector` + +**Note:** If you use this library, starring the repository on GitHub helps me a lot to see if it is even useful for someone else. + + diff --git a/_crates/sparknacl.md b/_crates/sparknacl.md new file mode 100644 index 00000000..5160e3e6 --- /dev/null +++ b/_crates/sparknacl.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "sparknacl" +authors: ["Rod Chapman"] +maintainers: ["Rod Chapman ", +"Jon Andrew "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/rod-chapman/SPARKNaCl"] +tags: ["spark", +"cryptography", +"security", +"nacl", +"curve25519", +"ed25519", +"tweetnacl"] +version: "4.0.0" +short_description: "Verified SPARK 2014 re-implementation of TweetNaCl cryptographic library" +dependencies: [{crate: "gnat", version: ">=12.1.1"}] +configuration_variables: [] +configuration_values: [] + +--- +SPARK 2014 re-implementation of TweetNaCl cryptographic library, with fully automated proofs of type safety and some correctness properties + diff --git a/_crates/spat.md b/_crates/spat.md new file mode 100644 index 00000000..10d823a0 --- /dev/null +++ b/_crates/spat.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "spat" +authors: ["Vinzent \"Jellix\" Saranen"] +maintainers: ["vinzent@heisenbug.eu"] +licenses: ["WTFPL"] +websites: ["https://github.heisenbug.eu/spat"] +tags: ["spark"] +version: "1.3.0" +short_description: "SPAT - SPARK Proof Analysis Tool" +dependencies: [{crate: "si_units", version: "~0.2"}] +configuration_variables: [] +configuration_values: [] + +--- +SPAT - SPARK Proof Analysis Tools + +Helper tool to obtain, analyse, sort, and filter timing information about +`gnatprove` runs (`SPARK` tools). + + diff --git a/_crates/spawn.md b/_crates/spawn.md new file mode 100644 index 00000000..4d29a90c --- /dev/null +++ b/_crates/spawn.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "spawn" +authors: ["AdaCore"] +maintainers: ["Vadim Godunko ", +"Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/spawn"] +tags: ["process", +"launch", +"pipe"] +version: "25.0.0" +short_description: "A simple library to spawn processes and communicate with them." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is Glib independent implementation of a spawn processes interface. + diff --git a/_crates/spawn_glib.md b/_crates/spawn_glib.md new file mode 100644 index 00000000..5dc4ead0 --- /dev/null +++ b/_crates/spawn_glib.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "spawn_glib" +authors: ["AdaCore"] +maintainers: ["Vadim Godunko ", +"Max Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/spawn"] +tags: ["process", +"launch", +"pipe", +"glib"] +version: "25.0.0" +short_description: "A simple library to spawn processes and communicate with them." +dependencies: [{crate: "gtkada", version: ">=23"}] +configuration_variables: [] +configuration_values: [] + +--- +This is Glib integrated implementation of a spawn processes interface. + diff --git a/_crates/spdx.md b/_crates/spdx.md new file mode 100644 index 00000000..058414da --- /dev/null +++ b/_crates/spdx.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "spdx" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/spdx_ada"] +tags: ["spdx", +"license"] +version: "0.2.0" +short_description: "SPDX License Expression Validator" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/specfun.md b/_crates/specfun.md new file mode 100644 index 00000000..f1194421 --- /dev/null +++ b/_crates/specfun.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "specfun" +authors: ["Riccardo Bernardini"] +maintainers: ["Riccardo Bernardini "] +licenses: ["MIT"] +websites: ["https://gitlab.com/my-ada-library/specfun"] +tags: ["special-fun", +"numerics", +"beta-function", +"gamma-function", +"beta-incomplete"] +version: "1.0.0" +short_description: "Native Ada library of special functions (e.g., beta, gamma)" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +This is a small native Ada library that provides few special functions like Beta, Gamma and Beta Incomplete. I wrote this because I needed those functions, therefore at the moment only the functions that I needed are present. This is a pure native Ada library and there is no dependence on external FORTRAN libraries. + diff --git a/_crates/splitter.md b/_crates/splitter.md new file mode 100644 index 00000000..f9bce427 --- /dev/null +++ b/_crates/splitter.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "splitter" +authors: ["Riccardo Bernardini"] +maintainers: ["Riccardo Bernardini "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: [""] +tags: ["strings", +"split", +"token", +"tokenizer", +"parsing"] +version: "1.0.2" +short_description: "A function to emulate \"split\" as implemented in Ruby" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/spoon.md b/_crates/spoon.md new file mode 100644 index 00000000..2d412026 --- /dev/null +++ b/_crates/spoon.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "spoon" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/spoon"] +tags: ["posix", +"spawn", +"process"] +version: "1.0.1" +short_description: "Use posix_spawn() to spawn processes without forking" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/ssl.md b/_crates/ssl.md new file mode 100644 index 00000000..0f4e741a --- /dev/null +++ b/_crates/ssl.md @@ -0,0 +1 @@ +Not found: ssl* diff --git a/_crates/st7789.md b/_crates/st7789.md new file mode 100644 index 00000000..bd2f7a78 --- /dev/null +++ b/_crates/st7789.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "st7789" +authors: [] +maintainers: ["jk@jkliemann.de"] +licenses: ["MIT"] +websites: [] +tags: ["embedded", +"nostd", +"framebuffer", +"bitmap", +"display", +"driver", +"drivers", +"spi"] +version: "0.1.0" +short_description: "SPI based driver for the ST7789 TFT display" +dependencies: [{crate: "adl_middleware", version: "~0.2.0"}, +{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/startup_gen.md b/_crates/startup_gen.md new file mode 100644 index 00000000..e06de19e --- /dev/null +++ b/_crates/startup_gen.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "startup_gen" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/AdaCore/startup-gen"] +tags: ["embedded", +"zfp", +"nostd"] +version: "25.0.0" +short_description: "Generates startup files (crt0 and linker script)" +dependencies: [{crate: "gnatcoll", version: "~25.0.0"}, +{crate: "libgpr", version: "~25.0.0"}, +{crate: "templates_parser", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/stephes_ada_library.md b/_crates/stephes_ada_library.md new file mode 100644 index 00000000..a7549a02 --- /dev/null +++ b/_crates/stephes_ada_library.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "stephes_ada_library" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://stephe-leake.org/ada/sal.html"] +tags: ["containers", +"trees"] +version: "3.7.3" +short_description: "Stephe's Ada library; miscellaneous useful stuff." +dependencies: [{crate: "gnat", version: "(>=11 & <2000) | >=2021"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/stm32f0x2_hal.md b/_crates/stm32f0x2_hal.md new file mode 100644 index 00000000..159e40d7 --- /dev/null +++ b/_crates/stm32f0x2_hal.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "stm32f0x2_hal" +authors: ["AdaCore", +"Marc Poulhiès"] +maintainers: ["Marc Poulhiès "] +licenses: ["GPL-3.0-or-later AND BSD-3-Clause"] +websites: ["https://github.com/dkm/stm32f0x2_hal-ada"] +tags: ["embedded", +"stm32f0", +"nostd", +"drivers"] +version: "0.1.0" +short_description: "Drivers and HAL for stm32f0x2 mcu family" +dependencies: [{crate: "cortex_m", version: "~0.5"}, +{crate: "gnat_arm_elf", version: "^12"}, +{crate: "hal", version: "~0.3"}, +{crate: "usb_embedded", version: "~0.3"}] +configuration_variables: [{name: 'Use_Startup', type: 'Boolean', default: "true"}] +configuration_values: [{crate: 'atomic', settings: [{name: 'backend', value: "armv6m"}]}, +{crate: 'cortex_m', settings: [{name: 'core', value: "m0"}]}] + +--- + + diff --git a/_crates/stopwatch.md b/_crates/stopwatch.md new file mode 100644 index 00000000..6a39aa79 --- /dev/null +++ b/_crates/stopwatch.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "stopwatch" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["timer", +"stopwatch", +"chronometer"] +version: "0.1.0" +short_description: "Keep track of elapsed time" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/suika_programing.md b/_crates/suika_programing.md new file mode 100644 index 00000000..58c8d589 --- /dev/null +++ b/_crates/suika_programing.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "suika_programing" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/suika-programing"] +tags: ["game", +"suika", +"raylib", +"chipmunk", +"physics", +"2d"] +version: "0.1.0" +short_description: "Suika game clone with programing languages" +dependencies: [{crate: "chipmunk2d", version: "~0.1.0"}, +{crate: "raylib", version: "^1.0.0"}, +{crate: "resources", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/svd2ada.md b/_crates/svd2ada.md new file mode 100644 index 00000000..ab629e3c --- /dev/null +++ b/_crates/svd2ada.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "svd2ada" +authors: ["AdaCore"] +maintainers: ["Fabien Chouteau "] +licenses: [] +websites: [] +tags: [] +version: "0.1.0" +short_description: "Ada binding generator from CMSIS-SVD hardware descriptions files" +dependencies: [{crate: "xmlada", version: "^22.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/system_random.md b/_crates/system_random.md new file mode 100644 index 00000000..56f052cb --- /dev/null +++ b/_crates/system_random.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "system_random" +authors: ["Anton Fediushin"] +maintainers: ["Anton Fediushin "] +licenses: ["ISC"] +websites: ["https://github.com/AntonMeep/system_random"] +tags: ["system", +"cryptography", +"random", +"security"] +version: "1.0.0" +short_description: "Minimal library to retrieve random data from system sources" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/tash.md b/_crates/tash.md new file mode 100644 index 00000000..a66dbe24 --- /dev/null +++ b/_crates/tash.md @@ -0,0 +1,33 @@ +--- +layout: crate +crate: "tash" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-2.0-or-later WITH GCC-exception-2.0"] +websites: ["https://github.com/simonjwright/tcladashell"] +tags: ["scripting", +"tcl", +"tk"] +version: "8.7.2" +short_description: "Binding to Tcl/Tk" +dependencies: [{crate: "libtcl", version: "~8.6.0"}, +{crate: "libtk", version: "~8.6.0"}] +configuration_variables: [] +configuration_values: [] + +--- +Tash (previously known as Tcl Ada Shell) is an Ada binding to Tcl/Tk. + +Its purpose is to + +* allow a Tcl program to use Ada in place of C to implement Tcl + commands where additional execution speed, more complex data + structures, or better name space management is needed, and + +* support the rapid development of Platform-Independent Graphical User + Interfaces via Tk. + +Please note that, on macOS, tash assumes that Tcl/Tk is provided via +[Homebrew](https://brew.sh). + + diff --git a/_crates/task_coroutines.md b/_crates/task_coroutines.md new file mode 100644 index 00000000..4cc4743e --- /dev/null +++ b/_crates/task_coroutines.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "task_coroutines" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/task_coroutines"] +tags: ["coroutine", +"generator"] +version: "0.1.0" +short_description: "Coroutines and generators using only standard tasking features" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/templates_parser.md b/_crates/templates_parser.md new file mode 100644 index 00000000..80cd0a93 --- /dev/null +++ b/_crates/templates_parser.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "templates_parser" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/templates-parser"] +tags: [] +version: "25.0.0" +short_description: "Templates Parser: File generation from templates in Ada" +dependencies: [{crate: "xmlada", version: "~25.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/texcad.md b/_crates/texcad.md new file mode 100644 index 00000000..4642ca20 --- /dev/null +++ b/_crates/texcad.md @@ -0,0 +1,40 @@ +--- +layout: crate +crate: "texcad" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["GPL-2.0-or-later"] +websites: ["https://texcad.sourceforge.io/"] +tags: ["application", +"texcad", +"tex", +"latex", +"cad", +"picture", +"draw", +"drawing", +"graphics", +"vector-graphics"] +version: "4.5.3" +short_description: "TeXCAD is a program for drawing or retouching {picture}s in LaTeX" +dependencies: [{crate: "gwindows", version: ">=1.4.3"}, +{crate: "mathpaqs", version: ">=20230121.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +  texcad screenshot + +TeXCAD is a program for drawing or retouching {picture}s in LaTeX. +It extends the original {picture} capabilities, even without any obligatory LaTeX package, class or style sheet. +The core of TeXCAD is totally portable. + +Features: + +* Supports plain LaTeX +* Extends LaTeX picture objects through emulation or use of special styles +* Special styles are only optional +* Parametric curves +* **Free**, Open-Source + + diff --git a/_crates/tiled_code_gen.md b/_crates/tiled_code_gen.md new file mode 100644 index 00000000..e6e5e823 --- /dev/null +++ b/_crates/tiled_code_gen.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "tiled_code_gen" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: [] +websites: ["https://github.com/Fabien-Chouteau/tiled-code-gen"] +tags: ["geste", +"gamedev", +"game", +"tiled"] +version: "0.1.0" +short_description: "Generate GESTE data from Tiled maps and tilesets" +dependencies: [{crate: "apdf", version: "^5.0.0"}, +{crate: "gnatcoll", version: "^21.0.0"}, +{crate: "xmlada", version: "^21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/tiny_rp2040_bsp.md b/_crates/tiny_rp2040_bsp.md new file mode 100644 index 00000000..632058f8 --- /dev/null +++ b/_crates/tiny_rp2040_bsp.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "tiny_rp2040_bsp" +authors: ["Holger Rodriguez"] +maintainers: ["Holger Rodriguez "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/hgrodriguez/tiny_rp2040_bsp"] +tags: ["embedded", +"nostd", +"tiny", +"rp2040", +"bsp"] +version: "0.2.1" +short_description: "Board support package for Pimoroni Tiny RP2040" +dependencies: [{crate: "hal", version: "~0.3"}, +{crate: "rp2040_hal", version: "^2"}, +{crate: "gnat_arm_elf", version: "^12.1.2"}] +configuration_variables: [] +configuration_values: [{crate: 'rp2040_hal', settings: [{name: 'Flash_Chip', value: "w25qxx"}]}] + +--- + + diff --git a/_crates/tiny_text.md b/_crates/tiny_text.md new file mode 100644 index 00000000..0b5c566d --- /dev/null +++ b/_crates/tiny_text.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "tiny_text" +authors: ["Jeremy Grosser"] +maintainers: ["Jeremy Grosser "] +licenses: ["MIT"] +websites: ["https://github.com/JeremyGrosser/tiny_text"] +tags: ["font", +"hal", +"bitmap", +"text"] +version: "1.3.0" +short_description: "Low resolution bitmap font with a small memory footprint" +dependencies: [{crate: "hal", version: "~0.3.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/tlsada.md b/_crates/tlsada.md new file mode 100644 index 00000000..d2543d61 --- /dev/null +++ b/_crates/tlsada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "tlsada" +authors: ["nytpu"] +maintainers: ["nytpu "] +licenses: ["MPL-2.0"] +websites: ["https://git.sr.ht/~nytpu/tlsada"] +tags: ["tls", +"ssl"] +version: "2.5.2" +short_description: "Bindings for libtls" +dependencies: [{crate: "libtls", version: "^3.5"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/toml_slicer.md b/_crates/toml_slicer.md new file mode 100644 index 00000000..8cc2d085 --- /dev/null +++ b/_crates/toml_slicer.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "toml_slicer" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: ["https://github.com/mosteo/toml_slicer"] +tags: ["toml"] +version: "0.1.1" +short_description: "Edit TOML files directly without parsing" +dependencies: [{crate: "aaa", version: "~0.2.4|~0.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/trendy_terminal.md b/_crates/trendy_terminal.md new file mode 100644 index 00000000..3649e866 --- /dev/null +++ b/_crates/trendy_terminal.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "trendy_terminal" +authors: ["Paul Jarrett"] +maintainers: ["Paul Jarrett "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/pyjarrett/trendy_terminal"] +tags: ["terminal", +"command-line", +"console", +"vt100"] +version: "0.0.5" +short_description: "Terminal options, setup, tab completion and hinting." +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/trendy_test.md b/_crates/trendy_test.md new file mode 100644 index 00000000..104bb0ab --- /dev/null +++ b/_crates/trendy_test.md @@ -0,0 +1,134 @@ +--- +layout: crate +crate: "trendy_test" +authors: ["Paul Jarrett"] +maintainers: ["Paul Jarrett "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/pyjarrett/trendy_test"] +tags: ["test", +"unit-test", +"unit"] +version: "0.0.3" +short_description: "Minimal Effort Ada Unit Testing Library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +# trendy_test + +Minimum Effort Ada Unit Testing Library + +[![Build Status](https://github.com/pyjarrett/trendy_test/actions/workflows/build.yml/badge.svg)](https://github.com/pyjarrett/trendy_test/actions) + +## Features + +- Minimum setup +- Parallelization of tests +- Randomization of test order to find dependencies between tests +- No generated code or scripts needed + +## Example + +```ada +with Ada.Text_IO; +with Trendy_Test; +with Trendy_Test.Assertions.Integer_Assertions; +with Trendy_Test.Reports; + +use Trendy_Test.Assertions; +use Trendy_Test.Assertions.Integer_Assertions; + +procedure My_Test_Main is +begin + Trendy_Test.Register (My_Tests.All_Tests); + Trendy_Test.Reports.Print_Basic_Report(Trendy_Test.Run); +end My_Test_Main; + +---------------------------------------------------------------- + +with Trendy_Test; +package My_Tests is + function All_Tests return Trendy_Test.Test_Group; +end Trendy_Command_Line_Tests; + +---------------------------------------------------------------- + +package body My_Tests is + procedure Test_Sample (T : in out Trendy_Test.Operation'Class) is + begin + -- Don't put anything above here you don't want run during listing/other ops. + T.Register; + Assert (T, Some_Expression); + end Test_Sample; + + procedure Test_Is_Disabled (T : in out Trendy_Test.Operation'Class) is + begin + T.Register(Disabled => True); -- Disabled, don't run this test. + Assert (T, Some_Expression); + end Test_Sample; + + procedure Test_Is_Not_Run_In_Parallel (T : in out Trendy_Test.Operation'Class) is + begin + T.Register(Parallelize => False); -- There's some dependency, so don't run it in parallel. + Assert (T, Some_Expression); + end Test_Sample; + + function All_Tests return Trendy_Test.Test_Group is + begin + return + (Test_Sample'Access, + Test_Is_Disabled'Access + ); + end All_Tests; +end My_Tests; +``` + +## Example Output + +``` +D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main +[ PASS ] shared_pointers_tests.test_multiple_oracles 0.000105300 +[ PASS ] shared_pointers_tests.test_single_oracle 0.000052700 +[ PASS ] trendy_command_line.context_free.tests.test_is_long_option 0.000002300 +[ PASS ] trendy_command_line.context_free.tests.test_is_option_terminator 0.000007200 +[ PASS ] trendy_command_line.context_free.tests.test_is_short_option 0.000005000 +[ PASS ] trendy_command_line.context_free.tests.test_is_short_option_or_group 0.000009200 +[ PASS ] trendy_command_line_tests.flags.test_boolean_option_defaults 0.000149400 +[ FAIL ] trendy_command_line_tests.flags.test_boolean_option_short_option_group 0.000185600 + Assertion Failed: (Condition false) at D:\dev\ada\trendy_command_line\src\trendy_command_line_tests-flags.adb: 110[D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main.exe] +0x453530 Trendy_Test.Report_Failure at trendy_test.adb:88 +0x4535a4 Trendy_Test.Assert at trendy_test.adb:102 +0x425338 Trendy_Command_Line_Tests.Flags.Test_Boolean_Option_Short_Option_Group at trendy_command_line_tests-flags.adb:110 +0x451ff1 Trendy_Test.Run_Test at trendy_test.adb:237 +0x452d4c Trendy_Test.Run.Parallel_Test_TaskTB at trendy_test.adb:277 +0x4601a2 system__tasking__queuing__select_protected_entry_call at ??? +[C:\Windows\System32\KERNEL32.DLL] +0x7ffd7d1f7032 +[C:\Windows\SYSTEM32\ntdll.dll] +0x7ffd7e08264f + +[ FAIL ] trendy_command_line_tests.flags.test_boolean_option_short_options 0.001984800 + Assertion Failed: (Condition false) at D:\dev\ada\trendy_command_line\src\trendy_command_line_tests-flags.adb: 93[D:\dev\ada\trendy_command_line\bin\trendy_command_line_test_main.exe] +0x453530 Trendy_Test.Report_Failure at trendy_test.adb:88 +0x4535a4 Trendy_Test.Assert at trendy_test.adb:102 +0x425a43 Trendy_Command_Line_Tests.Flags.Test_Boolean_Option_Short_Options at trendy_command_line_tests-flags.adb:93 +0x451ff1 Trendy_Test.Run_Test at trendy_test.adb:237 +0x452d4c Trendy_Test.Run.Parallel_Test_TaskTB at trendy_test.adb:277 +0x4601a2 system__tasking__queuing__select_protected_entry_call at ??? +[C:\Windows\System32\KERNEL32.DLL] +0x7ffd7d1f7032 +[C:\Windows\SYSTEM32\ntdll.dll] +0x7ffd7e08264f + +[ PASS ] trendy_command_line_tests.flags.test_boolean_option_toggles 0.000153600 +[ PASS ] trendy_command_line_tests.flags.test_boolean_option_too_many_occurrences + 0.003517400 +[ PASS ] trendy_command_line_tests.test_long_option_with_argument 0.000013000 +[ PASS ] trendy_command_line_tests.test_one_operand 0.000006700 +[ PASS ] trendy_command_line_tests.test_short_option_with_argument 0.000193600 +Results: Passed: 12 / 14 +``` + + + diff --git a/_crates/tresses.md b/_crates/tresses.md new file mode 100644 index 00000000..87c164bc --- /dev/null +++ b/_crates/tresses.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "tresses" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["MIT OR Apache-2.0 WITH LLVM-exception"] +websites: ["https://weenoisemaker.com/"] +tags: ["embedded", +"audio", +"synthesis", +"nostd"] +version: "0.1.0" +short_description: "Synth library inspired by Mutable Instruments Braids" +dependencies: [{crate: "midi", version: "~0.2.0"}] +configuration_variables: [{name: 'Resources_Linker_Section', type: 'String', default: ""}, +{name: 'Sample_Rate', type: 'Enum (SR22050, SR32000, SR44100, SR48000, SR96000)', default: "SR44100"}] +configuration_values: [] + +--- + + diff --git a/_crates/ulid.md b/_crates/ulid.md new file mode 100644 index 00000000..c3072553 --- /dev/null +++ b/_crates/ulid.md @@ -0,0 +1,35 @@ +--- +layout: crate +crate: "ulid" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://github.com/zertovitch/ulid"] +tags: ["ulid", +"uuid", +"guid", +"identifier", +"timestamp"] +version: "20240921.0.0" +short_description: "Universally Unique Lexicographically Sortable Identifier" +dependencies: [{crate: "gnat", version: "(>=11 & <2000) | >=2021"}] +configuration_variables: [] +configuration_values: [] + +--- +image + +In a nutshell, a ULID code (Universally Unique Lexicographically Sortable Identifier) is +a combination of a 48-bit time stamp (most significant part, with a millisecond accuracy), +and a 80-bit random number (least significant part), totalling 128 bits, that is 16 bytes (octets). + +The ULID code generation is sort of UUID (Universally Unique Identifier) system, also know as GUID (Globally Unique Identifier). +The characteristic of ULID numbers is that they can be compared and sorted by their timestamps. + +The package ULID provides a `Generate` function using the method described above, plus a `Generate_Monotonic` function that enables the production of a monotonically increasing sequence of ULID numbers within the same millisecond. + +The preferred (canonical) representation of a ULID is a certain version of the Base32 encoding (example of output: 01J80P3NJDN0Y5YX7D05421X0G). +The ULID package also provides a function `Encode_as_8_4_4_4_12` that outputs a text representation in the usual UUID 8-4-4-4-12 format (like: 01920161-d64d-5a3e-589e-c45df155547b). +Both formats are also recognized by the `Decode` function. + + diff --git a/_crates/umwi.md b/_crates/umwi.md new file mode 100644 index 00000000..1e444ae2 --- /dev/null +++ b/_crates/umwi.md @@ -0,0 +1,26 @@ +--- +layout: crate +crate: "umwi" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["LGPL-3.0-or-later"] +websites: [""] +tags: ["unicode", +"emoji", +"emoticon", +"monospace", +"east", +"asian", +"width", +"grapheme", +"cluster", +"combining"] +version: "0.1.0" +short_description: "Unicode Monospace Width Information" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/universal_text_file.md b/_crates/universal_text_file.md new file mode 100644 index 00000000..3e163413 --- /dev/null +++ b/_crates/universal_text_file.md @@ -0,0 +1,45 @@ +--- +layout: crate +crate: "universal_text_file" +authors: ["Jeff Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Universal-Text-File"] +tags: ["format", +"unicode", +"text"] +version: "20220720.0.0" +short_description: "Proposed universal format for Unicode text files" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# Universal Text File Format +Proposed universal format for Unicode text files + +Here I propose a universal format for Unicode text files, specified by its Ada implementation. Some features of the format are + +* ASCII code points are encoded as themselves +* At most three bytes are used to encode a code point +* All code points may occur in a line +* Lines may be any length (though the implementation is limited to Integer'Last) + +I have called this format Universal Text File format, with the acronym UTF. Like GNAT Programming Studio (GPS), this result is an acronym collision. Suggestions for alternative names are welcome. + +## Combined Specification and Ada Implementation +The format is specified here by its Ada implementation in package UTF, which is short and straightforward. + +## Tools +Three simple tools are provided: +* To_UTF, to convert an Ada.Text_IO file to UTF +* From_UTF, to convert a UTF file into an Ada.Text_IO file +* Umore, a simple `more` program for UTF files + +## Suitability +Most tools for processing text files on the major platforms work with native text files from other platforms, and UTF-8 has been widely adopted for encoding Unicode text files, so it seems unlikely that an alternative will gain much traction. However, having done this, I thought I would share it should anyone be interested. + +## Standard Software-Engineering Practice +Encodings should normally only be used externally to a program. Encoded input data should be decoded immediately upon input, and output data encoded immediatly before output. + + diff --git a/_crates/unixodbc.md b/_crates/unixodbc.md new file mode 100644 index 00000000..fdcafa65 --- /dev/null +++ b/_crates/unixodbc.md @@ -0,0 +1 @@ +Not found: unixodbc* diff --git a/_crates/uri_ada.md b/_crates/uri_ada.md new file mode 100644 index 00000000..3f3ced08 --- /dev/null +++ b/_crates/uri_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "uri_ada" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["uri", +"url", +"utility"] +version: "2.0.0" +short_description: "Processing of URI strings" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/uri_mime.md b/_crates/uri_mime.md new file mode 100644 index 00000000..1c0a733a --- /dev/null +++ b/_crates/uri_mime.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "uri_mime" +authors: ["nytpu"] +maintainers: ["nytpu "] +licenses: ["MPL-2.0"] +websites: ["https://git.sr.ht/~nytpu/uri-mime-ada"] +tags: ["uri", +"url", +"mime", +"media-type"] +version: "1.4.0" +short_description: "URI & MIME Type Parsing and Manupulation" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/usb_embedded.md b/_crates/usb_embedded.md new file mode 100644 index 00000000..29f148dc --- /dev/null +++ b/_crates/usb_embedded.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "usb_embedded" +authors: ["Fabien Chouteau"] +maintainers: ["Fabien Chouteau "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/Fabien-Chouteau/usb_embedded"] +tags: ["embedded", +"usb", +"hid", +"midi", +"nostd"] +version: "1.0.0" +short_description: "An Ada USB stack for embedded devices" +dependencies: [{crate: "bbqueue", version: "^1.0.0"}, +{crate: "hal", version: "^1.0.0"}] +configuration_variables: [{name: 'Control_Buffer_Size', type: 'Integer range 256 .. 9223372036854775807', default: "256"}, +{name: 'Event_Log_Buffer_Size', type: 'Integer range 0 .. 9223372036854775807', default: "0"}, +{name: 'Max_Strings', type: 'Integer range 0 .. 9223372036854775807', default: "10"}, +{name: 'String_Buffer_Size', type: 'Integer range 0 .. 9223372036854775807', default: "256"}] +configuration_values: [] + +--- + + diff --git a/_crates/utf8test.md b/_crates/utf8test.md new file mode 100644 index 00000000..8759ae70 --- /dev/null +++ b/_crates/utf8test.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "utf8test" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT OR Apache-2.0"] +websites: [""] +tags: ["unicode", +"utf-8", +"latin-1", +"terminal"] +version: "0.1.0" +short_description: "Test the terminal behavior when outputting Latin-1 and UTF-8 strings" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/utilada.md b/_crates/utilada.md new file mode 100644 index 00000000..63cace74 --- /dev/null +++ b/_crates/utilada.md @@ -0,0 +1,49 @@ +--- +layout: crate +crate: "utilada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["logging", +"processes", +"streams", +"json", +"beans", +"encoders", +"decoders"] +version: "2.8.0" +short_description: "Utility Library with streams, processes, logs, serialization, encoders" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +This Ada library contains various utility packages for building +Ada applications. This includes: + +* A logging framework close to Java log4j framework, +* Support for INI and property files, +* A serialization/deserialization framework for XML, JSON, CSV, Forms +* Ada beans framework, +* Encoding/decoding framework (Base16, Base32, Base64, SHA, HMAC-SHA, AES-256), +* A composing stream framework (raw, files, buffers, pipes, sockets, encryption, decryption, LZMA compression, LZMA decompression), +* Several concurrency tools (reference counters, counters, pools, fifos, arrays), +* Process creation and pipes, +* Support for loading shared libraries (on Windows or Unix), +* HTTP client library on top of CURL or AWS. + +# Documentation + +* [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-util/blob/master/docs/utilada-book.pdf) +* [IO stream composition and serialization with Ada Utility Library](https://blog.vacs.fr/vacs/blogs/post.html?post=2022/03/05/IO-stream-composition-and-serialization-with-Ada-Utility-Library) +* [Easy reading and writing files with Ada Utility Library](https://blog.vacs.fr/vacs/blogs/post.html?post=2020/08/09/Easy-reading-and-writing-files-with-Ada-Utility-Library) +* [Process creation in Java and Ada](https://blog.vacs.fr/vacs/blogs/post.html?post=2012/03/16/Process-creation-in-Java-and-Ada) + + + diff --git a/_crates/utilada_aws.md b/_crates/utilada_aws.md new file mode 100644 index 00000000..1e13c447 --- /dev/null +++ b/_crates/utilada_aws.md @@ -0,0 +1,33 @@ +--- +layout: crate +crate: "utilada_aws" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["web", +"http"] +version: "2.8.0" +short_description: "Utility Library REST support on top of AWS" +dependencies: [{crate: "aws", version: "^24.0"}, +{crate: "utilada", version: "^2.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +This small library provides an HTTP backend on top of AWS. +It can be used by the `Util.Http` package. + +An alternate HTTP backend is provided by CURL with `utilada_curl`. + +# Documentation + +* [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-util/blob/master/docs/utilada-book.pdf) + + + diff --git a/_crates/utilada_curl.md b/_crates/utilada_curl.md new file mode 100644 index 00000000..dd5b382c --- /dev/null +++ b/_crates/utilada_curl.md @@ -0,0 +1,34 @@ +--- +layout: crate +crate: "utilada_curl" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["web", +"http", +"rest"] +version: "2.8.0" +short_description: "Utility Library REST support on top of CURL" +dependencies: [{crate: "libcurl", version: "*"}, +{crate: "utilada", version: "^2.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +This small library provides an HTTP backend on top of CURL. +It can be used by the `Util.Http` package. + +An alternate HTTP backend is provided by AWS with `utilada_aws`. + +# Documentation + +* [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-util/blob/master/docs/utilada-book.pdf) + + + diff --git a/_crates/utilada_lzma.md b/_crates/utilada_lzma.md new file mode 100644 index 00000000..a363ea38 --- /dev/null +++ b/_crates/utilada_lzma.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "utilada_lzma" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["lzma", +"streams"] +version: "2.8.0" +short_description: "Utility Library streams with LZMA support" +dependencies: [{crate: "lzmada", version: "^1.1.2"}, +{crate: "utilada", version: "^2.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +This small library provides LZMA streams. + +# Documentation + +* [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-util/blob/master/docs/utilada-book.pdf) + + + diff --git a/_crates/utilada_unit.md b/_crates/utilada_unit.md new file mode 100644 index 00000000..175a5f13 --- /dev/null +++ b/_crates/utilada_unit.md @@ -0,0 +1,26 @@ +--- +layout: crate +crate: "utilada_unit" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["testing"] +version: "2.8.0" +short_description: "Utility Library testing framework with Ahven" +dependencies: [{crate: "utilada", version: "^2.7.0"}] +configuration_variables: [] +configuration_values: [] + +--- + +[![Build Status](https://img.shields.io/jenkins/s/https/jenkins.vacs.fr/Ada-Util.svg)](https://jenkins.vacs.fr/job/Ada-Util/) +[![Test Status](https://img.shields.io/jenkins/t/https/jenkins.vacs.fr/Ada-Util.svg)](https://jenkins.vacs.fr/job/Ada-Util/) +[![codecov](https://codecov.io/gh/stcarrez/ada-util/branch/master/graph/badge.svg)](https://codecov.io/gh/stcarrez/ada-util) + +This library provides a testing framework on top of Ahven. +It provides various testing helper operations to help in +writing unit tests. + + + diff --git a/_crates/utilada_xml.md b/_crates/utilada_xml.md new file mode 100644 index 00000000..470c0a3a --- /dev/null +++ b/_crates/utilada_xml.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "utilada_xml" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-util"] +tags: ["xml", +"serialization"] +version: "2.8.0" +short_description: "Utility Library serialization with XML/Ada" +dependencies: [{crate: "utilada", version: "^2.7.0"}, +{crate: "xmlada", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-util/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-util/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-util/summary) +[![Documentation Status](https://readthedocs.org/projects/ada-util/badge/?version=latest)](https://ada-util.readthedocs.io/en/latest/?badge=latest) + +This library provides a serialization framework on top of XML/Ada for Ada Utility Library. + +# Documentation + +* [Ada Utility Library Programmer's Guide](https://ada-util.readthedocs.io/en/latest/) [PDF](https://github.com/stcarrez/ada-util/blob/master/docs/utilada-book.pdf) + + + diff --git a/_crates/uxstrings.md b/_crates/uxstrings.md new file mode 100644 index 00000000..847bcbab --- /dev/null +++ b/_crates/uxstrings.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "uxstrings" +authors: ["Pascal Pignard"] +maintainers: ["Pascal Pignard "] +licenses: ["CECILL-C"] +websites: ["https://github.com/Blady-Com/UXStrings"] +tags: ["unicode", +"dynamic", +"string"] +version: "0.8.1+alpha-20241006" +short_description: "Unicode Extended Strings utilities" +dependencies: [{crate: "gnat", version: "^13.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/vanilla.md b/_crates/vanilla.md new file mode 100644 index 00000000..fd1d22d0 --- /dev/null +++ b/_crates/vanilla.md @@ -0,0 +1,24 @@ +--- +layout: crate +crate: "vanilla" +authors: ["Jesper Quorning"] +maintainers: ["Jesper Quorning "] +licenses: ["MIT"] +websites: ["https://github.com/jquorning/vanilla"] +tags: ["simple", +"substitute", +"replace", +"vanilla"] +version: "0.9.8" +short_description: "Simple replace in character stream" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +Library of simple substitution of tags into strings +in character streams and strings. + +Tags could be $A, $B, $3 etcetera. + + diff --git a/_crates/vaton.md b/_crates/vaton.md new file mode 100644 index 00000000..1e1002a1 --- /dev/null +++ b/_crates/vaton.md @@ -0,0 +1,30 @@ +--- +layout: crate +crate: "vaton" +authors: ["Manuel Hatzl"] +maintainers: ["Manuel Hatzl "] +licenses: ["MIT"] +websites: ["https://github.com/mhatzl/vaton"] +tags: ["spark"] +version: "0.1.0" +short_description: "Verified Ascii To Number conversion written in Ada/SPARK" +dependencies: [{crate: "spark_unbound", version: "~0.2.1"}, +{crate: "gnat", version: "(>=12.0.0 & <2000) | >=2021"}] +configuration_variables: [] +configuration_values: [] + +--- +This library offers formally verified functions to convert character streams into the smallest standard type representation the resulting number may fit in. +The allowed formats are based on the [JSON-Number format](https://www.json.org/json-en.html), with the addition to allow single underscores between digits. + +**Note:** Only decimal based numbers are supported! + +**Examples:** + +``` +-10_000 -> Standard.Integer +1.0 -> Standard.Float +1e4 -> Standard.Float +``` + + diff --git a/_crates/virtapu.md b/_crates/virtapu.md new file mode 100644 index 00000000..3514f79a --- /dev/null +++ b/_crates/virtapu.md @@ -0,0 +1,34 @@ +--- +layout: crate +crate: "virtapu" +authors: ["Fabien Chouteau"] +maintainers: ["fabien.chouteau@gmail.com"] +licenses: ["MIT"] +websites: ["https://github.com/Fabien-Chouteau/virtapu"] +tags: ["nostd", +"audio", +"synth", +"game"] +version: "0.2.0" +short_description: "A virtual Audio Processing Unit to simulate 8-bit era game sounds" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +# VirtAPU + +A virtual Audio Processing Unit to simulate 8-bit era game sounds + + - Arbitrary number of voice(s) + - 4 sounds: + - Pulse + - Triangle + - Noise1 (LFSR 1) + - Noise2 (LFSR 6) + - Pulse witdth modulation + - Decay + - Frequency sweep + - Sequencer + + diff --git a/_crates/vss.md b/_crates/vss.md new file mode 100644 index 00000000..967b71f4 --- /dev/null +++ b/_crates/vss.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "vss" +authors: ["AdaCore"] +maintainers: ["Vadim Godunko ", +"Maxim Reznik "] +licenses: ["Apache-2.0 WITH LLVM-exception"] +websites: ["https://github.com/AdaCore/VSS"] +tags: ["unicode", +"json", +"text", +"xml", +"template"] +version: "25.0.0" +short_description: "Advanced string and text manipulation with Unicode support" +dependencies: [{crate: "gnat", version: ">=11 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_ada_info.md b/_crates/wayland_ada_info.md new file mode 100644 index 00000000..1087d3a1 --- /dev/null +++ b/_crates/wayland_ada_info.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "wayland_ada_info" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland"] +version: "1.0.0" +short_description: "A tool to display information about supported Wayland interfaces" +dependencies: [{crate: "wayland_protocols_ada", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_ada_scanner.md b/_crates/wayland_ada_scanner.md new file mode 100644 index 00000000..26e35166 --- /dev/null +++ b/_crates/wayland_ada_scanner.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "wayland_ada_scanner" +authors: ["onox", +"Joakim Strandberg"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland", +"egl"] +version: "1.0.0" +short_description: "A tool to generate thick Ada 2012 bindings for Wayland protocols" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_client_ada.md b/_crates/wayland_client_ada.md new file mode 100644 index 00000000..dd3f57fb --- /dev/null +++ b/_crates/wayland_client_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "wayland_client_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland", +"client"] +version: "1.0.0" +short_description: "Ada 2012 bindings for libwayland-client and the Wayland protocol" +dependencies: [{crate: "libwayland", version: "^1.18"}, +{crate: "wayland_ada_scanner", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_cursor_ada.md b/_crates/wayland_cursor_ada.md new file mode 100644 index 00000000..2642903a --- /dev/null +++ b/_crates/wayland_cursor_ada.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "wayland_cursor_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland"] +version: "1.0.0" +short_description: "Ada 2012 bindings for libwayland-cursor" +dependencies: [{crate: "libwayland", version: "^1.18"}, +{crate: "wayland_client_ada", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_egl_ada.md b/_crates/wayland_egl_ada.md new file mode 100644 index 00000000..e6644afb --- /dev/null +++ b/_crates/wayland_egl_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "wayland_egl_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland", +"egl"] +version: "1.0.0" +short_description: "Ada 2012 bindings for libwayland-egl" +dependencies: [{crate: "libwayland", version: "^1.18"}, +{crate: "wayland_client_ada", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wayland_protocols_ada.md b/_crates/wayland_protocols_ada.md new file mode 100644 index 00000000..42a72c2f --- /dev/null +++ b/_crates/wayland_protocols_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "wayland_protocols_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/wayland-ada"] +tags: ["wayland", +"protocols"] +version: "1.0.0" +short_description: "Ada 2012 bindings for various Wayland protocols" +dependencies: [{crate: "wayland_ada_scanner", version: "~1.0.0"}, +{crate: "wayland_client_ada", version: "~1.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/webdriver.md b/_crates/webdriver.md new file mode 100644 index 00000000..bef7054c --- /dev/null +++ b/_crates/webdriver.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "webdriver" +authors: ["Maxim Reznik"] +maintainers: ["Maxim Reznik "] +licenses: ["MIT"] +websites: ["https://github.com/reznikmm/webdriver"] +tags: ["web", +"control", +"selenium", +"chrome"] +version: "1.0.0" +short_description: "Web Browser control API" +dependencies: [{crate: "aws", version: "*"}, +{crate: "matreshka_league", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/webif_example.md b/_crates/webif_example.md new file mode 100644 index 00000000..f4b940f9 --- /dev/null +++ b/_crates/webif_example.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "webif_example" +authors: ["Brent Seidel"] +maintainers: ["Brent Seidel "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/BrentSeidel/Ada-Web-Server"] +tags: ["web", +"http", +"embedded"] +version: "0.1.0" +short_description: "Example usage of simple web interface library." +dependencies: [{crate: "bbs", version: "~0.1.0"}, +{crate: "bbs_webif", version: "~0.1.0"}] +configuration_variables: [] +configuration_values: [] + +--- +An example simple web server built using the bbs_webif library. Once +you build it, you can run it and connect to it using port 31415. + + diff --git a/_crates/weechat_ada.md b/_crates/weechat_ada.md new file mode 100644 index 00000000..bb224257 --- /dev/null +++ b/_crates/weechat_ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "weechat_ada" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/weechat-ada"] +tags: ["chat", +"irc", +"weechat"] +version: "3.0.1" +short_description: "Ada 2012 library for WeeChat plug-ins" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/whitakers_words.md b/_crates/whitakers_words.md new file mode 100644 index 00000000..708bd4c1 --- /dev/null +++ b/_crates/whitakers_words.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "whitakers_words" +authors: ["William A. Whitaker", +"Martin Keegan"] +maintainers: ["alejandro@mosteo.com"] +licenses: ["Custom-Public-Domain"] +websites: ["https://bitbucket.org/ben-crowell/whitakers-words/"] +tags: [] +version: "0.20240801.0" +short_description: "William Whitaker's WORDS, a Latin dictionary" +dependencies: [{crate: "gnat", version: "/=7.3"}, +{crate: "make", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wikiada.md b/_crates/wikiada.md new file mode 100644 index 00000000..ff5cd949 --- /dev/null +++ b/_crates/wikiada.md @@ -0,0 +1,39 @@ +--- +layout: crate +crate: "wikiada" +authors: ["Stephane.Carrez@gmail.com"] +maintainers: ["Stephane.Carrez@gmail.com"] +licenses: ["Apache-2.0"] +websites: ["https://gitlab.com/stcarrez/ada-wiki"] +tags: ["wiki-engine", +"markdown", +"mediawiki", +"dotclear", +"html", +"parser", +"renderer"] +version: "1.4.2" +short_description: "Wiki Engine with parser and renderer for several wiki syntaxes" +dependencies: [{crate: "utilada", version: "^2.5.0"}] +configuration_variables: [] +configuration_values: [] + +--- +[![Build Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-wiki/badges/build.json)](https://porion.vacs.fr/porion/projects/view/ada-wiki/summary) +[![Test Status](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-wiki/badges/tests.json)](https://porion.vacs.fr/porion/projects/view/ada-wiki/xunits) +[![Coverage](https://img.shields.io/endpoint?url=https://porion.vacs.fr/porion/api/v1/projects/ada-wiki/badges/coverage.json)](https://porion.vacs.fr/porion/projects/view/ada-wiki/summary) + +Ada Wiki is a small library that provides and focuses only on the Wiki engine. + +The library allows to: + +* Parse a wiki text such as Mediawiki, Creole, PhpBB, Dotclear and Google Code +* Parse HTML content in embedded wiki text, +* Filter out the wiki, HTML or text through customizable filters, +* Render the wiki text in HTML, text or another wiki format + +The Ada Wiki library is used by [Ada Web Application](https://gitlab.com/stcarrez/ada-awa) +for the implementation of the blog and wiki online plugins. + + + diff --git a/_crates/wikibook.md b/_crates/wikibook.md new file mode 100644 index 00000000..cfb51aa3 --- /dev/null +++ b/_crates/wikibook.md @@ -0,0 +1,25 @@ +--- +layout: crate +crate: "wikibook" +authors: ["Martin Krischik"] +maintainers: ["Martin Krischik "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://wikibook-ada.sourceforge.net/"] +tags: ["tutorial", +"wikibook"] +version: "1.0.1" +short_description: "WikiBook Ada Programing" +dependencies: [{crate: "gnat", version: ">=13"}] +configuration_variables: [] +configuration_values: [] + +--- +WikiBook Ada Programing + +Follwing crates are incuded: + +basic: Chapter Basic Ada +pragmas_restrictions: Chapter Pragmas Restrictions + + + diff --git a/_crates/win32ada.md b/_crates/win32ada.md new file mode 100644 index 00000000..8a4d7410 --- /dev/null +++ b/_crates/win32ada.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "win32ada" +authors: ["Intermetrics", +"AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: [] +websites: ["https://github.com/adacore/win32ada"] +tags: ["windows", +"api"] +version: "23.0.0" +short_description: "Ada API to the Windows library" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/winpthreads.md b/_crates/winpthreads.md new file mode 100644 index 00000000..597f1858 --- /dev/null +++ b/_crates/winpthreads.md @@ -0,0 +1 @@ +Not found: winpthreads* diff --git a/_crates/wisitoken.md b/_crates/wisitoken.md new file mode 100644 index 00000000..d0978277 --- /dev/null +++ b/_crates/wisitoken.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "wisitoken" +authors: ["Stephen Leake"] +maintainers: ["Stephen Leake "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://stephe-leake.org/ada/wisitoken.html"] +tags: ["parser", +"generator", +"generalized"] +version: "4.2.1" +short_description: "Generalized error correcting LALR and packrat parser generator" +dependencies: [{crate: "gnat", version: "(>=11 & <2000) | >=2021"}, +{crate: "gnatcoll", version: "^22.0.0"}, +{crate: "stephes_ada_library", version: "~3.7.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wl_lib.md b/_crates/wl_lib.md new file mode 100644 index 00000000..3c074f16 --- /dev/null +++ b/_crates/wl_lib.md @@ -0,0 +1,18 @@ +--- +layout: crate +crate: "wl_lib" +authors: ["Fraser Wilson"] +maintainers: ["Fraser Wilson "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://github.com/blancolioni/wl_lib"] +tags: ["miscellanea", +"utility"] +version: "0.1.4" +short_description: "Handy library packages" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wordle.md b/_crates/wordle.md new file mode 100644 index 00000000..404fb4ec --- /dev/null +++ b/_crates/wordle.md @@ -0,0 +1,23 @@ +--- +layout: crate +crate: "wordle" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["wordle", +"console", +"terminal", +"game"] +version: "0.1.1" +short_description: "Wordle for the terminal" +dependencies: [{crate: "aaa", version: "~0.2.6"}, +{crate: "ansiada", version: "^1.0.0"}, +{crate: "wordlelib", version: "~0.1.0"}, +{crate: "wordlist", version: "~0.1.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wordlelib.md b/_crates/wordlelib.md new file mode 100644 index 00000000..50953bdf --- /dev/null +++ b/_crates/wordlelib.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "wordlelib" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["wordle", +"game", +"console", +"terminal"] +version: "0.1.0" +short_description: "Library to track progress in a game of Wordle" +dependencies: [{crate: "aaa", version: "~0.2.5"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/wordlist.md b/_crates/wordlist.md new file mode 100644 index 00000000..57c6ed13 --- /dev/null +++ b/_crates/wordlist.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "wordlist" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: [] +tags: ["wordlist", +"english"] +version: "0.1.3" +short_description: "An English word list" +dependencies: [{crate: "aaa", version: "~0.2.5"}, +{crate: "ada_toml", version: "~0.3.0"}, +{crate: "gnat", version: ">=11 & <2000"}, +{crate: "resources", version: "~0.1.0"}] +configuration_variables: [{name: 'Logging', type: 'Boolean', default: "false"}, +{name: 'Wordset', type: 'Enum (small, large, wordle)', default: "large"}] +configuration_values: [] + +--- + + diff --git a/_crates/workers.md b/_crates/workers.md new file mode 100644 index 00000000..dff64f65 --- /dev/null +++ b/_crates/workers.md @@ -0,0 +1,19 @@ +--- +layout: crate +crate: "workers" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT OR Apache-2.0"] +websites: [""] +tags: ["tasking", +"parallelization", +"pool"] +version: "0.1.0" +short_description: "Simple task pool for parallelization" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/xdg_base_dir.md b/_crates/xdg_base_dir.md new file mode 100644 index 00000000..92887795 --- /dev/null +++ b/_crates/xdg_base_dir.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "xdg_base_dir" +authors: ["onox"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/xdg-base-dir"] +tags: ["xdg"] +version: "1.0.0" +short_description: "XDG Base Directory Specification" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/xia.md b/_crates/xia.md new file mode 100644 index 00000000..10831b84 --- /dev/null +++ b/_crates/xia.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "xia" +authors: ["Simon Wright"] +maintainers: ["Simon Wright "] +licenses: ["GPL-3.0-or-later"] +websites: [] +tags: ["xml"] +version: "1.4.1" +short_description: "Implements XPath 1.0 in Ada" +dependencies: [{crate: "gnat", version: ">11.0.0"}, +{crate: "xmlada", version: ">=21.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- +XIA is a native Ada implementation of the XPath 1.0 specification. XIA is built using the DOM component of AdaCore's XML/Ada implementation and code generated by AdaGOOP. + +Submitting XPath queries is done via the XIA.XPath_Query function. The function returns a Dom.Core.Node_List, whose contents can be accessed with the function DOM.Core.Nodes.Item. + + diff --git a/_crates/xml_ez_out.md b/_crates/xml_ez_out.md new file mode 100644 index 00000000..e8ea2a36 --- /dev/null +++ b/_crates/xml_ez_out.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "xml_ez_out" +authors: ["Marc A. Criley"] +maintainers: ["alejandro@mosteo.com"] +licenses: [] +websites: ["http://www.mckae.com/xmlEz.html"] +tags: [] +version: "1.6.0" +short_description: "Creation of XML-formatted output from Ada programs" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/xmlada.md b/_crates/xmlada.md new file mode 100644 index 00000000..422b61ec --- /dev/null +++ b/_crates/xmlada.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "xmlada" +authors: ["AdaCore"] +maintainers: ["chouteau@adacore.com"] +licenses: ["GPL-3.0-or-later WITH GCC-exception-3.1"] +websites: ["https://github.com/AdaCore/xmlada"] +tags: [] +version: "25.0.0" +short_description: "The XML/Ada toolkit" +dependencies: [{crate: "gnat", version: ">=11"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/xoshiro.md b/_crates/xoshiro.md new file mode 100644 index 00000000..3ac0bf12 --- /dev/null +++ b/_crates/xoshiro.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "xoshiro" +authors: ["onox", +"David Blackman", +"Sebastiano Vigna"] +maintainers: ["onox "] +licenses: ["Apache-2.0"] +websites: ["https://github.com/onox/xoshiro"] +tags: ["xoshiro", +"rng", +"random", +"spark"] +version: "1.0.0" +short_description: "xoshiro128++ and xoshiro256++ pseudo-random number generators" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/yass.md b/_crates/yass.md new file mode 100644 index 00000000..a4fa81e5 --- /dev/null +++ b/_crates/yass.md @@ -0,0 +1,22 @@ +--- +layout: crate +crate: "yass" +authors: ["AJ Ianozi"] +maintainers: ["AJ Ianozi "] +licenses: ["GPL-3.0-or-later"] +websites: ["https://yass.website"] +tags: ["web", +"markdown", +"generator"] +version: "3.1.0" +short_description: "Static website generator" +dependencies: [{crate: "libcmark", version: ">=0.0.1"}, +{crate: "aws", version: "^24.0.0"}, +{crate: "gnatcoll", version: "^24.0.0"}, +{crate: "xmlada", version: "^24.0.0"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/yeison.md b/_crates/yeison.md new file mode 100644 index 00000000..5c95bce3 --- /dev/null +++ b/_crates/yeison.md @@ -0,0 +1,20 @@ +--- +layout: crate +crate: "yeison" +authors: ["Alejandro R. Mosteo"] +maintainers: ["Alejandro R. Mosteo "] +licenses: ["MIT"] +websites: ["https://github.com/mosteo/yeison"] +tags: ["json", +"yaml", +"toml", +"containers"] +version: "0.1.0" +short_description: "A JSON-like data structure using Ada 2022 features" +dependencies: [{crate: "gnat", version: ">=11.2 & <2000"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/z_compression.md b/_crates/z_compression.md new file mode 100644 index 00000000..437caaf1 --- /dev/null +++ b/_crates/z_compression.md @@ -0,0 +1,31 @@ +--- +layout: crate +crate: "z_compression" +authors: ["Jeffrey R. Carter"] +maintainers: ["Bent Bracke "] +licenses: ["BSD-3-Clause"] +websites: ["https://github.com/bracke/Z_Compression"] +tags: ["zlib", +"deflate", +"compression"] +version: "20240724.0.0" +short_description: "Standalone version of the Zlib Deflate compression algorithm" +dependencies: [{crate: "gnat", version: "<13.0 | >=13.3"}] +configuration_variables: [] +configuration_values: [] + +--- +# Z_Compression +Standalone version of the Zlib Deflate compression algorithm, derived from de Montmollin's Zip-Ada + +Z_Compression.Compress applies Deflate to an input stream of bytes, defined by its generic formal subprograms Out_Of_Data and Next, producing an output stream of bytes that are passed to the generic formal procedure Put. The output may be in Zlib or raw Deflate formats. + +ZC_Test is a test/demo program for Z_Compression. Building it should also compile Z_Compression. It is invoked as + +``` +zc_test +``` + +No error checking or handling is done. It compresses the given file into a Zlib format file. The output file name is the input file name with ".zc" appended. + + diff --git a/_crates/zeromq_ada.md b/_crates/zeromq_ada.md new file mode 100644 index 00000000..ec449669 --- /dev/null +++ b/_crates/zeromq_ada.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "zeromq_ada" +authors: ["Per Sandberg "] +maintainers: ["Per Sandberg ", +"Maxim Reznik "] +licenses: ["MIT AND GPL-2.0-only"] +websites: ["https://github.com/persan/zeromq-Ada"] +tags: ["network", +"distributed", +"messaging", +"binding"] +version: "4.1.5" +short_description: "An Ada-binding the ØMQ library" +dependencies: [{crate: "libzmq", version: "*"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/zipada.md b/_crates/zipada.md new file mode 100644 index 00000000..24fb166c --- /dev/null +++ b/_crates/zipada.md @@ -0,0 +1,47 @@ +--- +layout: crate +crate: "zipada" +authors: ["Gautier de Montmollin"] +maintainers: ["gdemont@hotmail.com"] +licenses: ["MIT"] +websites: ["https://unzip-ada.sourceforge.io/"] +tags: ["zip", +"archive", +"compression", +"deflate", +"lzma", +"bzip2", +"lzw", +"shrink"] +version: "60.0.0" +short_description: "Manage Zip Archives and raw BZip2 and LZMA streams" +dependencies: [] +configuration_variables: [] +configuration_values: [] + +--- +![Zip-Ada logo](https://unzip-ada.sourceforge.io/za_logo.png) + +Zip-Ada is a free, open-source programming library for dealing with the Zip compressed archive file format. +The full sources of Zip-Ada are in Ada, compilable on every compiler and for every system (*). + +Key features of Zip-Ada: + +* Files and streams supported, for archives and entries, for compression and decompression +* Task safe +* Endian-neutral +* Standalone +* Zip methods supported for compression: Reduce, Shrink, Deflate, BZip2, LZMA. +* Zip methods supported for decompression: the above methods, plus: Implode, Deflate64 +* Library is in pure Ada 2012 (nothing compiler/system specific), can be used in projects in Ada 2012 and later versions of the language +* Unconditionally portable (*) +* Tests and demos included + +The library includes LZMA & BZip2 independant compressor & decompressor pairs +(can be used outside of the Zip archive context). + +___ + +(*) within limits of compiler's provided integer types and target architecture capacity. + + diff --git a/_crates/zipdcf.md b/_crates/zipdcf.md new file mode 100644 index 00000000..5766f4e7 --- /dev/null +++ b/_crates/zipdcf.md @@ -0,0 +1,21 @@ +--- +layout: crate +crate: "zipdcf" +authors: ["onox", +"Gautier de Montmollin"] +maintainers: ["onox "] +licenses: ["MIT"] +websites: ["https://github.com/onox/dcf-ada"] +tags: ["zip", +"document", +"container", +"archive"] +version: "2.0.3" +short_description: "Tools that can (un)zip document container files, Zip-based archive files" +dependencies: [{crate: "dcf", version: "^2.0.3"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_crates/zlib.md b/_crates/zlib.md new file mode 100644 index 00000000..436b9882 --- /dev/null +++ b/_crates/zlib.md @@ -0,0 +1 @@ +Not found: zlib* diff --git a/_crates/zlib_ada.md b/_crates/zlib_ada.md new file mode 100644 index 00000000..962d99a4 --- /dev/null +++ b/_crates/zlib_ada.md @@ -0,0 +1,17 @@ +--- +layout: crate +crate: "zlib_ada" +authors: ["Dmitriy Anisimkov"] +maintainers: ["alejandro@mosteo.com"] +licenses: [] +websites: ["http://zlib-ada.sourceforge.net/"] +tags: [] +version: "1.3.0" +short_description: "ZLib for Ada thick binding" +dependencies: [{crate: "zlib", version: "^1.2"}] +configuration_variables: [] +configuration_values: [] + +--- + + diff --git a/_data/badge.json b/_data/badge.json new file mode 100644 index 00000000..975239e7 --- /dev/null +++ b/_data/badge.json @@ -0,0 +1,3 @@ +{ + "logoSvg": "\n\n \n \n \n \n image/svg+xml\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", +} diff --git a/_data/meta.yaml b/_data/meta.yaml new file mode 100644 index 00000000..9ad64e14 --- /dev/null +++ b/_data/meta.yaml @@ -0,0 +1 @@ +ci_site: 'https://alire-crate-ci.ada.dev' diff --git a/_data/tags.json b/_data/tags.json new file mode 100644 index 00000000..8407cae8 --- /dev/null +++ b/_data/tags.json @@ -0,0 +1,5936 @@ +[ + { + "name": "embedded", + "crates": [ + "mcp2221", + "chests", + "elogs", + "muntsos_raspberrypi2", + "light_arduino_due", + "a0b_stm32f401_gpio", + "a0b_callbacks", + "light_fk723m1_zgt6", + "hal", + "bbs_webif", + "avrada_rts", + "a0b_stm32f401_tim11_timer", + "cortex_m", + "avrada_examples", + "tiny_rp2040_bsp", + "a0b_armv7m", + "a0b_time", + "hex_format", + "a0b_atsam3x8e_twi_i2c", + "pico_examples", + "rp2040_hal", + "light_blackpill_stm32f401", + "a0b_i2c", + "startup_gen", + "minisamd51_bsp", + "a0b_stm32f401_dma", + "samd51_hal", + "a0b_timer", + "minisamd51_example", + "muntsos_beaglebone", + "atomic", + "a0b_armv7m_systick_clock", + "sh1107", + "bbs_embed_linux", + "littlefs", + "lvgl_ada", + "blinkenlights", + "a0b_stm32f401_i2c", + "avrada_lib", + "adl_middleware", + "stm32f0x2_hal", + "muntsos_raspberrypi1", + "nrf5x_hal", + "avrada_mcu", + "muntsos_raspberrypi4", + "a0b_gpio", + "remoteio", + "a0b_armv7m_systick_clock_timer", + "linux_hal", + "bbs_embed_common", + "a0b_atsam3x8e", + "esp_idf", + "usb_embedded", + "eeprom_i2c", + "a0b_stm32f401", + "pygamer_bsp", + "muntsos_raspberrypi5", + "midi", + "webif_example", + "a0b_atsam3x8e_tc5_timer", + "bb_pico_bsp", + "a0b_atsam3x8e_gpio", + "microbit_examples", + "basalt", + "muntsos_aarch64", + "itsybitsy_rp2040_bsp", + "pico_bsp", + "slip", + "ltp_305", + "bbqueue", + "edc_client", + "libsimpleio", + "muntsos_raspberrypi3", + "microbit_bsp", + "st7789", + "embedded_components", + "itsybitsy_bsp", + "tresses", + "cobs", + "a0b_exti", + "bbs_lisp" + ] + }, + { + "name": "linux", + "crates": [ + "mcp2221", + "muntsos_raspberrypi2", + "evdev", + "muntsos_beaglebone", + "powerjoular", + "canberra_ada", + "muntsos_raspberrypi1", + "muntsos_raspberrypi4", + "remoteio", + "linux_hal", + "alr2appimage", + "muntsos_raspberrypi5", + "inotify", + "muntsos_aarch64", + "libsimpleio", + "muntsos_raspberrypi3", + "epoll", + "keypadder" + ] + }, + { + "name": "mcp2221", + "crates": [ + "mcp2221" + ] + }, + { + "name": "adc", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "dac", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "gpio", + "crates": [ + "mcp2221", + "a0b_stm32f401_gpio", + "a0b_gpio", + "remoteio", + "linux_hal", + "a0b_atsam3x8e_gpio", + "libsimpleio" + ] + }, + { + "name": "i2c", + "crates": [ + "mcp2221", + "a0b_atsam3x8e_twi_i2c", + "a0b_i2c", + "a0b_stm32f401_i2c", + "remoteio", + "linux_hal", + "eeprom_i2c", + "ltp_305", + "libsimpleio" + ] + }, + { + "name": "motor", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "pwm", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "sensor", + "crates": [ + "mcp2221", + "hmc5883", + "bme280", + "remoteio", + "qmc5883", + "libsimpleio" + ] + }, + { + "name": "serial", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "servo", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "spi", + "crates": [ + "mcp2221", + "remoteio", + "linux_hal", + "libsimpleio", + "st7789" + ] + }, + { + "name": "stepper", + "crates": [ + "mcp2221", + "remoteio", + "libsimpleio" + ] + }, + { + "name": "emacs", + "crates": [ + "emacs_ada_mode", + "emacs_wisitoken_grammar_mode", + "emacs_gpr_query", + "emacs_gpr_mode", + "emacs_wisi" + ] + }, + { + "name": "ada-mode", + "crates": [ + "emacs_ada_mode" + ] + }, + { + "name": "dir", + "crates": [ + "dir_iterators" + ] + }, + { + "name": "files", + "crates": [ + "dir_iterators", + "controlled_io" + ] + }, + { + "name": "walk", + "crates": [ + "dir_iterators" + ] + }, + { + "name": "algebra", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "contour", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "contour-plot", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "formula-parser", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "fractal", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "kutta", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "linear-algebra", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "mathematics", + "crates": [ + "mathpaqs", + "euler_tools" + ] + }, + { + "name": "matrix", + "crates": [ + "mathpaqs", + "orka_numerics", + "orka_tensors_cpu", + "orka_transforms", + "orka_tensors_gpu" + ] + }, + { + "name": "numerics", + "crates": [ + "mathpaqs", + "specfun" + ] + }, + { + "name": "pareto", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "poisson", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "polynomial", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "probability", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "random", + "crates": [ + "mathpaqs", + "system_random", + "xoshiro", + "rsfile", + "orka_numerics", + "orka_tensors_cpu", + "image_random", + "orka_tensors_gpu" + ] + }, + { + "name": "rational", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "runge", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "runge-kutta", + "crates": [ + "mathpaqs" + ] + }, + { + "name": "statistics", + "crates": [ + "mathpaqs", + "orka_numerics", + "orka_tensors_cpu", + "sciada", + "orka_tensors_gpu" + ] + }, + { + "name": "gnatcoll", + "crates": [ + "gnatcoll_iconv", + "gnatcoll", + "gnatcoll_python", + "gnatcoll_sql", + "gnatcoll_lzma", + "gnatcoll_readline", + "gnatcoll_zlib", + "gnatcoll_syslog", + "gnatcoll_gmp", + "gnatcoll_postgres", + "gnatcoll_omp", + "gnatcoll_python3", + "gnatcoll_sqlite", + "gnatcoll_xref" + ] + }, + { + "name": "bindings", + "crates": [ + "gnatcoll_iconv", + "secretada", + "florist_blady", + "gnatcoll_python", + "magicada", + "gnatcoll_lzma", + "gnatcoll_readline", + "gnatcoll_zlib", + "gnatcoll_syslog", + "intl", + "gnatcoll_gmp", + "admpfr", + "gnatcoll_omp", + "gnatcoll_python3" + ] + }, + { + "name": "iconv", + "crates": [ + "gnatcoll_iconv" + ] + }, + { + "name": "i18n", + "crates": [ + "gnatcoll_iconv", + "felix", + "intl" + ] + }, + { + "name": "ini", + "crates": [ + "ini_files" + ] + }, + { + "name": "ini-file", + "crates": [ + "ini_files" + ] + }, + { + "name": "cfg", + "crates": [ + "ini_files" + ] + }, + { + "name": "cfg-file", + "crates": [ + "ini_files" + ] + }, + { + "name": "config", + "crates": [ + "ini_files", + "dotenv" + ] + }, + { + "name": "configuration", + "crates": [ + "ini_files" + ] + }, + { + "name": "xml", + "crates": [ + "matreshka_xml", + "vss", + "matreshka_league", + "utilada_xml", + "libadalang2xml", + "xia", + "ajunitgen" + ] + }, + { + "name": "dom", + "crates": [ + "matreshka_xml" + ] + }, + { + "name": "catalog", + "crates": [ + "matreshka_xml" + ] + }, + { + "name": "templates", + "crates": [ + "matreshka_xml", + "jintp" + ] + }, + { + "name": "html5", + "crates": [ + "matreshka_xml" + ] + }, + { + "name": "magnetometer", + "crates": [ + "hmc5883", + "qmc5883" + ] + }, + { + "name": "driver", + "crates": [ + "hmc5883", + "ethernet", + "bme280", + "enet_stm32", + "qmc5883", + "st7789" + ] + }, + { + "name": "elevator", + "crates": [ + "elevator" + ] + }, + { + "name": "teaching", + "crates": [ + "elevator" + ] + }, + { + "name": "secret", + "crates": [ + "secretada" + ] + }, + { + "name": "web", + "crates": [ + "awa_unit", + "gnoga", + "matreshka_soap_wsse", + "bbs_webif", + "matreshka_spikedog_api", + "webdriver", + "openai", + "jwt", + "matreshka_spikedog_core", + "matreshka_soap", + "utilada_curl", + "serverfaces", + "openapi", + "utilada_aws", + "matreshka_spikedog_awsd", + "serverfaces_unit", + "elada", + "matreshka_servlet", + "ews", + "aws", + "yass", + "matreshka_fastcgi", + "webif_example", + "openapi_server", + "servletada", + "servletada_ews", + "servletada_unit", + "awa", + "servletada_aws" + ] + }, + { + "name": "users", + "crates": [ + "awa_unit", + "awa" + ] + }, + { + "name": "jobs", + "crates": [ + "awa_unit", + "awa" + ] + }, + { + "name": "framework", + "crates": [ + "awa_unit", + "serverfaces_unit", + "awa" + ] + }, + { + "name": "testing", + "crates": [ + "awa_unit", + "matreshka_amf_utp", + "serverfaces_unit", + "utilada_unit", + "scripted_testing", + "servletada_unit" + ] + }, + { + "name": "libadalang", + "crates": [ + "libadalang", + "lal_highlight", + "libadalang_tools" + ] + }, + { + "name": "static-analysis", + "crates": [ + "libadalang", + "lal_highlight", + "libadalang_tools" + ] + }, + { + "name": "gui", + "crates": [ + "gnoga", + "openglada_glfw", + "gwindows", + "lvgl_ada", + "lvgl_ada_examples", + "lvgl_ada_simulator", + "ada_gui", + "gtkada" + ] + }, + { + "name": "server", + "crates": [ + "gnoga", + "dummyserver", + "ews", + "aws" + ] + }, + { + "name": "http", + "crates": [ + "gnoga", + "dummyserver", + "bbs_webif", + "utilada_curl", + "serverfaces", + "utilada_aws", + "serverfaces_unit", + "matreshka_servlet", + "aws", + "matreshka_fastcgi", + "webif_example", + "servletada", + "servletada_ews", + "servletada_unit", + "servletada_aws" + ] + }, + { + "name": "https", + "crates": [ + "gnoga", + "aws" + ] + }, + { + "name": "ssl", + "crates": [ + "gnoga", + "aws", + "tlsada" + ] + }, + { + "name": "opengl", + "crates": [ + "openglada_glfw", + "openglada_images", + "orka_tools", + "orka", + "orka_egl", + "orka_opengl", + "globe_3d", + "openglada", + "asfml", + "openglada_text", + "orka_awt" + ] + }, + { + "name": "glfw", + "crates": [ + "openglada_glfw" + ] + }, + { + "name": "binding", + "crates": [ + "openglada_glfw", + "ada_lua", + "zeromq_ada", + "raylib", + "openglada", + "asfml", + "esp_idf", + "ncursesada", + "chipmunk2d" + ] + }, + { + "name": "pygamer", + "crates": [ + "pygamer_simulator", + "shoot_n_loot", + "pygamer_bsp" + ] + }, + { + "name": "adafruit", + "crates": [ + "pygamer_simulator", + "pygamer_bsp" + ] + }, + { + "name": "game", + "crates": [ + "pygamer_simulator", + "eagle_lander", + "orka", + "suika_programing", + "tiled_code_gen", + "honki_tonks_zivilisationen", + "shoot_n_loot", + "wordle", + "geste", + "bingada", + "wordlelib", + "virtapu", + "play_2048", + "mine_detector", + "pygamer_bsp", + "mage_hat", + "mage" + ] + }, + { + "name": "console", + "crates": [ + "pygamer_simulator", + "dummyserver", + "trendy_terminal", + "progress_indicators", + "wordle", + "wordlelib", + "pygamer_bsp", + "printer_toolkit", + "cbsg" + ] + }, + { + "name": "simulator", + "crates": [ + "pygamer_simulator", + "eagle_lander", + "cheddar", + "shoot_n_loot", + "lvgl_ada_simulator" + ] + }, + { + "name": "test", + "crates": [ + "dummyserver", + "aunit", + "gnatcov", + "trendy_test", + "bbt" + ] + }, + { + "name": "terminal", + "crates": [ + "dummyserver", + "trendy_terminal", + "dashera", + "progress_indicators", + "wordle", + "wordlelib", + "ansiada", + "utf8test" + ] + }, + { + "name": "containers", + "crates": [ + "chests", + "yeison", + "minimal_containers", + "stephes_ada_library", + "pragmarc" + ] + }, + { + "name": "bounded", + "crates": [ + "chests" + ] + }, + { + "name": "nostd", + "crates": [ + "chests", + "hal", + "cortex_m", + "tiny_rp2040_bsp", + "pico_examples", + "rp2040_hal", + "startup_gen", + "minisamd51_bsp", + "samd51_hal", + "minisamd51_example", + "atomic", + "geste", + "littlefs", + "adl_middleware", + "stm32f0x2_hal", + "nrf5x_hal", + "virtapu", + "esp_idf", + "usb_embedded", + "eeprom_i2c", + "pygamer_bsp", + "midi", + "microbit_examples", + "basalt", + "itsybitsy_rp2040_bsp", + "pico_bsp", + "bbqueue", + "microbit_bsp", + "st7789", + "embedded_components", + "itsybitsy_bsp", + "tresses", + "cobs" + ] + }, + { + "name": "rendering", + "crates": [ + "openglada_images", + "orka", + "orka_opengl", + "globe_3d", + "geste", + "openglada", + "openglada_text", + "freetypeada" + ] + }, + { + "name": "graphics", + "crates": [ + "openglada_images", + "orka", + "aicwl", + "orka_opengl", + "globe_3d", + "gfx_core", + "easy_graphics", + "gfx_rasteriser", + "texcad", + "openglada", + "asfml", + "labs_solar_system", + "orka_awt" + ] + }, + { + "name": "spark", + "crates": [ + "elogs", + "xoshiro", + "program_proofs_in_spark", + "atomic", + "sparknacl", + "saatana", + "vaton", + "basalt", + "slip", + "bbqueue", + "blake2s", + "spat", + "spark_unbound", + "libkeccak", + "endianness", + "cobs" + ] + }, + { + "name": "zfp", + "crates": [ + "elogs", + "startup_gen" + ] + }, + { + "name": "logging", + "crates": [ + "elogs", + "adacl", + "utilada", + "journada", + "loga", + "gnatcoll_syslog", + "simple_logging" + ] + }, + { + "name": "log", + "crates": [ + "elogs", + "journada" + ] + }, + { + "name": "library", + "crates": [ + "adacl", + "libhello" + ] + }, + { + "name": "command-line", + "crates": [ + "adacl", + "trendy_terminal", + "parse_args", + "progress_indicators", + "cmd_ada", + "rsfile", + "clic" + ] + }, + { + "name": "trace", + "crates": [ + "adacl" + ] + }, + { + "name": "string", + "crates": [ + "adacl", + "hex_format", + "emojis", + "uxstrings", + "basalt" + ] + }, + { + "name": "aunit", + "crates": [ + "adacl" + ] + }, + { + "name": "assert", + "crates": [ + "adacl" + ] + }, + { + "name": "container", + "crates": [ + "adacl", + "dcf", + "zipdcf", + "list_image" + ] + }, + { + "name": "smart-pointer", + "crates": [ + "adacl" + ] + }, + { + "name": "ada2022", + "crates": [ + "adacl", + "mos6502_create_led", + "mos6502_create_nop", + "mos6502_create_reset" + ] + }, + { + "name": "database", + "crates": [ + "db_maker", + "ado_mysql", + "matreshka_sql", + "lmdb_ada", + "ado", + "gnatcoll_sql", + "matreshka_sql_postgresql", + "matreshka_sql_oracle", + "matreshka_sql_sqlite3", + "ado_postgresql", + "ado_all", + "matreshka_sql_firebird", + "gnatcoll_postgres", + "matreshka_sql_mysql", + "dynamo", + "gnatcoll_sqlite", + "gnatcoll_xref", + "ado_sqlite" + ] + }, + { + "name": "table", + "crates": [ + "db_maker" + ] + }, + { + "name": "base64", + "crates": [ + "base64" + ] + }, + { + "name": "coroutine", + "crates": [ + "task_coroutines" + ] + }, + { + "name": "generator", + "crates": [ + "task_coroutines", + "are", + "ayacc", + "aflex", + "ada_pretty", + "wisitoken", + "automate", + "protobuf", + "libadalang_tools", + "anagram", + "yass", + "dynamo" + ] + }, + { + "name": "muntsos", + "crates": [ + "muntsos_raspberrypi2", + "muntsos_beaglebone", + "muntsos_raspberrypi1", + "muntsos_raspberrypi4", + "muntsos_raspberrypi5", + "muntsos_aarch64", + "muntsos_raspberrypi3" + ] + }, + { + "name": "arm", + "crates": [ + "muntsos_raspberrypi2", + "cortex_m", + "muntsos_beaglebone", + "muntsos_raspberrypi1" + ] + }, + { + "name": "raspberrypi2", + "crates": [ + "muntsos_raspberrypi2" + ] + }, + { + "name": "florist", + "crates": [ + "florist_blady" + ] + }, + { + "name": "posix", + "crates": [ + "florist_blady", + "spoon" + ] + }, + { + "name": "mos-6502", + "crates": [ + "mos6502_create_led", + "mos6502_create_nop", + "mos6502_create_reset" + ] + }, + { + "name": "tools", + "crates": [ + "mos6502_create_led", + "atari_atr_tools", + "atari_exe_tools", + "libgnatdoc", + "mos6502_create_nop", + "mos6502_create_reset", + "hp41cx_tools", + "gnatdoc" + ] + }, + { + "name": "retrocomputing", + "crates": [ + "mos6502_create_led", + "atari_atr_tools", + "atari_exe_tools", + "mos6502_create_nop", + "mos6502_create_reset", + "hp41cx_tools" + ] + }, + { + "name": "unicode", + "crates": [ + "vss", + "matreshka_league", + "umwi", + "emojis", + "uxstrings", + "universal_text_file", + "utf8test" + ] + }, + { + "name": "json", + "crates": [ + "vss", + "matreshka_league", + "yeison", + "utilada", + "gnatcoll", + "jwt", + "serverfaces", + "json", + "servletada", + "servletada_ews", + "servletada_unit", + "servletada_aws" + ] + }, + { + "name": "text", + "crates": [ + "vss", + "controlled_io", + "hex_format", + "septum", + "tiny_text", + "emojis", + "simple_regex", + "universal_text_file", + "cbsg" + ] + }, + { + "name": "template", + "crates": [ + "vss", + "mold", + "mold_lib" + ] + }, + { + "name": "wordlist", + "crates": [ + "wordlist" + ] + }, + { + "name": "english", + "crates": [ + "wordlist" + ] + }, + { + "name": "uml", + "crates": [ + "matreshka_amf", + "ado_mysql", + "matreshka_amf_mofext", + "matreshka_amf_uml", + "ado", + "matreshka_amf_dd", + "matreshka_amf_utp", + "ado_postgresql", + "ado_all", + "matreshka_amf_ocl", + "dynamo", + "ado_sqlite" + ] + }, + { + "name": "meta", + "crates": [ + "matreshka_amf", + "matreshka_amf_mofext", + "matreshka_amf_uml", + "matreshka_amf_dd", + "matreshka_amf_utp", + "matreshka_amf_ocl" + ] + }, + { + "name": "mof", + "crates": [ + "matreshka_amf" + ] + }, + { + "name": "gltf", + "crates": [ + "orka_tools", + "orka", + "orka_plugin_gltf" + ] + }, + { + "name": "ktx", + "crates": [ + "orka_tools", + "orka" + ] + }, + { + "name": "orka", + "crates": [ + "orka_tools", + "orka", + "orka_egl", + "orka_opengl", + "orka_plugin_gltf", + "orka_plugin_archives", + "orka_numerics", + "orka_simd", + "orka_tensors_cpu", + "orka_transforms", + "orka_types", + "orka_plugin_terrain", + "orka_plugin_atmosphere", + "orka_tensors_gpu" + ] + }, + { + "name": "lua", + "crates": [ + "ada_lua" + ] + }, + { + "name": "script", + "crates": [ + "ada_lua" + ] + }, + { + "name": "jinja", + "crates": [ + "jintp" + ] + }, + { + "name": "jinja2", + "crates": [ + "jintp" + ] + }, + { + "name": "wayland", + "crates": [ + "wayland_ada_scanner", + "wayland_client_ada", + "wayland_egl_ada", + "wayland_cursor_ada", + "orka_awt", + "wayland_protocols_ada", + "wayland_ada_info" + ] + }, + { + "name": "egl", + "crates": [ + "wayland_ada_scanner", + "orka", + "orka_egl", + "orka_opengl", + "wayland_egl_ada", + "orka_awt" + ] + }, + { + "name": "xmpp", + "crates": [ + "axmpp" + ] + }, + { + "name": "jabber", + "crates": [ + "axmpp" + ] + }, + { + "name": "messaging", + "crates": [ + "axmpp", + "zeromq_ada" + ] + }, + { + "name": "sql", + "crates": [ + "ado_mysql", + "matreshka_sql", + "ado", + "gnatcoll_sql", + "matreshka_sql_postgresql", + "matreshka_sql_oracle", + "matreshka_sql_sqlite3", + "ado_postgresql", + "ado_all", + "matreshka_sql_firebird", + "matreshka_sql_mysql", + "gnatcoll_sqlite", + "ado_sqlite" + ] + }, + { + "name": "mysql", + "crates": [ + "ado_mysql", + "ado_all", + "matreshka_sql_mysql" + ] + }, + { + "name": "mariadb", + "crates": [ + "ado_mysql", + "ado_all", + "matreshka_sql_mysql" + ] + }, + { + "name": "process", + "crates": [ + "spawn_glib", + "spoon", + "ashell", + "spawn" + ] + }, + { + "name": "launch", + "crates": [ + "spawn_glib", + "spawn" + ] + }, + { + "name": "pipe", + "crates": [ + "spawn_glib", + "spawn" + ] + }, + { + "name": "glib", + "crates": [ + "spawn_glib" + ] + }, + { + "name": "gtk", + "crates": [ + "eagle_lander", + "aicwl", + "dashera", + "bingada", + "gtkada" + ] + }, + { + "name": "resource", + "crates": [ + "are" + ] + }, + { + "name": "embedder", + "crates": [ + "are" + ] + }, + { + "name": "project-euler", + "crates": [ + "euler_tools" + ] + }, + { + "name": "zip", + "crates": [ + "dcf", + "zipdcf", + "azip", + "gnatcoll_zlib", + "orka_plugin_archives", + "zipada" + ] + }, + { + "name": "document", + "crates": [ + "dcf", + "zipdcf" + ] + }, + { + "name": "archive", + "crates": [ + "dcf", + "zipdcf", + "azip", + "zipada" + ] + }, + { + "name": "sax", + "crates": [ + "matreshka_league" + ] + }, + { + "name": "encoding", + "crates": [ + "matreshka_league", + "qoi" + ] + }, + { + "name": "regexp", + "crates": [ + "matreshka_league" + ] + }, + { + "name": "time", + "crates": [ + "matreshka_league", + "a0b_time", + "a0b_armv7m_systick_clock", + "a0b_armv7m_systick_clock_timer" + ] + }, + { + "name": "semver", + "crates": [ + "semantic_versioning" + ] + }, + { + "name": "semantic", + "crates": [ + "semantic_versioning", + "hac" + ] + }, + { + "name": "versioning", + "crates": [ + "semantic_versioning" + ] + }, + { + "name": "azdo", + "crates": [ + "orka", + "orka_opengl" + ] + }, + { + "name": "engine", + "crates": [ + "orka", + "mage" + ] + }, + { + "name": "a0b", + "crates": [ + "light_arduino_due", + "a0b_stm32f401_gpio", + "a0b_base", + "a0b_stm32f401_tim11_timer", + "a0b_armv7m", + "a0b_time", + "a0b_i2c", + "a0b_stm32f401_dma", + "a0b_timer", + "a0b_armv7m_systick_clock", + "a0b_stm32f401_i2c", + "a0b_armv7m_systick_clock_timer", + "a0b_atsam3x8e", + "a0b_stm32f401", + "a0b_atsam3x8e_tc5_timer", + "a0b_atsam3x8e_gpio", + "a0b_exti" + ] + }, + { + "name": "bsp", + "crates": [ + "light_arduino_due", + "light_fk723m1_zgt6", + "tiny_rp2040_bsp", + "light_blackpill_stm32f401", + "pygamer_bsp", + "itsybitsy_rp2040_bsp", + "pico_bsp", + "microbit_bsp", + "itsybitsy_bsp" + ] + }, + { + "name": "light", + "crates": [ + "light_arduino_due", + "light_fk723m1_zgt6", + "light_blackpill_stm32f401" + ] + }, + { + "name": "atsam3x8e", + "crates": [ + "light_arduino_due", + "a0b_atsam3x8e_twi_i2c", + "a0b_atsam3x8e", + "a0b_atsam3x8e_tc5_timer", + "a0b_atsam3x8e_gpio" + ] + }, + { + "name": "sam3x8e", + "crates": [ + "light_arduino_due", + "a0b_atsam3x8e", + "a0b_atsam3x8e_tc5_timer", + "a0b_atsam3x8e_gpio" + ] + }, + { + "name": "arduino", + "crates": [ + "light_arduino_due", + "a0b_atsam3x8e_twi_i2c", + "a0b_atsam3x8e", + "a0b_atsam3x8e_tc5_timer", + "a0b_atsam3x8e_gpio" + ] + }, + { + "name": "due", + "crates": [ + "light_arduino_due", + "a0b_atsam3x8e_twi_i2c", + "a0b_atsam3x8e", + "a0b_atsam3x8e_tc5_timer", + "a0b_atsam3x8e_gpio" + ] + }, + { + "name": "widgets", + "crates": [ + "aicwl", + "ada_gui" + ] + }, + { + "name": "gauge", + "crates": [ + "aicwl" + ] + }, + { + "name": "ui", + "crates": [ + "aicwl", + "cmd_ada" + ] + }, + { + "name": "bar", + "crates": [ + "bar_codes" + ] + }, + { + "name": "code", + "crates": [ + "bar_codes", + "septum" + ] + }, + { + "name": "barcode", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "bar-code", + "crates": [ + "bar_codes" + ] + }, + { + "name": "datamatrix", + "crates": [ + "bar_codes" + ] + }, + { + "name": "data-matrix", + "crates": [ + "bar_codes" + ] + }, + { + "name": "qr", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "qrcode", + "crates": [ + "bar_codes" + ] + }, + { + "name": "qr-code", + "crates": [ + "bar_codes" + ] + }, + { + "name": "code128", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "msi", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "ean13", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "upca", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "pbm", + "crates": [ + "bar_codes", + "bar_code_drawing", + "gid" + ] + }, + { + "name": "pdf", + "crates": [ + "bar_codes", + "apdf" + ] + }, + { + "name": "png", + "crates": [ + "bar_codes", + "gid", + "image_io" + ] + }, + { + "name": "svg", + "crates": [ + "bar_codes", + "bar_code_drawing" + ] + }, + { + "name": "simple", + "crates": [ + "vanilla" + ] + }, + { + "name": "substitute", + "crates": [ + "vanilla" + ] + }, + { + "name": "replace", + "crates": [ + "vanilla" + ] + }, + { + "name": "vanilla", + "crates": [ + "vanilla" + ] + }, + { + "name": "atari", + "crates": [ + "atari_atr_tools", + "atari_exe_tools" + ] + }, + { + "name": "ada-2022", + "crates": [ + "atari_atr_tools", + "atari_exe_tools", + "hp41cx_tools" + ] + }, + { + "name": "education", + "crates": [ + "learnadainy" + ] + }, + { + "name": "java", + "crates": [ + "j2ada" + ] + }, + { + "name": "translator", + "crates": [ + "j2ada" + ] + }, + { + "name": "xdg", + "crates": [ + "xdg_base_dir" + ] + }, + { + "name": "stm32", + "crates": [ + "a0b_stm32f401_gpio", + "a0b_stm32f401_tim11_timer", + "light_blackpill_stm32f401", + "a0b_stm32f401_dma", + "a0b_stm32f401_i2c", + "enet_stm32", + "a0b_stm32f401" + ] + }, + { + "name": "stm32f401", + "crates": [ + "a0b_stm32f401_gpio", + "a0b_stm32f401_tim11_timer", + "light_blackpill_stm32f401", + "a0b_stm32f401_dma", + "a0b_stm32f401_i2c", + "a0b_stm32f401" + ] + }, + { + "name": "exti", + "crates": [ + "a0b_stm32f401_gpio", + "a0b_exti" + ] + }, + { + "name": "utilities", + "crates": [ + "si_units" + ] + }, + { + "name": "formatting", + "crates": [ + "si_units", + "libgnatformat", + "gnatformat", + "libadalang_tools" + ] + }, + { + "name": "soap", + "crates": [ + "matreshka_soap_wsse", + "matreshka_soap", + "aws" + ] + }, + { + "name": "wsse", + "crates": [ + "matreshka_soap_wsse" + ] + }, + { + "name": "yaml", + "crates": [ + "yeison" + ] + }, + { + "name": "toml", + "crates": [ + "yeison", + "toml_slicer" + ] + }, + { + "name": "hac", + "crates": [ + "hac", + "lea" + ] + }, + { + "name": "compiler", + "crates": [ + "hac" + ] + }, + { + "name": "virtual-machine", + "crates": [ + "hac" + ] + }, + { + "name": "native", + "crates": [ + "hac" + ] + }, + { + "name": "parser", + "crates": [ + "hac", + "ayacc", + "emacs_wisitoken_grammar_mode", + "aflex", + "wisitoken", + "elada", + "emacs_gpr_mode", + "opentoken", + "wikiada" + ] + }, + { + "name": "advent-of-code", + "crates": [ + "hac" + ] + }, + { + "name": "client", + "crates": [ + "wayland_client_ada", + "rclada_examples", + "rclada" + ] + }, + { + "name": "callbacks", + "crates": [ + "a0b_callbacks" + ] + }, + { + "name": "types", + "crates": [ + "a0b_base" + ] + }, + { + "name": "builtins", + "crates": [ + "a0b_base" + ] + }, + { + "name": "stm32h723", + "crates": [ + "light_fk723m1_zgt6" + ] + }, + { + "name": "fk723m1", + "crates": [ + "light_fk723m1_zgt6" + ] + }, + { + "name": "io", + "crates": [ + "controlled_io", + "image_io" + ] + }, + { + "name": "controlled", + "crates": [ + "controlled_io" + ] + }, + { + "name": "scope", + "crates": [ + "controlled_io" + ] + }, + { + "name": "binary", + "crates": [ + "controlled_io" + ] + }, + { + "name": "grammar", + "crates": [ + "ayacc", + "aflex", + "anagram" + ] + }, + { + "name": "indent", + "crates": [ + "emacs_wisitoken_grammar_mode", + "emacs_gpr_mode", + "emacs_wisi" + ] + }, + { + "name": "highlight", + "crates": [ + "emacs_wisitoken_grammar_mode", + "emacs_gpr_mode" + ] + }, + { + "name": "sorting", + "crates": [ + "partord", + "pragmarc" + ] + }, + { + "name": "processes", + "crates": [ + "utilada" + ] + }, + { + "name": "streams", + "crates": [ + "utilada", + "utilada_lzma" + ] + }, + { + "name": "beans", + "crates": [ + "utilada" + ] + }, + { + "name": "encoders", + "crates": [ + "utilada" + ] + }, + { + "name": "decoders", + "crates": [ + "utilada" + ] + }, + { + "name": "training", + "crates": [ + "labs_radar", + "labs_standalone", + "labs_solar_system" + ] + }, + { + "name": "labs", + "crates": [ + "labs_radar", + "labs_standalone", + "labs_solar_system" + ] + }, + { + "name": "hal", + "crates": [ + "hal", + "tiny_text", + "linux_hal" + ] + }, + { + "name": "suika", + "crates": [ + "suika_programing" + ] + }, + { + "name": "raylib", + "crates": [ + "suika_programing", + "raylib" + ] + }, + { + "name": "chipmunk", + "crates": [ + "suika_programing" + ] + }, + { + "name": "physics", + "crates": [ + "suika_programing" + ] + }, + { + "name": "2d", + "crates": [ + "suika_programing", + "honki_tonks_zivilisationen" + ] + }, + { + "name": "geste", + "crates": [ + "tiled_code_gen" + ] + }, + { + "name": "gamedev", + "crates": [ + "tiled_code_gen", + "raylib", + "sdlada", + "chipmunk2d" + ] + }, + { + "name": "tiled", + "crates": [ + "tiled_code_gen" + ] + }, + { + "name": "serialization", + "crates": [ + "utilada_xml" + ] + }, + { + "name": "audio", + "crates": [ + "audio_wavefiles", + "musicplayer", + "canberra_ada", + "virtapu", + "linux_hal", + "asfml", + "audio_base", + "tresses" + ] + }, + { + "name": "riff", + "crates": [ + "audio_wavefiles", + "audio_base" + ] + }, + { + "name": "wavefiles", + "crates": [ + "audio_wavefiles" + ] + }, + { + "name": "cryptography", + "crates": [ + "pbkdf2", + "system_random", + "sha2", + "sha1", + "fastpbkdf2_ada", + "chacha20", + "sparknacl", + "hmac", + "saatana", + "libkeccak" + ] + }, + { + "name": "security", + "crates": [ + "pbkdf2", + "system_random", + "sha2", + "sha1", + "security", + "chacha20", + "sparknacl", + "akt", + "hmac", + "keystoreada", + "libkeccak" + ] + }, + { + "name": "pbkdf2", + "crates": [ + "pbkdf2", + "fastpbkdf2_ada" + ] + }, + { + "name": "db", + "crates": [ + "matreshka_sql", + "matreshka_sql_postgresql", + "matreshka_sql_oracle", + "matreshka_sql_sqlite3", + "matreshka_sql_firebird", + "matreshka_sql_mysql" + ] + }, + { + "name": "html", + "crates": [ + "bbs_webif", + "list_image", + "ada_gui", + "wikiada" + ] + }, + { + "name": "diagram", + "crates": [ + "matreshka_amf_mofext", + "matreshka_amf_uml", + "matreshka_amf_dd", + "matreshka_amf_utp", + "matreshka_amf_ocl" + ] + }, + { + "name": "sfml", + "crates": [ + "honki_tonks_zivilisationen", + "bingada", + "play_2048", + "asfml" + ] + }, + { + "name": "4x", + "crates": [ + "honki_tonks_zivilisationen" + ] + }, + { + "name": "roundbased", + "crates": [ + "honki_tonks_zivilisationen" + ] + }, + { + "name": "strategy", + "crates": [ + "honki_tonks_zivilisationen" + ] + }, + { + "name": "cross-platform", + "crates": [ + "honki_tonks_zivilisationen", + "play_2048", + "asfml", + "sdlada" + ] + }, + { + "name": "multimedia", + "crates": [ + "honki_tonks_zivilisationen", + "asfml" + ] + }, + { + "name": "system", + "crates": [ + "system_random", + "endianness" + ] + }, + { + "name": "avr", + "crates": [ + "avrada_rts", + "avrada_examples", + "avrada_lib", + "avrada_mcu" + ] + }, + { + "name": "rts", + "crates": [ + "avrada_rts", + "portable_minimal_ada_rts", + "avrada_mcu" + ] + }, + { + "name": "ada1995", + "crates": [ + "b2ssum", + "felix" + ] + }, + { + "name": "hash", + "crates": [ + "b2ssum", + "blake2s", + "libkeccak" + ] + }, + { + "name": "blake2", + "crates": [ + "b2ssum", + "blake2s" + ] + }, + { + "name": "blake2s", + "crates": [ + "b2ssum", + "blake2s" + ] + }, + { + "name": "servlet", + "crates": [ + "matreshka_spikedog_api", + "matreshka_spikedog_core", + "serverfaces", + "matreshka_spikedog_awsd", + "serverfaces_unit", + "matreshka_servlet", + "servletada", + "servletada_ews", + "servletada_unit", + "servletada_aws" + ] + }, + { + "name": "vt100", + "crates": [ + "trendy_terminal", + "journada" + ] + }, + { + "name": "crc", + "crates": [ + "crc_32", + "checksum" + ] + }, + { + "name": "iso3309", + "crates": [ + "crc_32" + ] + }, + { + "name": "data", + "crates": [ + "crc_32", + "qplt" + ] + }, + { + "name": "redundancy", + "crates": [ + "crc_32", + "checksum" + ] + }, + { + "name": "verification", + "crates": [ + "crc_32" + ] + }, + { + "name": "control", + "crates": [ + "webdriver" + ] + }, + { + "name": "selenium", + "crates": [ + "webdriver" + ] + }, + { + "name": "chrome", + "crates": [ + "webdriver" + ] + }, + { + "name": "nls", + "crates": [ + "felix", + "intl" + ] + }, + { + "name": "localization", + "crates": [ + "felix" + ] + }, + { + "name": "localisation", + "crates": [ + "felix" + ] + }, + { + "name": "l10n", + "crates": [ + "felix" + ] + }, + { + "name": "ulid", + "crates": [ + "ulid" + ] + }, + { + "name": "uuid", + "crates": [ + "ulid" + ] + }, + { + "name": "guid", + "crates": [ + "ulid" + ] + }, + { + "name": "identifier", + "crates": [ + "ulid" + ] + }, + { + "name": "timestamp", + "crates": [ + "ulid" + ] + }, + { + "name": "email", + "crates": [ + "gnatcoll" + ] + }, + { + "name": "refcount", + "crates": [ + "gnatcoll" + ] + }, + { + "name": "projects", + "crates": [ + "gnatcoll" + ] + }, + { + "name": "gpr", + "crates": [ + "gnatcoll", + "emacs_gpr_mode" + ] + }, + { + "name": "vfs", + "crates": [ + "gnatcoll" + ] + }, + { + "name": "cli", + "crates": [ + "parse_args", + "gnatcoll_readline", + "clic" + ] + }, + { + "name": "geo", + "crates": [ + "geo_coords" + ] + }, + { + "name": "coordinates", + "crates": [ + "geo_coords" + ] + }, + { + "name": "latitude", + "crates": [ + "geo_coords" + ] + }, + { + "name": "longitude", + "crates": [ + "geo_coords" + ] + }, + { + "name": "distance", + "crates": [ + "geo_coords" + ] + }, + { + "name": "bearing", + "crates": [ + "geo_coords" + ] + }, + { + "name": "haversine", + "crates": [ + "geo_coords" + ] + }, + { + "name": "matrices", + "crates": [ + "gnat_math_extensions" + ] + }, + { + "name": "blas", + "crates": [ + "gnat_math_extensions" + ] + }, + { + "name": "lapack", + "crates": [ + "gnat_math_extensions" + ] + }, + { + "name": "timer", + "crates": [ + "a0b_stm32f401_tim11_timer", + "a0b_timer", + "a0b_armv7m_systick_clock_timer", + "a0b_atsam3x8e_tc5_timer", + "stopwatch" + ] + }, + { + "name": "stm32f4", + "crates": [ + "a0b_stm32f401_tim11_timer", + "light_blackpill_stm32f401", + "a0b_stm32f401_dma", + "a0b_stm32f401_i2c", + "a0b_stm32f401" + ] + }, + { + "name": "sha2", + "crates": [ + "sha2" + ] + }, + { + "name": "bmp", + "crates": [ + "bar_code_drawing", + "gid", + "image_io" + ] + }, + { + "name": "ada", + "crates": [ + "libadalang2xml", + "libgnatformat", + "adabots", + "gnatformat", + "lal_refactor", + "getada" + ] + }, + { + "name": "arguments", + "crates": [ + "getopt" + ] + }, + { + "name": "options", + "crates": [ + "getopt" + ] + }, + { + "name": "flags", + "crates": [ + "getopt" + ] + }, + { + "name": "getopt", + "crates": [ + "getopt" + ] + }, + { + "name": "demo", + "crates": [ + "avrada_examples", + "mage_hat", + "libhello", + "hello" + ] + }, + { + "name": "unit", + "crates": [ + "aunit", + "trendy_test" + ] + }, + { + "name": "unit-test", + "crates": [ + "aunit", + "trendy_test" + ] + }, + { + "name": "tiny", + "crates": [ + "tiny_rp2040_bsp" + ] + }, + { + "name": "rp2040", + "crates": [ + "tiny_rp2040_bsp", + "pico_examples", + "rp2040_hal", + "sh1107", + "eeprom_i2c", + "itsybitsy_rp2040_bsp", + "pico_bsp", + "ltp_305", + "edc_client", + "itsybitsy_bsp" + ] + }, + { + "name": "tasking", + "crates": [ + "workers" + ] + }, + { + "name": "parallelization", + "crates": [ + "workers" + ] + }, + { + "name": "pool", + "crates": [ + "workers" + ] + }, + { + "name": "rest", + "crates": [ + "openai", + "utilada_curl", + "openapi", + "minirest", + "openapi_server", + "servletada", + "servletada_unit" + ] + }, + { + "name": "api", + "crates": [ + "openai", + "openapi", + "win32ada", + "openapi_server" + ] + }, + { + "name": "openapi", + "crates": [ + "openai", + "openapi", + "openapi_server" + ] + }, + { + "name": "openai", + "crates": [ + "openai" + ] + }, + { + "name": "midi", + "crates": [ + "rtmidi", + "emdee", + "usb_embedded", + "midi" + ] + }, + { + "name": "rtmidi", + "crates": [ + "rtmidi" + ] + }, + { + "name": "music", + "crates": [ + "rtmidi", + "emdee", + "musicplayer" + ] + }, + { + "name": "armv7m", + "crates": [ + "a0b_armv7m", + "a0b_armv7m_systick_clock" + ] + }, + { + "name": "cortex-m", + "crates": [ + "a0b_armv7m" + ] + }, + { + "name": "cortex-m3", + "crates": [ + "a0b_armv7m" + ] + }, + { + "name": "cortex-m4", + "crates": [ + "a0b_armv7m" + ] + }, + { + "name": "cortex-m7", + "crates": [ + "a0b_armv7m" + ] + }, + { + "name": "key-value", + "crates": [ + "lmdb_ada" + ] + }, + { + "name": "python", + "crates": [ + "gnatcoll_python", + "gnatcoll_python3" + ] + }, + { + "name": "python2", + "crates": [ + "gnatcoll_python" + ] + }, + { + "name": "utility", + "crates": [ + "brackelib", + "uri_ada", + "wl_lib", + "simple_logging", + "alr2appimage", + "getada", + "aaa" + ] + }, + { + "name": "adt", + "crates": [ + "brackelib" + ] + }, + { + "name": "stack", + "crates": [ + "brackelib", + "basalt" + ] + }, + { + "name": "queue", + "crates": [ + "brackelib", + "basalt" + ] + }, + { + "name": "token", + "crates": [ + "jwt", + "splitter" + ] + }, + { + "name": "jws", + "crates": [ + "jwt" + ] + }, + { + "name": "jwt", + "crates": [ + "jwt", + "security" + ] + }, + { + "name": "gnatcoll-db", + "crates": [ + "gnatcoll_sql", + "gnatcoll_postgres", + "gnatcoll_sqlite" + ] + }, + { + "name": "sha1", + "crates": [ + "sha1" + ] + }, + { + "name": "network", + "crates": [ + "zeromq_ada", + "ethernet", + "garlic", + "enet_stm32", + "enet", + "gnatdist_garlic" + ] + }, + { + "name": "distributed", + "crates": [ + "zeromq_ada", + "garlic", + "gnatdist_garlic" + ] + }, + { + "name": "mdio", + "crates": [ + "ethernet" + ] + }, + { + "name": "smi", + "crates": [ + "ethernet" + ] + }, + { + "name": "miim", + "crates": [ + "ethernet" + ] + }, + { + "name": "phy", + "crates": [ + "ethernet" + ] + }, + { + "name": "magic", + "crates": [ + "magicada", + "mage_hat" + ] + }, + { + "name": "file", + "crates": [ + "magicada" + ] + }, + { + "name": "xoshiro", + "crates": [ + "xoshiro" + ] + }, + { + "name": "rng", + "crates": [ + "xoshiro" + ] + }, + { + "name": "oauth2", + "crates": [ + "security" + ] + }, + { + "name": "authentication", + "crates": [ + "security" + ] + }, + { + "name": "permissions", + "crates": [ + "security" + ] + }, + { + "name": "hex", + "crates": [ + "hex_format" + ] + }, + { + "name": "pure", + "crates": [ + "hex_format" + ] + }, + { + "name": "format", + "crates": [ + "hex_format", + "universal_text_file", + "prettier_ada" + ] + }, + { + "name": "dasher", + "crates": [ + "dashera" + ] + }, + { + "name": "emulator", + "crates": [ + "dashera" + ] + }, + { + "name": "twi", + "crates": [ + "a0b_atsam3x8e_twi_i2c" + ] + }, + { + "name": "parallel", + "crates": [ + "parallelize" + ] + }, + { + "name": "execution", + "crates": [ + "parallelize" + ] + }, + { + "name": "progress", + "crates": [ + "progress_indicators" + ] + }, + { + "name": "units", + "crates": [ + "bbs" + ] + }, + { + "name": "uri", + "crates": [ + "uri_ada", + "uri_mime" + ] + }, + { + "name": "url", + "crates": [ + "uri_ada", + "uri_mime" + ] + }, + { + "name": "pico", + "crates": [ + "pico_examples", + "bb_pico_bsp", + "pico_bsp" + ] + }, + { + "name": "raspberrypi", + "crates": [ + "rp2040_hal", + "pico_bsp", + "libsimpleio" + ] + }, + { + "name": "drivers", + "crates": [ + "rp2040_hal", + "samd51_hal", + "avrada_lib", + "stm32f0x2_hal", + "nrf5x_hal", + "st7789" + ] + }, + { + "name": "blackpill", + "crates": [ + "light_blackpill_stm32f401" + ] + }, + { + "name": "image", + "crates": [ + "qoi", + "easy_graphics", + "gid", + "image_io" + ] + }, + { + "name": "qoi", + "crates": [ + "qoi", + "gid", + "image_io" + ] + }, + { + "name": "humidity", + "crates": [ + "bme280" + ] + }, + { + "name": "temperature", + "crates": [ + "bme280" + ] + }, + { + "name": "pressure", + "crates": [ + "bme280" + ] + }, + { + "name": "rx", + "crates": [ + "rxada" + ] + }, + { + "name": "reactive", + "crates": [ + "rxada" + ] + }, + { + "name": "reactivex", + "crates": [ + "rxada" + ] + }, + { + "name": "observer", + "crates": [ + "rxada" + ] + }, + { + "name": "realtime", + "crates": [ + "cheddar" + ] + }, + { + "name": "model", + "crates": [ + "cheddar", + "ocarina_lib" + ] + }, + { + "name": "analyzer", + "crates": [ + "cheddar" + ] + }, + { + "name": "rpc", + "crates": [ + "matreshka_soap", + "protobuf" + ] + }, + { + "name": "protocol", + "crates": [ + "matreshka_soap", + "protobuf" + ] + }, + { + "name": "samd51", + "crates": [ + "minisamd51_bsp", + "minisamd51_example" + ] + }, + { + "name": "minisam", + "crates": [ + "minisamd51_bsp", + "minisamd51_example" + ] + }, + { + "name": "dma", + "crates": [ + "a0b_stm32f401_dma", + "bbqueue" + ] + }, + { + "name": "pretty", + "crates": [ + "ada_pretty" + ] + }, + { + "name": "printing", + "crates": [ + "ada_pretty" + ] + }, + { + "name": "chat", + "crates": [ + "weechat_ada" + ] + }, + { + "name": "irc", + "crates": [ + "weechat_ada" + ] + }, + { + "name": "weechat", + "crates": [ + "weechat_ada" + ] + }, + { + "name": "rad", + "crates": [ + "gwindows" + ] + }, + { + "name": "windows", + "crates": [ + "gwindows", + "win32ada", + "orka_awt" + ] + }, + { + "name": "atsamd51", + "crates": [ + "samd51_hal" + ] + }, + { + "name": "microchip", + "crates": [ + "samd51_hal" + ] + }, + { + "name": "atmel", + "crates": [ + "samd51_hal" + ] + }, + { + "name": "application", + "crates": [ + "azip", + "texcad", + "lea" + ] + }, + { + "name": "azip", + "crates": [ + "azip" + ] + }, + { + "name": "file-manager", + "crates": [ + "azip" + ] + }, + { + "name": "postgresql", + "crates": [ + "matreshka_sql_postgresql", + "ado_postgresql", + "ado_all", + "gnatcoll_postgres" + ] + }, + { + "name": "lzma", + "crates": [ + "gnatcoll_lzma", + "utilada_lzma", + "lzmada", + "zipada" + ] + }, + { + "name": "compression", + "crates": [ + "gnatcoll_lzma", + "gnatcoll_zlib", + "z_compression", + "lzmada", + "zipada" + ] + }, + { + "name": "7z", + "crates": [ + "gnatcoll_lzma" + ] + }, + { + "name": "7zip", + "crates": [ + "gnatcoll_lzma" + ] + }, + { + "name": "algorithmic", + "crates": [ + "labs_standalone" + ] + }, + { + "name": "chacha20", + "crates": [ + "chacha20" + ] + }, + { + "name": "oracle", + "crates": [ + "matreshka_sql_oracle" + ] + }, + { + "name": "sqlite", + "crates": [ + "matreshka_sql_sqlite3", + "ado_all", + "gnatcoll_sqlite", + "ado_sqlite" + ] + }, + { + "name": "wordle", + "crates": [ + "wordle", + "wordlelib" + ] + }, + { + "name": "coverage", + "crates": [ + "gnatcov" + ] + }, + { + "name": "analysis", + "crates": [ + "gnatcov", + "dependency_graph_extractor", + "anagram", + "rejuvenation" + ] + }, + { + "name": "search", + "crates": [ + "septum" + ] + }, + { + "name": "template-engine", + "crates": [ + "mold", + "mold_lib" + ] + }, + { + "name": "template-repo", + "crates": [ + "mold", + "mold_lib" + ] + }, + { + "name": "boolean", + "crates": [ + "dirty_booleans", + "bit_sets" + ] + }, + { + "name": "dirty", + "crates": [ + "dirty_booleans" + ] + }, + { + "name": "comparison", + "crates": [ + "dirty_booleans" + ] + }, + { + "name": "mime", + "crates": [ + "uri_mime" + ] + }, + { + "name": "media-type", + "crates": [ + "uri_mime" + ] + }, + { + "name": "spdx", + "crates": [ + "spdx" + ] + }, + { + "name": "license", + "crates": [ + "spdx" + ] + }, + { + "name": "evdev", + "crates": [ + "evdev" + ] + }, + { + "name": "force-feedback", + "crates": [ + "evdev" + ] + }, + { + "name": "input", + "crates": [ + "evdev", + "orka_awt" + ] + }, + { + "name": "password", + "crates": [ + "get_password" + ] + }, + { + "name": "echo", + "crates": [ + "get_password" + ] + }, + { + "name": "textio", + "crates": [ + "get_password" + ] + }, + { + "name": "beaglebone", + "crates": [ + "muntsos_beaglebone", + "libsimpleio" + ] + }, + { + "name": "lib", + "crates": [ + "libgnatformat" + ] + }, + { + "name": "font", + "crates": [ + "tiny_text" + ] + }, + { + "name": "bitmap", + "crates": [ + "tiny_text", + "adl_middleware", + "gid", + "st7789" + ] + }, + { + "name": "atomic", + "crates": [ + "atomic" + ] + }, + { + "name": "generalized", + "crates": [ + "wisitoken" + ] + }, + { + "name": "power", + "crates": [ + "powerjoular" + ] + }, + { + "name": "energy", + "crates": [ + "powerjoular" + ] + }, + { + "name": "performance", + "crates": [ + "emdee", + "bit_sets" + ] + }, + { + "name": "theatre", + "crates": [ + "emdee" + ] + }, + { + "name": "mp3", + "crates": [ + "emdee" + ] + }, + { + "name": "soundtrack", + "crates": [ + "emdee" + ] + }, + { + "name": "player", + "crates": [ + "emdee", + "musicplayer" + ] + }, + { + "name": "wav", + "crates": [ + "emdee" + ] + }, + { + "name": "flac", + "crates": [ + "emdee" + ] + }, + { + "name": "ogg", + "crates": [ + "emdee" + ] + }, + { + "name": "ffplay", + "crates": [ + "emdee" + ] + }, + { + "name": "aplaymidi", + "crates": [ + "emdee" + ] + }, + { + "name": "playsmf", + "crates": [ + "emdee" + ] + }, + { + "name": "gl", + "crates": [ + "globe_3d" + ] + }, + { + "name": "3d-rendering", + "crates": [ + "globe_3d" + ] + }, + { + "name": "3d-graphics", + "crates": [ + "globe_3d" + ] + }, + { + "name": "space-partition", + "crates": [ + "globe_3d" + ] + }, + { + "name": "collision", + "crates": [ + "globe_3d" + ] + }, + { + "name": "portal", + "crates": [ + "globe_3d" + ] + }, + { + "name": "sprite", + "crates": [ + "geste" + ] + }, + { + "name": "readline", + "crates": [ + "gnatcoll_readline", + "linenoise_ada" + ] + }, + { + "name": "devices", + "crates": [ + "bbs_embed_linux" + ] + }, + { + "name": "hardware", + "crates": [ + "bbs_embed_linux", + "blinkenlights" + ] + }, + { + "name": "filesystem", + "crates": [ + "littlefs" + ] + }, + { + "name": "flash", + "crates": [ + "littlefs" + ] + }, + { + "name": "spawn", + "crates": [ + "spoon", + "ashell" + ] + }, + { + "name": "refactoring", + "crates": [ + "liblal_refactor", + "lal_refactor" + ] + }, + { + "name": "lvgl", + "crates": [ + "lvgl_ada", + "lvgl_ada_examples", + "lvgl_ada_simulator" + ] + }, + { + "name": "no-std", + "crates": [ + "lvgl_ada" + ] + }, + { + "name": "simulation", + "crates": [ + "blinkenlights", + "simh_tapes" + ] + }, + { + "name": "i8080", + "crates": [ + "blinkenlights" + ] + }, + { + "name": "m68000", + "crates": [ + "blinkenlights" + ] + }, + { + "name": "canberra", + "crates": [ + "canberra_ada" + ] + }, + { + "name": "sound", + "crates": [ + "canberra_ada", + "bingada" + ] + }, + { + "name": "nacl", + "crates": [ + "sparknacl" + ] + }, + { + "name": "curve25519", + "crates": [ + "sparknacl" + ] + }, + { + "name": "ed25519", + "crates": [ + "sparknacl" + ] + }, + { + "name": "tweetnacl", + "crates": [ + "sparknacl" + ] + }, + { + "name": "os", + "crates": [ + "ashell" + ] + }, + { + "name": "command", + "crates": [ + "ashell" + ] + }, + { + "name": "directories", + "crates": [ + "ashell" + ] + }, + { + "name": "zlib", + "crates": [ + "gnatcoll_zlib", + "z_compression" + ] + }, + { + "name": "deflate", + "crates": [ + "gnatcoll_zlib", + "z_compression", + "zipada" + ] + }, + { + "name": "bingo", + "crates": [ + "bingada" + ] + }, + { + "name": "chance", + "crates": [ + "bingada" + ] + }, + { + "name": "family", + "crates": [ + "bingada" + ] + }, + { + "name": "cpu-simulator", + "crates": [ + "simcpucli", + "bbs_simcpu" + ] + }, + { + "name": "storage", + "crates": [ + "akt", + "keystoreada", + "awa" + ] + }, + { + "name": "nosql", + "crates": [ + "akt", + "keystoreada" + ] + }, + { + "name": "powerline", + "crates": [ + "pla_util" + ] + }, + { + "name": "adventofada", + "crates": [ + "aoa_22" + ] + }, + { + "name": "2022", + "crates": [ + "aoa_22" + ] + }, + { + "name": "scripting", + "crates": [ + "tash", + "scripted_testing" + ] + }, + { + "name": "tcl", + "crates": [ + "tash" + ] + }, + { + "name": "tk", + "crates": [ + "tash" + ] + }, + { + "name": "dcf", + "crates": [ + "orka_plugin_archives" + ] + }, + { + "name": "ppm", + "crates": [ + "easy_graphics", + "gid", + "image_io" + ] + }, + { + "name": "pam", + "crates": [ + "easy_graphics" + ] + }, + { + "name": "gif", + "crates": [ + "easy_graphics", + "gid", + "image_io" + ] + }, + { + "name": "turtle", + "crates": [ + "easy_graphics" + ] + }, + { + "name": "fat", + "crates": [ + "adl_middleware" + ] + }, + { + "name": "ros", + "crates": [ + "rclada_examples", + "rclada" + ] + }, + { + "name": "robotics", + "crates": [ + "rclada_examples", + "rclada" + ] + }, + { + "name": "miscellanea", + "crates": [ + "wl_lib", + "aaa" + ] + }, + { + "name": "lsp", + "crates": [ + "ada_language_server" + ] + }, + { + "name": "vscode", + "crates": [ + "ada_language_server" + ] + }, + { + "name": "stm32f0", + "crates": [ + "stm32f0x2_hal" + ] + }, + { + "name": "binarytrees", + "crates": [ + "binary_trees" + ] + }, + { + "name": "trees", + "crates": [ + "binary_trees", + "stephes_ada_library" + ] + }, + { + "name": "noaccess", + "crates": [ + "binary_trees" + ] + }, + { + "name": "kem", + "crates": [ + "adare_hqc256" + ] + }, + { + "name": "pqc", + "crates": [ + "adare_hqc256", + "adare_dilithium5" + ] + }, + { + "name": "ss512bits", + "crates": [ + "adare_hqc256" + ] + }, + { + "name": "raspberrypi1", + "crates": [ + "muntsos_raspberrypi1" + ] + }, + { + "name": "iterators", + "crates": [ + "iterators" + ] + }, + { + "name": "functional", + "crates": [ + "iterators", + "optional" + ] + }, + { + "name": "emoji", + "crates": [ + "umwi", + "emojis" + ] + }, + { + "name": "emoticon", + "crates": [ + "umwi" + ] + }, + { + "name": "monospace", + "crates": [ + "umwi" + ] + }, + { + "name": "east", + "crates": [ + "umwi" + ] + }, + { + "name": "asian", + "crates": [ + "umwi" + ] + }, + { + "name": "width", + "crates": [ + "umwi" + ] + }, + { + "name": "grapheme", + "crates": [ + "umwi" + ] + }, + { + "name": "cluster", + "crates": [ + "umwi" + ] + }, + { + "name": "combining", + "crates": [ + "umwi" + ] + }, + { + "name": "automaton", + "crates": [ + "automate" + ] + }, + { + "name": "learn", + "crates": [ + "adabots" + ] + }, + { + "name": "minecraft", + "crates": [ + "adabots" + ] + }, + { + "name": "computercraft", + "crates": [ + "adabots" + ] + }, + { + "name": "robots", + "crates": [ + "adabots" + ] + }, + { + "name": "teach", + "crates": [ + "adabots" + ] + }, + { + "name": "children", + "crates": [ + "adabots" + ] + }, + { + "name": "tool", + "crates": [ + "gnatformat", + "rsfile", + "lal_refactor", + "getada" + ] + }, + { + "name": "manipulation", + "crates": [ + "rewriters", + "rejuvenation" + ] + }, + { + "name": "transformation", + "crates": [ + "rewriters", + "rejuvenation" + ] + }, + { + "name": "list", + "crates": [ + "list_image" + ] + }, + { + "name": "iterator", + "crates": [ + "list_image" + ] + }, + { + "name": "markdown", + "crates": [ + "list_image", + "markdown", + "yass", + "bbt", + "wikiada" + ] + }, + { + "name": "syslog", + "crates": [ + "gnatcoll_syslog" + ] + }, + { + "name": "nrf51", + "crates": [ + "nrf5x_hal", + "microbit_examples", + "microbit_bsp" + ] + }, + { + "name": "nrf52", + "crates": [ + "nrf5x_hal" + ] + }, + { + "name": "nordic", + "crates": [ + "nrf5x_hal" + ] + }, + { + "name": "ble", + "crates": [ + "nrf5x_hal" + ] + }, + { + "name": "gfm", + "crates": [ + "markdown" + ] + }, + { + "name": "commonmark", + "crates": [ + "markdown" + ] + }, + { + "name": "arm64", + "crates": [ + "muntsos_raspberrypi4", + "muntsos_raspberrypi5", + "muntsos_aarch64", + "muntsos_raspberrypi3" + ] + }, + { + "name": "raspberrypi4", + "crates": [ + "muntsos_raspberrypi4" + ] + }, + { + "name": "extract", + "crates": [ + "dependency_graph_extractor" + ] + }, + { + "name": "dependency", + "crates": [ + "dependency_graph_extractor" + ] + }, + { + "name": "graph", + "crates": [ + "dependency_graph_extractor" + ] + }, + { + "name": "graphml", + "crates": [ + "dependency_graph_extractor" + ] + }, + { + "name": "facelet", + "crates": [ + "serverfaces_unit" + ] + }, + { + "name": "jsf", + "crates": [ + "serverfaces_unit" + ] + }, + { + "name": "metric", + "crates": [ + "libadalang_tools" + ] + }, + { + "name": "gnatmetric", + "crates": [ + "libadalang_tools" + ] + }, + { + "name": "gnatpp", + "crates": [ + "libadalang_tools" + ] + }, + { + "name": "gnatstub", + "crates": [ + "libadalang_tools" + ] + }, + { + "name": "gnattest", + "crates": [ + "libadalang_tools" + ] + }, + { + "name": "hmac", + "crates": [ + "hmac" + ] + }, + { + "name": "syntax", + "crates": [ + "anagram" + ] + }, + { + "name": "bnf", + "crates": [ + "anagram" + ] + }, + { + "name": "ebnf", + "crates": [ + "anagram" + ] + }, + { + "name": "sat", + "crates": [ + "adasat" + ] + }, + { + "name": "solver", + "crates": [ + "adasat" + ] + }, + { + "name": "theories", + "crates": [ + "adasat" + ] + }, + { + "name": "texcad", + "crates": [ + "texcad" + ] + }, + { + "name": "tex", + "crates": [ + "texcad" + ] + }, + { + "name": "latex", + "crates": [ + "texcad" + ] + }, + { + "name": "cad", + "crates": [ + "texcad" + ] + }, + { + "name": "picture", + "crates": [ + "texcad" + ] + }, + { + "name": "draw", + "crates": [ + "texcad" + ] + }, + { + "name": "drawing", + "crates": [ + "texcad" + ] + }, + { + "name": "vector-graphics", + "crates": [ + "texcad" + ] + }, + { + "name": "xref", + "crates": [ + "emacs_gpr_query", + "emacs_wisi", + "gnatcoll_xref" + ] + }, + { + "name": "synth", + "crates": [ + "virtapu" + ] + }, + { + "name": "expression", + "crates": [ + "elada" + ] + }, + { + "name": "expander", + "crates": [ + "elada" + ] + }, + { + "name": "gmp", + "crates": [ + "gnatcoll_gmp" + ] + }, + { + "name": "arbitrary", + "crates": [ + "gnatcoll_gmp" + ] + }, + { + "name": "precision", + "crates": [ + "gnatcoll_gmp" + ] + }, + { + "name": "arithmetic", + "crates": [ + "gnatcoll_gmp" + ] + }, + { + "name": "signature", + "crates": [ + "adare_dilithium5" + ] + }, + { + "name": "animated", + "crates": [ + "gid" + ] + }, + { + "name": "animation", + "crates": [ + "gid" + ] + }, + { + "name": "color", + "crates": [ + "gid" + ] + }, + { + "name": "decoder", + "crates": [ + "gid" + ] + }, + { + "name": "decoding", + "crates": [ + "gid" + ] + }, + { + "name": "decompress", + "crates": [ + "gid" + ] + }, + { + "name": "digitization", + "crates": [ + "gid" + ] + }, + { + "name": "lossless", + "crates": [ + "gid" + ] + }, + { + "name": "lossy", + "crates": [ + "gid" + ] + }, + { + "name": "rbg", + "crates": [ + "gid" + ] + }, + { + "name": "steganography", + "crates": [ + "gid" + ] + }, + { + "name": "transparency", + "crates": [ + "gid" + ] + }, + { + "name": "transparent", + "crates": [ + "gid" + ] + }, + { + "name": "jpeg", + "crates": [ + "gid" + ] + }, + { + "name": "jpg", + "crates": [ + "gid", + "image_io" + ] + }, + { + "name": "pgm", + "crates": [ + "gid" + ] + }, + { + "name": "pnm", + "crates": [ + "gid", + "image_io" + ] + }, + { + "name": "tga", + "crates": [ + "gid", + "image_io" + ] + }, + { + "name": "targa", + "crates": [ + "gid" + ] + }, + { + "name": "file-size", + "crates": [ + "rsfile" + ] + }, + { + "name": "optional", + "crates": [ + "optional" + ] + }, + { + "name": "legacy", + "crates": [ + "dg_loada", + "simh_tapes" + ] + }, + { + "name": "recovering-data", + "crates": [ + "dg_loada" + ] + }, + { + "name": "dg", + "crates": [ + "dg_loada" + ] + }, + { + "name": "data-general", + "crates": [ + "dg_loada" + ] + }, + { + "name": "aos-vs", + "crates": [ + "dg_loada" + ] + }, + { + "name": "hypervisor", + "crates": [ + "hirtos_separation_kernel" + ] + }, + { + "name": "remoteio", + "crates": [ + "remoteio", + "libsimpleio" + ] + }, + { + "name": "firebird", + "crates": [ + "matreshka_sql_firebird" + ] + }, + { + "name": "systick", + "crates": [ + "a0b_armv7m_systick_clock_timer" + ] + }, + { + "name": "lisp", + "crates": [ + "lispcli", + "bbs_lisp" + ] + }, + { + "name": "smbus", + "crates": [ + "linux_hal" + ] + }, + { + "name": "puzzle", + "crates": [ + "play_2048" + ] + }, + { + "name": "math", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_transforms", + "orka_tensors_gpu" + ] + }, + { + "name": "vector", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_transforms", + "orka_tensors_gpu" + ] + }, + { + "name": "ndarray", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "tensor", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "numpy", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "integration", + "crates": [ + "orka_numerics", + "scripted_testing" + ] + }, + { + "name": "rk4", + "crates": [ + "orka_numerics" + ] + }, + { + "name": "kalman", + "crates": [ + "orka_numerics" + ] + }, + { + "name": "optimization", + "crates": [ + "orka_numerics" + ] + }, + { + "name": "leastsquares", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "linearalgebra", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "linalg", + "crates": [ + "orka_numerics", + "orka_tensors_cpu", + "orka_tensors_gpu" + ] + }, + { + "name": "dsa", + "crates": [ + "garlic", + "gnatdist_garlic" + ] + }, + { + "name": "annex", + "crates": [ + "garlic", + "gnatdist_garlic" + ] + }, + { + "name": "glade", + "crates": [ + "garlic", + "gnatdist_garlic" + ] + }, + { + "name": "user-input", + "crates": [ + "clic" + ] + }, + { + "name": "tty", + "crates": [ + "clic", + "pragmarc" + ] + }, + { + "name": "postgres", + "crates": [ + "gnatcoll_postgres" + ] + }, + { + "name": "simd", + "crates": [ + "orka_simd", + "orka_tensors_cpu" + ] + }, + { + "name": "sse", + "crates": [ + "orka_simd" + ] + }, + { + "name": "avx", + "crates": [ + "orka_simd" + ] + }, + { + "name": "fma", + "crates": [ + "orka_simd" + ] + }, + { + "name": "f16c", + "crates": [ + "orka_simd" + ] + }, + { + "name": "documentation", + "crates": [ + "libgnatdoc", + "gnatdoc" + ] + }, + { + "name": "bit", + "crates": [ + "bit_sets" + ] + }, + { + "name": "set", + "crates": [ + "bit_sets" + ] + }, + { + "name": "array", + "crates": [ + "bit_sets" + ] + }, + { + "name": "packed", + "crates": [ + "bit_sets" + ] + }, + { + "name": "svd", + "crates": [ + "a0b_atsam3x8e", + "a0b_stm32f401" + ] + }, + { + "name": "games", + "crates": [ + "asfml", + "sdlada" + ] + }, + { + "name": "regex", + "crates": [ + "simple_regex" + ] + }, + { + "name": "enet", + "crates": [ + "enet_stm32" + ] + }, + { + "name": "esp", + "crates": [ + "esp_idf" + ] + }, + { + "name": "riscv", + "crates": [ + "esp_idf" + ] + }, + { + "name": "xtensa", + "crates": [ + "esp_idf" + ] + }, + { + "name": "project", + "crates": [ + "emacs_wisi" + ] + }, + { + "name": "compile", + "crates": [ + "emacs_wisi" + ] + }, + { + "name": "ocl", + "crates": [ + "matreshka_amf_ocl" + ] + }, + { + "name": "portable", + "crates": [ + "sdlada" + ] + }, + { + "name": "ip", + "crates": [ + "enet" + ] + }, + { + "name": "ipv4", + "crates": [ + "enet" + ] + }, + { + "name": "icmp", + "crates": [ + "enet" + ] + }, + { + "name": "udp", + "crates": [ + "enet" + ] + }, + { + "name": "arp", + "crates": [ + "enet" + ] + }, + { + "name": "dns", + "crates": [ + "enet" + ] + }, + { + "name": "dhcp", + "crates": [ + "enet" + ] + }, + { + "name": "ntp", + "crates": [ + "enet" + ] + }, + { + "name": "jupyter", + "crates": [ + "jupyter_kernel" + ] + }, + { + "name": "notebook", + "crates": [ + "jupyter_kernel" + ] + }, + { + "name": "kernel", + "crates": [ + "jupyter_kernel" + ] + }, + { + "name": "threefish256", + "crates": [ + "encryption_utilities" + ] + }, + { + "name": "threefish512", + "crates": [ + "encryption_utilities" + ] + }, + { + "name": "threefish1024", + "crates": [ + "encryption_utilities" + ] + }, + { + "name": "xor", + "crates": [ + "encryption_utilities" + ] + }, + { + "name": "tutorial", + "crates": [ + "wikibook", + "ppag" + ] + }, + { + "name": "wikibook", + "crates": [ + "wikibook" + ] + }, + { + "name": "mpfr", + "crates": [ + "admpfr" + ] + }, + { + "name": "floating-point", + "crates": [ + "admpfr" + ] + }, + { + "name": "countries", + "crates": [ + "iso" + ] + }, + { + "name": "currencies", + "crates": [ + "iso" + ] + }, + { + "name": "iso-1366", + "crates": [ + "iso" + ] + }, + { + "name": "iso-4217", + "crates": [ + "iso" + ] + }, + { + "name": "aws", + "crates": [ + "aws" + ] + }, + { + "name": "wsdl", + "crates": [ + "aws" + ] + }, + { + "name": "usb", + "crates": [ + "usb_embedded" + ] + }, + { + "name": "hid", + "crates": [ + "usb_embedded", + "libsimpleio" + ] + }, + { + "name": "magtape", + "crates": [ + "simh_tapes" + ] + }, + { + "name": "magnetic", + "crates": [ + "simh_tapes" + ] + }, + { + "name": "tape", + "crates": [ + "simh_tapes" + ] + }, + { + "name": "emulation", + "crates": [ + "simh_tapes" + ] + }, + { + "name": "fonts", + "crates": [ + "openglada_text", + "freetypeada" + ] + }, + { + "name": "dynamic", + "crates": [ + "uxstrings" + ] + }, + { + "name": "eeprom", + "crates": [ + "eeprom_i2c" + ] + }, + { + "name": "appimage", + "crates": [ + "alr2appimage" + ] + }, + { + "name": "alire", + "crates": [ + "alr2appimage", + "getada" + ] + }, + { + "name": "packaging", + "crates": [ + "alr2appimage" + ] + }, + { + "name": "openmp", + "crates": [ + "gnatcoll_omp" + ] + }, + { + "name": "libgomp", + "crates": [ + "gnatcoll_omp" + ] + }, + { + "name": "minedetector", + "crates": [ + "mine_detector" + ] + }, + { + "name": "python3", + "crates": [ + "gnatcoll_python3" + ] + }, + { + "name": "quaternion", + "crates": [ + "orka_transforms" + ] + }, + { + "name": "cgi", + "crates": [ + "matreshka_fastcgi" + ] + }, + { + "name": "lexer", + "crates": [ + "opentoken" + ] + }, + { + "name": "aadl", + "crates": [ + "ocarina_lib" + ] + }, + { + "name": "gherkin", + "crates": [ + "bbt" + ] + }, + { + "name": "tdd", + "crates": [ + "bbt" + ] + }, + { + "name": "black-box", + "crates": [ + "bbt" + ] + }, + { + "name": "raspberrypi5", + "crates": [ + "muntsos_raspberrypi5" + ] + }, + { + "name": "reports", + "crates": [ + "printer_toolkit" + ] + }, + { + "name": "charts", + "crates": [ + "printer_toolkit" + ] + }, + { + "name": "inotify", + "crates": [ + "inotify" + ] + }, + { + "name": "ansi", + "crates": [ + "ansiada" + ] + }, + { + "name": "windowed", + "crates": [ + "labs_solar_system" + ] + }, + { + "name": "raspberry", + "crates": [ + "raspberry_bsp", + "libsimpleio" + ] + }, + { + "name": "pi", + "crates": [ + "raspberry_bsp", + "libsimpleio" + ] + }, + { + "name": "utils", + "crates": [ + "resources", + "basalt" + ] + }, + { + "name": "formatter", + "crates": [ + "prettier_ada" + ] + }, + { + "name": "gamepad", + "crates": [ + "orka_awt" + ] + }, + { + "name": "handheld", + "crates": [ + "bb_pico_bsp" + ] + }, + { + "name": "featherwing", + "crates": [ + "bb_pico_bsp" + ] + }, + { + "name": "cpm", + "crates": [ + "loadcpm" + ] + }, + { + "name": "rtos", + "crates": [ + "hirtos" + ] + }, + { + "name": "microbit", + "crates": [ + "microbit_examples", + "microbit_bsp" + ] + }, + { + "name": "special-fun", + "crates": [ + "specfun" + ] + }, + { + "name": "beta-function", + "crates": [ + "specfun" + ] + }, + { + "name": "gamma-function", + "crates": [ + "specfun" + ] + }, + { + "name": "beta-incomplete", + "crates": [ + "specfun" + ] + }, + { + "name": "aarch64", + "crates": [ + "muntsos_aarch64" + ] + }, + { + "name": "itsybitsy", + "crates": [ + "itsybitsy_rp2040_bsp", + "itsybitsy_bsp" + ] + }, + { + "name": "ncurses", + "crates": [ + "ncursesada" + ] + }, + { + "name": "protocols", + "crates": [ + "slip", + "wayland_protocols_ada" + ] + }, + { + "name": "led", + "crates": [ + "ltp_305" + ] + }, + { + "name": "numbers", + "crates": [ + "image_random" + ] + }, + { + "name": "camera", + "crates": [ + "image_random" + ] + }, + { + "name": "bzip2", + "crates": [ + "zipada" + ] + }, + { + "name": "lzw", + "crates": [ + "zipada" + ] + }, + { + "name": "shrink", + "crates": [ + "zipada" + ] + }, + { + "name": "lockfree", + "crates": [ + "bbqueue" + ] + }, + { + "name": "bipbuffer", + "crates": [ + "bbqueue" + ] + }, + { + "name": "excel", + "crates": [ + "excel_writer" + ] + }, + { + "name": "spreadsheet", + "crates": [ + "excel_writer" + ] + }, + { + "name": "xls", + "crates": [ + "excel_writer" + ] + }, + { + "name": "csv", + "crates": [ + "excel_writer" + ] + }, + { + "name": "line", + "crates": [ + "lined" + ] + }, + { + "name": "editor", + "crates": [ + "lined", + "lea" + ] + }, + { + "name": "calculator", + "crates": [ + "hp41cx_tools" + ] + }, + { + "name": "hp-41cx", + "crates": [ + "hp41cx_tools" + ] + }, + { + "name": "dm41x", + "crates": [ + "hp41cx_tools" + ] + }, + { + "name": "px41cx", + "crates": [ + "hp41cx_tools" + ] + }, + { + "name": "lea", + "crates": [ + "lea" + ] + }, + { + "name": "terrain", + "crates": [ + "orka_plugin_terrain" + ] + }, + { + "name": "passwordmaker", + "crates": [ + "password_gen" + ] + }, + { + "name": "libsimpleio", + "crates": [ + "libsimpleio" + ] + }, + { + "name": "pocketbeagle", + "crates": [ + "libsimpleio" + ] + }, + { + "name": "watchdog", + "crates": [ + "libsimpleio" + ] + }, + { + "name": "ada1987", + "crates": [ + "blake2s", + "avltrees" + ] + }, + { + "name": "hello", + "crates": [ + "libhello", + "hello" + ] + }, + { + "name": "atmosphere", + "crates": [ + "orka_plugin_atmosphere" + ] + }, + { + "name": "earth", + "crates": [ + "orka_plugin_atmosphere" + ] + }, + { + "name": "data-structures", + "crates": [ + "avltrees" + ] + }, + { + "name": "raspberrypi3", + "crates": [ + "muntsos_raspberrypi3" + ] + }, + { + "name": "ali", + "crates": [ + "gnatcoll_xref" + ] + }, + { + "name": "wiki", + "crates": [ + "awa" + ] + }, + { + "name": "blog", + "crates": [ + "awa" + ] + }, + { + "name": "stopwatch", + "crates": [ + "stopwatch" + ] + }, + { + "name": "chronometer", + "crates": [ + "stopwatch" + ] + }, + { + "name": "plot", + "crates": [ + "qplt" + ] + }, + { + "name": "strings", + "crates": [ + "splitter" + ] + }, + { + "name": "split", + "crates": [ + "splitter" + ] + }, + { + "name": "tokenizer", + "crates": [ + "splitter" + ] + }, + { + "name": "parsing", + "crates": [ + "splitter" + ] + }, + { + "name": "junit", + "crates": [ + "ajunitgen" + ] + }, + { + "name": "bbc", + "crates": [ + "microbit_bsp" + ] + }, + { + "name": "framebuffer", + "crates": [ + "st7789" + ] + }, + { + "name": "display", + "crates": [ + "st7789" + ] + }, + { + "name": "currency", + "crates": [ + "cashe" + ] + }, + { + "name": "money", + "crates": [ + "cashe" + ] + }, + { + "name": "decimal", + "crates": [ + "cashe" + ] + }, + { + "name": "finance", + "crates": [ + "cashe" + ] + }, + { + "name": "tls", + "crates": [ + "tlsada" + ] + }, + { + "name": "adobe", + "crates": [ + "apdf" + ] + }, + { + "name": "unbound", + "crates": [ + "spark_unbound" + ] + }, + { + "name": "epoll", + "crates": [ + "epoll" + ] + }, + { + "name": "net", + "crates": [ + "epoll" + ] + }, + { + "name": "linenoise", + "crates": [ + "linenoise_ada" + ] + }, + { + "name": "line-editing", + "crates": [ + "linenoise_ada" + ] + }, + { + "name": "sci", + "crates": [ + "sciada" + ] + }, + { + "name": "scientific", + "crates": [ + "sciada" + ] + }, + { + "name": "correlations", + "crates": [ + "sciada" + ] + }, + { + "name": "occurrences", + "crates": [ + "sciada" + ] + }, + { + "name": "similarities", + "crates": [ + "sciada" + ] + }, + { + "name": "sha3", + "crates": [ + "libkeccak" + ] + }, + { + "name": "keccak", + "crates": [ + "libkeccak" + ] + }, + { + "name": "gimli", + "crates": [ + "libkeccak" + ] + }, + { + "name": "ascon", + "crates": [ + "libkeccak" + ] + }, + { + "name": "shake", + "crates": [ + "libkeccak" + ] + }, + { + "name": "cshake", + "crates": [ + "libkeccak" + ] + }, + { + "name": "kmac", + "crates": [ + "libkeccak" + ] + }, + { + "name": "tuplehash", + "crates": [ + "libkeccak" + ] + }, + { + "name": "parallelhash", + "crates": [ + "libkeccak" + ] + }, + { + "name": "kangarootwelve", + "crates": [ + "libkeccak" + ] + }, + { + "name": "dotenv", + "crates": [ + "dotenv" + ] + }, + { + "name": "env", + "crates": [ + "dotenv" + ] + }, + { + "name": "environment", + "crates": [ + "dotenv" + ] + }, + { + "name": "variables", + "crates": [ + "dotenv" + ] + }, + { + "name": "settings", + "crates": [ + "dotenv" + ] + }, + { + "name": "synthesis", + "crates": [ + "tresses" + ] + }, + { + "name": "keyboard", + "crates": [ + "keypadder" + ] + }, + { + "name": "mobile", + "crates": [ + "keypadder" + ] + }, + { + "name": "programmable", + "crates": [ + "keypadder" + ] + }, + { + "name": "tablet", + "crates": [ + "keypadder" + ] + }, + { + "name": "macro", + "crates": [ + "keypadder" + ] + }, + { + "name": "keypad", + "crates": [ + "keypadder" + ] + }, + { + "name": "macropad", + "crates": [ + "keypadder" + ] + }, + { + "name": "gnoga", + "crates": [ + "ppag" + ] + }, + { + "name": "endianness", + "crates": [ + "endianness" + ] + }, + { + "name": "cards", + "crates": [ + "pragmarc" + ] + }, + { + "name": "conversions", + "crates": [ + "pragmarc" + ] + }, + { + "name": "datastructures", + "crates": [ + "pragmarc" + ] + }, + { + "name": "encryption", + "crates": [ + "pragmarc" + ] + }, + { + "name": "matching", + "crates": [ + "pragmarc" + ] + }, + { + "name": "randomness", + "crates": [ + "pragmarc" + ] + }, + { + "name": "safety", + "crates": [ + "pragmarc" + ] + }, + { + "name": "taskcom", + "crates": [ + "pragmarc" + ] + }, + { + "name": "cobs", + "crates": [ + "cobs" + ] + }, + { + "name": "crc32", + "crates": [ + "checksum" + ] + }, + { + "name": "adler32", + "crates": [ + "checksum" + ] + }, + { + "name": "error", + "crates": [ + "checksum" + ] + }, + { + "name": "checking", + "crates": [ + "checksum" + ] + }, + { + "name": "error-checking", + "crates": [ + "checksum" + ] + }, + { + "name": "gpu", + "crates": [ + "orka_tensors_gpu" + ] + }, + { + "name": "gpgpu", + "crates": [ + "orka_tensors_gpu" + ] + }, + { + "name": "compute", + "crates": [ + "orka_tensors_gpu" + ] + }, + { + "name": "shaders", + "crates": [ + "orka_tensors_gpu" + ] + }, + { + "name": "sdl", + "crates": [ + "mage" + ] + }, + { + "name": "utf-8", + "crates": [ + "utf8test" + ] + }, + { + "name": "latin-1", + "crates": [ + "utf8test" + ] + }, + { + "name": "wiki-engine", + "crates": [ + "wikiada" + ] + }, + { + "name": "mediawiki", + "crates": [ + "wikiada" + ] + }, + { + "name": "dotclear", + "crates": [ + "wikiada" + ] + }, + { + "name": "renderer", + "crates": [ + "wikiada" + ] + }, + { + "name": "2023", + "crates": [ + "aoa_23" + ] + } +] \ No newline at end of file diff --git a/_data/update.yml b/_data/update.yml new file mode 100644 index 00000000..4a361423 --- /dev/null +++ b/_data/update.yml @@ -0,0 +1,4 @@ +index_branch: "stable-1.3.0" +alr_version: "2.0.2" +alire_lib_version: "2.0.2" +date: "Fri Nov 22 00:28:10 UTC 2024" diff --git a/_includes/crate_badge.html b/_includes/crate_badge.html new file mode 100644 index 00000000..a6e1b00f --- /dev/null +++ b/_includes/crate_badge.html @@ -0,0 +1,5 @@ +{% assign crate_link = '/crates/' | append: include.name | downcase | absolute_url %} +
+ {{ site.data.badge.logoSvg }}{{ include.name | downcase}} + {{ include.version }} +
diff --git a/_includes/footer.html b/_includes/footer.html new file mode 100644 index 00000000..5e0ea021 --- /dev/null +++ b/_includes/footer.html @@ -0,0 +1,2 @@ +
+
diff --git a/_includes/head.html b/_includes/head.html new file mode 100644 index 00000000..a05611a7 --- /dev/null +++ b/_includes/head.html @@ -0,0 +1,40 @@ + + + + {{ site.title }} - {{ page.title }} + + + + + + + + + + + + + + + + + + + + {% if page.tipue_search_active or layout.tipue_search_active -%} + + + + + + {% endif -%} + + + + diff --git a/_includes/header.html b/_includes/header.html new file mode 100644 index 00000000..e97b9705 --- /dev/null +++ b/_includes/header.html @@ -0,0 +1,81 @@ +
+
+
+
+ + ALR logo + +
+
+

{{ site.title }}

+

{{ site.subtitle }}

+ + +
+
+ + + + + {%- endif -%} +
+
+
+ +
diff --git a/_includes/make_list.html b/_includes/make_list.html new file mode 100644 index 00000000..aa69e777 --- /dev/null +++ b/_includes/make_list.html @@ -0,0 +1,5 @@ +
    + {% for elt in include.list %} +
  • {{ elt | xml_escape }}
  • + {% endfor %} +
diff --git a/_layouts/badge.json b/_layouts/badge.json new file mode 100644 index 00000000..b03076a1 --- /dev/null +++ b/_layouts/badge.json @@ -0,0 +1,7 @@ +{ + "schemaVersion": 1, + "label": "{{ page.crate }}", + "message": "{{ page.version }}", + "logoSvg": {{ site.data.badge.logoSvg | jsonify }}, + "color": "9cf" +} diff --git a/_layouts/crate.html b/_layouts/crate.html new file mode 100644 index 00000000..9a0bbab3 --- /dev/null +++ b/_layouts/crate.html @@ -0,0 +1,122 @@ +--- +layout: page_full_width +--- +

{{ page.title }}

+ +
+ +
+ + Website: +

+ {% for link in page.websites %} + {{ link }} + {% endfor %} +

+ + Author{% if page.authors.size > 1 %}s{% endif %}: + {% include make_list.html list=page.authors %} + + Maintainer{% if page.maintainers.size > 1 %}s{% endif %}: + {% include make_list.html list=page.maintainers %} + + License{% if page.authors.licenses > 1 %}s{% endif %}: +

+ {{ page.licenses | join: ", " | xml_escape }} +

+ Version: +

+ {{ page.version | xml_escape }} +

+ + {% assign ci_badge_url = "https://img.shields.io/endpoint?url=" + | append: site.data.meta.ci_site | append: "/badges/" + | append: page.crate | append: ".json" %} + Alire CI: +

+ + + +

+ + Dependencies: + {% if page.dependencies.size > 0 %} +
    + + + {% if page.dependencies.crate %} + + + {% assign dep = page.dependencies %} +
  • + {% assign crate_link = '/crates/' | append: dep.crate | absolute_url %} + {%- include crate_badge.html name=dep.crate link=crate_link version=dep.version -%} +
  • + {% else %} + + {% for dep in page.dependencies %} +
  • + {% assign crate_link = '/crates/' | append: dep.crate | absolute_url %} + {%- include crate_badge.html name=dep.crate link=crate_link version=dep.version -%} +
  • + {% endfor %} + {% endif %} +
+ {% else %} +

No dependency.

+ {% endif %} + + Dependents: + {% capture rdeps %} + {% for crate in site.crates %} + {% for rdep in crate.dependencies %} + {% if rdep.crate == page.crate %} + {{ crate.crate }} + {% endif %} + {% endfor %} + {% endfor %} + {% endcapture %} + {% assign rdeps = rdeps | split:' ' %} + {% if rdeps.size > 0 %} +
    + {% for rdep in rdeps %} +
  • + {% assign crate_link = '/crates/' | append: rdep | absolute_url %} + {% include crate_badge.html name=rdep link=crate_link %} +
  • + {%- endfor %} +
+ {% else %} +

No dependents.

+ {% endif %} + + Badge: +

+ {% assign json_url = "https://alire.ada.dev/badges/" | append: page.crate | append: ".json" %} + {% assign badge_url = "https://img.shields.io/endpoint?url="| append: json_url %} + +

+ +
+
+

{{ page.short_description }}

+ {% if page.tags.size > 0 %} + {% for tag in page.tags %} + #{{ tag }} + {% endfor %} + {% endif %} +
+ +
+ {{ content }} +
+
+
diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..8d63eeaa --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,26 @@ +--- +layout: compress +--- + + + + +{%- include head.html -%} + + +
+ + {%- include header.html -%} + +
+ + {{ content }} + +
+ + {%- include footer.html -%} + +
+ + + diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 00000000..c51acd1a --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,9 @@ +--- +layout: default +--- + +
+
+ {{ content }} +
+
diff --git a/_layouts/page_full_width.html b/_layouts/page_full_width.html new file mode 100644 index 00000000..a0e3481b --- /dev/null +++ b/_layouts/page_full_width.html @@ -0,0 +1,9 @@ +--- +layout: default +--- + +
+
+ {{ content }} +
+
diff --git a/_sass/devlog.scss b/_sass/devlog.scss new file mode 100644 index 00000000..45957fd5 --- /dev/null +++ b/_sass/devlog.scss @@ -0,0 +1,296 @@ +body { + background-color: #D6DDE1 !important; + font-family: 'Quicksand', sans-serif !important; +} +html { + scroll-behavior: smooth; +} + +header { + background-color: #F5F5F5; + box-shadow: 10px 0px 8px; + height: auto; + width: 100%; + padding: 11px; +} + +// Grey line under header text (except on the website title) +h1:not(.profile-name) { + border-bottom: 3px solid #eaecef; +} +h2 { + border-bottom: 1px solid #eaecef; +} + +h1, h2, h3, h4, h5 { + padding-bottom: .3em; + font-weight: 600; + margin-bottom: 16px; +} + +.crate-badge > span { + display: table-cell; + box-sizing: border-box; + padding: .25em .4em; + font-size: 100%; + font-weight: 700; + line-height: 1; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + + &:first-child { + background: linear-gradient(#5f5f5f, #4d4d4d); + color:white; + text-shadow: 0em 0.07em #010101; + border-bottom-left-radius: 0.25em; + border-top-left-radius: 0.25em; + } + &:nth-child(2) { + background: linear-gradient(#8ab8e6, #9ccaf8); + color: #333333; + border-bottom-right-radius: 0.25em; + border-top-right-radius: 0.25em; + } + + a { + color: white; + } + + a:hover { + color: white; + } + + svg { + width: 0.8em; + height: 0.8em; + } +} + +.crate-prop-list { + + border-right: 3px solid #eaecef; + + p { + margin-left: 1.5em; + } +} + +.crate-tag-link { + font-size: 85%; + line-height: 1; + padding: .3em .6em; + text-align: center; + vertical-align: baseline; + white-space: nowrap; + border-radius: 0.25em; + background-color: rgb(209,230,211); + color: rgba(0,0,0,255); +} + +.markdown { + img { + max-width: 100%; + } +} +.container-fluid { + margin: 0px !important; + padding: 0px !important; +} + +.profile-img { + width: 150px; + height: 150px; + margin-left: 20px; +} + +.profile-name { + margin-top: 20px; +} + +.profile-bio, +.profile-links { + margin-top: 5px; +} + +.border { + border: 1px solid #000; +} + +.center { + text-align: center; +} + +.card { + margin: 20px !important; + padding: 20px !important; +} + +.blog-post{ + box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); + transition: all 0.3s cubic-bezier(.25,.8,.25,1); +} + +.blog-post:hover { + box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); + } + +.social-link { + color: #262222; + font-size: 15px; + padding: 5px; + margin: 2px; + text-decoration: none !important; +} + +#navigation { + margin-top: 50px; +} + +.nav-link { + font-size: 24px !important; + color: #000; +} +footer { + width: 100%; + height: 70px; + text-align: center; + padding: 20px; + background-color: #000000; + color:#fff; +} + +.company-logo { + width: 100px; + height: 100px; +} + +.project-img { + width: 300px; + height: 200px; +} + +.author-profile-img { + width: 50px; + height: 50px; +} + +.project-desc { + float: left; +} + +.project-link { + color: gray; + font-size: 15px; +} + +.card-header { + border-radius: 0% !important; +} + +.blog-post { + width: 350px; + height: auto; + margin: 20px !important; +} + +.responsive-table { + display: block; + width: 100%; + overflow-x: auto; +} + +pre, +code { + padding: .2em .4em; + font-size: 85%; + overflow: auto; + white-space: pre-wrap; + word-wrap: break-word; + word-break: break-all; + font-family: Courier, monospace; + color: #24292e; +} + +/* override bootstrap css which creates extra indent on first line for +multiline code blocks wrapped in pre tags */ + +pre code { + padding: .2em 0em; +} + +.language-plaintext { + background-color: #f3f3f3; +} + +.highlight { background-color: #f6f8fa; } + +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #6a737d } /* Comment */ +.highlight .err { } /* Error */ +.highlight .k { color: #d73a49 } /* Keyword */ +.highlight .o { } /* Operator */ +.highlight .ch { color: #6a737d } /* Comment.Hashbang */ +.highlight .cm { color: #6a737d } /* Comment.Multiline */ +.highlight .cp { color: #d73a49 } /* Comment.Preproc */ +.highlight .cpf { color: #032f62 } /* Comment.PreprocFile */ +.highlight .c1 { color: #6a737d } /* Comment.Single */ +.highlight .cs { color: #6a737d } /* Comment.Special */ +.highlight .gd { color: #b31d28; background-color: #ffeef0 } /* Generic.Deleted */ +.highlight .ge { } /* Generic.Emph */ +.highlight .gr { } /* Generic.Error */ +.highlight .gh { color: #005cc5 } /* Generic.Heading */ +.highlight .gi { color: #22863a; background-color: #f0fff4 } /* Generic.Inserted */ +.highlight .go { } /* Generic.Output */ +.highlight .gp { } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #6f42c1; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #005cc5 } /* Keyword.Constant */ +.highlight .kd { color: #d73a49 } /* Keyword.Declaration */ +.highlight .kn { color: #d73a49 } /* Keyword.Namespace */ +.highlight .kp { color: #d73a49 } /* Keyword.Pseudo */ +.highlight .kr { color: #d73a49 } /* Keyword.Reserved */ +.highlight .kt { color: #d73a49 } /* Keyword.Type */ +.highlight .m { color: #666666 } /* Literal.Number */ +.highlight .s { color: #032f62 } /* Literal.String */ +.highlight .na { } /* Name.Attribute */ +.highlight .nb { color: #005cc5 } /* Name.Builtin */ +.highlight .nc { color: #6f42c1 } /* Name.Class */ +.highlight .no { color: #005cc5 } /* Name.Constant */ +.highlight .nd { color: #6f42c1 } /* Name.Decorator */ +.highlight .ni { color: #005cc5 } /* Name.Entity */ +.highlight .ne { color: #005cc5 } /* Name.Exception */ +.highlight .nf { color: #6f42c1 } /* Name.Function */ +.highlight .nl { color: #005cc5 } /* Name.Label */ +.highlight .nn { color: #6f42c1 } /* Name.Namespace */ +.highlight .nt { color: #22863a } /* Name.Tag */ +.highlight .nv { color: #24292e } /* Name.Variable */ +.highlight .ow { color: #d73a49; } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #005cc5 } /* Literal.Number.Bin */ +.highlight .mf { color: #005cc5 } /* Literal.Number.Float */ +.highlight .mh { color: #005cc5 } /* Literal.Number.Hex */ +.highlight .mi { color: #005cc5 } /* Literal.Number.Integer */ +.highlight .mo { color: #005cc5 } /* Literal.Number.Oct */ +.highlight .sa { color: #d73a49 } /* Literal.String.Affix */ +.highlight .sb { color: #032f62 } /* Literal.String.Backtick */ +.highlight .sc { color: #032f62 } /* Literal.String.Char */ +.highlight .dl { color: #d73a49 } /* Literal.String.Delimiter */ +.highlight .sd { color: #032f62 } /* Literal.String.Doc */ +.highlight .s2 { color: #032f62 } /* Literal.String.Double */ +.highlight .se { color: #032f62 } /* Literal.String.Escape */ +.highlight .sh { color: #032f62 } /* Literal.String.Heredoc */ +.highlight .si { color: #005cc5 } /* Literal.String.Interpol */ +.highlight .sx { color: #032f62 } /* Literal.String.Other */ +.highlight .sr { color: #032f62 } /* Literal.String.Regex */ +.highlight .s1 { color: #032f62 } /* Literal.String.Single */ +.highlight .ss { color: #005cc5 } /* Literal.String.Symbol */ +.highlight .bp { color: #005cc5 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #005cc5 } /* Name.Function.Magic */ +.highlight .vc { color: #24292e } /* Name.Variable.Class */ +.highlight .vg { color: #24292e } /* Name.Variable.Global */ +.highlight .vi { color: #24292e } /* Name.Variable.Instance */ +.highlight .vm { color: #005cc5 } /* Name.Variable.Magic */ +.highlight .il { color: #005cc5 } /* Literal.Number.Integer.Long */ diff --git a/alire_install/LICENSE.txt b/alire_install/LICENSE.txt new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/alire_install/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/alire_install/bin/alr b/alire_install/bin/alr new file mode 100755 index 0000000000000000000000000000000000000000..ec8c932fdf77d72dd115babeb93542efa68bd338 GIT binary patch literal 34577856 zcmbrn2Y6If7cM+0RFOe&q$m&(kRm0B2-p&e1`NdtVhJGy0%;^OR8b%aFoa+b5d;zJ zAo_`jiYOs;#6kpA6p$vehe1G;B9^)DyH3fTBy*qpKmWj)Iqy1aueR4NXP=U1`^MiJ z9v0@XKH-kL9Ym|=_ZCu&b>IbOxV0PO=!@cOCXu#gXBfw` zr#vKl*6;G?4Zfj23)x|nqj@Y>Y?doF%UQoMrv28h1mms2^}VM@7AGP*N(Ya9lMC%luzFK20kJtF;7fU zg7fgb3R^t3@z|DNdk&iu+d^#o&Bj)Y?P_c@vAu@v9c=n1O9Nf8KMvb7 z*q$=!Zu}-;8-s1SN$Z2(3~cGx9>BH?8$bERkK=Lk*NXRI;L#>+sQJsE4%mvYwZV2B zwwti=)5`df?-lrd7TXkTX+kl+9@6%?dyk3x;&-{Z?=gQL#P4I~{u}sx8`~gki?AhP z%fuFoZ5p<^*!Y=&Z2-0xurVKcW3xWYg~8Y+W6QRPA%2iE<|6C7nJGN%n znqcdJt>Whnlh6gfohlrR1HKAd_X_mZ!1rNmj;&jTV}vOcXiowU$2Jh#NNjInyBk{r zY#p)H!qy+#z1a8}f^7n}x3IOtb{jT+ZZ>`#Ir!~`Eg4%Xwtm?7scrnocTIf9U>hdL z_?m~GsV2S#zZ1><0{r&GHWr%~TMKOSvAvFMF1F{f@zWODquBBY%+C|}z0=$ufnVm~ zYuLiDRmT=REy}SoV(@jO(eIVm+BBVW!&Yy#;&JgtU5cbaqQD4(T*wZNly)cB{$syudGX%Y32zu8L@{2>*6BQzEBSOfz zGlZP)L&U9Vh<5Qp2>UySkkclFog62s%B!=`+oFn|=GPGNM})95F@&81L)e3`Iijl2 z>kc8ONr-qxgs}775OO{aQD0+1$k`M^ZxPyQRrZe!;qTrMaa$6?&V&$puY|C(K`4I2 zxT<>pGlZNqA?!IF!ms!cdM|{KQ#XX1gb?&sL)iI92>wGM{M{Ww&hQX+riP%e3?b+4 z5cUiV!QUr@ou7w@=W8MCnHWNTVhH*xA?%zMg5D}bdr1vp=fDvBaUtaY6hhAXA?PoL zpl=G{?}ZTb??TwKJ_P+ri1>R#wChgx-cB zSA#>;;|n3={1hS%TSCZh8p8gAA@~o3;GYu0U#@XfHNK>Wki)f)s`x((A^%K>INTh9 ze^m&-j)$N>5<s>9d4eu6XN;ZDDjz@a-9We&M`c6m~ znUR&5kn2v&aVI1=vfZO{QWBFB65Z~cgxnN&VrptyW}16qLT0voEN6UrR?-;Z;4zz? zl$Duml}jRvBOxIrCnqy20U*(xmX&F<8X^*sQ*zxoSraRggQWgnjY#lhiXzMG439fy zLM5?d($dpy9l2>EGZJ&h*qBx)j8Ck}kBa6cAvEq3yQC-+hbu8sCKP2Rmg_Z43$oUX z!uXsZs=-*nF*~+Fu@T#YDCIUGZrM3$SxG5rSScTA8*S>$Ne0?paAOCS_tmg{sTSOe$9<Zof zVrEuudP+*RBQ@LO9-jnT(sHwsdh|%hO-jr(r9gISR?Zj)DmpE5j3YNCJtfKQ$QVNb z31Ebq2}#+W#B@}Y1BoZUi6gRd+^`}!Ez^;ZG66}Ok&=-#D#tMrwVjqs`;tA`{7Gd% zbU~>(DJhPmQ5jjukTxDQ?113Jbh0I&e1`C&pc}QAmW!&H=*Y-OgeXiGCWL4 z%t^@{=SWS-f*TVv#B?jpR&^$$+ejLPN<~{qg<(nZohvq)My97^!f`p4os;BFXTGFl zWV{`JTxp5203yv7#nvI4pNmPmAM9&NM#sMFAPKC$P~#Xc#xTh7zCLo z>4Xqd-h)!i-~LQc_B8F4F@ZXR)#1nqZPSf@LJ4WuzJh za^2Z%!Q)b`#tRd&(EKneWsXbB!Elt2AVGB`XbENbWa^8r)1}LN=!`T1=Pw1JQ?HDsy>pKoY=vgm66V) zo!C0kk~$@)j0+M`rO3q59!w5Kres!a%7l#clu2k(L4ph;Gjl`Ol9UeRRVvF(%g9bo zL4z1M5`$gUJjh7QV@70Up%cr@4aJi?CN({AWQfBU(A^m2(mUj)r)5Y)EQ%SL%HCw4 z$3Z)GSFJBAn`306M7MI;+?0&OOawe(TuM$Z_~=@d^_rW8iBOt5gw?s($rGwppX<)b z9uJpBRehNCo&Z;qQgW(h@Z_X*K!Q{)>I~_~G$(m5$fZj#qOuF^>-ie{N%zuj?3Y(sBgXcBGrwEx49rf{Cw9OS_s^ zv-3@C=#SLo*Kpis9-}?i3BS`Z*Q70+_ae@au5v6gaYH#?)A72AXUXvzj`vL5K#o^; ztTXWoay-JZ*~Etaa9e-bv&MZsP~zxH1I*8UjXupH;`fL~pRUoZ^F5sA$#q)mkaa#u z`fC;uzt(vm>2GOt>pYP3w>7$T9!UBMjqaFg*bnzmljWb98a=$6?5L;Faf)ew8fkQ# zn%kc!jZWRxr;SEu?5s~`jZT}aPj`)Oom=x*j7CRd*`GL#jwMF>GgzbZ-U910RHN(n zR1DYXNJRTHN~2r%mGEG;Mt9oWxSv3yvn^SlsT!U41X!P08eLznD%R+{f5G}J(&+j< z9LqJj%VNgw3XRVDbF9y5jm~>Xtj{`)Zr%IAW2G8hzXxQeM&~^T)~8IP^PUjvvtOh0 zz7gwlM5F8XqbQBu)MCc(IgQTyPOQ&mjn4ZM%VB2nX1uwUy}8irO~4;B7TcCdKZnpNTc%}CF`?X zqg(g!@Yo8CuHQqnTBGycCF`?JqwDu0m1=bT{-&K8o%i-wpE8YZ-TTC2`!%|CKM(0g zH2Pg6m>;Flc`uXoIj7OB`{sD;vPO@wnE5-sJpW@gdQFYqOQYA*=)E<1BaPliqep4< zz8bxaM!#31ch>0lY4q+IJx-&?X!L#>Jx-(d*XV;a`u!Sxs78<1=)*NS?-{f{qcr+J zi-_NBjXp@DPtfRtHTqPI{(wfGrO_YM=*1fSA&tIBqd%*68nO^r0Gkj7A@>(bF~hD2<+>(X%yrrbeHj(Rt0z`b^d6*%lGM zvo!ixjb5zLb2R!Qjh?H~muqylMqi=PJsN$rMjxlq*J*V9=Ezcw&U;3!&rXd#(IVov zOruZI==(MLWQ~4Aqd%?Dl}4YU(a&l0XEgd{jsC1gcjTAn|5S}$Q={i;^m-aSU!ynD z=mi=*N~6!v=xsFmOpV@IqtDXl-8H&bqsM6U*&01gqZexQ!5V#zMjxuti!}OhjXqbS zkJ9MRY4mK3UaZk4X!Lm+eX2%(UZc;_=<_vtu||JEqc76v3pDz2jsBuWU!l<#YV_3_ zeUV0Ar_o>1=%pHcu}0si(U)lSGL8PSM&GZ|mumDQ8vPZGt~B~Gjebs}FW2aoHTtU> z{SRleD{*dnqx!`c(YQ)8Yuk;75PCQlcdEy$x*@90I z*CZY;_!x05;=zJ{BCbswBX|$-Rm7bI?;@^493^-&@zuoj1g|HqOY9K5hS*7b?mrM( zy+d4&_=w=wh_4|o6TFzXK5?nw=ZPB-uNFL;n5U?|<$|XZyNHVgPa?jKc&gwW;)cZ8 zf=3fKA|5Vy1aV{H!GeboHzAG@{2=l5#GM8AC%%C=N^mdYro{CG_atsc>=4|AxH<8; zf9Zca;wa)Hf?E*ZNL(hk2{BI%eWily6W>I2pse;cF z-%Ok>_!My);^Bgi5w|5CEchqlcEmA)_Yk)y?ksp0@h!wrf;SU)Ag(8PJ#j~3hu}5D zorur(cM;bU+>`ijVu#=^ z#P<-N`&;UtIEMI$;14^Azm&xoVYJ>vEVCl!1oeQ z6?~rfKH_Y_r-dy$;Gc;56UPYNLwrARXTiIO6TF!CLE=)u&l5jHyjt*V;)jWs3!YB=2ywCCNyLv5 zPZgX)JcKw~@Mz+p#KQ%TAbyN^u;5|D!-!)9KS=yIac9B(iJu^j65NaUN#c5fdlElI z>=4|AIDz=wUsC_X!-fy_&o7Q;%vdEh&cfHh6_GMoJKrY@K3~}iDLxsAs$2AS@166bmAz%n~5`s>j_>@ zoJs5uyoNZ7_}pcwf8uQ7BZ6Ne9!p#%crkGfajD?viF1ip3!Y8vCSERhIFiHzA%*Tq?LeaUSt%!L^C=iI)owCoUi^7JTJi z;2FeI1)nFLNt`YC6!9$L;ewA5dx-}N{)u=tag5+S#D&D21@9uBLmVY|GjS1dJ;CdV z=Mp;vuOWVp_}oRQf8t`|BZ6Neo=03Jcro$w#HE6tC!SBdTJUV*7l@Y&o=&`gxLEKc z;undh3eF*3NSrNrH1Q(h;etmHzeGG(@G#=V#4&;&Bwj+?S#W>imx-eU_aa_OTu*RM z;#Y_rg1ZneBR+Q_5Ww&Mr_UpC-V*`WxUVsXbg8czggqH(l?YHAm#4x!-Qv7cl)CBn zQb%0j6cxQE&b!?}MW3C67WIDI4oAQh4gT1vzl6E#3?24(>=RFJQ7319;V9V)j*X6M zYKN(BYHo69^7fw7y!MBY)D5iD;Z<$Y(%dnQ<3UXVONMW3+(lvCu*t0eC} z%KO2V*U^%9tN43skUT*}lP9Rn_tDutm4scH0bxJd!j9J1_f}BRjO^#BnMcRr=(w?HUL$-kN48i z$14fDhQbcp!Y)@gYBk<_+|wrBdor$QDJOjD&oiZtc<--q-oyQnF0WAqgx39=zgtv# z{~dz27JPx<&GFugEQ$kPqL}}PL=F^BoO)N}oQ&QR`*|3YGWXsF$=CUX2*^Jfmv<%H z(?ZR#xOjXfKp(HVRF-!nEY`c#*A}d57&NI>sNz`fwt#ESt_ES}^2S^nR@nR6g3^gD zb^mPeeBW<}L(K$Fz%>R80oRlGh7#43W}+#;1y2{%81mT)4pUhZfPkwj7$sTn#W`6c zq<`#_u}{S&Jh`QxcdP$hbts>1Zi(~al+BRRLGArbld=yW;5zdKrJM-!6qcN=fo2oK zX0x!`CWm?%0@QD)H?jU3@C8|4gy&IJBU=9jcml5Xzz}dP!#Ax@pmtMlC-u0l_X*KE zPV}Pb_8wZn^!HVZDok&ri)bt&ZWR$QeQwFCS6QYXjD+b&^S*Etvww+w_@Q|3UUjp0 zu{GeTi6VKEYlgWaqYwD+oI1IV!*emNut8j5ubMo+J#{Wnv(SOcsiyunE5Z?78t3g* z)4xwGIW4Iaz2`$z$9AZ} zIhh%D)^oS&4++tG;=N}n?tXy0$$i3Ooy)ex5@Wk{lkfdi-QSTiN{~1l^_kK<14**r_ zY`MtRnSovPsHt-<#EQ;3@kI-Gx~=9cq}sKn+DudJb)wd)`u1wLXf+cz5r8S{EI7M3 z!coGh%En?QT40R-)ZNagSo_$;p!m}Z|lA)p`N0iu} z-ETLchV<+Pde$)5v;B|2v&Sq$deV^Cy!4ih!eR^iv_zPlvsR(1gm$ga*wYSDH^L~o z4EH^Q)Yr;r2|JZ8ug3f|}UPWTA54U1mbUBVH0||1a&KBJdGm3W;kap zuUvZrRT51R*DrbcDW|FY5^JxXC~pTz;`ZNf!flW3cG-V$+tUjXZ4IRXS8ebGT>oq~ zD(~|t73=M^TJx*s*@plD*VkZ|0rE@#8?3SqHHZ2=w9Qeh8c@SlBuc=w0?Yx|VpGE~ zXi%$gK>VEpYDIsGD*Icia`8mIuWu$x;yqX=h7eC#tySgeTb7iW_#h&90JTiy}g7aOVIFr05IUXP>KlH!}n~IFovQf|B$(S_+BvC9KJQZ zKOnJ0?>Y#nLhrl}MQ?Jj-XzgGB}gw5z|ebB1-(tH(3@cCjj391V?*!h<3axV0RygT zL3-!fdRH0KV|%*t<|NZ!BL#zJ*v~_hHN)PfVhsP(yE4<>qH5n`RPYFhkQw$F^oEF~ zN<%Swh8-+1CP?BLAXeNkQ{uY24T<$CN^Dpz(enhg6fNZ%uloI%Zs0Og+*PKyG>B78 zkV(=Y|1Lr0ZQxRHn7d2B^$Q?%zcG&N2Kuf}D97D*S8x@5dEw;4-iz zn_BikgrjftF9FvpkP@4BA*^ry3HJvj1MR-3&lO24|5WKrcR)de=LOYE%ndrzxQpUH z;c;gH=UH*y4d<}hsv3eGS19|&>F~861Y8}V?_xm!9O(9UGv8-x;W&0w4@WUYz{7uj z<1fyDtor!^Y`&kdrmy}*HUwNpH?SMqi*LwM^CzGi`vnIiYTH1y8`z4~m?a-TzXu|{ zj?F*h{;K2?JGln_C0=VMA&u2QD1#Nzdp2}p06#shF9(sytJY(~aY7Hvq$TCdd z3=nX|LXC8MFMNv5;h-Jdlb1z}y2mmy3XE3O)(yC70n+g=#-nQWYE$T}q}on?US4hA zNk^~lyb}}XcbN&E_F71vJEDj5F2fnM5_5Pq828;w7@mS*@-L3eR!>Taph_MJlHVIt z2YpG>>#lW>qJ2PgA%=?dy1N<&d>nLr_ude)Y3f@@oL2do&$Hx0 zmQ>6yN&cPdwdB7Z{Pcbmh*t7Pl{|>7HqN3Spn!K#G~g-*OTaZ9-;8xH2;~q{erkSN zb%zQ6+cUQM;aIj}tqFi5>CyrqOjEv|`l4p)@#Z z{~cu1)NP_0GlT0;I&aFlFlYWjM5b@_#enPYbw;+vd;NX$|MW~$H7#Zzj$r)>-+5C$ z4|8Y66-`;B`gG-@)OHXVjTyNd9e65n*3(l>hc^2>J`X@j)Rz)3P>r1Iev4Ptl=QUE zZhHI)5ATK?jn)b@taPr9E36S$7^ASotU#3>hs_eXKw01D-zc2TOnq=GO}Z5d`sSZ@ z=JUMJ{|bs13$L1vNA`W!$k?&P*Ub23Kjthjh=Oot$KBab}MN|CE6p!x3a}$=y_p25t zj&{A@nDG(CUivOJ??jmIhA(-3{FU2>y1p3lQ_)51AO&dgck+(%Hu3**-zY&$QMv#d4Qvc?QT<(>;Z}u@>bMAly1- z*siXoL-2E=%*?g=z87r%HFA#i2v%+5rk&=4RdIQBTH@<;8)IkM)+i7Mc)wGRAX~-L zZnV0vZ@s+BVeYzlm%}~R^(&lGQ!V>~Ee*R4^#XSN;cRx{nukM5p0`KJ6iB*%n(1f&b5*6e1DClk_!Jdh#9KJ7RjW z3%iCV-N|d#)sT|;wkJQ!%)Z={W8VdNaul$FCm*N7lh1EVp-6-Iif_)4p>MknY-&xY$|2u}Z zGOHU$4q4XPClIx0@Qz}2kEJjQ5(@j4GAUA#6z-uo|26e) z8)M`t8|!(sX`dM&Th<0pe4l^I)@7_jf304w#I%S^Gsr}{yNKO5vEXfI#t{76>k){~ zyw&B7J@PKJLgP~B_ZnSpH_7P3 z>RudIdq-E8^Zx`c_U!9%fRp%w{TztHQAUQ16?GSSuhkO;tJn90(R3%XTc4isW`E8 zo0@|}iS=#|xH3=@YIrA}5yJFsGD%fyJ0eF43wR(dsb1WsW7R*c2{WK}N z0GWK1U9b=ZaZcy!M*Zj{yk)-j*xgYe0fJiJW;*A^Ip03tC)iaHFxdAV_AvO#ObS{@ z@Wkd}Q>!fHJpy3Py0!`LHnpn*E>WOqv`9nK*Z`n1akdw5JqXiq{TJWtIwNru>iowv zBY(wudc5}!-#n4DRid&9CG@2F?<}2^X|_(AJ!-TyeBKp`z2DS9)j*$hXt27?JpG87H{eCt>!N zsA4huU2p}PO@(4MZ>QDbyl1^>_E;3L&5jbYt4-aLWR?hCLsAY*_;UY z7v#L~O(o8AAo&ilHZt3xQN9Z{x%X0LE{}u61phFl(#%CBgl~#GYeM)Cl#+X+OuI32 zu@=wffX%eF0Yi_F2BKt?iQMK^2R_98#qv^a2RDo&cjP zay2}TX!GriMzq6!g#krVrW(Ct$EDIc;`|@%>~Xo^xXiy>ok*^Hx_;nmY1jJc`u8CD zH>pp+ZCxR~zb$P42X!j8A6iM<%fj5S{R`~Vb}zWC>A-`k03z(^zzl$ZYdILj_5rm0 zPTTf-v8)f<&GXZomrdKpf?c=0Z56gRuWWl0!}hQ6Py3DdsxZR8dj~vo97Q_ZWa^cyg#v{9SW@sXm=WnL4~K$2T6z)o3Y1H zwF`jEOMH{ifY|46pkHG_E>=q+kR>jRkos0dh5~g0SYptE{ngPgjTlIObqv6WLFq+a zrQN26N};oAH46F9pjdT}pT*wMi>(*gd4=x~r@z`Bav{x4<%~jf-m6E~7TyNwjLCnx{Eq`#KKTr*dxq zNNxD1p(<2USm6JR?j6N}VzmVoE&bpdZyAl{2C)?P{Q#S@S6H8u^M9O>Tc>qK!L7z zz+BSb)-_Lb@#>NI_0^k(UwuqnYk`CO8dHU?#7erJG<4lfT@Ts1T8XY_EnUM+UHdV> z@yso*qOL$fWxp=$tmxP8pun#^U@m#W*7YeC!g1Bs()H&XhF|HXu7kkz3!O4@O9Wp6jlVbFHXFUVe&K+9E@C87?b^LWW zE(?~g1<-qstz(Iw1@Y=QYDhfU3N{%SaA9RN_LA(Oss!NniyxK(t>MJG>B zHpEj;8q?OVg4H!v2ewyK_X8;Y&(%7VD9LAL$Zbf=u%ce9{zAoxr$4>Mv&fx1iyXzX z$YBB3Mv&<6vna?8gq`7eH5t-?^zn5ZNWQv}k@isYm3pKy*I;t}9s#bRDJ#^eb#x5t zJ;_y9K${gsuP;D82GTr#9M9g;0SUp8{AU|n;|2Zlh&v1JC+|KS3Fa*$??P3> z@>soE$>XmWz;|%gu z^tdi01ba~%l&U>GwzVSf&!E6#7q1ub&Vh@|D|vhXBznB$aoyvEC|JSc=RxwF3i5bt zWv+B`eQkMMz1-u!Kc>eS&{pp8fvP;d0TO~eZUjoz9-rG%k@qwx zvUTZWMS7tvJ+nHb&$Xp@4wC*=Gedfv!-n)5D7_)2tC6_OBefL=Q59Nb2as4>zdfec zmTz;V+WG|~U!5ArD0A}nmD*C7tAt!na^D`3?f@^Cu zC{@>1uS&dklXs!=;98P+{3sMw@c0gp=<(k}b&oG?s^sx`kbJdk>K=bvnd>WZ{l>Vk zMW*5w0<#Z#9J{#xX{qk<-{h<4@zanH?C}Ips`hwrCEj@QE>w9)2Jtu<3M+Wr4J&125|yzeK)@9?yn^V2@{j zQnklVRpK2+-i2x&&LqX-94M^d@eq*cal;{c9XCM13Le)5$#-up*l1_QUX}8&R-=$2WlF`z6TZze_4{T?EOu!}7Qox96C3T!3BN|F&57_`9k+ehU(UJ$?<8 zsy&`miFX`%7pnJo$%f<1TqvyIaV|*o_|`{sk2|4Y1&`Z-A_Bb;V0P9~bA?h;D zq+ErOV3s`+w3a3PE&gh1dm~Kw#^Yj;EJ6%L0c)<=2m7cG75T8tHO;kz)^p6YgjSSo zu7m9Nzpf5FRCyg_@8^|b`wd7qMR*_F_9*tOdIwb7_Ei7@*S1BL?LOM>wQV0QtMatH zHf{e5mx09gmr=m7eHQjqQ3tlqwr&5PtioI4d;f;U2)y`vV+39d!D@jn{aID4OP?pwS1q(6Gw5na zFSMl(hIAwuB6IFKMCMggvP5P&3RscJ#6Ba_5o*dKGZ>G?$bDIZC|iq64Y0|=uUrp8 zJMlD8|E{l8tCvASt^W7`A_FFwrVmp4Dl_f|$+rn+Tis_{^}otoE6Fte?iCRZ(R$(iioqek2# zf~Ehru9Eb>K=OSWBz=EnuD#?cw4~pE%#i-(AV$W#_LriTg9%7GQ+=7mqOUhhXXV7G z$(5MKlc_0~)GA)*;RrD21&#o6P4WhwP2%)%eY<6k!(zCaJW$J__G+A7a=cx#R&dEXSu&O-wfm`O@)8hZG-^J2hR=3Fk9jM1 zT;UzYdiVcsh~%x@*FdgR$A@Saxc?t8;A)3bR&bgd?LeOXEW>&_BVav=wQGQN=Yr+0 zOO<|XtTsl%1PE5wLZW&VjMB?s85S%37u5=IvF*&l0i!>O@I0aNrR=u+1D+buxXZrY z4n)qlE+FfKDhJ1X_rQOn2o^Zshi7U)P_Z|)Vk(9u8lr@122GZgkEtf0NAu1sH4f|& z04OrF)M1&Lww7>DC*}W07PU>odTSbtB0u7|?`1?(eG-r6x&~jGyJys=I8Jw8;?WoI zg(%Vox$jgh!BK{4a>WDF%>yGU9!N6}^uqz;YJ>e0*`qtrD-}IbtTKjS*%(q=k;e#F zxaS@fg`)OFh8qC_t~=(L7a7L3KvHgGQc86n#kx2iPUE{uRHy!iv>)zg%Ua57OKJ?_ zz|+^ycC#ZquC75U%6N3XnBx&{_ex7vDB9jITk69sSn<0A0tYmpoNzZQk(M3v_mu;r%6FS(hWfG3v6fl*J-p zYbm=HHy!ewHVA+DJsAgXGb`-MT)V=Y`QIZ9zOIZ@;fBHZF)H_c@ZyBQP|vi&9%9j=B3o+HPTSDv12$Wazl%+Kg!$Hh;Tp1+PD>m5ktMg zJA&lv2WGAje_G49<`dSBodd6!MBoTp&0imA-S!oLfa_YCD$BX~tq|<;MV(Kv0vq*>UIJl5{=56uLf<%_;1xD%3q+epuyFu~KL6gm9K-Sg4RoiQ+%xu>~ zdK>LJaGyk=y617IRDZA5()1qy-1loK|Mf;VU%uw_ITp|@VYT}j!qz~TMH^?*ULg&) zeO$nsUaVuoOy$$%7-yBJ>6gHuCg}!D2Cx#hMolKJca9l}jp(L*+u)fca;7P=lV-vn zChdCAI0QHg9)J$kasyF=Jx1zU@v|dD8@0RvQP!sRd$FL-d5p@hAvZzbjvNZ}q>#4j zeKC=jx#PS);}MfM)CPx_4BB2OP~9%G8s5SZ{Y6|-{kWu~1jjj5Kf79tbLP5BCeldll~2cILCMEXlB&-l^@PyC3cfyhmi=l3|p{>TJlG0$I_e zvkK^A!1eEJysqqH0lYZa&wFry_e^a54rjr=;8Xt~Kjf<8A@JpG=xT^4g*LeXd&458 zZFF_k>WAQ<2&758_gvrnv(Eg*NY#>wwrPWCTG57@5TdSr)jXwnT8ha9duRRy7I?}o z&g`&@}!-w>4prLW()fk%i{gK z|4>*f3M<;Mnqu;o-N7ewC&!2}I)}W*M#N?c*bIt+? zxL)(p5H zVnm>xlx&BR($UmJLAmov9qx^`gMrUYeelo|gmgochPL-5l2zw@BA%iFaDdow0F6eOlI_aOjHL zbSeV3_VG<%-aEfTY9kXT)Z8BV9rm#A-KCbSM())FKxlS|sbK)>PX`8>!jD+c7@*?4 zS5y{xd6?bpF*#>iKn~UIPiCXcdjDiRo>_(QDw**t5(bD+^}!SG{nNJ{$qwxQLmfc_ zQu9!+($sQhvZ>vIScQ46L7I+&U}FSY2TgKc;eBAS+ZwuoOV0d`=oGaaJHFX$I^X%< zgp4vusAw6 zDsr{6xx(G!)l^6}%0%Mw@6(mbjAxnO?y)3Cc)n7PR_1zuT%UoMBtohDeAn#GidmP23BqHVM ztsVt)g~&btlJ7SZg*L=L9Le3;l3!j+?aB2kxKu4lWNxnhZ@XA{`7SF*?PocLqZ?7D z-l8t!*1hd&5d_emNSuSfA2lM}XdCNUT7O_@6N=f-DW7x}yb6cZD}NX1e1@yCLjatAd;H)g09lOx991wPwLde*jFx}GjYLCVHi z{qaJRnoOso*Wf)1RvWon)e%u_e;CHE2B`8)HvKart=Y?b?5cy99WmZp?~txTPJ)d$ z*{sQk)ZS$C297hw;{Vw$_rw{``rWNwe8b2C(Yg?zO06x&+FCQPt5Qv^10hvCW`bCn zpbiAKJJcLpwLw2Pl`$NFZ(7&_huQ9qSqX8UYHTW()2k)`c>fc)G3#*;FR#UWAWV`l z3de$y@HKUHZ&N%V9)wg_#VO6w zBRB#Kj9~4*89|&}hP!JLU%6tm+FlgEBνKtoo%mW25~l;XKJd^3-lfrsuR9-h9c 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%0ANX-bZ@x@AqDRw|%7l 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�CsnmRPCO;0MK*%8z&BF`CAa&NxkYO%Ol_{NKC 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 z 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ÍXuS6h# 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